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.
Files changed (112) hide show
  1. package/dist/_exports/application.d.ts +1 -0
  2. package/dist/_exports/application.js +2 -0
  3. package/dist/_exports/application.js.map +1 -0
  4. package/dist/_exports/common.d.ts +1 -0
  5. package/dist/_exports/common.js +2 -0
  6. package/dist/_exports/common.js.map +1 -0
  7. package/dist/_exports/contract.d.ts +2 -0
  8. package/dist/_exports/contract.js +3 -0
  9. package/dist/_exports/contract.js.map +1 -0
  10. package/dist/_exports/core.d.ts +1 -0
  11. package/dist/_exports/core.js +2 -0
  12. package/dist/_exports/core.js.map +1 -0
  13. package/dist/_exports/gateway.d.ts +1 -0
  14. package/dist/_exports/gateway.js +2 -0
  15. package/dist/_exports/gateway.js.map +1 -0
  16. package/dist/_exports/http-transport/bun.d.ts +1 -0
  17. package/dist/_exports/http-transport/bun.js +2 -0
  18. package/dist/_exports/http-transport/bun.js.map +1 -0
  19. package/dist/_exports/http-transport/deno.d.ts +1 -0
  20. package/dist/_exports/http-transport/deno.js +2 -0
  21. package/dist/_exports/http-transport/deno.js.map +1 -0
  22. package/dist/_exports/http-transport/node.d.ts +1 -0
  23. package/dist/_exports/http-transport/node.js +2 -0
  24. package/dist/_exports/http-transport/node.js.map +1 -0
  25. package/dist/_exports/http-transport.d.ts +1 -0
  26. package/dist/_exports/http-transport.js +2 -0
  27. package/dist/_exports/http-transport.js.map +1 -0
  28. package/dist/_exports/index.d.ts +61 -0
  29. package/dist/_exports/index.js +40 -0
  30. package/dist/_exports/index.js.map +1 -0
  31. package/dist/_exports/json-format.d.ts +1 -0
  32. package/dist/_exports/json-format.js +2 -0
  33. package/dist/_exports/json-format.js.map +1 -0
  34. package/dist/_exports/protocol/client.d.ts +1 -0
  35. package/dist/_exports/protocol/client.js +2 -0
  36. package/dist/_exports/protocol/client.js.map +1 -0
  37. package/dist/_exports/protocol/server.d.ts +1 -0
  38. package/dist/_exports/protocol/server.js +2 -0
  39. package/dist/_exports/protocol/server.js.map +1 -0
  40. package/dist/_exports/protocol.d.ts +1 -0
  41. package/dist/_exports/protocol.js +2 -0
  42. package/dist/_exports/protocol.js.map +1 -0
  43. package/dist/_exports/runtime/types.d.ts +1 -0
  44. package/dist/_exports/runtime/types.js +2 -0
  45. package/dist/_exports/runtime/types.js.map +1 -0
  46. package/dist/_exports/runtime.d.ts +1 -0
  47. package/dist/_exports/runtime.js +2 -0
  48. package/dist/_exports/runtime.js.map +1 -0
  49. package/dist/_exports/type.d.ts +2 -0
  50. package/dist/_exports/type.js +3 -0
  51. package/dist/_exports/type.js.map +1 -0
  52. package/dist/_exports/ws-transport/bun.d.ts +1 -0
  53. package/dist/_exports/ws-transport/bun.js +2 -0
  54. package/dist/_exports/ws-transport/bun.js.map +1 -0
  55. package/dist/_exports/ws-transport/deno.d.ts +1 -0
  56. package/dist/_exports/ws-transport/deno.js +2 -0
  57. package/dist/_exports/ws-transport/deno.js.map +1 -0
  58. package/dist/_exports/ws-transport/node.d.ts +1 -0
  59. package/dist/_exports/ws-transport/node.js +2 -0
  60. package/dist/_exports/ws-transport/node.js.map +1 -0
  61. package/dist/_exports/ws-transport.d.ts +1 -0
  62. package/dist/_exports/ws-transport.js +2 -0
  63. package/dist/_exports/ws-transport.js.map +1 -0
  64. package/dist/cli.d.ts +2 -0
  65. package/dist/cli.js +122 -0
  66. package/dist/cli.js.map +1 -0
  67. package/dist/command.d.ts +1 -0
  68. package/dist/command.js +31 -0
  69. package/dist/command.js.map +1 -0
  70. package/dist/config.d.ts +48 -0
  71. package/dist/config.js +14 -0
  72. package/dist/config.js.map +1 -0
  73. package/dist/entrypoints/cli.d.ts +1 -0
  74. package/dist/entrypoints/cli.js +12 -0
  75. package/dist/entrypoints/cli.js.map +1 -0
  76. package/dist/entrypoints/main.d.ts +5 -0
  77. package/dist/entrypoints/main.js +86 -0
  78. package/dist/entrypoints/main.js.map +1 -0
  79. package/dist/entrypoints/thread.d.ts +14 -0
  80. package/dist/entrypoints/thread.js +53 -0
  81. package/dist/entrypoints/thread.js.map +1 -0
  82. package/dist/entrypoints/worker.d.ts +3 -0
  83. package/dist/entrypoints/worker.js +42 -0
  84. package/dist/entrypoints/worker.js.map +1 -0
  85. package/dist/resolver.d.ts +2 -0
  86. package/dist/resolver.js +15 -0
  87. package/dist/resolver.js.map +1 -0
  88. package/dist/typings.d.ts +4 -0
  89. package/dist/typings.js +18 -0
  90. package/dist/typings.js.map +1 -0
  91. package/dist/vite/builder.d.ts +5 -0
  92. package/dist/vite/builder.js +110 -0
  93. package/dist/vite/builder.js.map +1 -0
  94. package/dist/vite/config.d.ts +27 -0
  95. package/dist/vite/config.js +22 -0
  96. package/dist/vite/config.js.map +1 -0
  97. package/dist/vite/plugins.d.ts +2 -0
  98. package/dist/vite/plugins.js +18 -0
  99. package/dist/vite/plugins.js.map +1 -0
  100. package/dist/vite/runners/worker.d.ts +4 -0
  101. package/dist/vite/runners/worker.js +33 -0
  102. package/dist/vite/runners/worker.js.map +1 -0
  103. package/dist/vite/server.d.ts +3 -0
  104. package/dist/vite/server.js +18 -0
  105. package/dist/vite/server.js.map +1 -0
  106. package/dist/vite/servers/main.d.ts +8 -0
  107. package/dist/vite/servers/main.js +23 -0
  108. package/dist/vite/servers/main.js.map +1 -0
  109. package/dist/vite/servers/worker.d.ts +8 -0
  110. package/dist/vite/servers/worker.js +79 -0
  111. package/dist/vite/servers/worker.js.map +1 -0
  112. 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,3 @@
1
+ import { ApplicationWorkerRuntime, JobWorkerRuntime } from '@nmtjs/runtime';
2
+ import type { RunWorkerOptions } from './thread.ts';
3
+ export declare function run(options: RunWorkerOptions['runtime']): Promise<ApplicationWorkerRuntime | JobWorkerRuntime>;
@@ -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"}
@@ -0,0 +1,2 @@
1
+ import { ResolverFactory } from 'oxc-resolver';
2
+ export declare const resolver: ResolverFactory;
@@ -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"}
@@ -0,0 +1,4 @@
1
+ export declare function generateTypings(applicationImports: Record<string, {
2
+ path: string;
3
+ specifier: string;
4
+ }>): Promise<void>;
@@ -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,5 @@
1
+ import type { NeemataConfig } from '../config.ts';
2
+ import type { ViteConfigOptions } from './config.ts';
3
+ export declare function createBuilder(configOptions: ViteConfigOptions, neemataConfig: NeemataConfig): Promise<{
4
+ build: () => Promise<any>;
5
+ }>;
@@ -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,2 @@
1
+ import type { Plugin } from 'vite';
2
+ export declare const buildPlugins: Plugin[];
@@ -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,3 @@
1
+ import type { DevEnvironmentOptions, UserConfig } from 'vite';
2
+ import type { ViteConfigOptions } from './config.ts';
3
+ export declare function createServer(options: ViteConfigOptions, config: UserConfig, dev?: DevEnvironmentOptions): Promise<import("vite").ViteDevServer>;
@@ -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>;