jopi-node-space 0.0.8 → 0.0.14
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 +51 -1
- package/dist/_app.js +10 -8
- package/dist/_app.js.map +1 -1
- package/dist/_term.js +12 -5
- package/dist/_term.js.map +1 -1
- package/dist/_timer.js +56 -1
- package/dist/_timer.js.map +1 -1
- package/dist/_webSocket.d.ts +1 -0
- package/dist/_webSocket.js +24 -0
- package/dist/_webSocket.js.map +1 -0
- package/dist/_webSocket_s.d.ts +1 -0
- package/dist/_webSocket_s.js +25 -0
- package/dist/_webSocket_s.js.map +1 -0
- package/dist/jopi-node-space-browser.js +2 -0
- package/dist/jopi-node-space-browser.js.map +1 -1
- package/dist/jopi-node-space-server.js +5 -0
- package/dist/jopi-node-space-server.js.map +1 -1
- package/package.json +20 -10
- package/src/__global.ts +69 -1
- package/src/_app.ts +13 -8
- package/src/_term.ts +16 -5
- package/src/_timer.ts +76 -7
- package/src/_webSocket.ts +28 -0
- package/src/_webSocket_s.ts +26 -0
- package/src/jopi-node-space-browser.ts +2 -0
- package/src/jopi-node-space-server.ts +8 -1
- package/__UPDATES.md +0 -1
- package/dist/browser.d.ts +0 -1
- package/dist/browser.js +0 -35
- package/dist/browser.js.map +0 -1
- package/dist/browserLoader.d.ts +0 -1
- package/dist/browserLoader.js +0 -4
- package/dist/browserLoader.js.map +0 -1
- package/dist/serverLoader.d.ts +0 -1
- package/dist/serverLoader.js +0 -2
- package/dist/serverLoader.js.map +0 -1
- package/dist/serverSide.d.ts +0 -1
- package/dist/serverSide.js +0 -27
- package/dist/serverSide.js.map +0 -1
- package/dist/void.d.ts +0 -1
- package/dist/void.js +0 -7
- package/dist/void.js.map +0 -1
- package/tests-browser/index.html +0 -12
- package/tests-browser/package.json +0 -22
- package/tests-browser/src/main.tsx +0 -13
- package/tests-browser/src/tests.ts +0 -4
- package/tests-browser/tsconfig.app.json +0 -29
- package/tests-browser/tsconfig.json +0 -7
- package/tests-browser/tsconfig.node.json +0 -27
- package/tests-browser/vite.config.ts +0 -31
- package/tsconfig.json +0 -33
package/dist/__global.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export interface NodeSpaceType {
|
|
|
15
15
|
app: AppImpl;
|
|
16
16
|
extensionPoints: ExtensionPointImpl;
|
|
17
17
|
term: TerminalImpl;
|
|
18
|
+
webSocket: WebSocketImpl;
|
|
18
19
|
fs: FileSystemImpl;
|
|
19
20
|
crypto: CryptoImpl;
|
|
20
21
|
compress: CompressImpl;
|
|
@@ -22,6 +23,30 @@ export interface NodeSpaceType {
|
|
|
22
23
|
applyDefaults<T>(source: T | undefined, defaults: T): T;
|
|
23
24
|
getErrorMessage(e: unknown): string;
|
|
24
25
|
}
|
|
26
|
+
export interface WebSocketImpl {
|
|
27
|
+
/**
|
|
28
|
+
* Open a connection to a server.
|
|
29
|
+
* The url must be of the type "ws://host-name:optionalPort/optionalPath".
|
|
30
|
+
* Ex: "ws://127.0.0.1:3000/my-end-point".
|
|
31
|
+
*/
|
|
32
|
+
openConnection(wsUrl: string, protocol?: string | string[]): Promise<WebSocket>;
|
|
33
|
+
/**
|
|
34
|
+
* Is called when the socket is closed.
|
|
35
|
+
*/
|
|
36
|
+
sendMessage(socket: WebSocket, msg: string | Buffer | Uint8Array | ArrayBuffer): void;
|
|
37
|
+
/**
|
|
38
|
+
* Send a text message through this webSocket.
|
|
39
|
+
*/
|
|
40
|
+
onMessage(socket: WebSocket, listener: ((msg: string | Buffer) => void)): void;
|
|
41
|
+
/**
|
|
42
|
+
* Add a listener which is called when the socket receives a message.
|
|
43
|
+
*/
|
|
44
|
+
onClosed(socket: WebSocket, listener: () => void): void;
|
|
45
|
+
/**
|
|
46
|
+
* Add a listener which is called when an error occurs.
|
|
47
|
+
*/
|
|
48
|
+
onError(socket: WebSocket, listener: () => void): void;
|
|
49
|
+
}
|
|
25
50
|
export interface CompressImpl {
|
|
26
51
|
gunzipSync(data: Uint8Array | string): Uint8Array;
|
|
27
52
|
gzipSync(data: Uint8Array | string): Uint8Array;
|
|
@@ -67,6 +92,7 @@ export interface TimerImpl {
|
|
|
67
92
|
tick: (delayMs: number) => Promise<void>;
|
|
68
93
|
newInterval: (durationInMs: number, callback: TimerCallback) => void;
|
|
69
94
|
deferred: (callback: () => void) => void;
|
|
95
|
+
chrono(mustSaveMeasures: boolean): Chrono;
|
|
70
96
|
}
|
|
71
97
|
export interface FileState {
|
|
72
98
|
size: number;
|
|
@@ -142,7 +168,7 @@ export interface TerminalImpl {
|
|
|
142
168
|
/**
|
|
143
169
|
* Build a console.log function that uses the colors provided in params.
|
|
144
170
|
*/
|
|
145
|
-
buildLogger: (...colors: string[]) =>
|
|
171
|
+
buildLogger: (...colors: string[]) => TermLogger;
|
|
146
172
|
/**
|
|
147
173
|
* Build a console.log function that uses the colors provided in params.
|
|
148
174
|
*/
|
|
@@ -155,6 +181,12 @@ export interface TerminalImpl {
|
|
|
155
181
|
* Write a temporary message, which are replaced each time by the next temp message.
|
|
156
182
|
*/
|
|
157
183
|
consoleLogTemp: (isTemp: boolean, ...args: unknown[]) => void;
|
|
184
|
+
logRed: TermLogger;
|
|
185
|
+
logBgRed: TermLogger;
|
|
186
|
+
logGreen: TermLogger;
|
|
187
|
+
logBgGreen: TermLogger;
|
|
188
|
+
logBlue: TermLogger;
|
|
189
|
+
logBgBlue: TermLogger;
|
|
158
190
|
T_RESET: string;
|
|
159
191
|
T_BOLD: string;
|
|
160
192
|
T_UNDERLINE: string;
|
|
@@ -182,3 +214,21 @@ export interface CryptoImpl {
|
|
|
182
214
|
fastHash(text: string): string;
|
|
183
215
|
md5(text: string): string;
|
|
184
216
|
}
|
|
217
|
+
export type TermLogger = (...args: any[]) => void;
|
|
218
|
+
export interface Chrono {
|
|
219
|
+
lastMeasure?: ChronoMeasure;
|
|
220
|
+
allMeasures: ChronoMeasure[];
|
|
221
|
+
start(label: string, printTitle?: string): void;
|
|
222
|
+
start_withLimit(limit_ms: number, label: string, printTitle?: string): void;
|
|
223
|
+
end(): void;
|
|
224
|
+
onMeasureDone(handler: null | ((measure: ChronoMeasure) => void)): void;
|
|
225
|
+
}
|
|
226
|
+
export interface ChronoMeasure {
|
|
227
|
+
label?: string;
|
|
228
|
+
title?: string;
|
|
229
|
+
logIfMoreThan_ms?: number;
|
|
230
|
+
startTime_ms: number;
|
|
231
|
+
endTime_ms: number;
|
|
232
|
+
elapsedTime_ms: number;
|
|
233
|
+
elapsedTime_sec: string;
|
|
234
|
+
}
|
package/dist/_app.js
CHANGED
|
@@ -7,7 +7,7 @@ export function init_nodeSpaceApp() {
|
|
|
7
7
|
const onAppStart = [];
|
|
8
8
|
let isServerSideReady = !(isNodeJs() || isBunJs());
|
|
9
9
|
let isHotReload = globalThis.jopiHotReload !== undefined;
|
|
10
|
-
let
|
|
10
|
+
let gIsAppStarted = false;
|
|
11
11
|
if (isHotReload) {
|
|
12
12
|
execListeners(globalThis.jopiHotReload.onHotReload).then();
|
|
13
13
|
}
|
|
@@ -39,33 +39,36 @@ export function init_nodeSpaceApp() {
|
|
|
39
39
|
await execListeners(onServerSideReady);
|
|
40
40
|
},
|
|
41
41
|
onAppStart: (listener) => {
|
|
42
|
-
if (
|
|
42
|
+
if (gIsAppStarted)
|
|
43
43
|
listener();
|
|
44
44
|
else
|
|
45
45
|
onAppStart.push(listener);
|
|
46
46
|
},
|
|
47
47
|
onAppExiting: (listener) => {
|
|
48
|
-
if (
|
|
48
|
+
if (gIsExited)
|
|
49
49
|
listener();
|
|
50
50
|
else
|
|
51
51
|
onAppExiting.push(listener);
|
|
52
52
|
},
|
|
53
53
|
onAppExited: (listener) => {
|
|
54
|
-
if (
|
|
54
|
+
if (gIsExited)
|
|
55
55
|
listener();
|
|
56
56
|
else
|
|
57
57
|
onAppExited.push(listener);
|
|
58
58
|
},
|
|
59
59
|
declareAppStarted: async () => {
|
|
60
|
-
|
|
60
|
+
gIsAppStarted = true;
|
|
61
61
|
await execListeners(onAppStart);
|
|
62
62
|
},
|
|
63
63
|
declareAppExiting: async () => {
|
|
64
|
+
if (gIsExited)
|
|
65
|
+
return;
|
|
66
|
+
gIsExited = true;
|
|
64
67
|
if (isUsingWorker()) {
|
|
65
68
|
// Wait 1 sec, which allows the worker to correctly initialize.
|
|
66
69
|
await NodeSpace.timer.tick(1000);
|
|
67
70
|
}
|
|
68
|
-
|
|
71
|
+
gIsAppStarted = false;
|
|
69
72
|
await execListeners(onAppExiting);
|
|
70
73
|
if (isUsingWorker()) {
|
|
71
74
|
// Allows to worker to correctly stop their activity.
|
|
@@ -75,8 +78,6 @@ export function init_nodeSpaceApp() {
|
|
|
75
78
|
// Allows to worker to correctly stop their activity.
|
|
76
79
|
await NodeSpace.timer.tick(50);
|
|
77
80
|
}
|
|
78
|
-
if (onAppExited.length)
|
|
79
|
-
debugger;
|
|
80
81
|
await execListeners(onAppExited);
|
|
81
82
|
},
|
|
82
83
|
executeApp: async (app) => {
|
|
@@ -105,4 +106,5 @@ export function init_nodeSpaceApp() {
|
|
|
105
106
|
}
|
|
106
107
|
};
|
|
107
108
|
}
|
|
109
|
+
let gIsExited = false;
|
|
108
110
|
//# sourceMappingURL=_app.js.map
|
package/dist/_app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_app.js","sourceRoot":"","sources":["../src/_app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAG5C,MAAM,UAAU,iBAAiB;IAC7B,MAAM,iBAAiB,GAAe,EAAE,CAAC;IACzC,MAAM,YAAY,GAAe,EAAE,CAAC;IACpC,MAAM,WAAW,GAAe,EAAE,CAAC;IACnC,MAAM,UAAU,GAAe,EAAE,CAAC;IAClC,IAAI,iBAAiB,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;IAEnD,IAAI,WAAW,GAAG,UAAU,CAAC,aAAa,KAAK,SAAS,CAAC;IACzD,IAAI,
|
|
1
|
+
{"version":3,"file":"_app.js","sourceRoot":"","sources":["../src/_app.ts"],"names":[],"mappings":"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"}
|
package/dist/_term.js
CHANGED
|
@@ -42,6 +42,10 @@ function buildWriter(...colors) {
|
|
|
42
42
|
let before = colors.join("");
|
|
43
43
|
return (...values) => before + values.join(" ") + T_RESET;
|
|
44
44
|
}
|
|
45
|
+
const buildLogger = (...colors) => {
|
|
46
|
+
const writer = buildWriter(...colors);
|
|
47
|
+
return (...values) => console.log(writer(...values));
|
|
48
|
+
};
|
|
45
49
|
export function init_term() {
|
|
46
50
|
NodeSpace.term = {
|
|
47
51
|
cssText,
|
|
@@ -62,13 +66,16 @@ export function init_term() {
|
|
|
62
66
|
console.log();
|
|
63
67
|
},
|
|
64
68
|
buildWriter: buildWriter,
|
|
65
|
-
buildLogger
|
|
66
|
-
const writer = buildWriter(...colors);
|
|
67
|
-
return (...values) => console.log(writer(...values));
|
|
68
|
-
},
|
|
69
|
+
buildLogger,
|
|
69
70
|
indentText(spacer, text) {
|
|
70
71
|
return spacer + text.replaceAll("\r", "").replaceAll("\n", spacer + "\n");
|
|
71
|
-
}
|
|
72
|
+
},
|
|
73
|
+
logRed: buildLogger(C_RED),
|
|
74
|
+
logBgRed: buildLogger(B_RED),
|
|
75
|
+
logBlue: buildLogger(C_BLUE),
|
|
76
|
+
logBgBlue: buildLogger(B_BLUE),
|
|
77
|
+
logGreen: buildLogger(C_GREEN),
|
|
78
|
+
logBgGreen: buildLogger(B_GREEN)
|
|
72
79
|
};
|
|
73
80
|
}
|
|
74
81
|
//# sourceMappingURL=_term.js.map
|
package/dist/_term.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_term.js","sourceRoot":"","sources":["../src/_term.ts"],"names":[],"mappings":"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
|
|
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,wBAAwB,CAAC;AAChD,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,SAAS,WAAW,CAAC,GAAG,MAAa;IACjC,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,MAAa,EAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AACrE,CAAC;AAED,MAAM,WAAW,GAAwD,CAAC,GAAG,MAAM,EAAE,EAAE;IACnF,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,MAAM,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,UAAU,SAAS;IACrB,SAAS,CAAC,IAAI,GAAG;QACb,OAAO;QAEP,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI;QAE3C,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ;QACtD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ;QACrE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY;QAE1G,QAAQ,CAAC,GAAG,MAAgB;YACxB,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;QACrC,CAAC;QAED,cAAc,EAAE,CAAC,MAAe,EAAE,GAAG,IAAe,EAAE,EAAE;YACpD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,KAAK;gBAAE,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC;YAE9B,yDAAyD;YACzD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;YAEzD,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,CAAC;QACD,WAAW,EAAE,WAAW;QAExB,WAAW;QAEX,UAAU,CAAC,MAAM,EAAE,IAAI;YACnB,OAAO,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC;QAE5B,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC;QAC5B,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC;QAE9B,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC;QAC9B,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC;KACnC,CAAA;AACL,CAAC"}
|
package/dist/_timer.js
CHANGED
|
@@ -46,7 +46,62 @@ export function init_nodeSpaceTimer() {
|
|
|
46
46
|
ONE_DAY,
|
|
47
47
|
tick,
|
|
48
48
|
newInterval,
|
|
49
|
-
deferred
|
|
49
|
+
deferred,
|
|
50
|
+
chrono: (mustSaveMeasures) => new ChronoImpl(mustSaveMeasures)
|
|
50
51
|
};
|
|
51
52
|
}
|
|
53
|
+
function logAutoTrigger(m) {
|
|
54
|
+
if (m.logIfMoreThan_ms && (m.elapsedTime_ms > m.logIfMoreThan_ms)) {
|
|
55
|
+
if (m.title)
|
|
56
|
+
NodeSpace.term.logRed("Chrono - " + m.title + ":", m.elapsedTime_sec);
|
|
57
|
+
else
|
|
58
|
+
console.log("Chrono - " + m.label + ":", m.elapsedTime_sec);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
class ChronoImpl {
|
|
62
|
+
constructor(mustSaveMeasures) {
|
|
63
|
+
this.mustSaveMeasures = mustSaveMeasures;
|
|
64
|
+
this.allMeasures = [];
|
|
65
|
+
this.currentStart = 0;
|
|
66
|
+
this.isStarted = false;
|
|
67
|
+
this._onMeasureDone = null;
|
|
68
|
+
}
|
|
69
|
+
start_withLimit(limit, label, title) {
|
|
70
|
+
this.start(label, title);
|
|
71
|
+
this.currentLimit = limit;
|
|
72
|
+
}
|
|
73
|
+
start(label, title) {
|
|
74
|
+
if (this.isStarted)
|
|
75
|
+
this.end();
|
|
76
|
+
this.isStarted = true;
|
|
77
|
+
this.currentLabel = label;
|
|
78
|
+
this.currentTitle = title;
|
|
79
|
+
this.currentStart = Date.now();
|
|
80
|
+
this.currentLimit = undefined;
|
|
81
|
+
}
|
|
82
|
+
end() {
|
|
83
|
+
if (!this.isStarted)
|
|
84
|
+
return;
|
|
85
|
+
this.isStarted = false;
|
|
86
|
+
const thisTime = Date.now();
|
|
87
|
+
let measure = {
|
|
88
|
+
title: this.currentTitle,
|
|
89
|
+
label: this.currentLabel,
|
|
90
|
+
logIfMoreThan_ms: this.currentLimit,
|
|
91
|
+
startTime_ms: this.currentStart,
|
|
92
|
+
endTime_ms: thisTime,
|
|
93
|
+
elapsedTime_ms: thisTime - this.currentStart,
|
|
94
|
+
elapsedTime_sec: ((thisTime - this.currentStart) / 1000).toFixed(3) + " sec"
|
|
95
|
+
};
|
|
96
|
+
this.lastMeasure = measure;
|
|
97
|
+
if (this.mustSaveMeasures)
|
|
98
|
+
this.allMeasures.push(measure);
|
|
99
|
+
logAutoTrigger(measure);
|
|
100
|
+
if (this._onMeasureDone)
|
|
101
|
+
this._onMeasureDone(measure);
|
|
102
|
+
}
|
|
103
|
+
onMeasureDone(handler) {
|
|
104
|
+
this._onMeasureDone = handler;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
52
107
|
//# sourceMappingURL=_timer.js.map
|
package/dist/_timer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_timer.js","sourceRoot":"","sources":["../src/_timer.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC;AAC/B,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,GAAG,EAAE,CAAC;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,GAAG,EAAE,CAAC;AAErC,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"_timer.js","sourceRoot":"","sources":["../src/_timer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function init_webSocket(): void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export function init_webSocket() {
|
|
2
|
+
NodeSpace.webSocket = {
|
|
3
|
+
openConnection(wsUrl, protocol) {
|
|
4
|
+
return new Promise((resolve, reject) => {
|
|
5
|
+
const ws = new WebSocket(wsUrl, protocol);
|
|
6
|
+
ws.onopen = () => { resolve(ws); };
|
|
7
|
+
ws.onerror = () => { reject(); };
|
|
8
|
+
});
|
|
9
|
+
},
|
|
10
|
+
onError(socket, listener) {
|
|
11
|
+
socket.onerror = listener;
|
|
12
|
+
},
|
|
13
|
+
onClosed(socket, listener) {
|
|
14
|
+
socket.addEventListener('close', () => { listener(); });
|
|
15
|
+
},
|
|
16
|
+
sendMessage(socket, msg) {
|
|
17
|
+
socket.send(msg);
|
|
18
|
+
},
|
|
19
|
+
onMessage(socket, listener) {
|
|
20
|
+
socket.addEventListener('message', (event) => { listener(event.data); });
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=_webSocket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_webSocket.js","sourceRoot":"","sources":["../src/_webSocket.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc;IAC1B,SAAS,CAAC,SAAS,GAAG;QAClB,cAAc,CAAC,KAAa,EAAE,QAAQ;YAClC,OAAO,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC9C,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAE1C,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC;gBAClC,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,QAAQ;YACpB,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAED,QAAQ,CAAC,MAAM,EAAE,QAAQ;YACrB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,WAAW,CAAC,MAAM,EAAE,GAAG;YACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,SAAS,CAAC,MAAM,EAAE,QAAQ;YACtB,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function patch_webSocket(): void;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { isBunJs, isNodeJs } from "./common.js";
|
|
2
|
+
import { WebSocket as WsWebSocket } from "ws";
|
|
3
|
+
export function patch_webSocket() {
|
|
4
|
+
if (isNodeJs()) {
|
|
5
|
+
NodeSpace.webSocket.openConnection = (wsUrl, protocol) => {
|
|
6
|
+
return new Promise((resolve, reject) => {
|
|
7
|
+
const ws = new WsWebSocket(wsUrl, protocol);
|
|
8
|
+
const ws2 = ws;
|
|
9
|
+
ws.onopen = () => { resolve(ws2); };
|
|
10
|
+
ws.onerror = () => { reject(); };
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
else if (isBunJs()) {
|
|
15
|
+
NodeSpace.webSocket.onClosed = (socket, listener) => {
|
|
16
|
+
const data = (socket.data);
|
|
17
|
+
data.onClosed = listener;
|
|
18
|
+
};
|
|
19
|
+
NodeSpace.webSocket.onMessage = (socket, listener) => {
|
|
20
|
+
const data = (socket.data);
|
|
21
|
+
data.onMessage = listener;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=_webSocket_s.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_webSocket_s.js","sourceRoot":"","sources":["../src/_webSocket_s.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAC,SAAS,IAAI,WAAW,EAAC,MAAM,IAAI,CAAC;AAE5C,MAAM,UAAU,eAAe;IAC3B,IAAI,QAAQ,EAAE,EAAE,CAAC;QACb,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,KAAa,EAAE,QAAQ,EAAE,EAAE;YAC7D,OAAO,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC9C,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC5C,MAAM,GAAG,GAAG,EAA0B,CAAC;gBAEvC,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC;gBACnC,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACP,CAAC,CAAA;IACL,CAAC;SAAM,IAAI,OAAO,EAAE,EAAE,CAAC;QACnB,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;YAChD,MAAM,IAAI,GAAG,CAAE,MAAc,CAAC,IAAI,CAAQ,CAAC;YAC3C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7B,CAAC,CAAC;QAEF,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,CAAE,MAAc,CAAC,IAAI,CAAQ,CAAC;YAC3C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC9B,CAAC,CAAC;IACN,CAAC;AACL,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { init_nodeSpaceTimer } from "./_timer.js";
|
|
|
5
5
|
import { init_nodeSpaceThread } from "./_thread.js";
|
|
6
6
|
import { init_nodeSpaceExtensionPoints } from "./_extensionPoints.js";
|
|
7
7
|
import { init_term } from "./_term.js";
|
|
8
|
+
import { init_webSocket } from "./_webSocket.js";
|
|
8
9
|
function applyDefaults(source, defaults) {
|
|
9
10
|
if (!source)
|
|
10
11
|
source = {};
|
|
@@ -25,6 +26,7 @@ function initBrowser() {
|
|
|
25
26
|
init_nodeSpaceThread();
|
|
26
27
|
init_nodeSpaceExtensionPoints();
|
|
27
28
|
init_term();
|
|
29
|
+
init_webSocket();
|
|
28
30
|
// Allow the ref to exist.
|
|
29
31
|
//
|
|
30
32
|
NodeSpace.fs = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jopi-node-space-browser.js","sourceRoot":"","sources":["../src/jopi-node-space-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAChD,OAAO,EAAC,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAClD,OAAO,EAAC,6BAA6B,EAAC,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"jopi-node-space-browser.js","sourceRoot":"","sources":["../src/jopi-node-space-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAChD,OAAO,EAAC,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAClD,OAAO,EAAC,6BAA6B,EAAC,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAErC,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAE/C,SAAS,aAAa,CAAI,MAAmB,EAAE,QAAW;IACtD,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAO,CAAC;IAC9B,OAAO,EAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAC,CAAC;AACpC,CAAC;AAED,SAAS,eAAe,CAAC,CAAU;IAC/B,IAAI,CAAC,YAAY,KAAK;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC;IACzC,OAAO,EAAE,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,WAAW;IAChB,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC;IACxC,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC;IAE5C,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;IACZ,cAAc,EAAE,CAAC;IAEjB,0BAA0B;IAC1B,EAAE;IACF,SAAS,CAAC,EAAE,GAAG,EAAoB,CAAC;IACpC,SAAS,CAAC,MAAM,GAAG,EAAgB,CAAC;IACpC,SAAS,CAAC,QAAQ,GAAG,EAAkB,CAAC;IACxC,SAAS,CAAC,EAAE,GAAG,EAAY,CAAC;IAC5B,SAAS,CAAC,MAAM,GAAG,EAAgB,CAAC;AACxC,CAAC;AAED,WAAW,EAAE,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { patch_compress } from "./_compress_s.js";
|
|
|
6
6
|
import { isBunJs, isNodeJs } from "./common.js";
|
|
7
7
|
import { patch_os } from "./_os_s.js";
|
|
8
8
|
import { patch_stream } from "./_stream_s.js";
|
|
9
|
+
import { patch_webSocket } from "./_webSocket_s.js";
|
|
9
10
|
let serverType = "nodejs";
|
|
10
11
|
if (isBunJs())
|
|
11
12
|
serverType = "bunjs";
|
|
@@ -24,6 +25,10 @@ patch_stream();
|
|
|
24
25
|
patch_crypto();
|
|
25
26
|
patch_compress();
|
|
26
27
|
patch_os();
|
|
28
|
+
patch_webSocket();
|
|
27
29
|
NodeSpace.app.declareServerSideReady();
|
|
30
|
+
// When the program exits gracefully
|
|
28
31
|
process.on('exit', () => NodeSpace.app.declareAppExiting());
|
|
32
|
+
// When the user wants to terminate the program (CTRL+C)
|
|
33
|
+
process.on('SIGINT', () => NodeSpace.app.declareAppExiting());
|
|
29
34
|
//# sourceMappingURL=jopi-node-space-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jopi-node-space-server.js","sourceRoot":"","sources":["../src/jopi-node-space-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"jopi-node-space-server.js","sourceRoot":"","sources":["../src/jopi-node-space-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAElD,IAAI,UAAU,GAAe,QAAQ,CAAC;AACtC,IAAI,OAAO,EAAE;IAAE,UAAU,GAAG,OAAO,CAAC;AACpC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;AAEvC,SAAS,CAAC,IAAI,GAAG;IACb,QAAQ,EAAE,QAAQ,EAAE;IACpB,OAAO,EAAE,OAAO,EAAE;IAClB,SAAS,EAAE,KAAK;IAChB,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,UAAU;CACzB,CAAA;AAED,aAAa,EAAE,CAAC;AAChB,YAAY,EAAE,CAAC;AACf,QAAQ,EAAE,CAAC;AACX,YAAY,EAAE,CAAC;AACf,YAAY,EAAE,CAAC;AACf,cAAc,EAAE,CAAC;AACjB,QAAQ,EAAE,CAAC;AACX,eAAe,EAAE,CAAC;AAElB,SAAS,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;AAEvC,oCAAoC;AACpC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAE5D,wDAAwD;AACxD,OAAO,CAAC,EAAE,CAAC,QAAQ,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.14",
|
|
3
3
|
"private": false,
|
|
4
4
|
"name": "jopi-node-space",
|
|
5
5
|
"license": "MIT",
|
|
@@ -7,25 +7,35 @@
|
|
|
7
7
|
"keywords": [],
|
|
8
8
|
"author": "Johan PIQUET",
|
|
9
9
|
"description": "An helper for hybrid apps",
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
"engines": {
|
|
11
|
+
"bun": "^1.2.18",
|
|
12
|
+
"node": ">=22.18.0"
|
|
13
|
+
},
|
|
13
14
|
"type": "module",
|
|
14
15
|
"main": "dist/index.js",
|
|
15
16
|
"types": "dist/index.d.ts",
|
|
16
|
-
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md",
|
|
20
|
+
"LICENSE",
|
|
21
|
+
"src"
|
|
22
|
+
],
|
|
17
23
|
"scripts": {
|
|
24
|
+
"build": "npx tsc",
|
|
18
25
|
"tsc": "tsc",
|
|
19
|
-
"
|
|
26
|
+
"bun-publish": "npx tsc && bun publish",
|
|
27
|
+
"untrack": "git rm -r --cached -- ./dist/**;"
|
|
20
28
|
},
|
|
21
|
-
|
|
22
29
|
"devDependencies": {
|
|
23
30
|
"@types/bun": "latest",
|
|
24
31
|
"@types/node": "latest",
|
|
25
32
|
"@types/mime-types": "latest"
|
|
26
33
|
},
|
|
27
|
-
|
|
28
34
|
"dependencies": {
|
|
29
|
-
"
|
|
30
|
-
|
|
35
|
+
"@types/ws": "^8.18.1",
|
|
36
|
+
"mime-types": "^3.0.1",
|
|
37
|
+
"ws": "^8.18.3"
|
|
38
|
+
},
|
|
39
|
+
"nodeSwitch": true,
|
|
40
|
+
"nodeSwitch-default": "node"
|
|
31
41
|
}
|
package/src/__global.ts
CHANGED
|
@@ -22,6 +22,7 @@ export interface NodeSpaceType {
|
|
|
22
22
|
app: AppImpl;
|
|
23
23
|
extensionPoints: ExtensionPointImpl;
|
|
24
24
|
term: TerminalImpl;
|
|
25
|
+
webSocket: WebSocketImpl;
|
|
25
26
|
|
|
26
27
|
// >>> Server side only
|
|
27
28
|
|
|
@@ -38,6 +39,35 @@ export interface NodeSpaceType {
|
|
|
38
39
|
|
|
39
40
|
// ********************************************
|
|
40
41
|
|
|
42
|
+
export interface WebSocketImpl {
|
|
43
|
+
/**
|
|
44
|
+
* Open a connection to a server.
|
|
45
|
+
* The url must be of the type "ws://host-name:optionalPort/optionalPath".
|
|
46
|
+
* Ex: "ws://127.0.0.1:3000/my-end-point".
|
|
47
|
+
*/
|
|
48
|
+
openConnection(wsUrl: string, protocol?: string|string[]): Promise<WebSocket>;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Is called when the socket is closed.
|
|
52
|
+
*/
|
|
53
|
+
sendMessage(socket: WebSocket, msg: string|Buffer|Uint8Array|ArrayBuffer): void;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Send a text message through this webSocket.
|
|
57
|
+
*/
|
|
58
|
+
onMessage(socket: WebSocket, listener: ((msg: string|Buffer) => void)): void;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Add a listener which is called when the socket receives a message.
|
|
62
|
+
*/
|
|
63
|
+
onClosed(socket: WebSocket, listener: () => void): void;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Add a listener which is called when an error occurs.
|
|
67
|
+
*/
|
|
68
|
+
onError(socket: WebSocket, listener: () => void): void;
|
|
69
|
+
}
|
|
70
|
+
|
|
41
71
|
export interface CompressImpl {
|
|
42
72
|
gunzipSync(data: Uint8Array|string): Uint8Array;
|
|
43
73
|
gzipSync(data: Uint8Array|string): Uint8Array;
|
|
@@ -87,6 +117,8 @@ export interface TimerImpl {
|
|
|
87
117
|
tick: (delayMs: number) => Promise<void>;
|
|
88
118
|
newInterval: (durationInMs: number, callback: TimerCallback) => void;
|
|
89
119
|
deferred: (callback: ()=>void) => void;
|
|
120
|
+
|
|
121
|
+
chrono(mustSaveMeasures: boolean): Chrono;
|
|
90
122
|
}
|
|
91
123
|
|
|
92
124
|
export interface FileState {
|
|
@@ -182,7 +214,7 @@ export interface TerminalImpl {
|
|
|
182
214
|
/**
|
|
183
215
|
* Build a console.log function that uses the colors provided in params.
|
|
184
216
|
*/
|
|
185
|
-
buildLogger: (...colors: string[]) =>
|
|
217
|
+
buildLogger: (...colors: string[]) => TermLogger;
|
|
186
218
|
|
|
187
219
|
/**
|
|
188
220
|
* Build a console.log function that uses the colors provided in params.
|
|
@@ -199,6 +231,15 @@ export interface TerminalImpl {
|
|
|
199
231
|
*/
|
|
200
232
|
consoleLogTemp: (isTemp: boolean, ...args: unknown[]) => void,
|
|
201
233
|
|
|
234
|
+
logRed: TermLogger,
|
|
235
|
+
logBgRed: TermLogger,
|
|
236
|
+
|
|
237
|
+
logGreen: TermLogger,
|
|
238
|
+
logBgGreen: TermLogger,
|
|
239
|
+
|
|
240
|
+
logBlue: TermLogger,
|
|
241
|
+
logBgBlue: TermLogger,
|
|
242
|
+
|
|
202
243
|
T_RESET: string;
|
|
203
244
|
T_BOLD: string;
|
|
204
245
|
T_UNDERLINE: string;
|
|
@@ -228,4 +269,31 @@ export interface TerminalImpl {
|
|
|
228
269
|
export interface CryptoImpl {
|
|
229
270
|
fastHash(text: string): string;
|
|
230
271
|
md5(text: string): string;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// ********************************
|
|
275
|
+
|
|
276
|
+
export type TermLogger = (...args: any[]) => void;
|
|
277
|
+
|
|
278
|
+
export interface Chrono {
|
|
279
|
+
lastMeasure?: ChronoMeasure;
|
|
280
|
+
allMeasures: ChronoMeasure[];
|
|
281
|
+
|
|
282
|
+
start(label: string, printTitle?: string): void;
|
|
283
|
+
start_withLimit(limit_ms: number, label: string, printTitle?: string): void;
|
|
284
|
+
|
|
285
|
+
end(): void;
|
|
286
|
+
|
|
287
|
+
onMeasureDone(handler: null | ((measure: ChronoMeasure) => void)): void;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export interface ChronoMeasure {
|
|
291
|
+
label?: string;
|
|
292
|
+
title?: string;
|
|
293
|
+
logIfMoreThan_ms?: number;
|
|
294
|
+
|
|
295
|
+
startTime_ms: number;
|
|
296
|
+
endTime_ms: number;
|
|
297
|
+
elapsedTime_ms: number;
|
|
298
|
+
elapsedTime_sec: string;
|
|
231
299
|
}
|
package/src/_app.ts
CHANGED
|
@@ -10,7 +10,7 @@ export function init_nodeSpaceApp() {
|
|
|
10
10
|
let isServerSideReady = !(isNodeJs() || isBunJs());
|
|
11
11
|
|
|
12
12
|
let isHotReload = globalThis.jopiHotReload !== undefined;
|
|
13
|
-
let
|
|
13
|
+
let gIsAppStarted = false;
|
|
14
14
|
|
|
15
15
|
if (isHotReload) {
|
|
16
16
|
execListeners(globalThis.jopiHotReload.onHotReload).then();
|
|
@@ -46,32 +46,36 @@ export function init_nodeSpaceApp() {
|
|
|
46
46
|
},
|
|
47
47
|
|
|
48
48
|
onAppStart: (listener: Listener) => {
|
|
49
|
-
if (
|
|
49
|
+
if (gIsAppStarted) listener();
|
|
50
50
|
else onAppStart.push(listener);
|
|
51
51
|
},
|
|
52
52
|
|
|
53
53
|
onAppExiting: (listener: Listener) => {
|
|
54
|
-
if (
|
|
54
|
+
if (gIsExited) listener();
|
|
55
55
|
else onAppExiting.push(listener);
|
|
56
56
|
},
|
|
57
57
|
|
|
58
58
|
onAppExited: (listener: Listener) => {
|
|
59
|
-
if (
|
|
59
|
+
if (gIsExited) listener();
|
|
60
60
|
else onAppExited.push(listener);
|
|
61
61
|
},
|
|
62
62
|
|
|
63
63
|
declareAppStarted: async () => {
|
|
64
|
-
|
|
64
|
+
gIsAppStarted = true;
|
|
65
65
|
await execListeners(onAppStart);
|
|
66
66
|
},
|
|
67
67
|
|
|
68
68
|
declareAppExiting: async () => {
|
|
69
|
+
if (gIsExited) return;
|
|
70
|
+
gIsExited = true;
|
|
71
|
+
|
|
69
72
|
if (isUsingWorker()) {
|
|
70
73
|
// Wait 1 sec, which allows the worker to correctly initialize.
|
|
71
74
|
await NodeSpace.timer.tick(1000);
|
|
72
75
|
}
|
|
73
76
|
|
|
74
|
-
|
|
77
|
+
gIsAppStarted = false;
|
|
78
|
+
|
|
75
79
|
await execListeners(onAppExiting);
|
|
76
80
|
|
|
77
81
|
if (isUsingWorker()) {
|
|
@@ -84,7 +88,6 @@ export function init_nodeSpaceApp() {
|
|
|
84
88
|
await NodeSpace.timer.tick(50);
|
|
85
89
|
}
|
|
86
90
|
|
|
87
|
-
if (onAppExited.length) debugger;
|
|
88
91
|
await execListeners(onAppExited);
|
|
89
92
|
},
|
|
90
93
|
|
|
@@ -115,4 +118,6 @@ export function init_nodeSpaceApp() {
|
|
|
115
118
|
delete(memory[key]);
|
|
116
119
|
}
|
|
117
120
|
};
|
|
118
|
-
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
let gIsExited = false;
|
package/src/_term.ts
CHANGED
|
@@ -54,6 +54,11 @@ function buildWriter(...colors: any[]) {
|
|
|
54
54
|
return (...values: any[]) => before + values.join(" ") + T_RESET;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
const buildLogger: (...colors: string[]) => ((...params: any[])=>void) = (...colors) => {
|
|
58
|
+
const writer = buildWriter(...colors);
|
|
59
|
+
return (...values) => console.log(writer(...values));
|
|
60
|
+
};
|
|
61
|
+
|
|
57
62
|
export function init_term() {
|
|
58
63
|
NodeSpace.term = {
|
|
59
64
|
cssText,
|
|
@@ -79,13 +84,19 @@ export function init_term() {
|
|
|
79
84
|
},
|
|
80
85
|
buildWriter: buildWriter,
|
|
81
86
|
|
|
82
|
-
buildLogger
|
|
83
|
-
const writer = buildWriter(...colors);
|
|
84
|
-
return (...values) => console.log(writer(...values));
|
|
85
|
-
},
|
|
87
|
+
buildLogger,
|
|
86
88
|
|
|
87
89
|
indentText(spacer, text) {
|
|
88
90
|
return spacer + text.replaceAll("\r", "").replaceAll("\n", spacer + "\n");
|
|
89
|
-
}
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
logRed: buildLogger(C_RED),
|
|
94
|
+
logBgRed: buildLogger(B_RED),
|
|
95
|
+
|
|
96
|
+
logBlue: buildLogger(C_BLUE),
|
|
97
|
+
logBgBlue: buildLogger(B_BLUE),
|
|
98
|
+
|
|
99
|
+
logGreen: buildLogger(C_GREEN),
|
|
100
|
+
logBgGreen: buildLogger(B_GREEN)
|
|
90
101
|
}
|
|
91
102
|
}
|
package/src/_timer.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {TimerCallback} from "./__global.ts";
|
|
1
|
+
import type {Chrono, ChronoMeasure, TimerCallback} from "./__global.ts";
|
|
2
2
|
|
|
3
3
|
export const ONE_SECOND = 1000;
|
|
4
4
|
export const ONE_MINUTE = ONE_SECOND * 60;
|
|
5
5
|
export const ONE_HOUR = ONE_MINUTE * 60;
|
|
6
6
|
export const ONE_DAY = ONE_HOUR * 24;
|
|
7
7
|
|
|
8
|
-
const timerListeners: {[timerDuration: number]: TimerCallback[]} = {};
|
|
8
|
+
const timerListeners: { [timerDuration: number]: TimerCallback[] } = {};
|
|
9
9
|
|
|
10
10
|
export function newInterval(durationInMs: number, callback: TimerCallback) {
|
|
11
11
|
let entry = timerListeners[durationInMs];
|
|
@@ -20,12 +20,12 @@ export function newInterval(durationInMs: number, callback: TimerCallback) {
|
|
|
20
20
|
const toCall = entry;
|
|
21
21
|
|
|
22
22
|
const timerId = setInterval(async () => {
|
|
23
|
-
for (let i=0; i<toCall.length; i++) {
|
|
23
|
+
for (let i = 0; i < toCall.length; i++) {
|
|
24
24
|
let r = toCall[i]();
|
|
25
25
|
if (r instanceof Promise) r = await r;
|
|
26
26
|
|
|
27
27
|
// Returning false means the timer is not needed anymore.
|
|
28
|
-
if (r===false) {
|
|
28
|
+
if (r === false) {
|
|
29
29
|
toCall.splice(i, 1);
|
|
30
30
|
i--;
|
|
31
31
|
}
|
|
@@ -33,7 +33,7 @@ export function newInterval(durationInMs: number, callback: TimerCallback) {
|
|
|
33
33
|
|
|
34
34
|
if (!toCall.length) {
|
|
35
35
|
clearInterval(timerId);
|
|
36
|
-
delete(timerListeners[durationInMs]);
|
|
36
|
+
delete (timerListeners[durationInMs]);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
}, durationInMs);
|
|
@@ -44,7 +44,7 @@ export function newInterval(durationInMs: number, callback: TimerCallback) {
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
export function deferred(callback: ()=>void) {
|
|
47
|
+
export function deferred(callback: () => void) {
|
|
48
48
|
setTimeout(callback, 0);
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -61,6 +61,75 @@ export function init_nodeSpaceTimer() {
|
|
|
61
61
|
|
|
62
62
|
tick,
|
|
63
63
|
newInterval,
|
|
64
|
-
deferred
|
|
64
|
+
deferred,
|
|
65
|
+
|
|
66
|
+
chrono: (mustSaveMeasures: boolean) => new ChronoImpl(mustSaveMeasures)
|
|
65
67
|
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function logAutoTrigger(m: ChronoMeasure) {
|
|
71
|
+
if (m.logIfMoreThan_ms && (m.elapsedTime_ms > m.logIfMoreThan_ms)) {
|
|
72
|
+
if (m.title) NodeSpace.term.logRed("Chrono - " + m.title + ":", m.elapsedTime_sec);
|
|
73
|
+
else console.log("Chrono - " + m.label + ":", m.elapsedTime_sec);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
class ChronoImpl implements Chrono {
|
|
78
|
+
lastMeasure?: ChronoMeasure;
|
|
79
|
+
allMeasures: ChronoMeasure[] = [];
|
|
80
|
+
|
|
81
|
+
private currentStart: number = 0;
|
|
82
|
+
private currentLabel: string|undefined;
|
|
83
|
+
private currentTitle: string|undefined;
|
|
84
|
+
private currentLimit: number|undefined;
|
|
85
|
+
|
|
86
|
+
private isStarted = false;
|
|
87
|
+
private _onMeasureDone: null | ((measure: ChronoMeasure) => void) = null;
|
|
88
|
+
|
|
89
|
+
constructor(public mustSaveMeasures: boolean) {
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
start_withLimit(limit: number, label: string, title?: string) {
|
|
93
|
+
this.start(label, title);
|
|
94
|
+
this.currentLimit = limit;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
start(label: string, title?: string) {
|
|
98
|
+
if (this.isStarted) this.end();
|
|
99
|
+
this.isStarted = true;
|
|
100
|
+
|
|
101
|
+
this.currentLabel = label;
|
|
102
|
+
this.currentTitle = title;
|
|
103
|
+
this.currentStart = Date.now();
|
|
104
|
+
this.currentLimit = undefined;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
end() {
|
|
108
|
+
if (!this.isStarted) return;
|
|
109
|
+
this.isStarted = false;
|
|
110
|
+
|
|
111
|
+
const thisTime = Date.now();
|
|
112
|
+
|
|
113
|
+
let measure: ChronoMeasure = {
|
|
114
|
+
title: this.currentTitle,
|
|
115
|
+
label: this.currentLabel,
|
|
116
|
+
|
|
117
|
+
logIfMoreThan_ms: this.currentLimit,
|
|
118
|
+
|
|
119
|
+
startTime_ms: this.currentStart,
|
|
120
|
+
endTime_ms: thisTime,
|
|
121
|
+
elapsedTime_ms: thisTime - this.currentStart,
|
|
122
|
+
elapsedTime_sec: ((thisTime - this.currentStart) / 1000).toFixed(3) + " sec"
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
this.lastMeasure = measure;
|
|
126
|
+
if (this.mustSaveMeasures) this.allMeasures.push(measure);
|
|
127
|
+
|
|
128
|
+
logAutoTrigger(measure);
|
|
129
|
+
if (this._onMeasureDone) this._onMeasureDone(measure);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
onMeasureDone(handler: null | ((measure: ChronoMeasure) => void)) {
|
|
133
|
+
this._onMeasureDone = handler;
|
|
134
|
+
}
|
|
66
135
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function init_webSocket() {
|
|
2
|
+
NodeSpace.webSocket = {
|
|
3
|
+
openConnection(wsUrl: string, protocol): Promise<WebSocket> {
|
|
4
|
+
return new Promise<WebSocket>((resolve, reject) => {
|
|
5
|
+
const ws = new WebSocket(wsUrl, protocol);
|
|
6
|
+
|
|
7
|
+
ws.onopen = () => { resolve(ws) };
|
|
8
|
+
ws.onerror = () => { reject(); };
|
|
9
|
+
});
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
onError(socket, listener): void {
|
|
13
|
+
socket.onerror = listener;
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
onClosed(socket, listener): void {
|
|
17
|
+
socket.addEventListener('close', () => { listener() });
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
sendMessage(socket, msg): void {
|
|
21
|
+
socket.send(msg);
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
onMessage(socket, listener) {
|
|
25
|
+
socket.addEventListener('message', (event) => { listener(event.data) });
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {isBunJs, isNodeJs} from "./common.ts";
|
|
2
|
+
import {WebSocket as WsWebSocket} from "ws";
|
|
3
|
+
|
|
4
|
+
export function patch_webSocket() {
|
|
5
|
+
if (isNodeJs()) {
|
|
6
|
+
NodeSpace.webSocket.openConnection = (wsUrl: string, protocol) => {
|
|
7
|
+
return new Promise<WebSocket>((resolve, reject) => {
|
|
8
|
+
const ws = new WsWebSocket(wsUrl, protocol);
|
|
9
|
+
const ws2 = ws as unknown as WebSocket;
|
|
10
|
+
|
|
11
|
+
ws.onopen = () => { resolve(ws2) };
|
|
12
|
+
ws.onerror = () => { reject(); };
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
} else if (isBunJs()) {
|
|
16
|
+
NodeSpace.webSocket.onClosed = (socket, listener) => {
|
|
17
|
+
const data = ((socket as any).data) as any;
|
|
18
|
+
data.onClosed = listener;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
NodeSpace.webSocket.onMessage = (socket, listener) => {
|
|
22
|
+
const data = ((socket as any).data) as any;
|
|
23
|
+
data.onMessage = listener;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -6,6 +6,7 @@ import {init_nodeSpaceThread} from "./_thread.ts";
|
|
|
6
6
|
import {init_nodeSpaceExtensionPoints} from "./_extensionPoints.ts";
|
|
7
7
|
import {init_term} from "./_term.ts";
|
|
8
8
|
import type {CompressImpl, CryptoImpl, FileSystemImpl, OsImpl, StreamImpl} from "./__global.ts";
|
|
9
|
+
import {init_webSocket} from "./_webSocket.ts";
|
|
9
10
|
|
|
10
11
|
function applyDefaults<T>(source: T|undefined, defaults: T): T {
|
|
11
12
|
if (!source) source = {} as T;
|
|
@@ -28,6 +29,7 @@ function initBrowser() {
|
|
|
28
29
|
init_nodeSpaceThread();
|
|
29
30
|
init_nodeSpaceExtensionPoints();
|
|
30
31
|
init_term();
|
|
32
|
+
init_webSocket();
|
|
31
33
|
|
|
32
34
|
// Allow the ref to exist.
|
|
33
35
|
//
|
|
@@ -8,6 +8,7 @@ import type {ServerType} from "./__global.ts";
|
|
|
8
8
|
import {isBunJs, isNodeJs} from "./common.ts";
|
|
9
9
|
import {patch_os} from "./_os_s.ts";
|
|
10
10
|
import {patch_stream} from "./_stream_s.ts";
|
|
11
|
+
import {patch_webSocket} from "./_webSocket_s.ts";
|
|
11
12
|
|
|
12
13
|
let serverType: ServerType = "nodejs";
|
|
13
14
|
if (isBunJs()) serverType = "bunjs";
|
|
@@ -28,6 +29,12 @@ patch_stream();
|
|
|
28
29
|
patch_crypto();
|
|
29
30
|
patch_compress();
|
|
30
31
|
patch_os();
|
|
32
|
+
patch_webSocket();
|
|
31
33
|
|
|
32
34
|
NodeSpace.app.declareServerSideReady();
|
|
33
|
-
|
|
35
|
+
|
|
36
|
+
// When the program exits gracefully
|
|
37
|
+
process.on('exit', () => NodeSpace.app.declareAppExiting());
|
|
38
|
+
|
|
39
|
+
// When the user wants to terminate the program (CTRL+C)
|
|
40
|
+
process.on('SIGINT', () => NodeSpace.app.declareAppExiting());
|
package/__UPDATES.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
**2025-08-18** ---> npm version 0.0.8
|
package/dist/browser.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function initBrowser(): void;
|
package/dist/browser.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { init_nodeSpaceWhat } from "./_what.js";
|
|
2
|
-
import { init_nodeSpaceApp } from "./_app.js";
|
|
3
|
-
import { init_nodeSpaceProcess } from "./_process.js";
|
|
4
|
-
import { init_nodeSpaceTimer } from "./_timer.js";
|
|
5
|
-
import { init_nodeSpaceThread } from "./_thread.js";
|
|
6
|
-
import { init_nodeSpaceExtensionPoints } from "./_extensionPoints.js";
|
|
7
|
-
import { init_term } from "./_term.js";
|
|
8
|
-
function applyDefaults(source, defaults) {
|
|
9
|
-
if (!source)
|
|
10
|
-
source = {};
|
|
11
|
-
return { ...defaults, ...source };
|
|
12
|
-
}
|
|
13
|
-
function getErrorMessage(e) {
|
|
14
|
-
if (e instanceof Error)
|
|
15
|
-
return e.message;
|
|
16
|
-
return "" + e;
|
|
17
|
-
}
|
|
18
|
-
export function initBrowser() {
|
|
19
|
-
NodeSpace.applyDefaults = applyDefaults;
|
|
20
|
-
NodeSpace.getErrorMessage = getErrorMessage;
|
|
21
|
-
init_nodeSpaceWhat();
|
|
22
|
-
init_nodeSpaceApp();
|
|
23
|
-
init_nodeSpaceProcess();
|
|
24
|
-
init_nodeSpaceTimer();
|
|
25
|
-
init_nodeSpaceThread();
|
|
26
|
-
init_nodeSpaceExtensionPoints();
|
|
27
|
-
init_term();
|
|
28
|
-
// Allow the ref to exist.
|
|
29
|
-
//
|
|
30
|
-
NodeSpace.fs = {};
|
|
31
|
-
NodeSpace.crypto = {};
|
|
32
|
-
NodeSpace.compress = {};
|
|
33
|
-
NodeSpace.os = {};
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=browser.js.map
|
package/dist/browser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAChD,OAAO,EAAC,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAClD,OAAO,EAAC,6BAA6B,EAAC,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAGrC,SAAS,aAAa,CAAI,MAAmB,EAAE,QAAW;IACtD,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAO,CAAC;IAC9B,OAAO,EAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAC,CAAC;AACpC,CAAC;AAED,SAAS,eAAe,CAAC,CAAU;IAC/B,IAAI,CAAC,YAAY,KAAK;QAAE,OAAO,CAAC,CAAC,OAAO,CAAC;IACzC,OAAO,EAAE,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,WAAW;IACvB,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC;IACxC,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC;IAE5C,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;IAEZ,0BAA0B;IAC1B,EAAE;IACF,SAAS,CAAC,EAAE,GAAG,EAAoB,CAAC;IACpC,SAAS,CAAC,MAAM,GAAG,EAAgB,CAAC;IACpC,SAAS,CAAC,QAAQ,GAAG,EAAkB,CAAC;IACxC,SAAS,CAAC,EAAE,GAAG,EAAY,CAAC;AAChC,CAAC"}
|
package/dist/browserLoader.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/browserLoader.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browserLoader.js","sourceRoot":"","sources":["../src/browserLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAEzC,oCAAoC;AACpC,WAAW,EAAE,CAAC"}
|
package/dist/serverLoader.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "./serverSide.ts";
|
package/dist/serverLoader.js
DELETED
package/dist/serverLoader.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serverLoader.js","sourceRoot":"","sources":["../src/serverLoader.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC"}
|
package/dist/serverSide.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/serverSide.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { patch_process } from "./_process_s.js";
|
|
2
|
-
import { patch_thread } from "./_thread_s.js";
|
|
3
|
-
import { patch_fs } from "./_fs_s.js";
|
|
4
|
-
import { patch_crypto } from "./_crypto_s.js";
|
|
5
|
-
import { patch_compress } from "./_compress_s.js";
|
|
6
|
-
import { isBunJs, isNodeJs } from "./common.js";
|
|
7
|
-
import { patch_os } from "./_os_s.js";
|
|
8
|
-
let serverType = "nodejs";
|
|
9
|
-
if (isBunJs())
|
|
10
|
-
serverType = "bunjs";
|
|
11
|
-
const nodeSpace = globalThis.NodeSpace;
|
|
12
|
-
nodeSpace.what = {
|
|
13
|
-
isNodeJS: isNodeJs(),
|
|
14
|
-
isBunJs: isBunJs(),
|
|
15
|
-
isBrowser: false,
|
|
16
|
-
isServerSide: true,
|
|
17
|
-
serverType: serverType,
|
|
18
|
-
};
|
|
19
|
-
patch_process();
|
|
20
|
-
patch_thread();
|
|
21
|
-
patch_fs();
|
|
22
|
-
patch_crypto();
|
|
23
|
-
patch_compress();
|
|
24
|
-
patch_os();
|
|
25
|
-
NodeSpace.app.declareServerSideReady();
|
|
26
|
-
process.on('exit', () => NodeSpace.app.declareAppExiting());
|
|
27
|
-
//# sourceMappingURL=serverSide.js.map
|
package/dist/serverSide.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serverSide.js","sourceRoot":"","sources":["../src/serverSide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,IAAI,UAAU,GAAe,QAAQ,CAAC;AACtC,IAAI,OAAO,EAAE;IAAE,UAAU,GAAG,OAAO,CAAC;AACpC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;AAEvC,SAAS,CAAC,IAAI,GAAG;IACb,QAAQ,EAAE,QAAQ,EAAE;IACpB,OAAO,EAAE,OAAO,EAAE;IAClB,SAAS,EAAE,KAAK;IAChB,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,UAAU;CACzB,CAAA;AAED,aAAa,EAAE,CAAC;AAChB,YAAY,EAAE,CAAC;AACf,QAAQ,EAAE,CAAC;AACX,YAAY,EAAE,CAAC;AACf,cAAc,EAAE,CAAC;AACjB,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/dist/void.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function initServerSide(): void;
|
package/dist/void.js
DELETED
package/dist/void.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"void.js","sourceRoot":"","sources":["../src/void.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,8DAA8D;AAC9D,iDAAiD;AAEjD,MAAM,UAAU,cAAc;IAC1B,cAAc;AAClB,CAAC"}
|
package/tests-browser/index.html
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title>Test Jopi Logs</title>
|
|
7
|
-
</head>
|
|
8
|
-
<body>
|
|
9
|
-
<div id="root"></div>
|
|
10
|
-
<script type="module" src="/src/main.tsx"></script>
|
|
11
|
-
</body>
|
|
12
|
-
</html>
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "jopi-node-space-tests-browser",
|
|
3
|
-
"private": true,
|
|
4
|
-
|
|
5
|
-
"scripts": {
|
|
6
|
-
"dev": "vite",
|
|
7
|
-
"build": "tsc -b && vite build",
|
|
8
|
-
"lint": "eslint jopi-logs-react",
|
|
9
|
-
"preview": "vite preview"
|
|
10
|
-
},
|
|
11
|
-
"dependencies": {
|
|
12
|
-
"react": "^19.1.0",
|
|
13
|
-
"react-dom": "^19.1.0"
|
|
14
|
-
},
|
|
15
|
-
"devDependencies": {
|
|
16
|
-
"@types/react": "^19.1.8",
|
|
17
|
-
"@types/react-dom": "^19.1.6",
|
|
18
|
-
"@vitejs/plugin-react-swc": "^3.10.2",
|
|
19
|
-
"typescript": "~5.8.3",
|
|
20
|
-
"vite": "^7.0.4"
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { StrictMode } from 'react'
|
|
2
|
-
import { createRoot } from 'react-dom/client'
|
|
3
|
-
import "./tests.ts";
|
|
4
|
-
|
|
5
|
-
function init() {
|
|
6
|
-
createRoot(document.getElementById('root')!).render(<StrictMode><MyComponent/></StrictMode>);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function MyComponent() {
|
|
10
|
-
return <div>See console</div>
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
init();
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
|
4
|
-
"target": "ES2022",
|
|
5
|
-
"useDefineForClassFields": true,
|
|
6
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
7
|
-
"module": "ESNext",
|
|
8
|
-
"skipLibCheck": true,
|
|
9
|
-
|
|
10
|
-
/* Bundler mode */
|
|
11
|
-
"moduleResolution": "bundler",
|
|
12
|
-
"allowImportingTsExtensions": true,
|
|
13
|
-
"verbatimModuleSyntax": true,
|
|
14
|
-
"moduleDetection": "force",
|
|
15
|
-
"noEmit": true,
|
|
16
|
-
"jsx": "react-jsx",
|
|
17
|
-
|
|
18
|
-
/* Linting */
|
|
19
|
-
"strict": true,
|
|
20
|
-
"noUnusedLocals": true,
|
|
21
|
-
"noUnusedParameters": true,
|
|
22
|
-
"erasableSyntaxOnly": true,
|
|
23
|
-
"noFallthroughCasesInSwitch": true,
|
|
24
|
-
"noUncheckedSideEffectImports": true
|
|
25
|
-
},
|
|
26
|
-
"include": [
|
|
27
|
-
"src"
|
|
28
|
-
]
|
|
29
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
|
|
4
|
-
"target": "ES2023",
|
|
5
|
-
"lib": ["ES2023"],
|
|
6
|
-
"module": "ESNext",
|
|
7
|
-
"skipLibCheck": true,
|
|
8
|
-
|
|
9
|
-
/* Bundler mode */
|
|
10
|
-
"moduleResolution": "bundler",
|
|
11
|
-
"allowImportingTsExtensions": true,
|
|
12
|
-
"verbatimModuleSyntax": true,
|
|
13
|
-
"moduleDetection": "force",
|
|
14
|
-
"noEmit": true,
|
|
15
|
-
|
|
16
|
-
/* Linting */
|
|
17
|
-
"strict": true,
|
|
18
|
-
"noUnusedLocals": true,
|
|
19
|
-
"noUnusedParameters": true,
|
|
20
|
-
"erasableSyntaxOnly": true,
|
|
21
|
-
"noFallthroughCasesInSwitch": true,
|
|
22
|
-
"noUncheckedSideEffectImports": true
|
|
23
|
-
},
|
|
24
|
-
"include": [
|
|
25
|
-
"vite.config.ts"
|
|
26
|
-
]
|
|
27
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { defineConfig, type Plugin } from 'vite'
|
|
2
|
-
import react from '@vitejs/plugin-react-swc'
|
|
3
|
-
|
|
4
|
-
const jopiReplaceServerPlugin = (): Plugin => {
|
|
5
|
-
return {
|
|
6
|
-
name: 'jopi-replace-server',
|
|
7
|
-
transform(code, id) {
|
|
8
|
-
if (/\.(ts|js|tsx|jsx)$/.test(id)) {
|
|
9
|
-
const newCode = code.replace(
|
|
10
|
-
"jopi-node-space-server",
|
|
11
|
-
"jopi-node-space-browser"
|
|
12
|
-
);
|
|
13
|
-
|
|
14
|
-
if (newCode !== code) {
|
|
15
|
-
return {code: newCode, map: null};
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// Return null allow keeping the code unchanged.
|
|
20
|
-
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export default defineConfig({
|
|
27
|
-
plugins: [react(), jopiReplaceServerPlugin()],
|
|
28
|
-
build: { rollupOptions: { external: ['node:module', 'jopi-node-space-server'] } },
|
|
29
|
-
ssr: { noExternal: ['node:module', 'jopi-node-space-server'] },
|
|
30
|
-
});
|
|
31
|
-
|
package/tsconfig.json
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"sourceMap": true,
|
|
4
|
-
"declaration": true,
|
|
5
|
-
|
|
6
|
-
"outDir": "./dist",
|
|
7
|
-
"rootDir": "./src",
|
|
8
|
-
|
|
9
|
-
// Permet d'avoir des fonctions comme fetch.
|
|
10
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
11
|
-
|
|
12
|
-
"target": "ES2020",
|
|
13
|
-
"module": "ESNext",
|
|
14
|
-
"moduleResolution": "Bundler",
|
|
15
|
-
"rewriteRelativeImportExtensions": true,
|
|
16
|
-
"esModuleInterop": true,
|
|
17
|
-
"forceConsistentCasingInFileNames": true,
|
|
18
|
-
"strict": true,
|
|
19
|
-
"skipLibCheck": true,
|
|
20
|
-
"noEmitOnError": false,
|
|
21
|
-
"verbatimModuleSyntax": true,
|
|
22
|
-
"allowJs": false
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
"include": [
|
|
26
|
-
"./src/*.ts"
|
|
27
|
-
],
|
|
28
|
-
|
|
29
|
-
"exclude": [
|
|
30
|
-
"node_modules",
|
|
31
|
-
"**/*.spec.ts"
|
|
32
|
-
]
|
|
33
|
-
}
|