jopi-node-space 0.0.1 → 0.0.2
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/dist/__global.d.ts +111 -0
- package/dist/__global.js +3 -0
- package/dist/__global.js.map +1 -0
- package/dist/_app.d.ts +1 -0
- package/dist/_app.js +105 -0
- package/dist/_app.js.map +1 -0
- package/dist/_extensionPoints.d.ts +1 -0
- package/dist/_extensionPoints.js +51 -0
- package/dist/_extensionPoints.js.map +1 -0
- package/dist/_fs_s.d.ts +1 -0
- package/dist/_fs_s.js +7 -0
- package/dist/_fs_s.js.map +1 -0
- package/dist/_process.d.ts +1 -0
- package/dist/_process.js +15 -0
- package/dist/_process.js.map +1 -0
- package/dist/_process_s.d.ts +1 -0
- package/dist/_process_s.js +8 -0
- package/dist/_process_s.js.map +1 -0
- package/dist/_term.d.ts +1 -0
- package/dist/_term.js +70 -0
- package/dist/_term.js.map +1 -0
- package/dist/_thread.d.ts +1 -0
- package/dist/_thread.js +19 -0
- package/dist/_thread.js.map +1 -0
- package/dist/_thread_s.d.ts +1 -0
- package/dist/_thread_s.js +26 -0
- package/dist/_thread_s.js.map +1 -0
- package/dist/_timer.d.ts +1 -0
- package/dist/_timer.js +7 -0
- package/dist/_timer.js.map +1 -0
- package/dist/_what.d.ts +1 -0
- package/dist/_what.js +10 -0
- package/dist/_what.js.map +1 -0
- package/dist/browser.js +8 -6
- package/dist/browser.js.map +1 -1
- package/dist/common.d.ts +1 -80
- package/dist/common.js +0 -1
- package/dist/common.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/serverSide.js +6 -31
- package/dist/serverSide.js.map +1 -1
- package/package.json +3 -2
- package/src/__global.ts +135 -0
- package/src/{nodeSpaceApp.ts → _app.ts} +7 -6
- package/src/{nodeSpaceExtensionPoints.ts → _extensionPoints.ts} +1 -1
- package/src/_fs_s.ts +7 -0
- package/src/_process_s.ts +7 -0
- package/src/_term.ts +86 -0
- package/src/_thread_s.ts +31 -0
- package/src/browser.ts +8 -6
- package/src/common.ts +1 -91
- package/src/index.ts +2 -1
- package/src/serverSide.ts +6 -39
- /package/src/{nodeSpaceProcess.ts → _process.ts} +0 -0
- /package/src/{nodeSpaceThread.ts → _thread.ts} +0 -0
- /package/src/{nodeSpaceTimer.ts → _timer.ts} +0 -0
- /package/src/{nodeSpaceWhat.ts → _what.ts} +0 -0
@@ -0,0 +1,111 @@
|
|
1
|
+
declare global {
|
2
|
+
var NodeSpace: NodeSpaceType;
|
3
|
+
var jopiHotReload: HotReloadType;
|
4
|
+
}
|
5
|
+
export type ServerType = "nodejs" | "bunjs" | "browser";
|
6
|
+
export type Listener = () => void | Promise<void>;
|
7
|
+
export type EpCaller = (...values: unknown[]) => Promise<void>;
|
8
|
+
export type EpListener = (...values: unknown[]) => void | Promise<void>;
|
9
|
+
export interface NodeSpaceType {
|
10
|
+
what: WhatInfos;
|
11
|
+
thread: ThreadImpl;
|
12
|
+
process: ProcessImpl;
|
13
|
+
timer: TimerImpl;
|
14
|
+
app: AppImpl;
|
15
|
+
extensionPoints: ExtensionPointImpl;
|
16
|
+
term: TerminalImpl;
|
17
|
+
fs?: FileSystemImpl;
|
18
|
+
}
|
19
|
+
export interface HotReloadType {
|
20
|
+
onHotReload: Listener[];
|
21
|
+
memory: {
|
22
|
+
[key: string]: any;
|
23
|
+
};
|
24
|
+
}
|
25
|
+
interface WhatInfos {
|
26
|
+
isNodeJS: boolean;
|
27
|
+
isBunJs: boolean;
|
28
|
+
isBrowser: boolean;
|
29
|
+
isServerSide: boolean;
|
30
|
+
serverType: ServerType;
|
31
|
+
}
|
32
|
+
interface ThreadImpl {
|
33
|
+
isMainThread: boolean;
|
34
|
+
currentWorker: Worker | null;
|
35
|
+
newWorker: (fileName: string | URL, data?: any) => Worker;
|
36
|
+
getCurrentWorkerData: () => any;
|
37
|
+
unrefThisWorker(worker: Worker): void;
|
38
|
+
closeCurrentThread(): void;
|
39
|
+
}
|
40
|
+
interface ProcessImpl {
|
41
|
+
argv: string[];
|
42
|
+
env: {
|
43
|
+
[key: string]: string;
|
44
|
+
};
|
45
|
+
isProduction: boolean;
|
46
|
+
}
|
47
|
+
interface TimerImpl {
|
48
|
+
tick: (delayMs: number) => Promise<void>;
|
49
|
+
}
|
50
|
+
interface FileSystemImpl {
|
51
|
+
mkDir: (dirPath: string) => Promise<string | undefined>;
|
52
|
+
}
|
53
|
+
interface AppImpl {
|
54
|
+
onServerSideReady(listener: Listener): void;
|
55
|
+
waitServerSideReady: () => Promise<void>;
|
56
|
+
declareServerSideReady(): void;
|
57
|
+
onAppStart(listener: Listener): void;
|
58
|
+
onAppExiting(listener: Listener): void;
|
59
|
+
onAppExited(listener: Listener): void;
|
60
|
+
executeApp(app: Listener): void;
|
61
|
+
declareAppStarted(): void;
|
62
|
+
declareAppExiting(): void;
|
63
|
+
onHotReload(listener: Listener): void;
|
64
|
+
keepOnHotReload<T>(key: string, provider: () => T): T;
|
65
|
+
}
|
66
|
+
interface ExtensionPointImpl {
|
67
|
+
/**
|
68
|
+
* Register an extension point.
|
69
|
+
* Allow knowing who is using it as an host.
|
70
|
+
*/
|
71
|
+
newHost(epName: string, importMetaUrl: string): EpCaller;
|
72
|
+
/**
|
73
|
+
* Get a caller, allowing to call the extension point.
|
74
|
+
*/
|
75
|
+
getCaller(epName: string, importMetaUrl: string): EpCaller;
|
76
|
+
/**
|
77
|
+
* Add a function which is called when the extension point is called.
|
78
|
+
*/
|
79
|
+
on(epName: string, importMetaUrl: string, fct: EpListener): void;
|
80
|
+
}
|
81
|
+
interface TerminalImpl {
|
82
|
+
T_RESET: string;
|
83
|
+
T_BOLD: string;
|
84
|
+
T_UNDERLINE: string;
|
85
|
+
T_CLEAR_LINE: string;
|
86
|
+
T_CLEAR_LINE_END: string;
|
87
|
+
T_CLEAR_SCREEN: string;
|
88
|
+
T_LINE_START: string;
|
89
|
+
C_RED: string;
|
90
|
+
C_GREEN: string;
|
91
|
+
C_BLUE: string;
|
92
|
+
C_LIGHT_BLUE: string;
|
93
|
+
C_GREY: string;
|
94
|
+
C_ORANGE: string;
|
95
|
+
B_BLACK: string;
|
96
|
+
B_RED: string;
|
97
|
+
B_GREEN: string;
|
98
|
+
B_YELLOW: string;
|
99
|
+
B_BLUE: string;
|
100
|
+
B_MAGENTA: string;
|
101
|
+
B_CYAN: string;
|
102
|
+
B_WHITE: string;
|
103
|
+
colorize(...params: string[]): string;
|
104
|
+
cssText(text: string, css: string): void;
|
105
|
+
moveUp(n: number): string;
|
106
|
+
moveDown(n: number): string;
|
107
|
+
moveLeft(n: number): string;
|
108
|
+
moveRight(n: number): string;
|
109
|
+
goAt(x: number, y: number): string;
|
110
|
+
}
|
111
|
+
export {};
|
package/dist/__global.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"__global.js","sourceRoot":"","sources":["../src/__global.ts"],"names":[],"mappings":"AAKA,UAAU,CAAC,SAAS,GAAG,EAAmB,CAAC"}
|
package/dist/_app.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export declare function init_nodeSpaceApp(): void;
|
package/dist/_app.js
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
import { execListeners, isBunJs, isNodeJs } from "./common.js";
|
2
|
+
import { isUsingWorker } from "./internal.js";
|
3
|
+
export function init_nodeSpaceApp() {
|
4
|
+
const onServerSideReady = [];
|
5
|
+
const onAppExiting = [];
|
6
|
+
const onAppExited = [];
|
7
|
+
const onAppStart = [];
|
8
|
+
let isServerSideReady = !(isNodeJs() || isBunJs());
|
9
|
+
let isHotReload = globalThis.jopiHotReload !== undefined;
|
10
|
+
let isAppStarted = false;
|
11
|
+
if (isHotReload) {
|
12
|
+
execListeners(globalThis.jopiHotReload.onHotReload).then();
|
13
|
+
}
|
14
|
+
else {
|
15
|
+
globalThis.jopiHotReload = {
|
16
|
+
onHotReload: [],
|
17
|
+
memory: {}
|
18
|
+
};
|
19
|
+
}
|
20
|
+
const onHotReload = globalThis.jopiHotReload.onHotReload;
|
21
|
+
const memory = globalThis.jopiHotReload.memory;
|
22
|
+
NodeSpace.app = {
|
23
|
+
onServerSideReady: (listener) => {
|
24
|
+
if (isServerSideReady)
|
25
|
+
listener();
|
26
|
+
else
|
27
|
+
onServerSideReady.push(listener);
|
28
|
+
},
|
29
|
+
waitServerSideReady: () => {
|
30
|
+
if (isServerSideReady) {
|
31
|
+
return Promise.resolve();
|
32
|
+
}
|
33
|
+
return new Promise(r => {
|
34
|
+
NodeSpace.app.onServerSideReady(r);
|
35
|
+
});
|
36
|
+
},
|
37
|
+
declareServerSideReady: async () => {
|
38
|
+
isServerSideReady = true;
|
39
|
+
await execListeners(onServerSideReady);
|
40
|
+
},
|
41
|
+
onAppStart: (listener) => {
|
42
|
+
if (isAppStarted)
|
43
|
+
listener();
|
44
|
+
else
|
45
|
+
onAppStart.push(listener);
|
46
|
+
},
|
47
|
+
onAppExiting: (listener) => {
|
48
|
+
if (!isAppStarted)
|
49
|
+
listener();
|
50
|
+
else
|
51
|
+
onAppExiting.push(listener);
|
52
|
+
},
|
53
|
+
onAppExited: (listener) => {
|
54
|
+
if (!isAppStarted)
|
55
|
+
listener();
|
56
|
+
else
|
57
|
+
onAppExited.push(listener);
|
58
|
+
},
|
59
|
+
declareAppStarted: async () => {
|
60
|
+
isAppStarted = true;
|
61
|
+
await execListeners(onAppStart);
|
62
|
+
},
|
63
|
+
declareAppExiting: async () => {
|
64
|
+
if (isUsingWorker()) {
|
65
|
+
// Wait 1 sec, which allows the worker to correctly initialize.
|
66
|
+
await NodeSpace.timer.tick(1000);
|
67
|
+
}
|
68
|
+
isAppStarted = false;
|
69
|
+
await execListeners(onAppExiting);
|
70
|
+
if (isUsingWorker()) {
|
71
|
+
// Allows to worker to correctly stop their activity.
|
72
|
+
await NodeSpace.timer.tick(100);
|
73
|
+
}
|
74
|
+
if (!NodeSpace.thread.isMainThread) {
|
75
|
+
// Allows to worker to correctly stop their activity.
|
76
|
+
await NodeSpace.timer.tick(50);
|
77
|
+
}
|
78
|
+
if (onAppExited.length)
|
79
|
+
debugger;
|
80
|
+
await execListeners(onAppExited);
|
81
|
+
},
|
82
|
+
executeApp: async (app) => {
|
83
|
+
await NodeSpace.app.waitServerSideReady();
|
84
|
+
NodeSpace.app.declareAppStarted();
|
85
|
+
try {
|
86
|
+
const res = app();
|
87
|
+
if (res instanceof Promise)
|
88
|
+
await res;
|
89
|
+
}
|
90
|
+
finally {
|
91
|
+
NodeSpace.app.declareAppExiting();
|
92
|
+
}
|
93
|
+
},
|
94
|
+
onHotReload(listener) {
|
95
|
+
onHotReload.push(listener);
|
96
|
+
},
|
97
|
+
keepOnHotReload: (key, provider) => {
|
98
|
+
let current = memory[key];
|
99
|
+
if (current !== undefined)
|
100
|
+
return current;
|
101
|
+
return memory[key] = provider();
|
102
|
+
}
|
103
|
+
};
|
104
|
+
}
|
105
|
+
//# sourceMappingURL=_app.js.map
|
package/dist/_app.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"_app.js","sourceRoot":"","sources":["../src/_app.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function init_nodeSpaceExtensionPoints(): void;
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import {} from "./__global.js";
|
2
|
+
const gExtensionPoints = {};
|
3
|
+
function createExtensionPoint(epName, hostInfo, callerInfo, listenerInfo) {
|
4
|
+
async function caller(...args) {
|
5
|
+
for (const listener of ep.listeners) {
|
6
|
+
const res = listener(...args);
|
7
|
+
if (res instanceof Promise)
|
8
|
+
await res;
|
9
|
+
}
|
10
|
+
}
|
11
|
+
const listeners = [];
|
12
|
+
const ep = {
|
13
|
+
listeners, caller,
|
14
|
+
allHostPath: [],
|
15
|
+
allCallerPath: [],
|
16
|
+
allListenerPath: []
|
17
|
+
};
|
18
|
+
gExtensionPoints[epName] = ep;
|
19
|
+
if (hostInfo) {
|
20
|
+
ep.allHostPath.push(hostInfo);
|
21
|
+
}
|
22
|
+
if (callerInfo) {
|
23
|
+
ep.allCallerPath.push(callerInfo);
|
24
|
+
}
|
25
|
+
if (listenerInfo) {
|
26
|
+
ep.allListenerPath.push(listenerInfo);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
export function init_nodeSpaceExtensionPoints() {
|
30
|
+
NodeSpace.extensionPoints = {
|
31
|
+
newHost(epName, importMetaUrl) {
|
32
|
+
const ep = gExtensionPoints[epName];
|
33
|
+
if (!ep)
|
34
|
+
createExtensionPoint(epName, importMetaUrl, null, null);
|
35
|
+
return ep.caller;
|
36
|
+
},
|
37
|
+
getCaller(epName, importMetaUrl) {
|
38
|
+
const ep = gExtensionPoints[epName];
|
39
|
+
if (!ep)
|
40
|
+
createExtensionPoint(epName, null, importMetaUrl, null);
|
41
|
+
return ep.caller;
|
42
|
+
},
|
43
|
+
on(epName, importMetaUrl, listener) {
|
44
|
+
const ep = gExtensionPoints[epName];
|
45
|
+
if (!ep)
|
46
|
+
createExtensionPoint(epName, null, null, importMetaUrl);
|
47
|
+
ep.listeners.push(listener);
|
48
|
+
}
|
49
|
+
};
|
50
|
+
}
|
51
|
+
//# sourceMappingURL=_extensionPoints.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"_extensionPoints.js","sourceRoot":"","sources":["../src/_extensionPoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,MAAM,eAAe,CAAC;AAW7D,MAAM,gBAAgB,GAAuC,EAC5D,CAAA;AAED,SAAS,oBAAoB,CAAC,MAAc,EAAE,QAAqB,EAAE,UAAuB,EAAE,YAAyB;IACnH,KAAK,UAAU,MAAM,CAAC,GAAG,IAAe;QACpC,KAAK,MAAM,QAAQ,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YAC9B,IAAI,GAAG,YAAY,OAAO;gBAAE,MAAM,GAAG,CAAC;QAC1C,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAiB,EAAE,CAAC;IAEnC,MAAM,EAAE,GAAmB;QACvB,SAAS,EAAE,MAAM;QACjB,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,EAAE;QACjB,eAAe,EAAE,EAAE;KACtB,CAAC;IAEF,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAE9B,IAAI,QAAQ,EAAE,CAAC;QACX,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACb,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACf,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B;IACzC,SAAS,CAAC,eAAe,GAAG;QACxB,OAAO,CAAC,MAAc,EAAE,aAAqB;YACzC,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE;gBAAE,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACjE,OAAO,EAAE,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,SAAS,CAAC,MAAc,EAAE,aAAqB;YAC3C,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE;gBAAE,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YACjE,OAAO,EAAE,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,EAAE,CAAC,MAAc,EAAE,aAAqB,EAAE,QAAoB;YAC1D,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE;gBAAE,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;YACjE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;KACJ,CAAC;AACN,CAAC"}
|
package/dist/_fs_s.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export declare function patch_fs(): void;
|
package/dist/_fs_s.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"_fs_s.js","sourceRoot":"","sources":["../src/_fs_s.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC,MAAM,UAAU,QAAQ;IACpB,SAAS,CAAC,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC;KACnE,CAAA;AACL,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function init_nodeSpaceProcess(): void;
|
package/dist/_process.js
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
export function init_nodeSpaceProcess() {
|
2
|
+
NodeSpace.process = {
|
3
|
+
isProduction: false,
|
4
|
+
argv: [],
|
5
|
+
env: {},
|
6
|
+
};
|
7
|
+
// For bundlers.
|
8
|
+
try {
|
9
|
+
NodeSpace.process.env = import.meta.env;
|
10
|
+
NodeSpace.process.isProduction = (import.meta.env.PROD === "true");
|
11
|
+
}
|
12
|
+
catch {
|
13
|
+
}
|
14
|
+
}
|
15
|
+
//# sourceMappingURL=_process.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"_process.js","sourceRoot":"","sources":["../src/_process.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB;IACjC,SAAS,CAAC,OAAO,GAAG;QAChB,YAAY,EAAE,KAAK;QACnB,IAAI,EAAE,EAAE;QACR,GAAG,EAAE,EAAE;KACV,CAAC;IAEF,gBAAgB;IAChB,IAAI,CAAC;QACD,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAkC,CAAC;QACvE,SAAS,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;IACT,CAAC;AACL,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function patch_process(): void;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"_process_s.js","sourceRoot":"","sources":["../src/_process_s.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa;IACzB,SAAS,CAAC,OAAO,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAgC;QAC7C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;KACtD,CAAC;AACN,CAAC"}
|
package/dist/_term.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export declare function init_term(): void;
|
package/dist/_term.js
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
const T_RESET = "\x1b[0m";
|
2
|
+
const T_BOLD = "\x1b[1m";
|
3
|
+
const T_UNDERLINE = "\x1b[4m";
|
4
|
+
const T_CLEAR_LINE = "\x1b[2K";
|
5
|
+
const T_CLEAR_LINE_END = "\x1b[K";
|
6
|
+
const T_CLEAR_SCREEN = "\x1b[2J";
|
7
|
+
const T_LINE_START = "\r";
|
8
|
+
const C_RED = "\x1b[31m";
|
9
|
+
const C_BLUE = "\x1b[34m";
|
10
|
+
const C_LIGHT_BLUE = "\x1b[96m";
|
11
|
+
const C_GREEN = "\x1b[32m";
|
12
|
+
const C_GREY = "\x1b[90m";
|
13
|
+
const C_ORANGE = "\x1b[38;5;208m";
|
14
|
+
const B_BLACK = "\x1b[40m";
|
15
|
+
const B_RED = "\x1b[41m";
|
16
|
+
const B_GREEN = "\x1b[42m";
|
17
|
+
const B_YELLOW = "\x1b[43m";
|
18
|
+
const B_BLUE = "\x1b[44m";
|
19
|
+
const B_MAGENTA = "\x1b[45m";
|
20
|
+
const B_CYAN = "\x1b[46m";
|
21
|
+
const B_WHITE = "\x1b[47m";
|
22
|
+
function cssText(text, css) {
|
23
|
+
console.log("%c" + text, css);
|
24
|
+
}
|
25
|
+
function moveUp(n) {
|
26
|
+
return "\x1b[" + n + "A";
|
27
|
+
}
|
28
|
+
function moveDown(n) {
|
29
|
+
return "\x1b[" + n + "B";
|
30
|
+
}
|
31
|
+
function moveLeft(n) {
|
32
|
+
return "\x1b[" + n + "D";
|
33
|
+
}
|
34
|
+
function moveRight(n) {
|
35
|
+
return "\x1b[" + n + "C";
|
36
|
+
}
|
37
|
+
function goAt(x, y) {
|
38
|
+
return "\x1b[" + y + ";" + x + "H";
|
39
|
+
}
|
40
|
+
export function init_term() {
|
41
|
+
NodeSpace.term = {
|
42
|
+
C_RED,
|
43
|
+
C_GREEN,
|
44
|
+
C_BLUE,
|
45
|
+
C_LIGHT_BLUE,
|
46
|
+
C_GREY,
|
47
|
+
C_ORANGE,
|
48
|
+
B_BLACK,
|
49
|
+
B_BLUE,
|
50
|
+
B_CYAN,
|
51
|
+
B_GREEN,
|
52
|
+
B_MAGENTA,
|
53
|
+
B_RED,
|
54
|
+
B_WHITE,
|
55
|
+
B_YELLOW,
|
56
|
+
T_RESET,
|
57
|
+
T_BOLD,
|
58
|
+
T_CLEAR_SCREEN,
|
59
|
+
T_UNDERLINE,
|
60
|
+
T_CLEAR_LINE,
|
61
|
+
T_CLEAR_LINE_END,
|
62
|
+
T_LINE_START,
|
63
|
+
colorize(...params) {
|
64
|
+
return params.join("") + T_RESET;
|
65
|
+
},
|
66
|
+
cssText,
|
67
|
+
moveUp, moveDown, moveLeft, moveRight, goAt
|
68
|
+
};
|
69
|
+
}
|
70
|
+
//# sourceMappingURL=_term.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"_term.js","sourceRoot":"","sources":["../src/_term.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,SAAS,CAAC;AAE1B,MAAM,MAAM,GAAG,SAAS,CAAC;AACzB,MAAM,WAAW,GAAG,SAAS,CAAC;AAE9B,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAClC,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,MAAM,KAAK,GAAG,UAAU,CAAC;AACzB,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,MAAM,YAAY,GAAG,UAAU,CAAC;AAChC,MAAM,OAAO,GAAG,UAAU,CAAC;AAC3B,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAElC,MAAM,OAAO,GAAG,UAAU,CAAC;AAC3B,MAAM,KAAK,GAAG,UAAU,CAAC;AACzB,MAAM,OAAO,GAAG,UAAU,CAAC;AAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,MAAM,OAAO,GAAG,UAAU,CAAC;AAE3B,SAAS,OAAO,CAAC,IAAY,EAAE,GAAW;IACtC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,CAAA;AACjC,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACrB,OAAO,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACvB,OAAO,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACvB,OAAO,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IACxB,OAAO,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED,SAAS,IAAI,CAAC,CAAS,EAAE,CAAS;IAC9B,OAAO,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,SAAS;IACrB,SAAS,CAAC,IAAI,GAAG;QACb,KAAK;QACL,OAAO;QACP,MAAM;QACN,YAAY;QACZ,MAAM;QACN,QAAQ;QAER,OAAO;QACP,MAAM;QACN,MAAM;QACN,OAAO;QACP,SAAS;QACT,KAAK;QACL,OAAO;QACP,QAAQ;QAER,OAAO;QACP,MAAM;QACN,cAAc;QACd,WAAW;QACX,YAAY;QACZ,gBAAgB;QAChB,YAAY;QAEZ,QAAQ,CAAC,GAAG,MAAgB;YACxB,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;QACrC,CAAC;QAED,OAAO;QAEP,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI;KAE9C,CAAA;AACL,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function init_nodeSpaceThread(): void;
|
package/dist/_thread.js
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
import { declareUsingWorker } from "./internal.js";
|
2
|
+
export function init_nodeSpaceThread() {
|
3
|
+
NodeSpace.thread = {
|
4
|
+
isMainThread: true,
|
5
|
+
currentWorker: null,
|
6
|
+
getCurrentWorkerData: () => { },
|
7
|
+
unrefThisWorker: () => { },
|
8
|
+
newWorker: (fileName) => {
|
9
|
+
declareUsingWorker();
|
10
|
+
return new Worker(fileName, { type: 'module' });
|
11
|
+
},
|
12
|
+
closeCurrentThread() {
|
13
|
+
if (self.close) {
|
14
|
+
self.close();
|
15
|
+
}
|
16
|
+
}
|
17
|
+
};
|
18
|
+
}
|
19
|
+
//# sourceMappingURL=_thread.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"_thread.js","sourceRoot":"","sources":["../src/_thread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAEjD,MAAM,UAAU,oBAAoB;IAChC,SAAS,CAAC,MAAM,GAAG;QACf,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;QACnB,oBAAoB,EAAE,GAAG,EAAE,GAAE,CAAC;QAC9B,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;QAEzB,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpB,kBAAkB,EAAE,CAAC;YACrB,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAA;QACjD,CAAC;QAED,kBAAkB;YACd,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function patch_server(): void;
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { isMainThread, parentPort, workerData } from "node:worker_threads";
|
2
|
+
import { declareUsingWorker } from "./internal";
|
3
|
+
import { Worker as NodeWorker } from "worker_threads";
|
4
|
+
export function patch_server() {
|
5
|
+
NodeSpace.thread = {
|
6
|
+
isMainThread: isMainThread,
|
7
|
+
currentWorker: parentPort,
|
8
|
+
getCurrentWorkerData: () => workerData,
|
9
|
+
newWorker: (fileName, data) => {
|
10
|
+
declareUsingWorker();
|
11
|
+
const res = data ?
|
12
|
+
new NodeWorker(fileName, { workerData: data }) :
|
13
|
+
new NodeWorker(fileName);
|
14
|
+
return res;
|
15
|
+
},
|
16
|
+
unrefThisWorker: (worker) => {
|
17
|
+
worker.unref();
|
18
|
+
},
|
19
|
+
closeCurrentThread() {
|
20
|
+
if (parentPort) {
|
21
|
+
parentPort.close();
|
22
|
+
}
|
23
|
+
}
|
24
|
+
};
|
25
|
+
}
|
26
|
+
//# sourceMappingURL=_thread_s.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"_thread_s.js","sourceRoot":"","sources":["../src/_thread_s.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAC,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAEpD,MAAM,UAAU,YAAY;IACxB,SAAS,CAAC,MAAM,GAAG;QACf,YAAY,EAAE,YAAY;QAC1B,aAAa,EAAE,UAA+B;QAC9C,oBAAoB,EAAE,GAAG,EAAE,CAAC,UAAU;QAEtC,SAAS,EAAE,CAAC,QAAQ,EAAE,IAAU,EAAE,EAAE;YAChC,kBAAkB,EAAE,CAAC;YAErB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC;gBACd,IAAI,UAAU,CAAC,QAAQ,EAAE,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE7B,OAAO,GAAwB,CAAA;QACnC,CAAC;QAED,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE;YAC/B,MAAgC,CAAC,KAAK,EAAE,CAAC;QAC9C,CAAC;QAED,kBAAkB;YACd,IAAI,UAAU,EAAE,CAAC;gBACb,UAAU,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;QACL,CAAC;KACJ,CAAA;AACL,CAAC"}
|
package/dist/_timer.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export declare function init_nodeSpaceTimer(): void;
|
package/dist/_timer.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"_timer.js","sourceRoot":"","sources":["../src/_timer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,mBAAmB;IAC/B,SAAS,CAAC,KAAK,GAAG;QACd,IAAI,EAAE,IAAI;KACb,CAAC;AACN,CAAC"}
|
package/dist/_what.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export declare function init_nodeSpaceWhat(): void;
|
package/dist/_what.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"_what.js","sourceRoot":"","sources":["../src/_what.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB;IAC9B,SAAS,CAAC,IAAI,GAAG;QACb,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,SAAS;KACxB,CAAC;AACN,CAAC"}
|
package/dist/browser.js
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
import { init_nodeSpaceWhat } from "./
|
2
|
-
import { init_nodeSpaceApp } from "./
|
3
|
-
import { init_nodeSpaceProcess } from "./
|
4
|
-
import { init_nodeSpaceTimer } from "./
|
5
|
-
import { init_nodeSpaceThread } from "./
|
6
|
-
import { init_nodeSpaceExtensionPoints } from "./
|
1
|
+
import { init_nodeSpaceWhat } from "./_what";
|
2
|
+
import { init_nodeSpaceApp } from "./_app";
|
3
|
+
import { init_nodeSpaceProcess } from "./_process";
|
4
|
+
import { init_nodeSpaceTimer } from "./_timer";
|
5
|
+
import { init_nodeSpaceThread } from "./_thread";
|
6
|
+
import { init_nodeSpaceExtensionPoints } from "./_extensionPoints";
|
7
|
+
import { init_term } from "./_term";
|
7
8
|
export function initBrowser() {
|
8
9
|
init_nodeSpaceWhat();
|
9
10
|
init_nodeSpaceApp();
|
@@ -11,5 +12,6 @@ export function initBrowser() {
|
|
11
12
|
init_nodeSpaceTimer();
|
12
13
|
init_nodeSpaceThread();
|
13
14
|
init_nodeSpaceExtensionPoints();
|
15
|
+
init_term();
|
14
16
|
}
|
15
17
|
//# sourceMappingURL=browser.js.map
|
package/dist/browser.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAC,iBAAiB,EAAC,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAC,qBAAqB,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,EAAC,mBAAmB,EAAC,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAC,oBAAoB,EAAC,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAC,6BAA6B,EAAC,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAElC,MAAM,UAAU,WAAW;IACvB,kBAAkB,EAAE,CAAC;IACrB,iBAAiB,EAAE,CAAC;IACpB,qBAAqB,EAAE,CAAC;IACxB,mBAAmB,EAAE,CAAC;IACtB,oBAAoB,EAAE,CAAC;IACvB,6BAA6B,EAAE,CAAC;IAChC,SAAS,EAAE,CAAC;AAChB,CAAC"}
|
package/dist/common.d.ts
CHANGED
@@ -1,85 +1,6 @@
|
|
1
|
-
|
2
|
-
var NodeSpace: NodeSpaceType;
|
3
|
-
var jopiHotReloader: HotReloadType;
|
4
|
-
}
|
1
|
+
import type { Listener } from "./__global";
|
5
2
|
export declare function execListeners(listeners: Listener[]): Promise<void>;
|
6
3
|
export declare function isServerSide(): boolean;
|
7
4
|
export declare function isBunJs(): boolean;
|
8
5
|
export declare function isNodeJs(): boolean;
|
9
6
|
export declare function tick(delayMs: number): Promise<void>;
|
10
|
-
export type ServerType = "nodejs" | "bunjs" | "browser";
|
11
|
-
export type Listener = () => void | Promise<void>;
|
12
|
-
export interface NodeSpaceType {
|
13
|
-
what: WhatInfos;
|
14
|
-
thread: ThreadImpl;
|
15
|
-
process: ProcessImpl;
|
16
|
-
timer: TimerImpl;
|
17
|
-
app: AppImpl;
|
18
|
-
fs?: FileSystemImpl;
|
19
|
-
extensionPoints?: ExtensionPointImpl;
|
20
|
-
}
|
21
|
-
export interface HotReloadType {
|
22
|
-
onHotReload: Listener[];
|
23
|
-
memory: {
|
24
|
-
[key: string]: any;
|
25
|
-
};
|
26
|
-
}
|
27
|
-
interface WhatInfos {
|
28
|
-
isNodeJS: boolean;
|
29
|
-
isBunJs: boolean;
|
30
|
-
isBrowser: boolean;
|
31
|
-
isServerSide: boolean;
|
32
|
-
serverType: ServerType;
|
33
|
-
}
|
34
|
-
interface ThreadImpl {
|
35
|
-
isMainThread: boolean;
|
36
|
-
currentWorker: Worker | null;
|
37
|
-
newWorker: (fileName: string | URL, data?: any) => Worker;
|
38
|
-
getCurrentWorkerData: () => any;
|
39
|
-
unrefThisWorker(worker: Worker): void;
|
40
|
-
closeCurrentThread(): void;
|
41
|
-
}
|
42
|
-
interface ProcessImpl {
|
43
|
-
argv: string[];
|
44
|
-
env: {
|
45
|
-
[key: string]: string;
|
46
|
-
};
|
47
|
-
isProduction: boolean;
|
48
|
-
}
|
49
|
-
interface TimerImpl {
|
50
|
-
tick: (delayMs: number) => Promise<void>;
|
51
|
-
}
|
52
|
-
interface FileSystemImpl {
|
53
|
-
mkDir: (dirPath: string) => Promise<string | undefined>;
|
54
|
-
}
|
55
|
-
interface AppImpl {
|
56
|
-
onServerSideReady(listener: Listener): void;
|
57
|
-
waitServerSideReady: () => Promise<void>;
|
58
|
-
declareServerSideReady(): void;
|
59
|
-
onAppStart(listener: Listener): void;
|
60
|
-
onAppExiting(listener: Listener): void;
|
61
|
-
onAppExited(listener: Listener): void;
|
62
|
-
executeApp(app: Listener): void;
|
63
|
-
declareAppStarted(): void;
|
64
|
-
declareAppExiting(): void;
|
65
|
-
onHotReload(listener: Listener): void;
|
66
|
-
keepOnHotReload<T>(key: string, provider: () => T): T;
|
67
|
-
}
|
68
|
-
export type EpCaller = (...values: unknown[]) => Promise<void>;
|
69
|
-
export type EpListener = (...values: unknown[]) => void | Promise<void>;
|
70
|
-
interface ExtensionPointImpl {
|
71
|
-
/**
|
72
|
-
* Register an extension point.
|
73
|
-
* Allow knowing who is using it as an host.
|
74
|
-
*/
|
75
|
-
newHost(epName: string, importMetaUrl: string): EpCaller;
|
76
|
-
/**
|
77
|
-
* Get a caller, allowing to call the extension point.
|
78
|
-
*/
|
79
|
-
getCaller(epName: string, importMetaUrl: string): EpCaller;
|
80
|
-
/**
|
81
|
-
* Add a function which is called when the extension point is called.
|
82
|
-
*/
|
83
|
-
on(epName: string, importMetaUrl: string, fct: EpListener): void;
|
84
|
-
}
|
85
|
-
export {};
|
package/dist/common.js
CHANGED
package/dist/common.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAEA,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAqB;IACrD,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAC5B,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEpB,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;YACvB,IAAI,GAAG,YAAY,OAAO;gBAAE,MAAM,GAAG,CAAC;QAC1C,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY;IACxB,OAAO,OAAO,EAAE,IAAI,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,OAAO;IACnB,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,QAAQ,GAAG,OAAM,CAAC,GAAG,CAAC,KAAG,WAAW,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,QAAQ;IACpB,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,SAAS,GAAG,OAAM,CAAC,IAAI,CAAC,KAAG,WAAW,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAE5D,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAGzC,oCAAoC;AACpC,WAAW,EAAE,CAAC;AAEd,IAAI,YAAY,EAAE,EAAE,CAAC;IACjB,IAAI,UAAU,GAAe,QAAQ,CAAC;IACtC,IAAI,OAAO,EAAE;QAAE,UAAU,GAAG,OAAO,CAAC;IAEpC,kCAAkC;IAClC,8CAA8C;IAC9C,EAAE;IACF,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IAEvC,SAAS,CAAC,IAAI,GAAG;QACb,QAAQ,EAAE,QAAQ,EAAE;QACpB,OAAO,EAAE,OAAO,EAAE;QAClB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,UAAU;KACzB,CAAA;IAED,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,eAAe,GAAG,GAAG,CAAC;IAEvC,8DAA8D;IAC9D,kEAAkE;IAClE,8DAA8D;IAC9D,EAAE;IACF,MAAM,MAAM,kCAAC,kBAAkB,CAAC,QAAQ,EAAC,CAAC;AAC9C,CAAC"}
|
package/dist/serverSide.js
CHANGED
@@ -1,34 +1,9 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
import
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
isProduction: process.env.NODE_ENV === 'production'
|
8
|
-
};
|
9
|
-
NodeSpace.thread = {
|
10
|
-
isMainThread: isMainThread,
|
11
|
-
currentWorker: parentPort,
|
12
|
-
getCurrentWorkerData: () => workerData,
|
13
|
-
newWorker: (fileName, data) => {
|
14
|
-
declareUsingWorker();
|
15
|
-
const res = data ?
|
16
|
-
new NodeWorker(fileName, { workerData: data }) :
|
17
|
-
new NodeWorker(fileName);
|
18
|
-
return res;
|
19
|
-
},
|
20
|
-
unrefThisWorker: (worker) => {
|
21
|
-
worker.unref();
|
22
|
-
},
|
23
|
-
closeCurrentThread() {
|
24
|
-
if (parentPort) {
|
25
|
-
parentPort.close();
|
26
|
-
}
|
27
|
-
}
|
28
|
-
};
|
29
|
-
NodeSpace.fs = {
|
30
|
-
mkDir: (dirPath) => fs.mkdir(dirPath, { recursive: true })
|
31
|
-
};
|
1
|
+
import { patch_process } from "./_process_s";
|
2
|
+
import { patch_server } from "./_thread_s";
|
3
|
+
import { patch_fs } from "./_fs_s";
|
4
|
+
patch_process();
|
5
|
+
patch_server();
|
6
|
+
patch_fs();
|
32
7
|
NodeSpace.app.declareServerSideReady();
|
33
8
|
process.on('exit', () => NodeSpace.app.declareAppExiting());
|
34
9
|
//# sourceMappingURL=serverSide.js.map
|
package/dist/serverSide.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"serverSide.js","sourceRoot":"","sources":["../src/serverSide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
1
|
+
{"version":3,"file":"serverSide.js","sourceRoot":"","sources":["../src/serverSide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAEjC,aAAa,EAAE,CAAC;AAChB,YAAY,EAAE,CAAC;AACf,QAAQ,EAAE,CAAC;AAEX,SAAS,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;AACvC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC"}
|
package/package.json
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
{
|
2
|
-
"version": "0.0.
|
2
|
+
"version": "0.0.2",
|
3
3
|
"private": false,
|
4
4
|
"name": "jopi-node-space",
|
5
5
|
"license": "MIT",
|
@@ -22,6 +22,7 @@
|
|
22
22
|
"bun-install": "bun install",
|
23
23
|
"tsc": "tsc",
|
24
24
|
|
25
|
-
"npm-publish": "npm publish"
|
25
|
+
"npm-publish": "npm publish",
|
26
|
+
"bun link": "bun link"
|
26
27
|
}
|
27
28
|
}
|
package/src/__global.ts
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
declare global {
|
2
|
+
var NodeSpace: NodeSpaceType;
|
3
|
+
var jopiHotReload: HotReloadType;
|
4
|
+
}
|
5
|
+
|
6
|
+
globalThis.NodeSpace = {} as NodeSpaceType;
|
7
|
+
|
8
|
+
export type ServerType = "nodejs"|"bunjs"|"browser";
|
9
|
+
export type Listener = ()=>void|Promise<void>;
|
10
|
+
|
11
|
+
export type EpCaller = (...values: unknown[]) => Promise<void>;
|
12
|
+
export type EpListener = (...values: unknown[]) => void|Promise<void>;
|
13
|
+
|
14
|
+
// ********************************************
|
15
|
+
|
16
|
+
export interface NodeSpaceType {
|
17
|
+
what: WhatInfos;
|
18
|
+
thread: ThreadImpl;
|
19
|
+
process: ProcessImpl;
|
20
|
+
timer: TimerImpl;
|
21
|
+
app: AppImpl;
|
22
|
+
extensionPoints: ExtensionPointImpl;
|
23
|
+
term: TerminalImpl;
|
24
|
+
|
25
|
+
// >>> Server side only
|
26
|
+
|
27
|
+
fs?: FileSystemImpl;
|
28
|
+
}
|
29
|
+
|
30
|
+
// ********************************************
|
31
|
+
|
32
|
+
export interface HotReloadType {
|
33
|
+
onHotReload: Listener[];
|
34
|
+
memory: { [key: string]: any };
|
35
|
+
}
|
36
|
+
|
37
|
+
interface WhatInfos {
|
38
|
+
isNodeJS: boolean;
|
39
|
+
isBunJs: boolean;
|
40
|
+
isBrowser: boolean;
|
41
|
+
isServerSide: boolean;
|
42
|
+
serverType: ServerType;
|
43
|
+
}
|
44
|
+
|
45
|
+
interface ThreadImpl {
|
46
|
+
isMainThread: boolean;
|
47
|
+
currentWorker: Worker | null;
|
48
|
+
newWorker: (fileName: string | URL, data?: any) => Worker;
|
49
|
+
getCurrentWorkerData: ()=>any;
|
50
|
+
unrefThisWorker(worker: Worker): void;
|
51
|
+
closeCurrentThread(): void;
|
52
|
+
}
|
53
|
+
|
54
|
+
interface ProcessImpl {
|
55
|
+
argv: string[];
|
56
|
+
env: { [key: string]: string };
|
57
|
+
isProduction: boolean;
|
58
|
+
}
|
59
|
+
|
60
|
+
interface TimerImpl {
|
61
|
+
tick: (delayMs: number) => Promise<void>;
|
62
|
+
}
|
63
|
+
|
64
|
+
interface FileSystemImpl {
|
65
|
+
mkDir: (dirPath: string) => Promise<string | undefined>;
|
66
|
+
}
|
67
|
+
|
68
|
+
interface AppImpl {
|
69
|
+
onServerSideReady(listener: Listener): void;
|
70
|
+
waitServerSideReady: () => Promise<void>;
|
71
|
+
declareServerSideReady(): void;
|
72
|
+
|
73
|
+
onAppStart(listener: Listener): void;
|
74
|
+
onAppExiting(listener: Listener): void;
|
75
|
+
onAppExited(listener: Listener): void;
|
76
|
+
executeApp(app: Listener): void;
|
77
|
+
declareAppStarted(): void;
|
78
|
+
declareAppExiting(): void;
|
79
|
+
|
80
|
+
onHotReload(listener: Listener): void;
|
81
|
+
keepOnHotReload<T>(key: string, provider: ()=>T): T;
|
82
|
+
}
|
83
|
+
|
84
|
+
interface ExtensionPointImpl {
|
85
|
+
/**
|
86
|
+
* Register an extension point.
|
87
|
+
* Allow knowing who is using it as an host.
|
88
|
+
*/
|
89
|
+
newHost(epName: string, importMetaUrl: string): EpCaller;
|
90
|
+
|
91
|
+
/**
|
92
|
+
* Get a caller, allowing to call the extension point.
|
93
|
+
*/
|
94
|
+
getCaller(epName: string, importMetaUrl: string): EpCaller;
|
95
|
+
|
96
|
+
/**
|
97
|
+
* Add a function which is called when the extension point is called.
|
98
|
+
*/
|
99
|
+
on(epName: string, importMetaUrl: string, fct: EpListener): void;
|
100
|
+
}
|
101
|
+
|
102
|
+
interface TerminalImpl {
|
103
|
+
T_RESET: string;
|
104
|
+
T_BOLD: string;
|
105
|
+
T_UNDERLINE: string;
|
106
|
+
T_CLEAR_LINE: string;
|
107
|
+
T_CLEAR_LINE_END: string;
|
108
|
+
T_CLEAR_SCREEN: string;
|
109
|
+
T_LINE_START: string;
|
110
|
+
|
111
|
+
C_RED: string;
|
112
|
+
C_GREEN: string;
|
113
|
+
C_BLUE: string;
|
114
|
+
C_LIGHT_BLUE: string;
|
115
|
+
C_GREY: string;
|
116
|
+
C_ORANGE: string;
|
117
|
+
|
118
|
+
B_BLACK: string;
|
119
|
+
B_RED: string;
|
120
|
+
B_GREEN: string;
|
121
|
+
B_YELLOW: string;
|
122
|
+
B_BLUE: string;
|
123
|
+
B_MAGENTA: string;
|
124
|
+
B_CYAN: string;
|
125
|
+
B_WHITE: string;
|
126
|
+
|
127
|
+
colorize(...params: string[]): string;
|
128
|
+
cssText(text: string, css: string): void;
|
129
|
+
|
130
|
+
moveUp(n: number): string;
|
131
|
+
moveDown(n: number): string;
|
132
|
+
moveLeft(n: number): string;
|
133
|
+
moveRight(n: number): string;
|
134
|
+
goAt(x: number, y: number): string;
|
135
|
+
}
|
@@ -1,5 +1,6 @@
|
|
1
|
-
import {execListeners, isBunJs, isNodeJs
|
1
|
+
import {execListeners, isBunJs, isNodeJs} from "./common.ts";
|
2
2
|
import {isUsingWorker} from "./internal.ts";
|
3
|
+
import type {Listener} from "./__global";
|
3
4
|
|
4
5
|
export function init_nodeSpaceApp() {
|
5
6
|
const onServerSideReady: Listener[] = [];
|
@@ -8,20 +9,20 @@ export function init_nodeSpaceApp() {
|
|
8
9
|
const onAppStart: Listener[] = [];
|
9
10
|
let isServerSideReady = !(isNodeJs() || isBunJs());
|
10
11
|
|
11
|
-
let isHotReload = globalThis.
|
12
|
+
let isHotReload = globalThis.jopiHotReload !== undefined;
|
12
13
|
let isAppStarted = false;
|
13
14
|
|
14
15
|
if (isHotReload) {
|
15
|
-
execListeners(globalThis.
|
16
|
+
execListeners(globalThis.jopiHotReload.onHotReload).then();
|
16
17
|
} else {
|
17
|
-
globalThis.
|
18
|
+
globalThis.jopiHotReload = {
|
18
19
|
onHotReload: [],
|
19
20
|
memory: {}
|
20
21
|
}
|
21
22
|
}
|
22
23
|
|
23
|
-
const onHotReload = globalThis.
|
24
|
-
const memory = globalThis.
|
24
|
+
const onHotReload = globalThis.jopiHotReload.onHotReload;
|
25
|
+
const memory = globalThis.jopiHotReload.memory;
|
25
26
|
|
26
27
|
NodeSpace.app = {
|
27
28
|
onServerSideReady: (listener) => {
|
package/src/_fs_s.ts
ADDED
package/src/_term.ts
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
const T_RESET = "\x1b[0m";
|
2
|
+
|
3
|
+
const T_BOLD = "\x1b[1m";
|
4
|
+
const T_UNDERLINE = "\x1b[4m";
|
5
|
+
|
6
|
+
const T_CLEAR_LINE = "\x1b[2K";
|
7
|
+
const T_CLEAR_LINE_END = "\x1b[K";
|
8
|
+
const T_CLEAR_SCREEN = "\x1b[2J";
|
9
|
+
const T_LINE_START = "\r";
|
10
|
+
|
11
|
+
const C_RED = "\x1b[31m";
|
12
|
+
const C_BLUE = "\x1b[34m";
|
13
|
+
const C_LIGHT_BLUE = "\x1b[96m";
|
14
|
+
const C_GREEN = "\x1b[32m";
|
15
|
+
const C_GREY = "\x1b[90m";
|
16
|
+
const C_ORANGE = "\x1b[38;5;208m";
|
17
|
+
|
18
|
+
const B_BLACK = "\x1b[40m";
|
19
|
+
const B_RED = "\x1b[41m";
|
20
|
+
const B_GREEN = "\x1b[42m";
|
21
|
+
const B_YELLOW = "\x1b[43m";
|
22
|
+
const B_BLUE = "\x1b[44m";
|
23
|
+
const B_MAGENTA = "\x1b[45m";
|
24
|
+
const B_CYAN = "\x1b[46m";
|
25
|
+
const B_WHITE = "\x1b[47m";
|
26
|
+
|
27
|
+
function cssText(text: string, css: string) {
|
28
|
+
console.log("%c" + text, css)
|
29
|
+
}
|
30
|
+
|
31
|
+
function moveUp(n: number) {
|
32
|
+
return "\x1b[" + n + "A";
|
33
|
+
}
|
34
|
+
|
35
|
+
function moveDown(n: number) {
|
36
|
+
return "\x1b[" + n + "B";
|
37
|
+
}
|
38
|
+
|
39
|
+
function moveLeft(n: number) {
|
40
|
+
return "\x1b[" + n + "D";
|
41
|
+
}
|
42
|
+
|
43
|
+
function moveRight(n: number) {
|
44
|
+
return "\x1b[" + n + "C";
|
45
|
+
}
|
46
|
+
|
47
|
+
function goAt(x: number, y: number) {
|
48
|
+
return "\x1b[" + y + ";" + x + "H";
|
49
|
+
}
|
50
|
+
|
51
|
+
export function init_term() {
|
52
|
+
NodeSpace.term = {
|
53
|
+
C_RED,
|
54
|
+
C_GREEN,
|
55
|
+
C_BLUE,
|
56
|
+
C_LIGHT_BLUE,
|
57
|
+
C_GREY,
|
58
|
+
C_ORANGE,
|
59
|
+
|
60
|
+
B_BLACK,
|
61
|
+
B_BLUE,
|
62
|
+
B_CYAN,
|
63
|
+
B_GREEN,
|
64
|
+
B_MAGENTA,
|
65
|
+
B_RED,
|
66
|
+
B_WHITE,
|
67
|
+
B_YELLOW,
|
68
|
+
|
69
|
+
T_RESET,
|
70
|
+
T_BOLD,
|
71
|
+
T_CLEAR_SCREEN,
|
72
|
+
T_UNDERLINE,
|
73
|
+
T_CLEAR_LINE,
|
74
|
+
T_CLEAR_LINE_END,
|
75
|
+
T_LINE_START,
|
76
|
+
|
77
|
+
colorize(...params: string[]): string {
|
78
|
+
return params.join("") + T_RESET;
|
79
|
+
},
|
80
|
+
|
81
|
+
cssText,
|
82
|
+
|
83
|
+
moveUp, moveDown, moveLeft, moveRight, goAt
|
84
|
+
|
85
|
+
}
|
86
|
+
}
|
package/src/_thread_s.ts
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
import {isMainThread, parentPort, workerData} from "node:worker_threads";
|
2
|
+
import {declareUsingWorker} from "./internal";
|
3
|
+
import {Worker as NodeWorker} from "worker_threads";
|
4
|
+
|
5
|
+
export function patch_server() {
|
6
|
+
NodeSpace.thread = {
|
7
|
+
isMainThread: isMainThread,
|
8
|
+
currentWorker: parentPort as unknown as Worker,
|
9
|
+
getCurrentWorkerData: () => workerData,
|
10
|
+
|
11
|
+
newWorker: (fileName, data?: any) => {
|
12
|
+
declareUsingWorker();
|
13
|
+
|
14
|
+
const res = data ?
|
15
|
+
new NodeWorker(fileName, {workerData: data}) :
|
16
|
+
new NodeWorker(fileName);
|
17
|
+
|
18
|
+
return res as unknown as Worker
|
19
|
+
},
|
20
|
+
|
21
|
+
unrefThisWorker: (worker: Worker) => {
|
22
|
+
(worker as unknown as NodeWorker).unref();
|
23
|
+
},
|
24
|
+
|
25
|
+
closeCurrentThread() {
|
26
|
+
if (parentPort) {
|
27
|
+
parentPort.close();
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
package/src/browser.ts
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
import {init_nodeSpaceWhat} from "./
|
2
|
-
import {init_nodeSpaceApp} from "./
|
3
|
-
import {init_nodeSpaceProcess} from "./
|
4
|
-
import {init_nodeSpaceTimer} from "./
|
5
|
-
import {init_nodeSpaceThread} from "./
|
6
|
-
import {init_nodeSpaceExtensionPoints} from "./
|
1
|
+
import {init_nodeSpaceWhat} from "./_what";
|
2
|
+
import {init_nodeSpaceApp} from "./_app";
|
3
|
+
import {init_nodeSpaceProcess} from "./_process";
|
4
|
+
import {init_nodeSpaceTimer} from "./_timer";
|
5
|
+
import {init_nodeSpaceThread} from "./_thread";
|
6
|
+
import {init_nodeSpaceExtensionPoints} from "./_extensionPoints";
|
7
|
+
import {init_term} from "./_term";
|
7
8
|
|
8
9
|
export function initBrowser() {
|
9
10
|
init_nodeSpaceWhat();
|
@@ -12,4 +13,5 @@ export function initBrowser() {
|
|
12
13
|
init_nodeSpaceTimer();
|
13
14
|
init_nodeSpaceThread();
|
14
15
|
init_nodeSpaceExtensionPoints();
|
16
|
+
init_term();
|
15
17
|
}
|
package/src/common.ts
CHANGED
@@ -1,9 +1,4 @@
|
|
1
|
-
|
2
|
-
var NodeSpace: NodeSpaceType;
|
3
|
-
var jopiHotReloader: HotReloadType;
|
4
|
-
}
|
5
|
-
|
6
|
-
globalThis.NodeSpace = {} as NodeSpaceType;
|
1
|
+
import type {Listener} from "./__global";
|
7
2
|
|
8
3
|
let _isBunJs = false;
|
9
4
|
let _isNodeJs = false;
|
@@ -41,88 +36,3 @@ export function tick(delayMs: number): Promise<void> {
|
|
41
36
|
return new Promise((resolve) => setTimeout(resolve, delayMs));
|
42
37
|
}
|
43
38
|
|
44
|
-
export type ServerType = "nodejs"|"bunjs"|"browser";
|
45
|
-
export type Listener = ()=>void|Promise<void>;
|
46
|
-
|
47
|
-
export interface NodeSpaceType {
|
48
|
-
what: WhatInfos;
|
49
|
-
thread: ThreadImpl;
|
50
|
-
process: ProcessImpl;
|
51
|
-
timer: TimerImpl;
|
52
|
-
app: AppImpl;
|
53
|
-
fs?: FileSystemImpl;
|
54
|
-
extensionPoints?: ExtensionPointImpl;
|
55
|
-
}
|
56
|
-
|
57
|
-
export interface HotReloadType {
|
58
|
-
onHotReload: Listener[];
|
59
|
-
memory: { [key: string]: any };
|
60
|
-
}
|
61
|
-
|
62
|
-
interface WhatInfos {
|
63
|
-
isNodeJS: boolean;
|
64
|
-
isBunJs: boolean;
|
65
|
-
isBrowser: boolean;
|
66
|
-
isServerSide: boolean;
|
67
|
-
serverType: ServerType;
|
68
|
-
}
|
69
|
-
|
70
|
-
interface ThreadImpl {
|
71
|
-
isMainThread: boolean;
|
72
|
-
currentWorker: Worker | null;
|
73
|
-
newWorker: (fileName: string | URL, data?: any) => Worker;
|
74
|
-
getCurrentWorkerData: ()=>any;
|
75
|
-
unrefThisWorker(worker: Worker): void;
|
76
|
-
closeCurrentThread(): void;
|
77
|
-
}
|
78
|
-
|
79
|
-
interface ProcessImpl {
|
80
|
-
argv: string[];
|
81
|
-
env: { [key: string]: string };
|
82
|
-
isProduction: boolean;
|
83
|
-
}
|
84
|
-
|
85
|
-
interface TimerImpl {
|
86
|
-
tick: (delayMs: number) => Promise<void>;
|
87
|
-
}
|
88
|
-
|
89
|
-
interface FileSystemImpl {
|
90
|
-
mkDir: (dirPath: string) => Promise<string | undefined>;
|
91
|
-
}
|
92
|
-
|
93
|
-
interface AppImpl {
|
94
|
-
onServerSideReady(listener: Listener): void;
|
95
|
-
waitServerSideReady: () => Promise<void>;
|
96
|
-
declareServerSideReady(): void;
|
97
|
-
|
98
|
-
onAppStart(listener: Listener): void;
|
99
|
-
onAppExiting(listener: Listener): void;
|
100
|
-
onAppExited(listener: Listener): void;
|
101
|
-
executeApp(app: Listener): void;
|
102
|
-
declareAppStarted(): void;
|
103
|
-
declareAppExiting(): void;
|
104
|
-
|
105
|
-
onHotReload(listener: Listener): void;
|
106
|
-
keepOnHotReload<T>(key: string, provider: ()=>T): T;
|
107
|
-
}
|
108
|
-
|
109
|
-
export type EpCaller = (...values: unknown[]) => Promise<void>;
|
110
|
-
export type EpListener = (...values: unknown[]) => void|Promise<void>;
|
111
|
-
|
112
|
-
interface ExtensionPointImpl {
|
113
|
-
/**
|
114
|
-
* Register an extension point.
|
115
|
-
* Allow knowing who is using it as an host.
|
116
|
-
*/
|
117
|
-
newHost(epName: string, importMetaUrl: string): EpCaller;
|
118
|
-
|
119
|
-
/**
|
120
|
-
* Get a caller, allowing to call the extension point.
|
121
|
-
*/
|
122
|
-
getCaller(epName: string, importMetaUrl: string): EpCaller;
|
123
|
-
|
124
|
-
/**
|
125
|
-
* Add a function which is called when the extension point is called.
|
126
|
-
*/
|
127
|
-
on(epName: string, importMetaUrl: string, fct: EpListener): void;
|
128
|
-
}
|
package/src/index.ts
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
import {isBunJs, isNodeJs, isServerSide
|
1
|
+
import {isBunJs, isNodeJs, isServerSide} from "./common.ts";
|
2
2
|
|
3
3
|
export * from "./common.ts";
|
4
4
|
|
5
5
|
import {initBrowser} from "./browser.ts";
|
6
|
+
import type {ServerType} from "./__global";
|
6
7
|
|
7
8
|
// Will init with the common stuffs.
|
8
9
|
initBrowser();
|
package/src/serverSide.ts
CHANGED
@@ -1,43 +1,10 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
import
|
1
|
+
import {patch_process} from "./_process_s";
|
2
|
+
import {patch_server} from "./_thread_s";
|
3
|
+
import {patch_fs} from "./_fs_s";
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
isProduction: process.env.NODE_ENV === 'production'
|
9
|
-
};
|
10
|
-
|
11
|
-
NodeSpace.thread = {
|
12
|
-
isMainThread: isMainThread,
|
13
|
-
currentWorker: parentPort as unknown as Worker,
|
14
|
-
getCurrentWorkerData: () => workerData,
|
15
|
-
|
16
|
-
newWorker: (fileName, data?: any) => {
|
17
|
-
declareUsingWorker();
|
18
|
-
|
19
|
-
const res = data ?
|
20
|
-
new NodeWorker(fileName, {workerData: data}) :
|
21
|
-
new NodeWorker(fileName);
|
22
|
-
|
23
|
-
return res as unknown as Worker
|
24
|
-
},
|
25
|
-
|
26
|
-
unrefThisWorker: (worker: Worker) => {
|
27
|
-
(worker as unknown as NodeWorker).unref();
|
28
|
-
},
|
29
|
-
|
30
|
-
closeCurrentThread() {
|
31
|
-
if (parentPort) {
|
32
|
-
parentPort.close();
|
33
|
-
}
|
34
|
-
}
|
35
|
-
}
|
36
|
-
|
37
|
-
NodeSpace.fs = {
|
38
|
-
mkDir: (dirPath: string) => fs.mkdir(dirPath, {recursive: true})
|
39
|
-
}
|
5
|
+
patch_process();
|
6
|
+
patch_server();
|
7
|
+
patch_fs();
|
40
8
|
|
41
9
|
NodeSpace.app.declareServerSideReady();
|
42
|
-
|
43
10
|
process.on('exit', () => NodeSpace.app.declareAppExiting());
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|