@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.
- package/lib/coffeescript/browser.js +144 -139
- package/lib/coffeescript/cake.js +132 -133
- package/lib/coffeescript/coffeescript.js +437 -381
- package/lib/coffeescript/command.js +806 -724
- package/lib/coffeescript/grammar.js +1908 -2474
- package/lib/coffeescript/helpers.js +509 -473
- package/lib/coffeescript/index.js +228 -215
- package/lib/coffeescript/lexer.js +2282 -1909
- package/lib/coffeescript/nodes.js +9782 -9202
- package/lib/coffeescript/optparse.js +255 -227
- package/lib/coffeescript/parser.js +20305 -1265
- package/lib/coffeescript/register.js +107 -87
- package/lib/coffeescript/repl.js +307 -284
- package/lib/coffeescript/rewriter.js +1389 -1079
- package/lib/coffeescript/scope.js +176 -172
- package/lib/coffeescript/sourcemap.js +242 -227
- package/lib/rew/cli/cli.js +288 -186
- package/lib/rew/cli/log.js +31 -32
- package/lib/rew/cli/run.js +10 -12
- package/lib/rew/cli/utils.js +344 -176
- package/lib/rew/const/config_path.js +4 -0
- package/lib/rew/const/default.js +38 -35
- package/lib/rew/const/files.js +9 -9
- package/lib/rew/const/opt.js +8 -8
- package/lib/rew/css/theme.css +2 -2
- package/lib/rew/functions/core.js +55 -57
- package/lib/rew/functions/curl.js +23 -0
- package/lib/rew/functions/emitter.js +52 -55
- package/lib/rew/functions/exec.js +25 -21
- package/lib/rew/functions/export.js +18 -20
- package/lib/rew/functions/fs.js +55 -54
- package/lib/rew/functions/future.js +29 -21
- package/lib/rew/functions/id.js +8 -9
- package/lib/rew/functions/import.js +107 -93
- package/lib/rew/functions/map.js +13 -16
- package/lib/rew/functions/match.js +35 -26
- package/lib/rew/functions/path.js +8 -8
- package/lib/rew/functions/require.js +32 -33
- package/lib/rew/functions/sleep.js +2 -2
- package/lib/rew/functions/stdout.js +20 -20
- package/lib/rew/functions/types.js +96 -95
- package/lib/rew/html/ui.html +12 -13
- package/lib/rew/html/ui.js +205 -168
- package/lib/rew/main.js +14 -14
- package/lib/rew/misc/bin.js +37 -0
- package/lib/rew/misc/findAppInfo.js +16 -0
- package/lib/rew/misc/findAppPath.js +21 -0
- package/lib/rew/misc/req.js +7 -0
- package/lib/rew/misc/seededid.js +13 -0
- package/lib/rew/models/enum.js +12 -12
- package/lib/rew/models/struct.js +30 -32
- package/lib/rew/modules/compiler.js +237 -177
- package/lib/rew/modules/context.js +35 -22
- package/lib/rew/modules/fs.js +10 -10
- package/lib/rew/modules/runtime.js +17 -21
- package/lib/rew/modules/yaml.js +27 -30
- package/lib/rew/pkgs/conf.js +82 -75
- package/lib/rew/pkgs/data.js +12 -7
- package/lib/rew/pkgs/date.js +27 -28
- package/lib/rew/pkgs/env.js +6 -8
- package/lib/rew/pkgs/modules/data/bintree.js +52 -52
- package/lib/rew/pkgs/modules/data/doublylinked.js +85 -85
- package/lib/rew/pkgs/modules/data/linkedList.js +73 -73
- package/lib/rew/pkgs/modules/data/queue.js +19 -20
- package/lib/rew/pkgs/modules/data/stack.js +19 -19
- package/lib/rew/pkgs/modules/threads/worker.js +36 -26
- package/lib/rew/pkgs/modules/ui/classes.js +182 -178
- package/lib/rew/pkgs/pkgs.js +9 -10
- package/lib/rew/pkgs/rune.js +400 -0
- package/lib/rew/pkgs/threads.js +57 -53
- package/lib/rew/pkgs/ui.js +148 -136
- package/lib/rew/qrew/compile.js +12 -0
- package/package.json +11 -4
package/lib/rew/cli/cli.js
CHANGED
@@ -8,198 +8,300 @@ const { watch } = require('chokidar');
|
|
8
8
|
const utils = require('./utils');
|
9
9
|
const { existsSync, readFileSync, writeFileSync, mkdirSync } = require('fs');
|
10
10
|
const { log } = require('./log');
|
11
|
-
const
|
11
|
+
const os = require('os');
|
12
|
+
const crypto = require('crypto');
|
13
|
+
const { CONFIG_PATH } = require('../const/config_path');
|
14
|
+
const rune = require('../pkgs/rune');
|
15
|
+
const { to_qrew, from_qrew } = require('../qrew/compile');
|
16
|
+
const { findAppInfo } = require('../misc/findAppInfo');
|
17
|
+
const { print, input } = require('../functions/stdout');
|
18
|
+
const colors = require('colors');
|
19
|
+
|
20
|
+
if (!existsSync(CONFIG_PATH)) {
|
21
|
+
mkdirSync(CONFIG_PATH, { recursive: true });
|
22
|
+
utils.initFirst();
|
23
|
+
}
|
12
24
|
|
13
25
|
yargs(hideBin(process.argv))
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
26
|
+
.command(
|
27
|
+
'$0 <file>',
|
28
|
+
'Run the specified file',
|
29
|
+
(yargs) => {
|
30
|
+
yargs
|
31
|
+
.positional('file', {
|
32
|
+
describe: 'File to run',
|
33
|
+
type: 'string',
|
34
|
+
})
|
35
|
+
.option('watch', {
|
36
|
+
alias: 'w',
|
37
|
+
describe: 'Watch the file for changes',
|
38
|
+
type: 'boolean',
|
39
|
+
});
|
40
|
+
},
|
41
|
+
(argv) => {
|
42
|
+
const filePath = path.resolve(process.cwd(), argv.file);
|
43
|
+
if (!existsSync(filePath)) {
|
44
|
+
log('File not found:', argv.file, ':end');
|
45
|
+
return;
|
46
|
+
}
|
47
|
+
const watching = [];
|
48
|
+
const watchIt = (file) => {
|
49
|
+
if (watching.includes(file)) return;
|
50
|
+
watch(file).on('change', () => runIt());
|
51
|
+
watching.push(file);
|
52
|
+
};
|
53
|
+
let prevFork;
|
54
|
+
const runIt = () => {
|
55
|
+
if (argv.watch) console.clear();
|
56
|
+
if (prevFork && !prevFork.killed) prevFork.kill?.();
|
57
|
+
prevFork = fork(path.resolve(__dirname, './run.js'))
|
58
|
+
.on('message', (data) => {
|
59
|
+
if (argv.watch) {
|
60
|
+
data.forEach((file) => {
|
61
|
+
watchIt(file);
|
62
|
+
});
|
63
|
+
}
|
64
|
+
})
|
65
|
+
.send({ filePath, watch: argv.watch });
|
66
|
+
if (argv.watch) watchIt(filePath);
|
67
|
+
};
|
68
|
+
runIt();
|
69
|
+
},
|
70
|
+
)
|
71
|
+
.command(
|
72
|
+
'conf <command> [path] [key] [value]',
|
73
|
+
'Configuration management',
|
74
|
+
(yargs) => {
|
75
|
+
yargs
|
76
|
+
.positional('command', {
|
77
|
+
describe: 'Configuration command (get, set, remove)',
|
78
|
+
type: 'string',
|
79
|
+
choices: ['get', 'set', 'remove'],
|
80
|
+
})
|
81
|
+
.positional('path', {
|
82
|
+
describe: 'Configuration path',
|
83
|
+
type: 'string',
|
84
|
+
default: '',
|
85
|
+
})
|
86
|
+
.positional('key', {
|
87
|
+
describe: 'Key to get/set/remove',
|
88
|
+
type: 'string',
|
89
|
+
default: '',
|
90
|
+
})
|
91
|
+
.positional('value', {
|
92
|
+
describe: 'Value to set (only used with "set" command)',
|
93
|
+
type: 'string',
|
94
|
+
default: '',
|
95
|
+
});
|
96
|
+
},
|
97
|
+
(argv) => {
|
98
|
+
const { command, path, key, value } = argv;
|
99
|
+
const result = utils.conf(command, path, key, value);
|
100
|
+
if (result) console.log(result);
|
101
|
+
},
|
102
|
+
)
|
103
|
+
.command(
|
104
|
+
'create <path>',
|
105
|
+
'Create a new project',
|
106
|
+
(yargs) => {
|
107
|
+
yargs.positional('path', {
|
108
|
+
describe: 'Path of the project to create',
|
109
|
+
type: 'string',
|
110
|
+
});
|
111
|
+
},
|
112
|
+
(argv) => {
|
113
|
+
utils.createProject(argv.path);
|
114
|
+
},
|
115
|
+
)
|
116
|
+
.command(
|
117
|
+
'rune-keygen',
|
118
|
+
'Generate a rune encryption key',
|
119
|
+
(yargs) => {
|
120
|
+
},
|
121
|
+
(argv) => {
|
122
|
+
console.log('Encryption Key:', rune({}).genKey(input('Secret Value: ') || null));
|
123
|
+
},
|
124
|
+
)
|
125
|
+
.command(
|
126
|
+
'ui-bin <path>',
|
127
|
+
'Build the UI bin for your own app',
|
128
|
+
(yargs) => {
|
129
|
+
yargs.positional('path', {
|
130
|
+
describe: 'Path of the output bin',
|
131
|
+
type: 'string',
|
132
|
+
});
|
133
|
+
},
|
134
|
+
(argv) => {
|
135
|
+
execSync('sh ' + path.resolve(__dirname, '../../../build.sh') + ' ' + argv.path);
|
136
|
+
},
|
137
|
+
)
|
138
|
+
.command(
|
139
|
+
'run <path | package>',
|
140
|
+
'Run an app',
|
141
|
+
(yargs) => {
|
142
|
+
yargs.positional('path', {
|
143
|
+
describe: 'Path of the app to run',
|
144
|
+
type: 'string',
|
145
|
+
})
|
146
|
+
.option('dev', {
|
147
|
+
describe: 'If your entry file is a .qrew, then just use the .coffee instead',
|
148
|
+
type: 'boolean',
|
149
|
+
})
|
150
|
+
.option('build', {
|
151
|
+
alias: 'b',
|
152
|
+
describe: 'Builds to a .qrew before running',
|
153
|
+
type: 'boolean',
|
154
|
+
})
|
155
|
+
.option('translate', {
|
156
|
+
alias: 't',
|
157
|
+
describe: 'Builds to a .js before running, only used when --build is passed',
|
158
|
+
type: 'boolean',
|
159
|
+
});
|
160
|
+
},
|
161
|
+
(argv) => {
|
162
|
+
utils.runApp(argv.path, argv);
|
163
|
+
},
|
164
|
+
)
|
165
|
+
.command(
|
166
|
+
'secret <command> [key]',
|
167
|
+
'Add secrets to the current path',
|
168
|
+
(yargs) => {
|
169
|
+
yargs.positional('command', {
|
170
|
+
describe: 'Path of the app to run',
|
171
|
+
type: 'string',
|
172
|
+
});
|
173
|
+
},
|
174
|
+
(argv) => {
|
175
|
+
const appPath = findAppInfo(path.join(process.cwd(), 'app.yaml'));
|
176
|
+
|
177
|
+
if (!appPath) return log(''.red.bold, 'Secrets only available in apps'.red.bold, ':end');
|
178
|
+
|
179
|
+
const qrewPath = path.join(appPath.path, 'secrets.qrew');
|
180
|
+
|
181
|
+
const getHost = () => `${process.env.USER}@${os.platform()}.${os.hostname()}`;
|
182
|
+
|
183
|
+
const verifyUser = (content) => {
|
184
|
+
const owner = content.match(/^owner = "(.*)" # end$/m)?.[1];
|
185
|
+
if (owner == getHost()) return true;
|
186
|
+
return false;
|
187
|
+
};
|
147
188
|
|
148
|
-
|
149
|
-
|
150
|
-
|
189
|
+
if (argv.command == 'init') {
|
190
|
+
writeFileSync(qrewPath, to_qrew(`secrets = {} # end\n\nowner = "${getHost()}" # end\n \nexports { ...secrets }`, appPath.config.package))
|
191
|
+
} else {
|
192
|
+
const currentFileContent = from_qrew(readFileSync(qrewPath), appPath.config.package).toString();
|
193
|
+
if (!verifyUser(currentFileContent)) return log(''.red.bold, 'You are not allowed to change this data'.red.bold, ':end');
|
151
194
|
|
152
|
-
|
153
|
-
const importRegex = /(\w+)\s*=\s*imp\s*['"](.+?)['"]/g;
|
154
|
-
const imports = [];
|
155
|
-
let match;
|
156
|
-
while ((match = importRegex.exec(content)) !== null) {
|
157
|
-
imports.push({ variable: match[1], url: match[2] });
|
158
|
-
}
|
159
|
-
return imports;
|
160
|
-
}
|
195
|
+
const secrets = currentFileContent.match(/^secrets = (.*) # end$/m)?.[1];
|
161
196
|
|
162
|
-
|
163
|
-
const dirName = outputDir ? outputDir : path.dirname(filePath);
|
164
|
-
if(!existsSync(dirName)) mkdirSync(dirName, { recursive: true });
|
165
|
-
const baseName = path.basename(filePath, path.extname(filePath));
|
166
|
-
const newFilePath = path.join(dirName, `${baseName}.js`);
|
167
|
-
writeFileSync(newFilePath, compiledCode, { encoding: 'utf-8' });
|
168
|
-
log(`Compiled: ${newFilePath}`);
|
169
|
-
}
|
197
|
+
let secretsJson = JSON.parse(secrets);
|
170
198
|
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
imports.forEach(importStatement => {
|
176
|
-
const importedFilePath = path.resolve(path.dirname(filePath), importStatement.url);
|
177
|
-
if (!importsArray.some(importObj => importObj.url === importStatement.url)) {
|
178
|
-
|
179
|
-
if(existsSync(importedFilePath)){
|
180
|
-
importsArray.push(importStatement);
|
181
|
-
processFile(importedFilePath, importsArray);
|
182
|
-
} else if(existsSync(importedFilePath+'.coffee')){
|
183
|
-
importsArray.push(importStatement);
|
184
|
-
processFile(importedFilePath+'.coffee', importsArray);
|
185
|
-
} else if(existsSync(importedFilePath+'.js')){
|
186
|
-
importsArray.push(importStatement);
|
187
|
-
processFile(importedFilePath+'.js', importsArray);
|
188
|
-
}
|
199
|
+
if (argv.command == 'set' || argv.command == 'remove') {
|
200
|
+
if (argv.command == 'set') {
|
201
|
+
let val = input('Secret Value: ');
|
189
202
|
|
190
|
-
|
191
|
-
|
203
|
+
secretsJson[argv.key] = val;
|
204
|
+
} else {
|
205
|
+
delete secretsJson[argv.key];
|
206
|
+
}
|
192
207
|
|
193
|
-
|
194
|
-
|
195
|
-
}
|
208
|
+
const newSecrets = `secrets = ${JSON.stringify(secretsJson)} # end`;
|
209
|
+
const newFileContent = currentFileContent.replace(/^secrets = .* # end$/m, newSecrets);
|
196
210
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
211
|
+
writeFileSync(qrewPath, to_qrew(newFileContent, appPath.config.package))
|
212
|
+
} else if (argv.command == 'get') {
|
213
|
+
if (argv.key) {
|
214
|
+
console.log(argv.key.yellow, '=', secretsJson[argv.key].green);
|
215
|
+
}
|
216
|
+
else {
|
217
|
+
for (let key in secretsJson) {
|
218
|
+
console.log(key.yellow, '=', secretsJson[key].green);
|
219
|
+
}
|
220
|
+
}
|
221
|
+
}
|
222
|
+
}
|
223
|
+
},
|
224
|
+
)
|
225
|
+
.command(
|
226
|
+
'install <path>',
|
227
|
+
'Install an app',
|
228
|
+
(yargs) => {
|
229
|
+
yargs.positional('path', {
|
230
|
+
describe: 'Path of the app to install',
|
231
|
+
type: 'string',
|
232
|
+
});
|
233
|
+
},
|
234
|
+
async (argv) => {
|
235
|
+
utils.installAppFrom(argv.path);
|
236
|
+
},
|
237
|
+
)
|
238
|
+
.command(
|
239
|
+
'version',
|
240
|
+
'Rew Version',
|
241
|
+
(yargs) => {
|
242
|
+
},
|
243
|
+
async (argv) => {
|
244
|
+
const pkg = JSON.parse(readFileSync(path.resolve(__dirname, '../../../package.json'), { encoding: 'utf-8' }));
|
245
|
+
const getLatest = async () => {
|
246
|
+
try{
|
247
|
+
return (await (await fetch(`https://registry.npmjs.org/${pkg.name}`)).json()).dist_tags.latest.yellow.bold
|
248
|
+
} catch(e) {
|
249
|
+
return `(${'!err'.blue.bgRed}, see ${`https://npmjs.com/package/${pkg.name}`.blue.underline})`;
|
250
|
+
}
|
251
|
+
}
|
252
|
+
log(`${'Rew'.red.bold} ${'RUNTIME'.yellow}`);
|
253
|
+
log(`Version: ${pkg.name.green}@${pkg.version.yellow.bold}`);
|
254
|
+
log(`Latest: ${pkg.name}@${await getLatest()}`, ':end');
|
255
|
+
},
|
256
|
+
)
|
257
|
+
.command(
|
258
|
+
'repo <command> [name] [url]',
|
259
|
+
'Manage install repositories',
|
260
|
+
(yargs) => {
|
261
|
+
yargs.positional('command', {
|
262
|
+
describe: 'Command to add/remove/set/get/view',
|
263
|
+
type: 'string',
|
264
|
+
});
|
265
|
+
yargs.positional('name', {
|
266
|
+
describe: 'name of the repo',
|
267
|
+
type: 'string',
|
268
|
+
});
|
269
|
+
yargs.positional('url', {
|
270
|
+
describe: 'url of the repo',
|
271
|
+
type: 'string',
|
272
|
+
});
|
273
|
+
},
|
274
|
+
async (argv) => {
|
275
|
+
utils.repo(argv.command, argv.name, argv.url);
|
276
|
+
},
|
277
|
+
)
|
278
|
+
.command(
|
279
|
+
'build <file>',
|
280
|
+
'Build the specified file',
|
281
|
+
(yargs) => {
|
282
|
+
yargs
|
283
|
+
.positional('file', {
|
284
|
+
describe: 'File to build',
|
285
|
+
type: 'string',
|
286
|
+
})
|
287
|
+
.option('output', {
|
288
|
+
alias: 'o',
|
289
|
+
describe: 'Output directory',
|
290
|
+
type: 'string',
|
291
|
+
})
|
292
|
+
.option('translate', {
|
293
|
+
alias: 't',
|
294
|
+
describe: 'Translate to js',
|
295
|
+
type: 'boolean',
|
296
|
+
})
|
297
|
+
.option('remove', {
|
298
|
+
alias: 'r',
|
299
|
+
describe: 'Remove all coffee',
|
300
|
+
type: 'boolean',
|
301
|
+
});
|
302
|
+
},
|
303
|
+
(argv) => {
|
304
|
+
utils.build(argv);
|
305
|
+
},
|
306
|
+
)
|
307
|
+
.help().argv;
|
package/lib/rew/cli/log.js
CHANGED
@@ -1,40 +1,39 @@
|
|
1
|
-
|
2
1
|
let start = true;
|
3
|
-
const startPrefix =
|
2
|
+
const startPrefix = '╭';
|
4
3
|
const middlePrefix = '├';
|
5
|
-
const separator =
|
6
|
-
const endPrefix =
|
4
|
+
const separator = '│';
|
5
|
+
const endPrefix = '╰';
|
7
6
|
|
8
|
-
const log = module.exports.log = function(...toPrint){
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
}
|
7
|
+
const log = (module.exports.log = function (...toPrint) {
|
8
|
+
let prefix = start ? startPrefix : middlePrefix;
|
9
|
+
let returns = false;
|
10
|
+
if (toPrint[toPrint.length - 1] == ':end') {
|
11
|
+
prefix = endPrefix;
|
12
|
+
toPrint.pop();
|
13
|
+
}
|
14
|
+
if (toPrint[toPrint.length - 1] == ':returns') {
|
15
|
+
returns = true;
|
16
|
+
toPrint.pop();
|
17
|
+
}
|
18
|
+
if (prefix == endPrefix && start) prefix = separator;
|
19
|
+
if (!start) console.log(separator);
|
20
|
+
if (start) start = false;
|
21
|
+
if (returns) return [prefix, ...toPrint].join(' ');
|
22
|
+
else console.log(prefix, ...toPrint);
|
23
|
+
});
|
25
24
|
|
26
|
-
module.exports.logget = function(...toPrint){
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
}
|
25
|
+
module.exports.logget = function (...toPrint) {
|
26
|
+
let args = [...toPrint];
|
27
|
+
if (toPrint[toPrint.length - 1] == ':end') {
|
28
|
+
let l = args.pop();
|
29
|
+
args.push(':returns', l);
|
30
|
+
} else {
|
31
|
+
args.push(':returns');
|
32
|
+
}
|
33
|
+
return log(...args);
|
34
|
+
};
|
36
35
|
|
37
36
|
log.startPrefix = startPrefix;
|
38
37
|
log.middlePrefix = middlePrefix;
|
39
38
|
log.separator = separator;
|
40
|
-
log.endPrefix = endPrefix;
|
39
|
+
log.endPrefix = endPrefix;
|
package/lib/rew/cli/run.js
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
const { run } = require('../main');
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
return run(filePath)
|
6
|
-
.context.module.imports;
|
3
|
+
function exec(filePath) {
|
4
|
+
return run(filePath).context.module.imports;
|
7
5
|
}
|
8
6
|
|
9
7
|
const onmsg = ({ filePath, watch }) => {
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
}
|
16
|
-
|
17
|
-
process.on('message', onmsg);
|
8
|
+
const imports = exec(filePath);
|
9
|
+
if (watch) {
|
10
|
+
process.send(imports);
|
11
|
+
}
|
12
|
+
process.off('message', onmsg);
|
13
|
+
};
|
14
|
+
|
15
|
+
process.on('message', onmsg);
|