@realm.w/cli
v0.1.6
Published
---------- ANNOUNCEMENT | The build tool is undergoing active development without a garantee of everything working perfectly.
Downloads
20
Maintainers
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