nmtjs 0.15.0-beta.1 → 0.15.0-beta.3
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/_exports/application.d.ts +1 -0
- package/dist/_exports/application.js +2 -0
- package/dist/_exports/application.js.map +1 -0
- package/dist/_exports/common.d.ts +1 -0
- package/dist/_exports/common.js +2 -0
- package/dist/_exports/common.js.map +1 -0
- package/dist/_exports/contract.d.ts +2 -0
- package/dist/_exports/contract.js +3 -0
- package/dist/_exports/contract.js.map +1 -0
- package/dist/_exports/core.d.ts +1 -0
- package/dist/_exports/core.js +2 -0
- package/dist/_exports/core.js.map +1 -0
- package/dist/_exports/gateway.d.ts +1 -0
- package/dist/_exports/gateway.js +2 -0
- package/dist/_exports/gateway.js.map +1 -0
- package/dist/_exports/http-transport/bun.d.ts +1 -0
- package/dist/_exports/http-transport/bun.js +2 -0
- package/dist/_exports/http-transport/bun.js.map +1 -0
- package/dist/_exports/http-transport/deno.d.ts +1 -0
- package/dist/_exports/http-transport/deno.js +2 -0
- package/dist/_exports/http-transport/deno.js.map +1 -0
- package/dist/_exports/http-transport/node.d.ts +1 -0
- package/dist/_exports/http-transport/node.js +2 -0
- package/dist/_exports/http-transport/node.js.map +1 -0
- package/dist/_exports/http-transport.d.ts +1 -0
- package/dist/_exports/http-transport.js +2 -0
- package/dist/_exports/http-transport.js.map +1 -0
- package/dist/_exports/index.d.ts +61 -0
- package/dist/_exports/index.js +40 -0
- package/dist/_exports/index.js.map +1 -0
- package/dist/_exports/json-format.d.ts +1 -0
- package/dist/_exports/json-format.js +2 -0
- package/dist/_exports/json-format.js.map +1 -0
- package/dist/_exports/protocol/client.d.ts +1 -0
- package/dist/_exports/protocol/client.js +2 -0
- package/dist/_exports/protocol/client.js.map +1 -0
- package/dist/_exports/protocol/server.d.ts +1 -0
- package/dist/_exports/protocol/server.js +2 -0
- package/dist/_exports/protocol/server.js.map +1 -0
- package/dist/_exports/protocol.d.ts +1 -0
- package/dist/_exports/protocol.js +2 -0
- package/dist/_exports/protocol.js.map +1 -0
- package/dist/_exports/runtime/types.d.ts +1 -0
- package/dist/_exports/runtime/types.js +2 -0
- package/dist/_exports/runtime/types.js.map +1 -0
- package/dist/_exports/runtime.d.ts +1 -0
- package/dist/_exports/runtime.js +2 -0
- package/dist/_exports/runtime.js.map +1 -0
- package/dist/_exports/type.d.ts +2 -0
- package/dist/_exports/type.js +3 -0
- package/dist/_exports/type.js.map +1 -0
- package/dist/_exports/ws-transport/bun.d.ts +1 -0
- package/dist/_exports/ws-transport/bun.js +2 -0
- package/dist/_exports/ws-transport/bun.js.map +1 -0
- package/dist/_exports/ws-transport/deno.d.ts +1 -0
- package/dist/_exports/ws-transport/deno.js +2 -0
- package/dist/_exports/ws-transport/deno.js.map +1 -0
- package/dist/_exports/ws-transport/node.d.ts +1 -0
- package/dist/_exports/ws-transport/node.js +2 -0
- package/dist/_exports/ws-transport/node.js.map +1 -0
- package/dist/_exports/ws-transport.d.ts +1 -0
- package/dist/_exports/ws-transport.js +2 -0
- package/dist/_exports/ws-transport.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +122 -0
- package/dist/cli.js.map +1 -0
- package/dist/command.d.ts +1 -0
- package/dist/command.js +31 -0
- package/dist/command.js.map +1 -0
- package/dist/config.d.ts +48 -0
- package/dist/config.js +14 -0
- package/dist/config.js.map +1 -0
- package/dist/entrypoints/cli.d.ts +1 -0
- package/dist/entrypoints/cli.js +12 -0
- package/dist/entrypoints/cli.js.map +1 -0
- package/dist/entrypoints/main.d.ts +5 -0
- package/dist/entrypoints/main.js +86 -0
- package/dist/entrypoints/main.js.map +1 -0
- package/dist/entrypoints/thread.d.ts +14 -0
- package/dist/entrypoints/thread.js +53 -0
- package/dist/entrypoints/thread.js.map +1 -0
- package/dist/entrypoints/worker.d.ts +3 -0
- package/dist/entrypoints/worker.js +42 -0
- package/dist/entrypoints/worker.js.map +1 -0
- package/dist/resolver.d.ts +2 -0
- package/dist/resolver.js +15 -0
- package/dist/resolver.js.map +1 -0
- package/dist/typings.d.ts +4 -0
- package/dist/typings.js +18 -0
- package/dist/typings.js.map +1 -0
- package/dist/vite/builder.d.ts +5 -0
- package/dist/vite/builder.js +110 -0
- package/dist/vite/builder.js.map +1 -0
- package/dist/vite/config.d.ts +27 -0
- package/dist/vite/config.js +22 -0
- package/dist/vite/config.js.map +1 -0
- package/dist/vite/plugins.d.ts +2 -0
- package/dist/vite/plugins.js +18 -0
- package/dist/vite/plugins.js.map +1 -0
- package/dist/vite/runners/worker.d.ts +4 -0
- package/dist/vite/runners/worker.js +33 -0
- package/dist/vite/runners/worker.js.map +1 -0
- package/dist/vite/server.d.ts +3 -0
- package/dist/vite/server.js +18 -0
- package/dist/vite/server.js.map +1 -0
- package/dist/vite/servers/main.d.ts +8 -0
- package/dist/vite/servers/main.js +23 -0
- package/dist/vite/servers/main.js.map +1 -0
- package/dist/vite/servers/worker.d.ts +8 -0
- package/dist/vite/servers/worker.js +79 -0
- package/dist/vite/servers/worker.js.map +1 -0
- package/package.json +14 -14
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import EventEmitter from 'node:events';
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
11
|
+
import { ApplicationServer, isServerConfig } from '@nmtjs/runtime';
|
|
12
|
+
class InvalidServerConfigError extends Error {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(`Server config file does not have a default export, or it not a valid application. Please, make sure the application is defined using defineApplication().`);
|
|
15
|
+
this.name = 'InvalidServerConfigError';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const _ext = new URL(import.meta.url).pathname.endsWith('.ts') ? '.ts' : '.js';
|
|
19
|
+
const _vite = __VITE_CONFIG__ ? JSON.parse(__VITE_CONFIG__) : undefined;
|
|
20
|
+
const applicationsConfig = __APPLICATIONS_CONFIG__
|
|
21
|
+
? JSON.parse(__APPLICATIONS_CONFIG__)
|
|
22
|
+
: {};
|
|
23
|
+
let _viteServerEvents;
|
|
24
|
+
let _viteWorkerServer;
|
|
25
|
+
let server;
|
|
26
|
+
if (import.meta.env.DEV && import.meta.hot) {
|
|
27
|
+
import.meta.hot.accept('#server', async (module) => {
|
|
28
|
+
await server.stop();
|
|
29
|
+
await createServer(module?.default);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (_vite) {
|
|
33
|
+
const { createWorkerServer } = await import("../vite/servers/worker.js");
|
|
34
|
+
const neemataConfig = await import(__rewriteRelativeImportExtension(
|
|
35
|
+
/* @vite-ignore */
|
|
36
|
+
_vite.options.configPath)).then((m) => m.default);
|
|
37
|
+
_viteServerEvents = new EventEmitter();
|
|
38
|
+
_viteWorkerServer = await createWorkerServer(_vite.options, _vite.mode, neemataConfig, _viteServerEvents);
|
|
39
|
+
}
|
|
40
|
+
async function createServer(config) {
|
|
41
|
+
if (!isServerConfig(config))
|
|
42
|
+
throw new InvalidServerConfigError();
|
|
43
|
+
server = new ApplicationServer(config, applicationsConfig, {
|
|
44
|
+
path: fileURLToPath(import.meta.resolve(`./thread${_ext}`)),
|
|
45
|
+
workerData: { vite: _vite?.mode },
|
|
46
|
+
worker: _viteServerEvents
|
|
47
|
+
? (worker) => {
|
|
48
|
+
_viteServerEvents.emit('worker', worker);
|
|
49
|
+
}
|
|
50
|
+
: undefined,
|
|
51
|
+
});
|
|
52
|
+
await server.start();
|
|
53
|
+
}
|
|
54
|
+
let isTerminating = false;
|
|
55
|
+
async function handleTermination() {
|
|
56
|
+
if (isTerminating)
|
|
57
|
+
return;
|
|
58
|
+
isTerminating = true;
|
|
59
|
+
await server?.stop();
|
|
60
|
+
_viteWorkerServer?.close();
|
|
61
|
+
process.exit(0);
|
|
62
|
+
}
|
|
63
|
+
function handleUnexpectedError(error) {
|
|
64
|
+
console.error(new Error('Unexpected Error:', { cause: error }));
|
|
65
|
+
}
|
|
66
|
+
process.once('SIGTERM', handleTermination);
|
|
67
|
+
process.once('SIGINT', handleTermination);
|
|
68
|
+
process.on('uncaughtException', handleUnexpectedError);
|
|
69
|
+
process.on('unhandledRejection', handleUnexpectedError);
|
|
70
|
+
await createServer(await import(
|
|
71
|
+
// @ts-expect-error
|
|
72
|
+
'#server').then((m) => m.default));
|
|
73
|
+
const { format } = Intl.NumberFormat('en', {
|
|
74
|
+
notation: 'compact',
|
|
75
|
+
maximumFractionDigits: 2,
|
|
76
|
+
unit: 'byte',
|
|
77
|
+
});
|
|
78
|
+
const printMem = () => {
|
|
79
|
+
globalThis.gc?.();
|
|
80
|
+
// print memory usage every 10 seconds
|
|
81
|
+
const memoryUsage = process.memoryUsage();
|
|
82
|
+
console.log(`Memory Usage: RSS=${format(memoryUsage.rss)}, HeapTotal=${format(memoryUsage.heapTotal)}, HeapUsed=${format(memoryUsage.heapUsed)}, External=${format(memoryUsage.external)}, ArrayBuffers=${format(memoryUsage.arrayBuffers)}`);
|
|
83
|
+
};
|
|
84
|
+
// printMem()
|
|
85
|
+
// setInterval(printMem, 5000)
|
|
86
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/entrypoints/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MessagePort } from 'node:worker_threads';
|
|
2
|
+
export type RunWorkerOptions = {
|
|
3
|
+
port: MessagePort;
|
|
4
|
+
runtime: {
|
|
5
|
+
type: 'application';
|
|
6
|
+
name: string;
|
|
7
|
+
path: string;
|
|
8
|
+
transportsData: any;
|
|
9
|
+
} | {
|
|
10
|
+
type: 'jobs';
|
|
11
|
+
jobWorkerQueue: string;
|
|
12
|
+
};
|
|
13
|
+
vite?: 'development' | 'production';
|
|
14
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
import { workerData as _workerData } from 'node:worker_threads';
|
|
11
|
+
const workerData = _workerData;
|
|
12
|
+
const ext = new URL(import.meta.url).pathname.endsWith('.ts') ? '.ts' : '.js';
|
|
13
|
+
const workerPath = fileURLToPath(import.meta.resolve(`./worker${ext}`));
|
|
14
|
+
process.on('uncaughtException', (error) => {
|
|
15
|
+
console.error(new Error('Uncaught Exception:', { cause: error }));
|
|
16
|
+
});
|
|
17
|
+
process.on('unhandledRejection', (error) => {
|
|
18
|
+
console.error(new Error('Unhandled Promise Rejection:', { cause: error }));
|
|
19
|
+
});
|
|
20
|
+
process.on('beforeExit', (code) => {
|
|
21
|
+
runner?.close();
|
|
22
|
+
});
|
|
23
|
+
let runner;
|
|
24
|
+
let workerModule;
|
|
25
|
+
try {
|
|
26
|
+
if (workerData.vite) {
|
|
27
|
+
const { createModuleRunner } = (await import("../vite/runners/worker.js"));
|
|
28
|
+
runner = createModuleRunner(workerData.vite);
|
|
29
|
+
workerModule = await runner.import(workerPath);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
runner = undefined;
|
|
33
|
+
workerModule = await import(__rewriteRelativeImportExtension(
|
|
34
|
+
/* @vite-ignore */
|
|
35
|
+
workerPath));
|
|
36
|
+
}
|
|
37
|
+
const runtime = await workerModule.run(workerData.runtime);
|
|
38
|
+
workerData.port.on('message', async (msg) => {
|
|
39
|
+
if (msg.type === 'stop') {
|
|
40
|
+
await runtime.stop();
|
|
41
|
+
process.exit(0);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
const hosts = (await runtime?.start()) || undefined;
|
|
45
|
+
workerData.port.postMessage({
|
|
46
|
+
type: 'ready',
|
|
47
|
+
data: { hosts },
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.error(new Error('Worker thread error:', { cause: error }));
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=thread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/entrypoints/thread.ts"],"names":[],"mappings":";;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAa/D,MAAM,UAAU,GAAG,WAA+B,CAAA;AAElD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AAC7E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAA;AAEvE,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AACnE,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;IACzC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AAC5E,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;IAChC,MAAM,EAAE,KAAK,EAAE,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,IAAI,MAAoB,CAAA;AACxB,IAAI,YAA0C,CAAA;AAE9C,IAAI,CAAC;IACH,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,EAAE,kBAAkB,EAAE,GAAG,CAAC,MAAM,MAAM,CAC1C,2BAA2B,CAC5B,CAA+C,CAAA;QAEhD,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC5C,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,SAAgB,CAAA;QACzB,YAAY,GAAG,MAAM,MAAM;QACzB,kBAAkB;QAClB,UAAU,EACX,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAE1D,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,CAAC,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,SAAS,CAAA;IAEnD,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QAC1B,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,EAAE,KAAK,EAAE;KACY,CAAC,CAAA;AAChC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import { workerData } from 'node:worker_threads';
|
|
10
|
+
import { ApplicationWorkerRuntime, isApplicationConfig, JobWorkerRuntime, } from '@nmtjs/runtime';
|
|
11
|
+
export async function run(options) {
|
|
12
|
+
const serverConfig = await import(
|
|
13
|
+
// @ts-expect-error
|
|
14
|
+
'#server').then((m) => m.default);
|
|
15
|
+
if (options.type === 'application') {
|
|
16
|
+
globalThis._hotAccept = (module) => {
|
|
17
|
+
if (module) {
|
|
18
|
+
if (!isApplicationConfig(module.default))
|
|
19
|
+
throw new Error('Invalid application config');
|
|
20
|
+
runtime.reload(module.default);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const { name, path, transportsData } = options;
|
|
24
|
+
const appConfig = await import(__rewriteRelativeImportExtension(
|
|
25
|
+
/* @vite-ignore */
|
|
26
|
+
path)).then((m) => m.default);
|
|
27
|
+
const runtime = new ApplicationWorkerRuntime(serverConfig, { name, path, transports: transportsData }, appConfig);
|
|
28
|
+
return runtime;
|
|
29
|
+
}
|
|
30
|
+
else if (options.type === 'jobs') {
|
|
31
|
+
const { jobWorkerQueue } = options;
|
|
32
|
+
const runtime = new JobWorkerRuntime(serverConfig, {
|
|
33
|
+
queueName: jobWorkerQueue,
|
|
34
|
+
port: workerData.port,
|
|
35
|
+
});
|
|
36
|
+
return runtime;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
throw new Error(`Unknown runtime type: ${workerData.runtime.type}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/entrypoints/worker.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AAIvB,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAoC;IAC5D,MAAM,YAAY,GAAiB,MAAM,MAAM;IAC7C,mBAAmB;IACnB,SAAS,CACV,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACxB,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACnC,UAAU,CAAC,UAAU,GAAG,CAAC,MAAW,EAAE,EAAE;YACtC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC;oBACtC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;gBAC/C,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAChC,CAAC;QACH,CAAC,CAAA;QAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;QAC9C,MAAM,SAAS,GAAG,MAAM,MAAM;QAC5B,kBAAkB;QAClB,IAAI,EACL,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAExB,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAC1C,YAAY,EACZ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,EAC1C,SAAS,CACV,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACnC,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;QAClC,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,YAAY,EAAE;YACjD,SAAS,EAAE,cAAc;YACzB,IAAI,EAAE,UAAU,CAAC,IAAI;SACtB,CAAC,CAAA;QACF,OAAO,OAAO,CAAA;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,yBAA0B,UAAU,CAAC,OAAe,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9E,CAAC;AACH,CAAC"}
|
package/dist/resolver.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ResolverFactory } from 'oxc-resolver';
|
|
2
|
+
const fallback = {};
|
|
3
|
+
try {
|
|
4
|
+
// oxc-resolver fails to resolve uWebSockets.js for some reason
|
|
5
|
+
const mdl = 'uWebSockets.js';
|
|
6
|
+
const path = import.meta.resolve(mdl);
|
|
7
|
+
fallback[mdl] = [path];
|
|
8
|
+
}
|
|
9
|
+
catch { }
|
|
10
|
+
export const resolver = new ResolverFactory({
|
|
11
|
+
tsconfig: 'auto',
|
|
12
|
+
extensions: ['.ts', '.js', '.mjs', '.mts', '.json', '.node'],
|
|
13
|
+
fallback,
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,MAAM,QAAQ,GAA6B,EAAE,CAAA;AAE7C,IAAI,CAAC;IACH,+DAA+D;IAC/D,MAAM,GAAG,GAAG,gBAAgB,CAAA;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACrC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAAC,MAAM,CAAC,CAAA,CAAC;AAEV,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC;IAC1C,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;IAC5D,QAAQ;CACT,CAAC,CAAA"}
|
package/dist/typings.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import dedent from 'dedent';
|
|
4
|
+
export async function generateTypings(applicationImports) {
|
|
5
|
+
await mkdir('.neemata', { recursive: true }).catch(() => { });
|
|
6
|
+
await writeFile(resolve('.neemata', 'types.d.ts'), dedent `
|
|
7
|
+
/// <reference types="@nmtjs/runtime/types" />
|
|
8
|
+
|
|
9
|
+
declare module '@nmtjs/runtime/types' {
|
|
10
|
+
interface Applications {
|
|
11
|
+
${Object.entries(applicationImports)
|
|
12
|
+
.map(([appName, { specifier }]) => `'${appName}': typeof import('${specifier}').default`)
|
|
13
|
+
.join('\n')}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
`);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=typings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typings.js","sourceRoot":"","sources":["../src/typings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,kBAAuE;IAEvE,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC5D,MAAM,SAAS,CACb,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,EACjC,MAAM,CAAA;;;;;UAKA,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;SACjC,GAAG,CACF,CAAC,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAC3B,IAAI,OAAO,qBAAqB,SAAS,YAAY,CACxD;SACA,IAAI,CAAC,IAAI,CAAC;;;KAGhB,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import { isBuiltin } from 'node:module';
|
|
10
|
+
import { resolve } from 'node:path';
|
|
11
|
+
import { build as viteBuild } from 'vite';
|
|
12
|
+
// import pkgJson from '../../package.json' with { type: 'json' }
|
|
13
|
+
import { createConfig } from "./config.js";
|
|
14
|
+
import { buildPlugins } from "./plugins.js";
|
|
15
|
+
export async function createBuilder(configOptions, neemataConfig) {
|
|
16
|
+
const config = createConfig(configOptions);
|
|
17
|
+
async function build() {
|
|
18
|
+
const packageJson = await import(__rewriteRelativeImportExtension(resolve('./package.json')), {
|
|
19
|
+
with: { type: 'json' },
|
|
20
|
+
}).then((mod) => mod.default);
|
|
21
|
+
// techinically it's possible to do the same with rolldown directly,
|
|
22
|
+
// but vite handles a lot of things, like defines substitutions, etc.
|
|
23
|
+
// also, since during dev the code is processed via vite anyway,
|
|
24
|
+
// using vite for build as well ensures consistency between dev and prod
|
|
25
|
+
return await viteBuild({
|
|
26
|
+
appType: 'custom',
|
|
27
|
+
clearScreen: false,
|
|
28
|
+
resolve: { alias: config.alias },
|
|
29
|
+
ssr: { noExternal: true },
|
|
30
|
+
plugins: [...buildPlugins, ...neemataConfig.plugins],
|
|
31
|
+
build: {
|
|
32
|
+
lib: { entry: config.entries, formats: ['es'] },
|
|
33
|
+
ssr: true,
|
|
34
|
+
target: 'node20',
|
|
35
|
+
sourcemap: true,
|
|
36
|
+
outDir: resolve(neemataConfig.build.outDir),
|
|
37
|
+
minify: neemataConfig.build.minify,
|
|
38
|
+
emptyOutDir: true,
|
|
39
|
+
rolldownOptions: {
|
|
40
|
+
platform: 'node',
|
|
41
|
+
external: (id) => {
|
|
42
|
+
if (neemataConfig.externalDependencies === 'all')
|
|
43
|
+
return true;
|
|
44
|
+
if (isBuiltin(id) ||
|
|
45
|
+
id.includes('vite/server') ||
|
|
46
|
+
id.endsWith('.node'))
|
|
47
|
+
return true;
|
|
48
|
+
if (neemataConfig.externalDependencies === 'prod') {
|
|
49
|
+
const prodDeps = Object.keys(packageJson.dependencies ?? {});
|
|
50
|
+
if (prodDeps.includes(id))
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
if (Array.isArray(neemataConfig.externalDependencies)) {
|
|
54
|
+
for (const dep of neemataConfig.externalDependencies) {
|
|
55
|
+
if (typeof dep === 'string' && dep === id)
|
|
56
|
+
return true;
|
|
57
|
+
if (dep instanceof RegExp && dep.test(id))
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
},
|
|
63
|
+
transform: {
|
|
64
|
+
define: {
|
|
65
|
+
__VITE_CONFIG__: '""',
|
|
66
|
+
__APPLICATIONS_CONFIG__: JSON.stringify(JSON.stringify(Object.fromEntries(Object.keys(configOptions.applicationImports).map((appName) => [appName, `./application.${appName}.js`])))),
|
|
67
|
+
__dirname: 'new URL(".", import.meta.url).pathname',
|
|
68
|
+
__filename: 'new URL(import.meta.url).pathname',
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
output: {
|
|
72
|
+
entryFileNames: '[name].js',
|
|
73
|
+
chunkFileNames: 'chunks/[name]-[hash].js',
|
|
74
|
+
advancedChunks: {
|
|
75
|
+
groups: [
|
|
76
|
+
{
|
|
77
|
+
name: 'ioredis',
|
|
78
|
+
test: /node_modules[\\/](@ioredis|ioredis|redis)/,
|
|
79
|
+
priority: 4,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'bullmq',
|
|
83
|
+
test: /node_modules[\\/]bullmq/,
|
|
84
|
+
priority: 2,
|
|
85
|
+
},
|
|
86
|
+
{ name: 'zod', test: /node_modules[\\/]zod/, priority: 2 },
|
|
87
|
+
{ name: 'pino', test: /node_modules[\\/]pino/, priority: 2 },
|
|
88
|
+
{
|
|
89
|
+
name: '@nmtjs-runtime',
|
|
90
|
+
test: /node_modules[\\/](@nmtjs[\\/]runtime)/,
|
|
91
|
+
priority: 2,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: '@nmtjs-common',
|
|
95
|
+
test: /node_modules[\\/]@nmtjs[\\/](?=[^runtime|nmtjs])/,
|
|
96
|
+
priority: 1,
|
|
97
|
+
},
|
|
98
|
+
{ name: 'vendor', test: /node_modules/, priority: 0 },
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
minify: neemataConfig.build.minify,
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
chunkSizeWarningLimit: 10_000,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return { build };
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/vite/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type ViteConfigOptions = {
|
|
2
|
+
applicationImports: Record<string, {
|
|
3
|
+
path: string;
|
|
4
|
+
specifier: string;
|
|
5
|
+
}>;
|
|
6
|
+
serverEntryPath: string;
|
|
7
|
+
entrypointMainPath: string;
|
|
8
|
+
entrypointWorkerPath: string;
|
|
9
|
+
entrypointThreadPath: string;
|
|
10
|
+
configPath: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const baseViteConfigOptions: {
|
|
13
|
+
entrypointMainPath: string;
|
|
14
|
+
entrypointWorkerPath: string;
|
|
15
|
+
entrypointThreadPath: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function createConfig(options: ViteConfigOptions): {
|
|
18
|
+
alias: {
|
|
19
|
+
'#server': string;
|
|
20
|
+
};
|
|
21
|
+
entries: {
|
|
22
|
+
server: string;
|
|
23
|
+
main: string;
|
|
24
|
+
thread: string;
|
|
25
|
+
worker: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { fileURLToPath } from 'node:url';
|
|
2
|
+
const ext = new URL(import.meta.url).pathname.endsWith('.ts') ? '.ts' : '.js';
|
|
3
|
+
export const baseViteConfigOptions = {
|
|
4
|
+
entrypointMainPath: fileURLToPath(import.meta.resolve(`../entrypoints/main${ext}`)),
|
|
5
|
+
entrypointWorkerPath: fileURLToPath(import.meta.resolve(`../entrypoints/worker${ext}`)),
|
|
6
|
+
entrypointThreadPath: fileURLToPath(import.meta.resolve(`../entrypoints/thread${ext}`)),
|
|
7
|
+
// entrypointCLIPath: fileURLToPath(import.meta.resolve('../entrypoints/cli')),
|
|
8
|
+
};
|
|
9
|
+
export function createConfig(options) {
|
|
10
|
+
const alias = { '#server': options.serverEntryPath };
|
|
11
|
+
const entries = {
|
|
12
|
+
server: options.serverEntryPath,
|
|
13
|
+
main: options.entrypointMainPath,
|
|
14
|
+
thread: options.entrypointThreadPath,
|
|
15
|
+
worker: options.entrypointWorkerPath,
|
|
16
|
+
};
|
|
17
|
+
for (const [name, { path }] of Object.entries(options.applicationImports)) {
|
|
18
|
+
entries[`application.${name}`] = path;
|
|
19
|
+
}
|
|
20
|
+
return { alias, entries };
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/vite/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAYxC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AAE7E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,kBAAkB,EAAE,aAAa,CAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,EAAE,CAAC,CACjD;IACD,oBAAoB,EAAE,aAAa,CACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,EAAE,CAAC,CACnD;IACD,oBAAoB,EAAE,aAAa,CACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,EAAE,CAAC,CACnD;IACD,+EAA+E;CAC3C,CAAA;AAEtC,MAAM,UAAU,YAAY,CAAC,OAA0B;IACrD,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,eAAe,EAAE,CAAA;IACpD,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,OAAO,CAAC,eAAe;QAC/B,IAAI,EAAE,OAAO,CAAC,kBAAkB;QAChC,MAAM,EAAE,OAAO,CAAC,oBAAoB;QACpC,MAAM,EAAE,OAAO,CAAC,oBAAoB;KACrC,CAAA;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1E,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACvC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;AAC3B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { dirname, join } from 'node:path';
|
|
2
|
+
import { viteStaticCopy } from 'vite-plugin-static-copy';
|
|
3
|
+
import { resolver } from "../resolver.js";
|
|
4
|
+
const targets = [];
|
|
5
|
+
try {
|
|
6
|
+
const { path } = resolver.sync(process.cwd(), '@nmtjs/proxy');
|
|
7
|
+
if (path) {
|
|
8
|
+
targets.push({
|
|
9
|
+
src: join(dirname(path), `neemata-proxy.${process.platform}-${process.arch}*.node`),
|
|
10
|
+
dest: './chunks/',
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
catch { }
|
|
15
|
+
export const buildPlugins = [
|
|
16
|
+
...(targets.length ? viteStaticCopy({ targets }) : []),
|
|
17
|
+
];
|
|
18
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/vite/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIzC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,MAAM,OAAO,GAAa,EAAE,CAAA;AAE5B,IAAI,CAAC;IACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAA;IAC7D,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,EAAE,IAAI,CACP,OAAO,CAAC,IAAI,CAAC,EACb,iBAAiB,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,QAAQ,CAC1D;YACD,IAAI,EAAE,WAAW;SAClB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAAC,MAAM,CAAC,CAAA,CAAC;AAEV,MAAM,CAAC,MAAM,YAAY,GAAa;IACpC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;CACvD,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { BroadcastChannel } from 'node:worker_threads';
|
|
2
|
+
import { ModuleRunner } from 'vite/module-runner';
|
|
3
|
+
export declare function createBroadcastChannel(threadId: number): BroadcastChannel;
|
|
4
|
+
export declare function createModuleRunner(mode?: 'development' | 'production'): ModuleRunner;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BroadcastChannel, isInternalThread, isMainThread, parentPort, threadId, } from 'node:worker_threads';
|
|
2
|
+
import { noopFn } from '@nmtjs/common';
|
|
3
|
+
import { createNodeImportMeta, ESModulesEvaluator, ModuleRunner, } from 'vite/module-runner';
|
|
4
|
+
export function createBroadcastChannel(threadId) {
|
|
5
|
+
return new BroadcastChannel(`nmtjs:vite:${threadId}`);
|
|
6
|
+
}
|
|
7
|
+
export function createModuleRunner(mode = 'development') {
|
|
8
|
+
if (isMainThread || isInternalThread)
|
|
9
|
+
throw new Error('Module runner can only be created inside worker threads.');
|
|
10
|
+
const channel = createBroadcastChannel(threadId);
|
|
11
|
+
const transport = {
|
|
12
|
+
connect({ onMessage, onDisconnection }) {
|
|
13
|
+
// @ts-expect-error
|
|
14
|
+
channel.onmessage = (event) => {
|
|
15
|
+
onMessage(event.data);
|
|
16
|
+
};
|
|
17
|
+
parentPort.on('close', onDisconnection);
|
|
18
|
+
},
|
|
19
|
+
send(data) {
|
|
20
|
+
channel.postMessage(data);
|
|
21
|
+
},
|
|
22
|
+
timeout: 5000,
|
|
23
|
+
};
|
|
24
|
+
const runner = new ModuleRunner({
|
|
25
|
+
transport,
|
|
26
|
+
createImportMeta: createNodeImportMeta,
|
|
27
|
+
hmr: mode === 'development'
|
|
28
|
+
? { logger: { debug: noopFn, error: console.error } }
|
|
29
|
+
: false,
|
|
30
|
+
}, new ESModulesEvaluator());
|
|
31
|
+
return runner;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/vite/runners/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,QAAQ,GACT,MAAM,qBAAqB,CAAA;AAI5B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,GACb,MAAM,oBAAoB,CAAA;AAE3B,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,OAAO,IAAI,gBAAgB,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAqC,aAAa;IAElD,IAAI,YAAY,IAAI,gBAAgB;QAClC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;IAE7E,MAAM,OAAO,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAEhD,MAAM,SAAS,GAA0B;QACvC,OAAO,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE;YACpC,mBAAmB;YACnB,OAAO,CAAC,SAAS,GAAG,CAAC,KAA+B,EAAE,EAAE;gBACtD,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC,CAAA;YACD,UAAW,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;QAC1C,CAAC;QACD,IAAI,CAAC,IAAI;YACP,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;QACD,OAAO,EAAE,IAAI;KACd,CAAA;IAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAC7B;QACE,SAAS;QACT,gBAAgB,EAAE,oBAAoB;QACtC,GAAG,EACD,IAAI,KAAK,aAAa;YACpB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;YACrD,CAAC,CAAC,KAAK;KACZ,EACD,IAAI,kBAAkB,EAAE,CACzB,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createServer as createViteServer } from 'vite';
|
|
2
|
+
export function createServer(options, config, dev = {}) {
|
|
3
|
+
return createViteServer({
|
|
4
|
+
...config,
|
|
5
|
+
server: { middlewareMode: true, ws: false },
|
|
6
|
+
environments: {
|
|
7
|
+
neemata: {
|
|
8
|
+
consumer: 'server',
|
|
9
|
+
dev,
|
|
10
|
+
define: {
|
|
11
|
+
__VITE_CONFIG__: JSON.stringify(JSON.stringify({ options, mode: config.mode })),
|
|
12
|
+
__APPLICATIONS_CONFIG__: JSON.stringify(JSON.stringify(Object.fromEntries(Object.entries(options.applicationImports).map(([appName, { path }]) => [appName, path])))),
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/vite/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAA;AAIvD,MAAM,UAAU,YAAY,CAC1B,OAA0B,EAC1B,MAAkB,EAClB,MAA6B,EAAE;IAE/B,OAAO,gBAAgB,CAAC;QACtB,GAAG,MAAM;QACT,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE;QAC3C,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,QAAQ,EAAE,QAAQ;gBAClB,GAAG;gBACH,MAAM,EAAE;oBACN,eAAe,EAAE,IAAI,CAAC,SAAS,CAC7B,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAC/C;oBACD,uBAAuB,EAAE,IAAI,CAAC,SAAS,CACrC,IAAI,CAAC,SAAS,CACZ,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAC5C,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CACzC,CACF,CACF,CACF;iBACF;aACF;SACF;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ViteDevServer } from 'vite';
|
|
2
|
+
import type { ModuleRunner } from 'vite/module-runner';
|
|
3
|
+
import type { NeemataConfig } from '../../config.ts';
|
|
4
|
+
import type { ViteConfigOptions } from '../config.ts';
|
|
5
|
+
export declare function createMainServer(options: ViteConfigOptions, mode: 'development' | 'production', neemataConfig: NeemataConfig): Promise<{
|
|
6
|
+
server: ViteDevServer;
|
|
7
|
+
runner: ModuleRunner;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { noopFn } from '@nmtjs/common';
|
|
2
|
+
import { createServerModuleRunner } from 'vite';
|
|
3
|
+
import { createConfig } from "../config.js";
|
|
4
|
+
import { buildPlugins } from "../plugins.js";
|
|
5
|
+
import { createServer } from "../server.js";
|
|
6
|
+
export async function createMainServer(options, mode, neemataConfig) {
|
|
7
|
+
const config = createConfig(options);
|
|
8
|
+
const server = await createServer(options, {
|
|
9
|
+
appType: 'custom',
|
|
10
|
+
clearScreen: false,
|
|
11
|
+
resolve: { alias: config.alias },
|
|
12
|
+
mode,
|
|
13
|
+
plugins: [...buildPlugins, ...neemataConfig.plugins],
|
|
14
|
+
});
|
|
15
|
+
const environment = server.environments.neemata;
|
|
16
|
+
const runner = createServerModuleRunner(environment, {
|
|
17
|
+
hmr: mode === 'development'
|
|
18
|
+
? { logger: { debug: noopFn, error: console.error } }
|
|
19
|
+
: false,
|
|
20
|
+
});
|
|
21
|
+
return { server, runner };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/vite/servers/main.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,MAAM,CAAA;AAI/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA0B,EAC1B,IAAkC,EAClC,aAA4B;IAE5B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE;QACzC,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;QAChC,IAAI;QACJ,OAAO,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC;KACrD,CAAC,CAAA;IACF,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAA;IAE/C,MAAM,MAAM,GAAG,wBAAwB,CAAC,WAAW,EAAE;QACnD,GAAG,EACD,IAAI,KAAK,aAAa;YACpB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;YACrD,CAAC,CAAC,KAAK;KACZ,CAAC,CAAA;IACF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;AAC3B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type EventEmitter from 'node:events';
|
|
2
|
+
import type { Worker } from 'node:worker_threads';
|
|
3
|
+
import type { ViteDevServer } from 'vite';
|
|
4
|
+
import type { NeemataConfig } from '../../config.ts';
|
|
5
|
+
import type { ViteConfigOptions } from '../config.ts';
|
|
6
|
+
export declare function createWorkerServer(options: ViteConfigOptions, mode: 'development' | 'production', neemataConfig: NeemataConfig, events: EventEmitter<{
|
|
7
|
+
worker: [Worker];
|
|
8
|
+
}>): Promise<ViteDevServer>;
|