npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@realm.w/cli

v0.1.6

Published

---------- ANNOUNCEMENT | The build tool is undergoing active development without a garantee of everything working perfectly.

Downloads

20

Readme

𝙍𝙚𝙖𝙡𝙢 𝙒𝙞𝙩𝙝 | 𝒞ℒ𝐼 ⋆ ˚。⋆୨˚✧


ANNOUNCEMENT | The build tool is undergoing active development without a garantee of everything working perfectly.


Installation

npm

npm install "@realm.w/cli@latest"

pnpm

pnpm add "@realm.w/cli@latest"

yarn

yarn install "@realm.w/cli@latest"

Quickguide [package.json]

Here, your functions written in TypeScript are located at ./src/realm/function. The resulting JavaScript functions and meta files are built to ./out/functions.

{
    "scripts":{
        "build": "npx realm-cli functions build ./src/realm/function ./out/functions [--watch]"
    }
}

Purpose

Realm.w is a suite of tools that aim to help with the development of Atlas App Services' backend as a service infrastructure. As its main perk, it makes possible to develop and configure Functions in TypeScript. Moreover, it provides right types for Function's Context, which otherwise are assumed from the MongoDB's documentation.

How does Realm Fun work?

The TypeScript support is achived by analyzing and transpiling code written in TypeScript to JavaScript with a custom Babel transpiler. In contrast to using Webpack, it gives the build tool more control over the transpilation process as well as the endform of the output files.

What does Realm Fun achive?

The tool's main goal is to provide the quality developer experience while reducing the hastle around writing, testing and deploying Realm Applications.

Less checking and more writing :)

Roadmap

  • Build Tool
  • Dead Code Elimination
  • Simplified Secrets Deployment from .env file

Simple Function File


// ---- CONFIG
export const config: Config = {
    args:{
        logs: true
    },
    exec:{
        priv: false,
        cond: {
            "%%user.type":"normal",
            "%%user.plan.id": "63246b0a67ffbd80f8c81505"
        },
        auth: "system"  
    }
}

// ---- FUNCTION
export default async (args) =>{
    // ?? More on [global context](https://github.com/uceumice/realm.w-types);
    return context.services.get("mongodb-atlas").db("realm").collection("w").find({
        w: 0
    },{
        _id: 0
    });
}

Building

Directory

realm-fun functions build ./src/realm/functions ./out/functions [--watch] [--flatten]

Important: You should use --flatten, which breaks down directory structure into files structure, in order to delpoy to Atlas App Services via GitHub Deployments

Helpers

Helpers provide some additional functionality, like arguments type validation.

import { crf } from '@realm.w/helpers'

type Args = [{
  name: string
}];

type Rtrn = string;

export default crf<Args, Rtrn>(
    {
        arguments:{
            log: false,
            validate([{name}]) {
                if (typeof name !== "string") throw new Error("`name` must be a string");
            }
        },
        execution:{
            throw: false,
            private: false,
            condition: {
                "%%user.billing.plan": {
                    "$eq": "standart"
                }
            },
            authorization: "application"
        }
    },
    async ([{ name }]) => { 
        return `Hello, ${name}`;
    }
);

Collaboration

You are welcome to propose new features. You can also complain about the bugs, open all sorts of code related issues.

Licence

MIT