@betty-blocks/cli 25.28.0 → 25.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Betty Blocks Component CLI
2
2
 
3
+ ## Prerequisites
4
+
5
+ As of version `25.29.0`, you will need to install the [requirements for IsolatedVM](https://www.npmjs.com/package/isolated-vm#requirements) which basically include:
6
+
7
+ * make
8
+ * g++
9
+ * python
10
+
3
11
  ## Installation
4
12
 
5
13
  To install the CLI you will need [a recent version of Node.js](https://nodejs.org/en/).
@@ -0,0 +1,3 @@
1
+ const gql = async (query) => {
2
+ return [{ id: 1, name: 'Bruce Wayne' }];
3
+ };
@@ -0,0 +1,4 @@
1
+ test('sayHello 1.0', async () => {
2
+ const output = await $app['sayHello 1.0']({ name: 'Bruce' });
3
+ assert(output, { greet: 'Hello, Bruce' });
4
+ });
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /* npm dependencies */
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ const commander_1 = __importDefault(require("commander"));
17
+ /* internal dependencies */
18
+ const testRunner_1 = require("./functions/testRunner");
19
+ /* process arguments */
20
+ commander_1.default
21
+ .usage('[pattern/for/test-files]')
22
+ .name('bb functions test')
23
+ .parse(process.argv);
24
+ const { args: [pattern], } = commander_1.default;
25
+ /* execute command */
26
+ // eslint-disable-next-line no-void
27
+ void (() => __awaiter(void 0, void 0, void 0, function* () {
28
+ yield testRunner_1.runTest(pattern, process.cwd());
29
+ }))();
30
+ //# sourceMappingURL=bb-functions-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bb-functions-test.js","sourceRoot":"","sources":["../src/bb-functions-test.ts"],"names":[],"mappings":";AAAA,sBAAsB;;;;;;;;;;;;;;AAEtB,0DAAgC;AAEhC,2BAA2B;AAE3B,uDAAiD;AAEjD,uBAAuB;AAEvB,mBAAO;KACJ,KAAK,CAAC,0BAA0B,CAAC;KACjC,IAAI,CAAC,mBAAmB,CAAC;KACzB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvB,MAAM,EACJ,IAAI,EAAE,CAAC,OAAO,CAAC,GAChB,GAAG,mBAAO,CAAC;AAEZ,qBAAqB;AAErB,mCAAmC;AACnC,KAAK,CAAC,GAAwB,EAAE;IAC9B,MAAM,oBAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACxC,CAAC,CAAA,CAAC,EAAE,CAAC"}
@@ -16,6 +16,7 @@ const availableCommands = [
16
16
  'validate',
17
17
  'autoversion',
18
18
  'bump',
19
+ 'test',
19
20
  ];
20
21
  /* process arguments */
21
22
  commander_1.default
@@ -30,6 +31,7 @@ commander_1.default
30
31
  .command('new [function-name]', 'Initialize a new function')
31
32
  .command('publish', 'publish functions of current working directory')
32
33
  .command('validate', 'validate functions of current working directory')
34
+ .command('test', 'test your functions within a local light-weight version of the ActionJS environment')
33
35
  .on('command:*', ([command]) => {
34
36
  if (!availableCommands.includes(command)) {
35
37
  console.error('Invalid command: %s\n', command);
@@ -1 +1 @@
1
- {"version":3,"file":"bb-functions.js","sourceRoot":"","sources":["../src/bb-functions.ts"],"names":[],"mappings":";AAAA,sBAAsB;;;;;AAEtB,0DAAgC;AAMhC,WAAW;AAEX,MAAM,iBAAiB,GAAuB;IAC5C,MAAM;IACN,OAAO;IACP,QAAQ;IACR,KAAK;IACL,OAAO;IACP,SAAS;IACT,UAAU;IACV,aAAa;IACb,MAAM;CACP,CAAC;AAEF,uBAAuB;AAEvB,mBAAO;KACJ,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;KACzC,IAAI,CAAC,cAAc,CAAC;KACpB,OAAO,CACN,aAAa,EACb,yDAAyD,CAC1D;KACA,OAAO,CAAC,OAAO,EAAE,0DAA0D,CAAC;KAC5E,OAAO,CAAC,MAAM,EAAE,yDAAyD,CAAC;KAC1E,OAAO,CAAC,mBAAmB,EAAE,8BAA8B,CAAC;KAC5D,OAAO,CAAC,OAAO,EAAE,6CAA6C,CAAC;KAC/D,OAAO,CAAC,QAAQ,EAAE,sDAAsD,CAAC;KACzE,OAAO,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;KAC3D,OAAO,CAAC,SAAS,EAAE,gDAAgD,CAAC;KACpE,OAAO,CAAC,UAAU,EAAE,iDAAiD,CAAC;KAEtE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAW,EAAQ,EAAE;IAC7C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAA2B,CAAC,EAAE;QAC5D,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QAChD,mBAAO,CAAC,UAAU,EAAE,CAAC;KACtB;AACH,CAAC,CAAC;KACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"bb-functions.js","sourceRoot":"","sources":["../src/bb-functions.ts"],"names":[],"mappings":";AAAA,sBAAsB;;;;;AAEtB,0DAAgC;AAMhC,WAAW;AAEX,MAAM,iBAAiB,GAAuB;IAC5C,MAAM;IACN,OAAO;IACP,QAAQ;IACR,KAAK;IACL,OAAO;IACP,SAAS;IACT,UAAU;IACV,aAAa;IACb,MAAM;IACN,MAAM;CACP,CAAC;AAEF,uBAAuB;AAEvB,mBAAO;KACJ,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;KACzC,IAAI,CAAC,cAAc,CAAC;KACpB,OAAO,CACN,aAAa,EACb,yDAAyD,CAC1D;KACA,OAAO,CAAC,OAAO,EAAE,0DAA0D,CAAC;KAC5E,OAAO,CAAC,MAAM,EAAE,yDAAyD,CAAC;KAC1E,OAAO,CAAC,mBAAmB,EAAE,8BAA8B,CAAC;KAC5D,OAAO,CAAC,OAAO,EAAE,6CAA6C,CAAC;KAC/D,OAAO,CAAC,QAAQ,EAAE,sDAAsD,CAAC;KACzE,OAAO,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;KAC3D,OAAO,CAAC,SAAS,EAAE,gDAAgD,CAAC;KACpE,OAAO,CAAC,UAAU,EAAE,iDAAiD,CAAC;KACtE,OAAO,CACN,MAAM,EACN,qFAAqF,CACtF;KACA,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAW,EAAQ,EAAE;IAC7C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAA2B,CAAC,EAAE;QAC5D,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QAChD,mBAAO,CAAC,UAAU,EAAE,CAAC;KACtB;AACH,CAAC,CAAC;KACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ /* npm dependencies */
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ const adm_zip_1 = __importDefault(require("adm-zip"));
17
+ const chalk_1 = __importDefault(require("chalk"));
18
+ const fs_extra_1 = __importDefault(require("fs-extra"));
19
+ const glob_1 = __importDefault(require("glob"));
20
+ const isolated_vm_1 = __importDefault(require("isolated-vm"));
21
+ const path_1 = __importDefault(require("path"));
22
+ const child_process_1 = require("child_process");
23
+ /* internal dependencies */
24
+ const functionDefinitions_1 = require("./functionDefinitions");
25
+ /* execute command */
26
+ const check = chalk_1.default.green(`✔`);
27
+ const cross = chalk_1.default.red(`✖`);
28
+ const right = chalk_1.default.green(`›`);
29
+ const build = (pattern, workingDir) => __awaiter(void 0, void 0, void 0, function* () {
30
+ const testFiles = glob_1.default
31
+ .sync(`${pattern || 'test/'}**`.replace(/\\/g, '/'))
32
+ .reduce((files, match) => {
33
+ const file = match.replace(/\//g, path_1.default.sep);
34
+ if (file.match(/\.test\.js$/)) {
35
+ files.push(file);
36
+ }
37
+ return files;
38
+ }, []);
39
+ if (!testFiles.length) {
40
+ return { exitCode: 1, stdout: 'No test files found.', stderr: '' };
41
+ }
42
+ const functionsDir = path_1.default.join(workingDir, 'functions');
43
+ const tmpDir = path_1.default.join(workingDir, '.tmp');
44
+ const zipFile = functionDefinitions_1.zipFunctionDefinitions(functionsDir);
45
+ const zip = new adm_zip_1.default(zipFile);
46
+ zip.extractAllTo(path_1.default.join(tmpDir, 'app'), true);
47
+ fs_extra_1.default.writeJSONSync(path_1.default.join(tmpDir, 'package.json'), {
48
+ name: 'app',
49
+ dependencies: { app: 'file:./app' },
50
+ devDependencies: {
51
+ webpack: '^5.10.0',
52
+ 'webpack-cli': '^4.2.0',
53
+ },
54
+ scripts: {
55
+ all: 'yarn --force && yarn build',
56
+ build: 'npx webpack --config webpack.config.js',
57
+ },
58
+ }, { spaces: 2 });
59
+ fs_extra_1.default.writeFileSync(path_1.default.join(tmpDir, 'webpack.config.js'), `module.exports = {
60
+ target: 'node',
61
+ entry: './app.js',
62
+ mode: 'production',
63
+ output: {
64
+ filename: 'app.bundle.js',
65
+ libraryTarget: 'var',
66
+ library: 'app',
67
+ },
68
+ };
69
+ `);
70
+ fs_extra_1.default.writeFileSync(path_1.default.join(tmpDir, 'app.js'), `import { default as $app } from 'app';
71
+
72
+ ${testFiles.map((file) => fs_extra_1.default.readFileSync(file, 'utf-8')).join('\n\n')}
73
+ `);
74
+ let stdout = '';
75
+ let stderr = '';
76
+ const exitCode = yield new Promise((res) => {
77
+ const process = child_process_1.spawn(`cd ${tmpDir} && yarn && yarn all`, {
78
+ shell: true,
79
+ });
80
+ process.stdout.on('data', (data) => {
81
+ stdout += data;
82
+ });
83
+ process.stderr.on('data', (data) => {
84
+ stderr += data;
85
+ });
86
+ process.on('close', res);
87
+ });
88
+ return { exitCode, stdout, stderr };
89
+ });
90
+ const run = (workingDir) => {
91
+ const helpers = path_1.default.join(workingDir, 'test', 'helpers.js');
92
+ const bundle = path_1.default.join(workingDir, '.tmp', 'dist', 'app.bundle.js');
93
+ const isolate = new isolated_vm_1.default.Isolate({ memoryLimit: 128 });
94
+ const context = isolate.createContextSync();
95
+ context.global.setSync('ivm', isolated_vm_1.default);
96
+ context.global.setSync(`$console`, new isolated_vm_1.default.Reference((level, args) =>
97
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
98
+ console[level](...args)));
99
+ const script = isolate.compileScriptSync(`function run(resolve, reject) {
100
+
101
+ const tests = [];
102
+ let failures = 0;
103
+
104
+ const console = (() => {
105
+ const log = (level) =>
106
+ (...args) =>
107
+ $console.apply(null, [
108
+ level,
109
+ new ivm.ExternalCopy(args).copyInto()
110
+ ]);
111
+
112
+ return {
113
+ log: log('log'),
114
+ debug: log('debug'),
115
+ info: log('info'),
116
+ warn: log('warn'),
117
+ error: log('error'),
118
+ };
119
+ })();
120
+
121
+ const isEqual = (t,e) => {
122
+ function n(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()}let r=n(t);return r===n(e)&&("array"===r?function(){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(!isEqual(t[n],e[n]))return!1;return!0}():"object"===r?function(){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&!isEqual(t[n],e[n]))return!1;return!0}():"function"===r?t.toString()===e.toString():t===e)
123
+ };
124
+
125
+ const test = (desc, fn) => {
126
+ tests.push(new Promise((resolve, reject) => {
127
+ fn()
128
+ .then(() => {
129
+ console.log('\\x1b[32m%s\\x1b[0m', '\\u2714 test ' + JSON.stringify(desc));
130
+ resolve();
131
+ })
132
+ .catch((e) => {
133
+ console.log('\\x1b[31m%s\\x1b[0m', '\\u2718 test ' + JSON.stringify(desc));
134
+ console.error(e.message);
135
+ resolve();
136
+ failures++;
137
+ });
138
+ }));
139
+ };
140
+
141
+ const assert = (left, right) => {
142
+ if (!isEqual(left, right)) {
143
+ throw new Error(\`\\x1b[31m Assertion failed\\x1b[0m
144
+ \\x1b[36mleft:\\x1b[0m \${JSON.stringify(left)}
145
+ \\x1b[36mright:\\x1b[0m \${JSON.stringify(right)}\`);
146
+ }
147
+ };
148
+
149
+ ${fs_extra_1.default.existsSync(helpers) ? fs_extra_1.default.readFileSync(helpers, 'utf-8') : ''}
150
+ ${fs_extra_1.default.readFileSync(bundle, 'utf-8')}
151
+
152
+ Promise.all(tests).then(() => {
153
+ let summary;
154
+
155
+ if (failures) {
156
+ summary = \`\\x1b[31m\${tests.length} tests, \${failures} failure\${
157
+ failures > 1 ? 's' : ''
158
+ }\\x1b[0m\`;
159
+ } else {
160
+ summary = \`\\x1b[32m\${tests.length} tests, 0 failures\\x1b[0m\`;
161
+ }
162
+
163
+ resolve.applyIgnored(null, [
164
+ new ivm.ExternalCopy(summary).copyInto()
165
+ ]);
166
+ });
167
+ }
168
+ `);
169
+ return new Promise((resolve, reject) => {
170
+ try {
171
+ script.runSync(context);
172
+ context.global
173
+ .getSync('run', { reference: true })
174
+ .applySync(null, [new isolated_vm_1.default.Reference(resolve), new isolated_vm_1.default.Reference(reject)], { timeout: 60000 });
175
+ }
176
+ catch (error) {
177
+ reject(error);
178
+ }
179
+ });
180
+ };
181
+ const runTest = (pattern, workingDir) => __awaiter(void 0, void 0, void 0, function* () {
182
+ try {
183
+ let time;
184
+ const start = () => new Date().getTime();
185
+ const stop = () => (new Date().getTime() - time) / 1000;
186
+ console.log(`${right} Building artifacts ...`);
187
+ time = start();
188
+ const { exitCode, stdout } = yield build(pattern, workingDir);
189
+ const buildTime = stop();
190
+ if (exitCode) {
191
+ console.log(`${cross} ${stdout}`);
192
+ return;
193
+ }
194
+ console.log(`${check} Build succeeded`);
195
+ console.log(`${right} Running tests ...`);
196
+ time = start();
197
+ const summary = yield run(workingDir);
198
+ const testTime = stop();
199
+ console.log(`\nFinished in ${(buildTime + testTime).toFixed(3)} seconds (build: ${buildTime.toFixed(3)}s, tests: ${testTime.toFixed(3)})`);
200
+ console.log(summary);
201
+ }
202
+ catch (error) {
203
+ console.log(`${cross} ${String(error)}`);
204
+ }
205
+ });
206
+ exports.runTest = runTest;
207
+ //# sourceMappingURL=testRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testRunner.js","sourceRoot":"","sources":["../../src/functions/testRunner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AAkIA,IAAY,qBAQX;AARD,WAAY,qBAAqB;IAC/B,4CAAmB,CAAA;IACnB,0CAAiB,CAAA;IACjB,0CAAiB,CAAA;IACjB,wCAAe,CAAA;IACf,sCAAa,CAAA;IACb,sCAAa,CAAA;IACb,0CAAiB,CAAA;AACnB,CAAC,EARW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAQhC;AAED,oBAAoB;AACpB,IAAY,yBASX;AATD,WAAY,yBAAyB;IACnC,4CAAe,CAAA;IACf,kDAAqB,CAAA;IACrB,8CAAiB,CAAA;IACjB,0CAAa,CAAA;IACb,sDAAyB,CAAA;IACzB,kDAAqB,CAAA;IACrB,0CAAa,CAAA;IACb,0CAAa,CAAA;AACf,CAAC,EATW,yBAAyB,GAAzB,iCAAyB,KAAzB,iCAAyB,QASpC;AA0BD,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AAmIA,IAAY,qBAQX;AARD,WAAY,qBAAqB;IAC/B,4CAAmB,CAAA;IACnB,0CAAiB,CAAA;IACjB,0CAAiB,CAAA;IACjB,wCAAe,CAAA;IACf,sCAAa,CAAA;IACb,sCAAa,CAAA;IACb,0CAAiB,CAAA;AACnB,CAAC,EARW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAQhC;AAED,oBAAoB;AACpB,IAAY,yBASX;AATD,WAAY,yBAAyB;IACnC,4CAAe,CAAA;IACf,kDAAqB,CAAA;IACrB,8CAAiB,CAAA;IACjB,0CAAa,CAAA;IACb,sDAAyB,CAAA;IACzB,kDAAqB,CAAA;IACrB,0CAAa,CAAA;IACb,0CAAa,CAAA;AACf,CAAC,EATW,yBAAyB,GAAzB,iCAAyB,KAAzB,iCAAyB,QASpC;AA0BD,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B"}
@@ -23,6 +23,7 @@ const schemaProvider = (componentStyleMap, prefabType) => {
23
23
  category: joi_1.default.string().required(),
24
24
  type: prefabType === 'partial' ? joi_1.default.forbidden() : joi_1.default.string().valid('page'),
25
25
  description: joi_1.default.string(),
26
+ isPublicPage: joi_1.default.boolean(),
26
27
  detail: joi_1.default.string(),
27
28
  previewImage: joi_1.default.string(),
28
29
  previewUrl: joi_1.default.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"prefab.js","sourceRoot":"","sources":["../../src/validations/prefab.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prefab.js","sourceRoot":"","sources":["../../src/validations/prefab.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@betty-blocks/cli",
3
- "version": "25.28.0",
3
+ "version": "25.31.0",
4
4
  "description": "A Betty Blocks CLI",
5
5
  "main": "build/index.js",
6
6
  "author": "Niek Nijland <niek.nijland@bettyblocks.com>",
@@ -76,6 +76,7 @@
76
76
  "form-data": "^4.0.0",
77
77
  "fs-extra": "^8.1.0",
78
78
  "glob": "^7.2.0",
79
+ "isolated-vm": "^4.0.0",
79
80
  "joi": "^17.2.1",
80
81
  "jsdoc-api": "^7.1.0",
81
82
  "jsonschema": "^1.4.0",