@makano/rew 1.1.73 → 1.2.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.
Files changed (73) hide show
  1. package/lib/coffeescript/browser.js +144 -139
  2. package/lib/coffeescript/cake.js +132 -133
  3. package/lib/coffeescript/coffeescript.js +437 -381
  4. package/lib/coffeescript/command.js +806 -724
  5. package/lib/coffeescript/grammar.js +1908 -2474
  6. package/lib/coffeescript/helpers.js +509 -473
  7. package/lib/coffeescript/index.js +228 -215
  8. package/lib/coffeescript/lexer.js +2282 -1909
  9. package/lib/coffeescript/nodes.js +9782 -9202
  10. package/lib/coffeescript/optparse.js +255 -227
  11. package/lib/coffeescript/parser.js +20305 -1265
  12. package/lib/coffeescript/register.js +107 -87
  13. package/lib/coffeescript/repl.js +307 -284
  14. package/lib/coffeescript/rewriter.js +1389 -1079
  15. package/lib/coffeescript/scope.js +176 -172
  16. package/lib/coffeescript/sourcemap.js +242 -227
  17. package/lib/rew/cli/cli.js +288 -186
  18. package/lib/rew/cli/log.js +31 -32
  19. package/lib/rew/cli/run.js +10 -12
  20. package/lib/rew/cli/utils.js +344 -176
  21. package/lib/rew/const/config_path.js +4 -0
  22. package/lib/rew/const/default.js +38 -35
  23. package/lib/rew/const/files.js +9 -9
  24. package/lib/rew/const/opt.js +8 -8
  25. package/lib/rew/css/theme.css +2 -2
  26. package/lib/rew/functions/core.js +55 -57
  27. package/lib/rew/functions/curl.js +23 -0
  28. package/lib/rew/functions/emitter.js +52 -55
  29. package/lib/rew/functions/exec.js +25 -21
  30. package/lib/rew/functions/export.js +18 -20
  31. package/lib/rew/functions/fs.js +55 -54
  32. package/lib/rew/functions/future.js +29 -21
  33. package/lib/rew/functions/id.js +8 -9
  34. package/lib/rew/functions/import.js +107 -93
  35. package/lib/rew/functions/map.js +13 -16
  36. package/lib/rew/functions/match.js +35 -26
  37. package/lib/rew/functions/path.js +8 -8
  38. package/lib/rew/functions/require.js +32 -33
  39. package/lib/rew/functions/sleep.js +2 -2
  40. package/lib/rew/functions/stdout.js +20 -20
  41. package/lib/rew/functions/types.js +96 -95
  42. package/lib/rew/html/ui.html +12 -13
  43. package/lib/rew/html/ui.js +205 -168
  44. package/lib/rew/main.js +14 -14
  45. package/lib/rew/misc/bin.js +37 -0
  46. package/lib/rew/misc/findAppInfo.js +16 -0
  47. package/lib/rew/misc/findAppPath.js +21 -0
  48. package/lib/rew/misc/req.js +7 -0
  49. package/lib/rew/misc/seededid.js +13 -0
  50. package/lib/rew/models/enum.js +12 -12
  51. package/lib/rew/models/struct.js +30 -32
  52. package/lib/rew/modules/compiler.js +237 -177
  53. package/lib/rew/modules/context.js +35 -22
  54. package/lib/rew/modules/fs.js +10 -10
  55. package/lib/rew/modules/runtime.js +17 -21
  56. package/lib/rew/modules/yaml.js +27 -30
  57. package/lib/rew/pkgs/conf.js +82 -75
  58. package/lib/rew/pkgs/data.js +12 -7
  59. package/lib/rew/pkgs/date.js +27 -28
  60. package/lib/rew/pkgs/env.js +6 -8
  61. package/lib/rew/pkgs/modules/data/bintree.js +52 -52
  62. package/lib/rew/pkgs/modules/data/doublylinked.js +85 -85
  63. package/lib/rew/pkgs/modules/data/linkedList.js +73 -73
  64. package/lib/rew/pkgs/modules/data/queue.js +19 -20
  65. package/lib/rew/pkgs/modules/data/stack.js +19 -19
  66. package/lib/rew/pkgs/modules/threads/worker.js +36 -26
  67. package/lib/rew/pkgs/modules/ui/classes.js +182 -178
  68. package/lib/rew/pkgs/pkgs.js +9 -10
  69. package/lib/rew/pkgs/rune.js +400 -0
  70. package/lib/rew/pkgs/threads.js +57 -53
  71. package/lib/rew/pkgs/ui.js +148 -136
  72. package/lib/rew/qrew/compile.js +12 -0
  73. package/package.json +11 -4
@@ -1,112 +1,126 @@
1
- const path = require("path");
2
- const { getFile, file } = require("../modules/fs");
3
- const { importYaml } = require("../modules/yaml");
4
- const { findPackage, getPackage } = require("../pkgs/pkgs");
5
- const { existsSync, readFileSync } = require("fs");
6
- const conf = require("../pkgs/conf");
7
- const jsYaml = require("js-yaml");
8
- const { execOptions } = require("../const/opt");
1
+ const path = require('path');
2
+ const { getFile, file } = require('../modules/fs');
3
+ const { importYaml } = require('../modules/yaml');
4
+ const { findPackage, getPackage } = require('../pkgs/pkgs');
5
+ const { existsSync, readFileSync } = require('fs');
6
+ const conf = require('../pkgs/conf');
7
+ const jsYaml = require('js-yaml');
8
+ const { execOptions } = require('../const/opt');
9
9
 
10
10
  const cachedFiles = [];
11
11
 
12
12
  const lookUpInOtherApps = (fullPath) => {
13
- const con = conf({});
14
- const name = fullPath.indexOf('/') ? fullPath.split('/')[0] : fullPath;
15
- let dpath = fullPath.indexOf('/') ? fullPath.split('/')[1] : '';
16
- let ppath = path.join(con.CONFIG_PATH, name, 'app');
17
- if (!existsSync(ppath)) return null;
18
- if (!dpath) {
19
- dpath = jsYaml.load(readFileSync(path.join(ppath, 'app.yaml'), 'utf-8')).entry;
20
- }
21
- ppath = path.join(ppath, dpath);
22
- if (existsSync(ppath)) return ppath;
23
- else return null;
24
- }
13
+ const con = conf({});
14
+ const name = fullPath.indexOf('/') ? fullPath.split('/')[0] : fullPath;
15
+ let dpath = fullPath.indexOf('/') ? fullPath.split('/')[1] : '';
16
+ let ppath = path.join(con.CONFIG_PATH, name, 'app');
17
+ const config = jsYaml.load(readFileSync(path.join(ppath, 'app.yaml'), 'utf-8'));
18
+ if (!existsSync(ppath)) return null;
19
+ if (!dpath) {
20
+ dpath = config.entry;
21
+ }
22
+ if(config.private == true) return null;
23
+ const pepath = path.join(ppath, dpath);
24
+ if(Array.isArray(config.private)){
25
+ if(config.private.find(f => pepath == path.join(ppath, f))) return null;
26
+ }
27
+ if (existsSync(pepath)) return pepath;
28
+ else return null;
29
+ };
25
30
 
26
31
  module.exports.imp = function (runPath, context) {
27
- return function (filename, options = {}) {
28
- if (!options) options = {};
29
- let type = options.type || "coffee";
30
- let exports,
31
- ispkg = findPackage(filename);
32
+ return function (filename, options = {}) {
33
+ if (!options) options = {};
34
+ let type = options.type || 'coffee';
35
+ let exports,
36
+ ispkg = findPackage(filename);
32
37
 
33
- let filepath = path.resolve(path.dirname(context.module.filepath), filename);
38
+ if (filename.startsWith('@') && context.app) {
39
+ filename = filename.replace('@', context.app.path);
40
+ }
34
41
 
35
- // console.log(typeof runPath);
42
+ let filepath = path.resolve(path.dirname(context.module.filepath), filename);
43
+ if(path.extname(filepath) == '.qrew') options.qrew = true;
36
44
 
37
- const lookUp = () => {
38
- const otherPath = lookUpInOtherApps(filename);
39
- if (!otherPath) throw new Error('Module "' + filename + '" not found');
40
- else filepath = otherPath;
41
- }
45
+ // console.log(typeof runPath);
42
46
 
43
- const foundCache = cachedFiles.find(f => f.filepath == filepath);
47
+ const lookUp = () => {
48
+ const otherPath = lookUpInOtherApps(filename);
49
+ if (!otherPath) throw new Error('Module "' + filename + '" not found');
50
+ else filepath = otherPath;
51
+ };
44
52
 
45
- if (!ispkg && foundCache) {
46
- exports = foundCache.exports;
47
- }
53
+ const foundCache = cachedFiles.find((f) => f.filepath == filepath);
48
54
 
49
- if (!ispkg && !existsSync(filepath)) {
50
- if (Array.isArray(execOptions.resolveExtensions) && execOptions.resolveExtensions.length) {
51
- const resolve = execOptions.resolveExtensions.find(ext => typeof ext == "string" ? existsSync(filepath + ext) : existsSync(filepath + (ext.ext || '')));
52
- if (resolve) {
53
- filepath += typeof resolve == "string" ? resolve : resolve.ext;
54
- if (typeof resolve == "object" && resolve.options) {
55
- if (resolve.options.type) type = resolve.options.type;
56
- for (let i in resolve.options) options[i] = resolve.options[i];
57
- }
58
- } else lookUp();
59
- } else lookUp();
60
- }
55
+ if (!ispkg && foundCache) {
56
+ exports = foundCache.exports;
57
+ }
61
58
 
62
- const exec = (coptions = {}) => runPath(
63
- filepath,
64
- {
65
- import: options,
66
- main: false,
67
- useContext: execOptions.sharedContext == false ? false : !(options.context && options.context == 'new'),
68
- ...coptions,
69
- as: options.as == 'main' ? context.module.main ? 'main' : 'parent' : options.as == 'parent' ? 'parent' : 'child',
70
- fromMain: context.module.main
71
- },
72
- execOptions.sharedContext == false ? {} :
73
- options.context && options.context == 'new' ? {} : context,
74
- ).context.module.exports;
59
+ if (!ispkg && !existsSync(filepath)) {
60
+ if (Array.isArray(execOptions.resolveExtensions) && execOptions.resolveExtensions.length) {
61
+ const resolve = execOptions.resolveExtensions.find((ext) =>
62
+ typeof ext == 'string' ? existsSync(filepath + ext) : existsSync(filepath + (ext.ext || '')),
63
+ );
64
+ if (resolve) {
65
+ filepath += typeof resolve == 'string' ? resolve : resolve.ext;
66
+ if (typeof resolve == 'object' && resolve.options) {
67
+ if (resolve.options.type) type = resolve.options.type;
68
+ for (let i in resolve.options) options[i] = resolve.options[i];
69
+ }
70
+ } else lookUp();
71
+ } else lookUp();
72
+ }
75
73
 
76
- if (ispkg) {
77
- exports = getPackage(filename)(context);
78
- } else if (foundCache) {
74
+ const exec = (coptions = {}) =>
75
+ runPath(
76
+ filepath,
77
+ {
78
+ import: options,
79
+ main: false,
80
+ useContext: execOptions.sharedContext == false ? false : !(options.context && options.context == 'new'),
81
+ ...coptions,
82
+ as: options.as == 'main' ? (context.module.main ? 'main' : 'parent') : options.as == 'parent' ? 'parent' : 'child',
83
+ fromMain: context.module.main,
84
+ qrew: options.qrew,
85
+ package: context.app ? context.app.config.package : path.basename(filepath)
86
+ },
87
+ execOptions.sharedContext == false ? {} : options.context && options.context == 'new' ? {} : context,
88
+ ).context.module.exports;
79
89
 
80
- } else if (type == "coffee") {
81
- exports = exec({});
82
- } else if (type == "js") {
83
- exports = exec({ compile: false });
84
- } else if (type == "yaml" || type == "json" || type == "text") {
85
- const f = getFile(filepath);
86
- if (type == "yaml") {
87
- exports = importYaml(f.path, f);
88
- } else if (type == "json") {
89
- try {
90
- exports = JSON.parse(f.content);
91
- } catch (e) {
92
- exports = {};
93
- }
94
- } else {
95
- exports = f.content;
96
- }
97
- }
90
+ if (ispkg) {
91
+ const pkg = getPackage(filename)(context);
92
+ exports = pkg._onImport ? pkg._onImport() : pkg;
93
+ } else if (foundCache) {
94
+ } else if (type == 'coffee') {
95
+ exports = exec({});
96
+ } else if (type == 'js') {
97
+ exports = exec({ compile: false });
98
+ } else if (type == 'yaml' || type == 'json' || type == 'text') {
99
+ const f = getFile(filepath);
100
+ if (type == 'yaml') {
101
+ exports = importYaml(f.path, f);
102
+ } else if (type == 'json') {
103
+ try {
104
+ exports = JSON.parse(f.content);
105
+ } catch (e) {
106
+ exports = {};
107
+ }
108
+ } else {
109
+ exports = f.content;
110
+ }
111
+ }
98
112
 
99
- if (options.save && (type == "js" || type == "coffee")) {
100
- if (typeof options.save == "string") context[options.save] = exports[i];
101
- else
102
- for (let i in exports) {
103
- context[i] = exports[i];
104
- }
105
- }
113
+ if (options.save && (type == 'js' || type == 'coffee')) {
114
+ if (typeof options.save == 'string') context[options.save] = exports[i];
115
+ else
116
+ for (let i in exports) {
117
+ context[i] = exports[i];
118
+ }
119
+ }
106
120
 
107
- if (!ispkg) context.module.imports.push(filepath);
108
- if (!ispkg) cachedFiles.push({ filepath, exports });
121
+ if (!ispkg) context.module.imports.push(filepath);
122
+ if (!ispkg) cachedFiles.push({ filepath, exports });
109
123
 
110
- return exports;
111
- };
124
+ return exports;
125
+ };
112
126
  };
@@ -1,17 +1,14 @@
1
-
2
-
3
-
4
1
  module.exports.map = function map(...args) {
5
- if (args.length % 2 !== 0) {
6
- throw new Error('Arguments must be in key-value pairs');
7
- }
8
-
9
- const result = new Map();
10
- for (let i = 0; i < args.length; i += 2) {
11
- const key = args[i];
12
- const value = args[i + 1];
13
- result.set(key, value);
14
- }
15
-
16
- return result;
17
- };
2
+ if (args.length % 2 !== 0) {
3
+ throw new Error('Arguments must be in key-value pairs');
4
+ }
5
+
6
+ const result = new Map();
7
+ for (let i = 0; i < args.length; i += 2) {
8
+ const key = args[i];
9
+ const value = args[i + 1];
10
+ result.set(key, value);
11
+ }
12
+
13
+ return result;
14
+ };
@@ -1,34 +1,43 @@
1
-
2
- const SerializableData = ["string", "number", "boolean"];
1
+ const SerializableData = ['string', 'number', 'boolean'];
3
2
 
4
3
  const isRegExp = (obj) => Object.prototype.toString.call(obj) === '[object RegExp]';
5
4
 
6
5
  module.exports.match = function match(value, templates, props) {
7
- const matchProps = (pattern, value) => {
8
- if (!props) return false;
9
- if (typeof props === "object") {
10
- let t = true;
11
- for (let i in props) {
12
- t = t && pattern[i] == value[i];
13
- if (!t) break;
14
- }
15
- return t;
16
- } else if (typeof props === "function") {
17
- return props(pattern, value);
18
- } else {
19
- return false;
20
- }
21
- };
6
+ const matchProps = (pattern, value) => {
7
+ if (!props) return false;
8
+ if (typeof props === 'object') {
9
+ let t = true;
10
+ for (let i in props) {
11
+ t = t && pattern[i] == value[i];
12
+ if (!t) break;
13
+ }
14
+ return t;
15
+ } else if (typeof props === 'function') {
16
+ return props(pattern, value);
17
+ } else {
18
+ return false;
19
+ }
20
+ };
22
21
 
23
- const matchRegex = (pattern, value) => pattern.test(value);
22
+ const matchRegex = (pattern, value) => pattern.test(value);
24
23
 
25
- const entries = templates instanceof Map ? templates.entries() : Array.isArray(templates) ? templates : Object.entries(templates);
24
+ const entries = templates instanceof Map ? templates.entries() : Array.isArray(templates) ? templates : Object.entries(templates);
26
25
 
27
- for (const [pattern, callback] of entries) {
28
- if (isRegExp(pattern) ? matchRegex(pattern, value) : SerializableData.includes(typeof value) ? pattern == value : (isRegExp(pattern) ? matchRegex(pattern, value) : (typeof pattern === "function" ? value instanceof pattern || value?.__proto__?.['@instance'] === pattern : matchProps(pattern, value)))) {
29
- return callback(...(isRegExp(pattern) ? pattern.exec(value) : [value]));
30
- }
31
- }
26
+ for (const [pattern, callback] of entries) {
27
+ if (
28
+ isRegExp(pattern)
29
+ ? matchRegex(pattern, value)
30
+ : SerializableData.includes(typeof value)
31
+ ? pattern == value
32
+ : isRegExp(pattern)
33
+ ? matchRegex(pattern, value)
34
+ : typeof pattern === 'function'
35
+ ? value instanceof pattern || value?.__proto__?.['@instance'] === pattern
36
+ : matchProps(pattern, value)
37
+ ) {
38
+ return callback(...(isRegExp(pattern) ? pattern.exec(value) : [value]));
39
+ }
40
+ }
32
41
 
33
- return null;
34
- };
42
+ return null;
43
+ };
@@ -1,13 +1,13 @@
1
1
  const path = require('path');
2
2
 
3
3
  module.exports = (currentFile) => {
4
- const e = {};
5
- e.basename = (pathname, suffix) => path.basename(pathname, suffix);
6
- e.dirname = (pathname) => path.dirname(pathname);
7
- e.extname = (pathname) => path.extname(pathname);
4
+ const e = {};
5
+ e.basename = (pathname, suffix) => path.basename(pathname, suffix);
6
+ e.dirname = (pathname) => path.dirname(pathname);
7
+ e.extname = (pathname) => path.extname(pathname);
8
8
 
9
- e.pjoin = (...paths) => path.join(...paths);
10
- e.presolve = (...paths) => path.resolve(...paths);
9
+ e.pjoin = (...paths) => path.join(...paths);
10
+ e.presolve = (...paths) => path.resolve(...paths);
11
11
 
12
- return e;
13
- }
12
+ return e;
13
+ };
@@ -1,41 +1,40 @@
1
1
  const fs = require('fs');
2
2
  const path = require('path');
3
3
 
4
-
5
4
  module.exports.customRequire = function customRequire(modulePath, filePath) {
6
- const resolvedPath = resolveModulePath(modulePath, filePath);
7
- return require(resolvedPath);
8
- }
5
+ const resolvedPath = resolveModulePath(modulePath, filePath);
6
+ return require(resolvedPath);
7
+ };
9
8
 
10
9
  function resolveModulePath(modulePath, filePath) {
11
- if (modulePath.startsWith('./') || modulePath.startsWith('../') || path.isAbsolute(modulePath)) {
12
- return path.resolve(modulePath);
13
- }
10
+ if (modulePath.startsWith('./') || modulePath.startsWith('../') || path.isAbsolute(modulePath)) {
11
+ return path.resolve(modulePath);
12
+ }
14
13
 
15
- const paths = module.constructor._nodeModulePaths(path.dirname(filePath));
16
- for (const basePath of paths) {
17
- const fullPath = path.join(basePath, modulePath);
18
- if (fs.existsSync(fullPath + '.js')) {
19
- return fullPath + '.js';
20
- }
21
- if (fs.existsSync(fullPath + '.json')) {
22
- return fullPath + '.json';
23
- }
24
- if (fs.existsSync(fullPath) && fs.statSync(fullPath).isDirectory()) {
25
- const packageJsonPath = path.join(fullPath, 'package.json');
26
- if (fs.existsSync(packageJsonPath)) {
27
- const main = require(packageJsonPath).main || 'index.js';
28
- const mainPath = path.join(fullPath, main);
29
- if (fs.existsSync(mainPath)) {
30
- return mainPath;
31
- }
32
- }
33
- const indexPath = path.join(fullPath, 'index.js');
34
- if (fs.existsSync(indexPath)) {
35
- return indexPath;
36
- }
37
- }
38
- }
14
+ const paths = module.constructor._nodeModulePaths(path.dirname(filePath));
15
+ for (const basePath of paths) {
16
+ const fullPath = path.join(basePath, modulePath);
17
+ if (fs.existsSync(fullPath + '.js')) {
18
+ return fullPath + '.js';
19
+ }
20
+ if (fs.existsSync(fullPath + '.json')) {
21
+ return fullPath + '.json';
22
+ }
23
+ if (fs.existsSync(fullPath) && fs.statSync(fullPath).isDirectory()) {
24
+ const packageJsonPath = path.join(fullPath, 'package.json');
25
+ if (fs.existsSync(packageJsonPath)) {
26
+ const main = require(packageJsonPath).main || 'index.js';
27
+ const mainPath = path.join(fullPath, main);
28
+ if (fs.existsSync(mainPath)) {
29
+ return mainPath;
30
+ }
31
+ }
32
+ const indexPath = path.join(fullPath, 'index.js');
33
+ if (fs.existsSync(indexPath)) {
34
+ return indexPath;
35
+ }
36
+ }
37
+ }
39
38
 
40
- throw new Error(`Cannot find module '${modulePath}'`);
41
- }
39
+ throw new Error(`Cannot find module '${modulePath}'`);
40
+ }
@@ -1,5 +1,5 @@
1
- const future = require("./future");
1
+ const future = require('./future');
2
2
 
3
3
  module.exports = async function sleep(time) {
4
- return new Promise((r) => setTimeout(r, time));
4
+ return new Promise((r) => setTimeout(r, time));
5
5
  };
@@ -1,30 +1,30 @@
1
1
  const { execSync, spawnSync } = require('child_process');
2
2
  const fs = require('fs');
3
3
 
4
- const print = module.exports.print = function print(...arguments) {
5
- return console.log(...arguments);
6
- };
4
+ const print = (module.exports.print = function print(...arguments) {
5
+ return console.log(...arguments);
6
+ });
7
7
 
8
8
  print.stdout = process.stdout;
9
9
  print.stdin = process.stdin;
10
10
 
11
11
  module.exports.input = function input(prompt) {
12
- process.stdout.write(prompt);
12
+ process.stdout.write(prompt);
13
+
14
+ let cmd;
15
+ let args;
16
+ if ('null' == 'win32') {
17
+ cmd = 'cmd';
18
+ args = ['/V:ON', '/C', 'set /p response= && echo !response!'];
19
+ } else {
20
+ cmd = 'bash';
21
+ args = ['-c', 'read response; echo "$response"'];
22
+ }
13
23
 
14
- let cmd;
15
- let args;
16
- if ("null" == "win32") {
17
- cmd = 'cmd';
18
- args = ['/V:ON', '/C', 'set /p response= && echo !response!'];
19
- } else {
20
- cmd = 'bash';
21
- args = ['-c', 'read response; echo "$response"'];
22
- }
24
+ let opts = {
25
+ stdio: ['inherit', 'pipe'],
26
+ shell: false,
27
+ };
23
28
 
24
- let opts = {
25
- stdio: ['inherit', 'pipe'],
26
- shell: false,
27
- };
28
-
29
- return spawnSync(cmd, args, opts).stdout.toString().trim();
30
- }
29
+ return spawnSync(cmd, args, opts).stdout.toString().trim();
30
+ };