@makano/rew 1.1.17 → 1.1.21

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,9 +5,9 @@ const future = require("../functions/future");
5
5
  const sleep = require("../functions/sleep");
6
6
  const { match } = require("../functions/match");
7
7
  const { map } = require("../functions/map");
8
- const { typex, typeis, typedef, typei } = require("../functions/types");
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 } = require("../functions/stdout");
10
+ const { print, input } = require("../functions/stdout");
11
11
 
12
12
  module.exports = {
13
13
  cenum,
@@ -17,11 +17,18 @@ module.exports = {
17
17
  sleep,
18
18
  match,
19
19
  map,
20
+
20
21
  typex,
21
22
  typei,
22
23
  typeis,
23
24
  typedef,
24
25
 
26
+ int,
27
+ float,
28
+ num,
29
+ str,
30
+ bool,
31
+
25
32
  isEmpty,
26
33
  clone,
27
34
  deepClone,
@@ -30,5 +37,6 @@ module.exports = {
30
37
  compose,
31
38
  curry,
32
39
 
33
- print
40
+ print,
41
+ input
34
42
  };
@@ -0,0 +1,13 @@
1
+ const path = require('path');
2
+
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);
8
+
9
+ e.pjoin = (...paths) => path.join(...paths);
10
+ e.presolve = (...paths) => path.resolve(...paths);
11
+
12
+ return e;
13
+ }
@@ -1,5 +1,30 @@
1
+ const { execSync, spawnSync } = require('child_process');
2
+ const fs = require('fs');
1
3
 
2
-
3
- module.exports.print = function print(...arguments) {
4
+ const print = module.exports.print = function print(...arguments) {
4
5
  return console.log(...arguments);
5
- };
6
+ };
7
+
8
+ print.stdout = process.stdout;
9
+ print.stdin = process.stdin;
10
+
11
+ module.exports.input = function input(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
+ }
23
+
24
+ let opts = {
25
+ stdio: ['inherit', 'pipe'],
26
+ shell: false,
27
+ };
28
+
29
+ return spawnSync(cmd, args, opts).stdout.toString().trim();
30
+ }
@@ -67,11 +67,39 @@ function typei(child, parent) {
67
67
  return child instanceof parent || child.constructor === parent;
68
68
  }
69
69
 
70
+ function int(str){
71
+ return parseInt(str);
72
+ }
73
+
74
+ function float(str){
75
+ return parseFloat(str);
76
+ }
77
+
78
+ function num(str){
79
+ return Number(str);
80
+ }
81
+
82
+ function str(str){
83
+ return str ? str.toString() : "";
84
+ }
85
+
86
+ function bool(value){
87
+ return typeof value == 'string' ? (
88
+ value == 'true' ? true : false
89
+ ) : value !== null && value !== undefined;
90
+ }
91
+
70
92
  module.exports = {
71
93
  typex,
72
94
  typei,
73
95
  typeis,
74
- typedef
96
+ typedef,
97
+
98
+ int,
99
+ float,
100
+ num,
101
+ str,
102
+ bool
75
103
  }
76
104
 
77
105
 
@@ -5,6 +5,7 @@ const { exportsFunction } = require("../functions/export");
5
5
  const { imp } = require("../functions/import");
6
6
  const { customRequire } = require("../functions/require");
7
7
  const fsLib = require('../functions/fs');
8
+ const pathLib = require('../functions/path');
8
9
 
9
10
  module.exports.prepareContext = function (
10
11
  custom_context,
@@ -30,6 +31,7 @@ module.exports.prepareContext = function (
30
31
  context = {
31
32
  ...context,
32
33
  ...defaultContext,
34
+ ...pathLib(filepath),
33
35
  require: (package) => {
34
36
  try {
35
37
  return execOptions.nativeRequire || package.startsWith('node:') ? require(package.startsWith('node:') ? package.split('node:')[1] : package) : customRequire(package, filepath);
@@ -22,7 +22,7 @@ parentPort.on('message', (data) => {
22
22
  exec(`(${workerData.cb}).call({ process }, context)`, { print: (...a) => console.log(...a), process: {
23
23
  on: (e, cb) => { target.on(e, cb) },
24
24
  off: (e) => { target.off(e) },
25
- emit: (e) => { parentPort.postMessage({ type: 'event', event: e, data }) },
25
+ emit: (e, data) => { parentPort.postMessage({ type: 'event', event: e, data }) },
26
26
  exit: (code) => process.exit(code),
27
27
  finish: (data) => {
28
28
  parentPort.postMessage({ type: 'result', result: data });
@@ -44,7 +44,10 @@ module.exports = (context) => ({
44
44
  stop();
45
45
  });
46
46
 
47
+ let exiting = false;
48
+
47
49
  worker.on('exit', (code) => {
50
+ if(exiting) return;
48
51
  stop();
49
52
  if (code !== 0) {
50
53
  throw new Error(`Worker stopped with exit code ${code}`);
@@ -57,7 +60,8 @@ module.exports = (context) => ({
57
60
  on: (e, cb) => listener.on(e, cb),
58
61
  off: (e, cb) => listener.off(e, cb),
59
62
  emit: (e, data) => worker?.postMessage({ type: 'event', event: e, data }),
60
- get: () => dataResult.wait()
63
+ get: () => dataResult.wait(),
64
+ stop: () => { exiting = true; stop(); }
61
65
  };
62
66
  }
63
67
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makano/rew",
3
- "version": "1.1.17",
3
+ "version": "1.1.21",
4
4
  "description": "A simple coffescript runtime",
5
5
  "main": "lib/rew/main.js",
6
6
  "directories": {