@makano/rew 1.2.5 → 1.2.6
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/lib/civet/main.js +17239 -0
- package/lib/rew/cli/cli.js +34 -5
- package/lib/rew/cli/utils.js +43 -12
- package/lib/rew/const/default.js +2 -1
- package/lib/rew/const/ext.js +5 -0
- package/lib/rew/const/opt.js +7 -2
- package/lib/rew/const/usage.js +15 -0
- package/lib/rew/functions/export.js +1 -1
- package/lib/rew/functions/fs.js +6 -1
- package/lib/rew/functions/import.js +17 -12
- package/lib/rew/functions/require.js +17 -1
- package/lib/rew/functions/stdout.js +4 -0
- package/lib/rew/main.js +1 -13
- package/lib/rew/modules/compiler.js +103 -34
- package/lib/rew/modules/context.js +13 -1
- package/lib/rew/modules/runtime.js +37 -20
- package/lib/rew/pkgs/serve.js +373 -0
- package/lib/rew/pkgs/stream.js +10 -0
- package/lib/rew/pkgs/web.js +504 -0
- package/package.json +7 -5
- package/runtime.d.ts +718 -146
- package/jsconfig.json +0 -13
- package/lib/coffeescript/browser.js +0 -156
- package/lib/coffeescript/cake.js +0 -134
- package/lib/coffeescript/coffeescript.js +0 -465
- package/lib/coffeescript/command.js +0 -832
- package/lib/coffeescript/grammar.js +0 -1930
- package/lib/coffeescript/helpers.js +0 -513
- package/lib/coffeescript/index.js +0 -230
- package/lib/coffeescript/lexer.js +0 -2316
- package/lib/coffeescript/nodes.js +0 -9784
- package/lib/coffeescript/optparse.js +0 -258
- package/lib/coffeescript/parser.js +0 -20384
- package/lib/coffeescript/register.js +0 -120
- package/lib/coffeescript/repl.js +0 -328
- package/lib/coffeescript/rewriter.js +0 -1448
- package/lib/coffeescript/scope.js +0 -191
- package/lib/coffeescript/sourcemap.js +0 -244
package/lib/rew/cli/cli.js
CHANGED
@@ -5,7 +5,7 @@ const path = require('path');
|
|
5
5
|
const { hideBin } = require('yargs/helpers');
|
6
6
|
const { execSync } = require('child_process');
|
7
7
|
const utils = require('./utils');
|
8
|
-
const { existsSync, readFileSync, writeFileSync, mkdirSync, statSync } = require('fs');
|
8
|
+
const { existsSync, readFileSync, writeFileSync, mkdirSync, statSync, unlinkSync } = require('fs');
|
9
9
|
const { log } = require('./log');
|
10
10
|
const os = require('os');
|
11
11
|
const crypto = require('crypto');
|
@@ -17,6 +17,8 @@ const { print, input } = require('../functions/stdout');
|
|
17
17
|
const colors = require('colors');
|
18
18
|
const { req } = require('../misc/req');
|
19
19
|
const { gen_key } = require('../misc/bin');
|
20
|
+
const { REW_FILE_TYPE } = require('../const/ext');
|
21
|
+
const { generateRandomID } = require('../functions/id');
|
20
22
|
|
21
23
|
if (!existsSync(CONFIG_PATH) || !existsSync(CONFIG_PATH + '/repos.yaml')) {
|
22
24
|
mkdirSync(CONFIG_PATH, { recursive: true });
|
@@ -61,9 +63,36 @@ yargs(hideBin(process.argv))
|
|
61
63
|
log('File not found:'.red.bold, argv.file, ':end');
|
62
64
|
return;
|
63
65
|
}
|
64
|
-
utils.runFileWithArgv(filePath, { onlyCompile: argv.compile, watch: argv.watch });
|
66
|
+
utils.runFileWithArgv(filePath, { async: !process.stdin.isTTY, onlyCompile: argv.compile, watch: argv.watch });
|
65
67
|
},
|
66
68
|
)
|
69
|
+
.command(
|
70
|
+
'exec [code]',
|
71
|
+
'Executes in REPL',
|
72
|
+
(yargs) => {
|
73
|
+
yargs
|
74
|
+
.option('compile', {
|
75
|
+
alias: 'c',
|
76
|
+
describe: 'Compile and output the javascript',
|
77
|
+
type: 'boolean',
|
78
|
+
});
|
79
|
+
},
|
80
|
+
async (argv) => {
|
81
|
+
const replFile = '/tmp/rew-'+generateRandomID()+'-'+Date.now()+'.coffee';
|
82
|
+
let code = argv.code;
|
83
|
+
if(!process.stdin.isTTY) {
|
84
|
+
code = await utils.getAllPipeInput();
|
85
|
+
}
|
86
|
+
writeFileSync(replFile, code);
|
87
|
+
try{
|
88
|
+
utils.runFileWithArgv(replFile, { async: !process.stdin.isTTY, onlyCompile: argv.compile });
|
89
|
+
} catch(e){
|
90
|
+
console.error(e);
|
91
|
+
} finally {
|
92
|
+
unlinkSync(replFile);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
)
|
67
96
|
.command(
|
68
97
|
'conf <command> [path] [key] [value]',
|
69
98
|
'Configuration management',
|
@@ -127,7 +156,7 @@ yargs(hideBin(process.argv))
|
|
127
156
|
type: 'string',
|
128
157
|
})
|
129
158
|
.option('dev', {
|
130
|
-
describe:
|
159
|
+
describe: `If your entry file is a .qrew, then just use .coffe or ${REW_FILE_TYPE.EXTENSION} instead`,
|
131
160
|
type: 'boolean',
|
132
161
|
})
|
133
162
|
.option('entry', {
|
@@ -354,7 +383,7 @@ yargs(hideBin(process.argv))
|
|
354
383
|
})
|
355
384
|
.option('remove', {
|
356
385
|
alias: 'r',
|
357
|
-
describe: 'Remove all coffee',
|
386
|
+
describe: 'Remove all .coffee and '+REW_FILE_TYPE.EXTENSION,
|
358
387
|
type: 'boolean',
|
359
388
|
});
|
360
389
|
},
|
@@ -362,4 +391,4 @@ yargs(hideBin(process.argv))
|
|
362
391
|
utils.build(argv);
|
363
392
|
},
|
364
393
|
)
|
365
|
-
.help(!isFileGiven).argv;
|
394
|
+
.help(!isFileGiven).argv;
|
package/lib/rew/cli/utils.js
CHANGED
@@ -18,6 +18,7 @@ const { seededID } = require('../misc/seededid');
|
|
18
18
|
const loading = require('loading-cli');
|
19
19
|
const sleep = require('../functions/sleep');
|
20
20
|
const { gen_key } = require('../misc/bin');
|
21
|
+
const { REW_FILE_TYPE } = require('../const/ext');
|
21
22
|
|
22
23
|
const binpath = path.join(conf({}).create('').root, '.bin');
|
23
24
|
const logspath = path.join(conf({}).create('').root, '.logs');
|
@@ -35,7 +36,7 @@ module.exports = {
|
|
35
36
|
|
36
37
|
const runIt = () => {
|
37
38
|
if (options.watch) console.clear();
|
38
|
-
const imports = execRewFile(filePath, [filePath, ...(argv || [])], { onlyCompile: options?.onlyCompile });
|
39
|
+
const imports = execRewFile(filePath, [filePath, ...(argv || [])], { onlyCompile: options?.onlyCompile, async: options?.async });
|
39
40
|
if (options.watch) {
|
40
41
|
imports.forEach((file) => {
|
41
42
|
watchIt(file);
|
@@ -47,15 +48,21 @@ module.exports = {
|
|
47
48
|
runIt();
|
48
49
|
},
|
49
50
|
runFileWithArgv(filePath, options = {}, cargv) {
|
50
|
-
|
51
|
+
let argv = cargv || process.argv;
|
51
52
|
argv.shift();
|
52
|
-
if (argv[0].endsWith('
|
53
|
+
if (argv[0].endsWith(REW_FILE_TYPE.EXTENSION) || argv[0].endsWith('.coffee')) {
|
53
54
|
if (argv[1] == 'run') {
|
54
55
|
argv.splice(0, 3);
|
55
56
|
} else if(argv[1] == '-w' || argv[1] == '--watch'){
|
56
57
|
argv.splice(0, 3);
|
57
58
|
} else argv.splice(0, 2);
|
58
59
|
}
|
60
|
+
if (argv[1] == 'exec') {
|
61
|
+
argv.splice(0, 2);
|
62
|
+
}
|
63
|
+
if (argv.includes('--')) {
|
64
|
+
argv = argv.slice(argv.indexOf('--') + 1, argv.length);
|
65
|
+
}
|
59
66
|
this.runFile(filePath, options, argv)
|
60
67
|
},
|
61
68
|
conf(command, fullPath, key, value) {
|
@@ -118,8 +125,8 @@ module.exports = {
|
|
118
125
|
const create = () => {
|
119
126
|
fs.mkdirSync(projectPath, { recursive: true });
|
120
127
|
const confPath = path.join(projectPath, 'app.yaml');
|
121
|
-
const entryFile = path.join(projectPath, 'main.coffee');
|
122
|
-
fs.writeFileSync(confPath, jsYaml.dump({ manifest: { package: project.package, private: false }, exec: { entry: 'main.coffee' }, assets: { icon: 'assets/icon.png', folder: './assets' }, install: { requirements: [] } }));
|
128
|
+
const entryFile = path.join(projectPath, 'main'+(project.civet ? REW_FILE_TYPE.EXTENSION : '.coffee'));
|
129
|
+
fs.writeFileSync(confPath, jsYaml.dump({ manifest: { package: project.package, private: false }, exec: { entry: 'main'+(project.civet ? REW_FILE_TYPE.EXTENSION : '.coffee') }, assets: { icon: 'assets/icon.png', folder: './assets' }, install: { requirements: [] } }));
|
123
130
|
fs.writeFileSync(entryFile, `print("Hello World!")`);
|
124
131
|
fs.mkdirSync(path.join(projectPath, 'assets'), { recursive: true });
|
125
132
|
if (project.git) {
|
@@ -127,10 +134,14 @@ module.exports = {
|
|
127
134
|
execSync('cd ' + projectPath + ' && git init . && git branch -m main', { stdio: 'ignore' });
|
128
135
|
}
|
129
136
|
if(project.intellisense){
|
130
|
-
fs.copyFileSync(path.join(__dirname, '../../../
|
137
|
+
fs.copyFileSync(path.join(__dirname, '../../../tsconfig.json'), path.join(projectPath, 'tsconfig.json'));
|
131
138
|
fs.copyFileSync(path.join(__dirname, '../../../runtime.d.ts'), path.join(projectPath, 'runtime.d.ts'));
|
132
139
|
}
|
133
140
|
execSync('cd ' + projectPath + ' && npm init -y', { stdio: 'ignore' });
|
141
|
+
if(project.civet){
|
142
|
+
log('Installing NPM Packages');
|
143
|
+
execSync('cd '+projectPath+' && npm i @types/node --no-save', { stdio: 'ignore' });
|
144
|
+
}
|
134
145
|
// log('Installing '+npm_package_name);
|
135
146
|
// exec('cd '+projectPath+' && npm i '+npm_package_name, (err) => {
|
136
147
|
// if(err){
|
@@ -149,9 +160,12 @@ module.exports = {
|
|
149
160
|
project.package = pkg.trim();
|
150
161
|
rl.question(logget(' Use intellisense declarations ? (y/N): '.magenta.bold), (inteli) => {
|
151
162
|
project.intellisense = inteli.toLowerCase() == 'y' || inteli.toLowerCase() == 'yes';
|
152
|
-
rl.question(logget('
|
153
|
-
project.
|
154
|
-
|
163
|
+
rl.question(logget(' Use Civet For main ? (y/N): '.blue.bold), (civet) => {
|
164
|
+
project.civet = civet.toLowerCase() == 'y' || civet.toLowerCase() == 'yes';
|
165
|
+
rl.question(logget(' Use git ? (y/N): '.yellow.bold), (use_git) => {
|
166
|
+
project.git = use_git.toLowerCase() == 'y' || use_git.toLowerCase() == 'yes';
|
167
|
+
create();
|
168
|
+
});
|
155
169
|
});
|
156
170
|
});
|
157
171
|
} else {
|
@@ -173,8 +187,8 @@ module.exports = {
|
|
173
187
|
c.exec.entry = c.exec[options.entry] || c.exec.entry;
|
174
188
|
}
|
175
189
|
if (c.exec.entry) {
|
176
|
-
if (byPath && options.dev) c.exec.entry = c.entry.endsWith('.qrew') ? c.exec.entry.replace(/\.qrew$/, '.coffee') : c.exec.entry;
|
177
190
|
let r = path.resolve(root, c.exec.entry);
|
191
|
+
if (byPath && options.dev) r = r.endsWith('.qrew') ? r.replace(/\.qrew$/, (a, b) => fs.existsSync(r.replace(a, '.coffee')) ? '.coffee' : REW_FILE_TYPE.EXTENSION) : r;
|
178
192
|
if (options.build) {
|
179
193
|
this.build({
|
180
194
|
file: r,
|
@@ -182,7 +196,7 @@ module.exports = {
|
|
182
196
|
});
|
183
197
|
r = path.resolve(root, c.exec.entry.replace(new RegExp(path.extname(c.exec.entry).replace('.', '\\.') + '$'), options.translate ? '.js' : '.qrew'));
|
184
198
|
}
|
185
|
-
this.runFileWithArgv(r);
|
199
|
+
this.runFileWithArgv(r, { async: !process.stdin.isTTY });
|
186
200
|
}
|
187
201
|
};
|
188
202
|
|
@@ -357,6 +371,9 @@ module.exports = {
|
|
357
371
|
if (fs.existsSync(importedFilePath)) {
|
358
372
|
importsArray.push(importStatement);
|
359
373
|
processFile(importedFilePath, importsArray);
|
374
|
+
} else if (fs.existsSync(importedFilePath + REW_FILE_TYPE.EXTENSION)) {
|
375
|
+
importsArray.push(importStatement);
|
376
|
+
processFile(importedFilePath + REW_FILE_TYPE.EXTENSION, importsArray);
|
360
377
|
} else if (fs.existsSync(importedFilePath + '.coffee')) {
|
361
378
|
importsArray.push(importStatement);
|
362
379
|
processFile(importedFilePath + '.coffee', importsArray);
|
@@ -369,7 +386,7 @@ module.exports = {
|
|
369
386
|
|
370
387
|
const appPath = findAppInfo(filePath);
|
371
388
|
|
372
|
-
const compiled = argv.translate ? compile({ content }, {}) : to_qrew(content
|
389
|
+
const compiled = argv.translate ? compile({ content }, {}) : to_qrew(`"initFile ${filePath}"\n${path.basename(content)}`, appPath?.config?.manifest?.package || path.basename(filePath).split('.').slice(0, -1).join('.'));
|
373
390
|
writeCompiledFile(filePath, compiled);
|
374
391
|
}
|
375
392
|
|
@@ -531,5 +548,19 @@ module.exports = {
|
|
531
548
|
fs.mkdirSync(binpath, { recursive: true });
|
532
549
|
fs.mkdirSync(cachepath, { recursive: true });
|
533
550
|
fs.mkdirSync(logspath, { recursive: true });
|
551
|
+
},
|
552
|
+
getAllPipeInput(){
|
553
|
+
return new Promise((resolve) => {
|
554
|
+
let data = '';
|
555
|
+
process.stdin.setEncoding('utf8');
|
556
|
+
|
557
|
+
process.stdin.on('data', (chunk) => {
|
558
|
+
data += chunk;
|
559
|
+
});
|
560
|
+
|
561
|
+
process.stdin.on('end', () => {
|
562
|
+
resolve(data);
|
563
|
+
});
|
564
|
+
});
|
534
565
|
}
|
535
566
|
};
|
package/lib/rew/const/default.js
CHANGED
@@ -7,7 +7,7 @@ const { match } = require('../functions/match');
|
|
7
7
|
const { map } = require('../functions/map');
|
8
8
|
const { typex, typeis, typedef, typei, int, float, num, str, bool } = require('../functions/types');
|
9
9
|
const { isEmpty, clone, deepClone, merge, uniqueId, compose, curry } = require('../functions/core');
|
10
|
-
const { print, input, clear } = require('../functions/stdout');
|
10
|
+
const { print, input, clear, printf } = require('../functions/stdout');
|
11
11
|
const { curl } = require('../functions/curl');
|
12
12
|
const { wait } = require('../functions/wait');
|
13
13
|
const { scheduleFrame } = require('../functions/misc');
|
@@ -55,5 +55,6 @@ module.exports = {
|
|
55
55
|
curl,
|
56
56
|
|
57
57
|
print,
|
58
|
+
printf,
|
58
59
|
input,
|
59
60
|
};
|
package/lib/rew/const/opt.js
CHANGED
@@ -1,10 +1,15 @@
|
|
1
|
+
const { REW_FILE_TYPE } = require("./ext");
|
2
|
+
|
1
3
|
const execOptions = {
|
2
4
|
sharedContext: true,
|
3
|
-
resolveExtensions: [
|
5
|
+
resolveExtensions: [REW_FILE_TYPE.EXTENSION, ".coffee", { ext: '.js', options: { type: 'js' } }, { ext: '.qrew', options: { qrew: true } }],
|
4
6
|
nativeRequire: false,
|
7
|
+
useImport: false,
|
5
8
|
cwdAlias: '$',
|
6
|
-
jsxPragma: 'createElement',
|
9
|
+
jsxPragma: '__using__.JSX.createElement',
|
7
10
|
jsx: false,
|
11
|
+
typescript: false,
|
12
|
+
decorators: false
|
8
13
|
};
|
9
14
|
|
10
15
|
module.exports.execOptions = execOptions;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
module.exports.USING_DEFAULT = {
|
5
|
+
JSX: {
|
6
|
+
param: (param) => ({ createElement: param }),
|
7
|
+
use: (options) => options.jsx = true
|
8
|
+
},
|
9
|
+
TYPES: {
|
10
|
+
use: (options) => options.typescript = true
|
11
|
+
},
|
12
|
+
DECORATORS: {
|
13
|
+
use: (options) => options.decorators = true
|
14
|
+
}
|
15
|
+
}
|
package/lib/rew/functions/fs.js
CHANGED
@@ -31,7 +31,11 @@ module.exports = (currentFile) => {
|
|
31
31
|
}
|
32
32
|
|
33
33
|
function rm(filepath, options) {
|
34
|
-
return fs.
|
34
|
+
return fs.rmSync(gp(filepath), { recursive: true,...options });
|
35
|
+
}
|
36
|
+
|
37
|
+
function unlink(filepath, options) {
|
38
|
+
return fs.unlinkSync(gp(filepath));
|
35
39
|
}
|
36
40
|
|
37
41
|
function chmod(filepath, mode, options) {
|
@@ -51,6 +55,7 @@ module.exports = (currentFile) => {
|
|
51
55
|
mkdir,
|
52
56
|
chmod,
|
53
57
|
rm,
|
58
|
+
unlink,
|
54
59
|
fstat,
|
55
60
|
exists,
|
56
61
|
write,
|
@@ -6,9 +6,12 @@ const { existsSync, readFileSync } = require('fs');
|
|
6
6
|
const conf = require('../pkgs/conf');
|
7
7
|
const jsYaml = require('js-yaml');
|
8
8
|
const { execOptions } = require('../const/opt');
|
9
|
+
const { REW_FILE_TYPE } = require('../const/ext');
|
9
10
|
|
10
11
|
const cachedFiles = [];
|
11
|
-
|
12
|
+
module.exports.cleanCache = () => {
|
13
|
+
while(cachedFiles.length) cachedFiles.pop();
|
14
|
+
};
|
12
15
|
const lookUpInOtherApps = (fullPath) => {
|
13
16
|
const con = conf({});
|
14
17
|
const name = fullPath.indexOf('/') ? fullPath.split('/')[0] : fullPath;
|
@@ -32,7 +35,7 @@ const lookUpInOtherApps = (fullPath) => {
|
|
32
35
|
module.exports.imp = function (runPath, context) {
|
33
36
|
return function (filename, options = {}) {
|
34
37
|
if (!options) options = {};
|
35
|
-
let type = options.type || 'coffee';
|
38
|
+
let type = options.type || filename.endsWith('.coffee') ? 'coffee' : REW_FILE_TYPE.TYPE;
|
36
39
|
let exports,
|
37
40
|
ispkg = findPackage(filename);
|
38
41
|
|
@@ -43,8 +46,6 @@ module.exports.imp = function (runPath, context) {
|
|
43
46
|
let filepath = path.resolve(path.dirname(context.module.filepath), filename);
|
44
47
|
if(path.extname(filepath) == '.qrew') options.qrew = true;
|
45
48
|
|
46
|
-
// console.log(typeof runPath);
|
47
|
-
|
48
49
|
const lookUp = () => {
|
49
50
|
const otherPath = lookUpInOtherApps(filename);
|
50
51
|
if (!otherPath) throw new Error('Module "' + filename + '" not found');
|
@@ -72,8 +73,8 @@ module.exports.imp = function (runPath, context) {
|
|
72
73
|
} else lookUp();
|
73
74
|
}
|
74
75
|
|
75
|
-
const exec = (coptions = {}) =>
|
76
|
-
runPath(
|
76
|
+
const exec = (coptions = {}) => {
|
77
|
+
const r = runPath(
|
77
78
|
filepath,
|
78
79
|
{
|
79
80
|
import: options,
|
@@ -86,13 +87,18 @@ module.exports.imp = function (runPath, context) {
|
|
86
87
|
package: context.app ? context.app.config.package : path.basename(filepath)
|
87
88
|
},
|
88
89
|
execOptions.sharedContext == false ? {} : options.context && options.context == 'new' ? {} : context,
|
89
|
-
)
|
90
|
+
);
|
91
|
+
if(r instanceof Promise){
|
92
|
+
return new Promise((resolve) => r.then(c => resolve(c.context.module.exports)));
|
93
|
+
}
|
94
|
+
return r.context.module.exports;
|
95
|
+
}
|
90
96
|
|
91
97
|
if (ispkg) {
|
92
|
-
const pkg = getPackage(filename)(context);
|
98
|
+
const pkg = getPackage(filename)(context, options);
|
93
99
|
exports = pkg._onImport ? pkg._onImport() : pkg;
|
94
100
|
} else if (foundCache) {
|
95
|
-
} else if (type ==
|
101
|
+
} else if (type == REW_FILE_TYPE.TYPE || type == "coffee") {
|
96
102
|
exports = exec({});
|
97
103
|
} else if (type == 'js') {
|
98
104
|
exports = exec({ compile: false });
|
@@ -111,7 +117,7 @@ module.exports.imp = function (runPath, context) {
|
|
111
117
|
}
|
112
118
|
}
|
113
119
|
|
114
|
-
if (options.save && (type == 'js' || type ==
|
120
|
+
if (options.save && (type == 'js' || type == REW_FILE_TYPE.TYPE || type == "coffee")) {
|
115
121
|
if (typeof options.save == 'string') context[options.save] = exports[i];
|
116
122
|
else
|
117
123
|
for (let i in exports) {
|
@@ -134,8 +140,7 @@ module.exports.imp = function (runPath, context) {
|
|
134
140
|
|
135
141
|
//** Mock imports section
|
136
142
|
/**/ if(!exports) exports = options.mock;
|
137
|
-
/**/ if(options.mock
|
138
|
-
/**/ if(!exports) throw new Error('Import '+filename+' does not export anything. Use the "mock" option to mock a value.');
|
143
|
+
/**/ if(options.mock === null) return null;
|
139
144
|
//**
|
140
145
|
|
141
146
|
return exports;
|
@@ -1,10 +1,26 @@
|
|
1
1
|
const fs = require('fs');
|
2
2
|
const path = require('path');
|
3
|
+
const { execOptions } = require('../const/opt');
|
4
|
+
const { wait } = require('./wait');
|
5
|
+
|
6
|
+
const cahcedRequires = {};
|
7
|
+
|
8
|
+
const doImp = (path) => wait(async () => await import(resolvedPath));
|
3
9
|
|
4
10
|
module.exports.customRequire = function customRequire(modulePath, filePath) {
|
11
|
+
let pathname = modulePath;
|
12
|
+
if (modulePath.startsWith('./') || modulePath.startsWith('../') || path.isAbsolute(modulePath)) {
|
13
|
+
pathname = path.resolve(modulePath);
|
14
|
+
}
|
15
|
+
if(cahcedRequires[pathname]) {
|
16
|
+
return cahcedRequires[pathname];
|
17
|
+
}
|
5
18
|
const resolvedPath = resolveModulePath(modulePath, filePath);
|
6
19
|
if(!resolvedPath) throw new Error('Module '+modulePath+' not found');
|
7
|
-
|
20
|
+
const r = cahcedRequires[resolvedPath] ? cahcedRequires[resolvedPath] : execOptions.useImport ? doImp(resolvedPath) : require(resolvedPath);
|
21
|
+
if(!cahcedRequires[resolvedPath]) cahcedRequires[resolvedPath] = r;
|
22
|
+
if(!cahcedRequires[pathname]) cahcedRequires[pathname] = r;
|
23
|
+
return r;
|
8
24
|
};
|
9
25
|
|
10
26
|
function resolveModulePath(modulePath, filePath) {
|
@@ -4,6 +4,10 @@ const print = (module.exports.print = function print(...args) {
|
|
4
4
|
return console.log(...args);
|
5
5
|
});
|
6
6
|
|
7
|
+
module.exports.printf = function printf(buffer, cb) {
|
8
|
+
return process.stdout.write(buffer, cb);
|
9
|
+
};
|
10
|
+
|
7
11
|
print.stdout = process.stdout;
|
8
12
|
print.stdin = process.stdin;
|
9
13
|
|
package/lib/rew/main.js
CHANGED
@@ -1,17 +1,5 @@
|
|
1
|
-
const {
|
2
|
-
const { exec, runPath } = require('./modules/runtime');
|
3
|
-
const fs = require('fs');
|
4
|
-
const { imp } = require('./functions/import');
|
5
|
-
const { FILES } = require('./const/files');
|
1
|
+
const { runPath } = require('./modules/runtime');
|
6
2
|
|
7
3
|
module.exports.run = function (filepath, options = {}, custom_context = {}) {
|
8
|
-
FILES.forEach((file) => {
|
9
|
-
if (fs.existsSync(file.path)) return;
|
10
|
-
if (file.content) {
|
11
|
-
fs.writeFileSync(file.path, file.content);
|
12
|
-
} else {
|
13
|
-
fs.mkdirSync(file.path, { recursive: true });
|
14
|
-
}
|
15
|
-
});
|
16
4
|
return runPath(filepath, options, custom_context);
|
17
5
|
};
|