@makano/rew 1.1.17 → 1.1.22

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.
@@ -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
  };
@@ -18,7 +18,7 @@ module.exports = (currentFile) => {
18
18
  }
19
19
 
20
20
  function exists(filepath, options){
21
- return fs.existsSync(filepath);
21
+ return fs.existsSync(gp(filepath));
22
22
  }
23
23
 
24
24
  function fstat(filepath, options){
@@ -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.22",
4
4
  "description": "A simple coffescript runtime",
5
5
  "main": "lib/rew/main.js",
6
6
  "directories": {