phecda-server 7.0.0-alpha.3 → 7.0.0-alpha.5

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 (81) hide show
  1. package/assets/schema.json +55 -55
  2. package/dist/{chunk-MMG73S64.mjs → chunk-2ESEXJQM.mjs} +1 -1
  3. package/dist/{chunk-A53KNKY4.mjs → chunk-3ISYBU3P.mjs} +33 -3
  4. package/dist/{chunk-6EBEME3I.js → chunk-K54JYYXK.js} +51 -51
  5. package/dist/{chunk-RQSQRZL4.js → chunk-KFFS2P7I.js} +3 -1
  6. package/dist/{chunk-KUGFI6SC.mjs → chunk-PXLG75ED.mjs} +1 -1
  7. package/dist/{chunk-PKSWGQLW.js → chunk-TR5Z4SDI.js} +50 -20
  8. package/dist/{chunk-QD3QR3NW.mjs → chunk-UXGJD2PK.mjs} +2 -0
  9. package/dist/{chunk-QCOBXM7F.js → chunk-Y2OLA5OJ.js} +24 -24
  10. package/dist/{core-C1kHRqU9.d.ts → core-CzElxZoF.d.ts} +2 -1
  11. package/dist/{core-CSiaRU7r.d.mts → core-DU7gQKSk.d.mts} +2 -1
  12. package/dist/helper.d.mts +1 -1
  13. package/dist/helper.d.ts +1 -1
  14. package/dist/helper.js +3 -3
  15. package/dist/helper.mjs +2 -2
  16. package/dist/http/elysia/index.d.mts +3 -3
  17. package/dist/http/elysia/index.d.ts +3 -3
  18. package/dist/http/elysia/index.js +40 -40
  19. package/dist/http/elysia/index.mjs +3 -3
  20. package/dist/http/express/index.d.mts +3 -3
  21. package/dist/http/express/index.d.ts +3 -3
  22. package/dist/http/express/index.js +37 -37
  23. package/dist/http/express/index.mjs +2 -2
  24. package/dist/http/fastify/index.d.mts +3 -3
  25. package/dist/http/fastify/index.d.ts +3 -3
  26. package/dist/http/fastify/index.js +38 -38
  27. package/dist/http/fastify/index.mjs +3 -3
  28. package/dist/http/h3/index.d.mts +3 -3
  29. package/dist/http/h3/index.d.ts +3 -3
  30. package/dist/http/h3/index.js +37 -37
  31. package/dist/http/h3/index.mjs +2 -2
  32. package/dist/http/hono/index.d.mts +3 -3
  33. package/dist/http/hono/index.d.ts +3 -3
  34. package/dist/http/hono/index.js +35 -35
  35. package/dist/http/hono/index.mjs +2 -2
  36. package/dist/http/hyper-express/index.d.mts +3 -3
  37. package/dist/http/hyper-express/index.d.ts +3 -3
  38. package/dist/http/hyper-express/index.js +35 -35
  39. package/dist/http/hyper-express/index.mjs +2 -2
  40. package/dist/http/koa/index.d.mts +3 -3
  41. package/dist/http/koa/index.d.ts +3 -3
  42. package/dist/http/koa/index.js +37 -37
  43. package/dist/http/koa/index.mjs +2 -2
  44. package/dist/index.d.mts +8 -8
  45. package/dist/index.d.ts +8 -8
  46. package/dist/index.js +40 -38
  47. package/dist/index.mjs +6 -4
  48. package/dist/{meta-D1M85Hef.d.ts → meta-BTnLXuCa.d.mts} +2 -1
  49. package/dist/{meta-D1M85Hef.d.mts → meta-BTnLXuCa.d.ts} +2 -1
  50. package/dist/rpc/bullmq/index.d.mts +3 -3
  51. package/dist/rpc/bullmq/index.d.ts +3 -3
  52. package/dist/rpc/bullmq/index.js +14 -14
  53. package/dist/rpc/bullmq/index.mjs +2 -2
  54. package/dist/rpc/kafka/index.d.mts +3 -3
  55. package/dist/rpc/kafka/index.d.ts +3 -3
  56. package/dist/rpc/kafka/index.js +14 -14
  57. package/dist/rpc/kafka/index.mjs +2 -2
  58. package/dist/rpc/nats/index.d.mts +3 -3
  59. package/dist/rpc/nats/index.d.ts +3 -3
  60. package/dist/rpc/nats/index.js +13 -13
  61. package/dist/rpc/nats/index.mjs +2 -2
  62. package/dist/rpc/rabbitmq/index.d.mts +3 -3
  63. package/dist/rpc/rabbitmq/index.d.ts +3 -3
  64. package/dist/rpc/rabbitmq/index.js +15 -15
  65. package/dist/rpc/rabbitmq/index.mjs +2 -2
  66. package/dist/rpc/redis/index.d.mts +3 -3
  67. package/dist/rpc/redis/index.d.ts +3 -3
  68. package/dist/rpc/redis/index.js +13 -13
  69. package/dist/rpc/redis/index.mjs +2 -2
  70. package/dist/test.d.mts +2 -2
  71. package/dist/test.d.ts +2 -2
  72. package/dist/test.js +6 -6
  73. package/dist/test.mjs +2 -2
  74. package/dist/{types-ee1FBodH.d.ts → types--E-OCZhC.d.ts} +1 -1
  75. package/dist/{types-JMhFVp-Z.d.mts → types-BYqBeqrs.d.mts} +1 -1
  76. package/dist/{types-wbHHC93P.d.mts → types-BxlzVoRv.d.mts} +1 -1
  77. package/dist/{types-C9Remkup.d.ts → types-CbfaGkPA.d.ts} +1 -1
  78. package/package.json +2 -2
  79. package/register/index.mjs +41 -40
  80. package/register/loader.mjs +37 -11
  81. package/register/utils.mjs +56 -56
@@ -4,29 +4,29 @@
4
4
 
5
5
 
6
6
 
7
- var _chunk6EBEME3Ijs = require('../../chunk-6EBEME3I.js');
7
+ var _chunkK54JYYXKjs = require('../../chunk-K54JYYXK.js');
8
8
 
9
9
 
10
- var _chunkRQSQRZL4js = require('../../chunk-RQSQRZL4.js');
10
+ var _chunkKFFS2P7Ijs = require('../../chunk-KFFS2P7I.js');
11
11
 
12
12
  // src/rpc/redis/bind.ts
13
13
  var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug);
14
14
  var debug = _debug2.default.call(void 0, "phecda-server/redis");
15
15
  function bind({ sub, pub }, { moduleMap, meta }, opts = {}) {
16
16
  const { globalGuards, globalFilter, globalPipe, globalAddons = [], defaultQueue } = opts;
17
- const metaMap = _chunk6EBEME3Ijs.createControllerMetaMap.call(void 0, meta, (meta2) => {
17
+ const metaMap = _chunkK54JYYXKjs.createControllerMetaMap.call(void 0, meta, (meta2) => {
18
18
  const { controller, rpc, func, tag } = meta2.data;
19
19
  if (controller === "rpc" && _optionalChain([rpc, 'optionalAccess', _ => _.queue]) !== void 0) {
20
20
  debug(`register method "${func}" in module "${tag}"`);
21
21
  return true;
22
22
  }
23
23
  });
24
- _chunk6EBEME3Ijs.detectAopDep.call(void 0, meta, {
24
+ _chunkK54JYYXKjs.detectAopDep.call(void 0, meta, {
25
25
  guards: globalGuards,
26
26
  addons: globalAddons
27
27
  }, "rpc");
28
28
  const existQueue = /* @__PURE__ */ new Set();
29
- _chunk6EBEME3Ijs.Context.applyAddons(globalAddons, {
29
+ _chunkK54JYYXKjs.Context.applyAddons(globalAddons, {
30
30
  pub,
31
31
  sub
32
32
  }, "redis");
@@ -45,7 +45,7 @@ function bind({ sub, pub }, { moduleMap, meta }, opts = {}) {
45
45
  }
46
46
  }
47
47
  }
48
- _chunkRQSQRZL4js.__name.call(void 0, subscribeQueues, "subscribeQueues");
48
+ _chunkKFFS2P7Ijs.__name.call(void 0, subscribeQueues, "subscribeQueues");
49
49
  sub.on("message", async (channel, msg) => {
50
50
  if (!existQueue.has(channel)) return;
51
51
  if (msg) {
@@ -55,12 +55,12 @@ function bind({ sub, pub }, { moduleMap, meta }, opts = {}) {
55
55
  if (_ps !== 1) return;
56
56
  const meta2 = metaMap.get(tag)[func];
57
57
  const { data: { rpc: { isEvent } = {} } } = meta2;
58
- const aop = _chunk6EBEME3Ijs.Context.getAop(meta2, {
58
+ const aop = _chunkK54JYYXKjs.Context.getAop(meta2, {
59
59
  globalFilter,
60
60
  globalGuards,
61
61
  globalPipe
62
62
  });
63
- const context = new (0, _chunk6EBEME3Ijs.Context)({
63
+ const context = new (0, _chunkK54JYYXKjs.Context)({
64
64
  type: "redis",
65
65
  category: "rpc",
66
66
  moduleMap,
@@ -92,12 +92,12 @@ function bind({ sub, pub }, { moduleMap, meta }, opts = {}) {
92
92
  }
93
93
  });
94
94
  subscribeQueues();
95
- _chunk6EBEME3Ijs.HMR.call(void 0, async () => {
95
+ _chunkK54JYYXKjs.HMR.call(void 0, async () => {
96
96
  for (const queue of existQueue) await sub.unsubscribe(queue);
97
97
  subscribeQueues();
98
98
  });
99
99
  }
100
- _chunkRQSQRZL4js.__name.call(void 0, bind, "bind");
100
+ _chunkKFFS2P7Ijs.__name.call(void 0, bind, "bind");
101
101
 
102
102
  // src/rpc/redis/client.ts
103
103
  var _events = require('events'); var _events2 = _interopRequireDefault(_events);
@@ -106,7 +106,7 @@ async function createClient({ pub, sub }, controllers, opts) {
106
106
  let eventId = 1;
107
107
  let eventCount = 0;
108
108
  const emitter = new (0, _events2.default)();
109
- const clientQueue = _chunk6EBEME3Ijs.genClientQueue.call(void 0, _optionalChain([opts, 'optionalAccess', _2 => _2.key]));
109
+ const clientQueue = _chunkK54JYYXKjs.genClientQueue.call(void 0, _optionalChain([opts, 'optionalAccess', _2 => _2.key]));
110
110
  await sub.subscribe(clientQueue);
111
111
  for (const i in controllers) {
112
112
  ret[i] = new Proxy(new controllers[i](), {
@@ -146,7 +146,7 @@ async function createClient({ pub, sub }, controllers, opts) {
146
146
  if (error) reject(data);
147
147
  else resolve(data);
148
148
  }
149
- _chunkRQSQRZL4js.__name.call(void 0, listener, "listener");
149
+ _chunkKFFS2P7Ijs.__name.call(void 0, listener, "listener");
150
150
  eventCount++;
151
151
  emitter.once(id, listener);
152
152
  });
@@ -162,7 +162,7 @@ async function createClient({ pub, sub }, controllers, opts) {
162
162
  });
163
163
  return ret;
164
164
  }
165
- _chunkRQSQRZL4js.__name.call(void 0, createClient, "createClient");
165
+ _chunkKFFS2P7Ijs.__name.call(void 0, createClient, "createClient");
166
166
 
167
167
 
168
168
 
@@ -4,10 +4,10 @@ import {
4
4
  createControllerMetaMap,
5
5
  detectAopDep,
6
6
  genClientQueue
7
- } from "../../chunk-MMG73S64.mjs";
7
+ } from "../../chunk-2ESEXJQM.mjs";
8
8
  import {
9
9
  __name
10
- } from "../../chunk-QD3QR3NW.mjs";
10
+ } from "../../chunk-UXGJD2PK.mjs";
11
11
 
12
12
  // src/rpc/redis/bind.ts
13
13
  import Debug from "debug";
package/dist/test.d.mts CHANGED
@@ -2,8 +2,8 @@ import * as supertest from 'supertest';
2
2
  import { Test } from 'supertest';
3
3
  import { Server } from 'node:http';
4
4
  import { Construct } from 'phecda-core';
5
- import { F as Factory } from './core-CSiaRU7r.mjs';
6
- import { P as PickFunc } from './meta-D1M85Hef.mjs';
5
+ import { F as Factory } from './core-DU7gQKSk.mjs';
6
+ import { P as PickFunc } from './meta-BTnLXuCa.mjs';
7
7
 
8
8
  declare function TestFactory<T extends Construct[]>(...Modules: T): Promise<{
9
9
  get<C extends T[number]>(Model: C): InstanceType<C>;
package/dist/test.d.ts CHANGED
@@ -2,8 +2,8 @@ import * as supertest from 'supertest';
2
2
  import { Test } from 'supertest';
3
3
  import { Server } from 'node:http';
4
4
  import { Construct } from 'phecda-core';
5
- import { F as Factory } from './core-C1kHRqU9.js';
6
- import { P as PickFunc } from './meta-D1M85Hef.js';
5
+ import { F as Factory } from './core-CzElxZoF.js';
6
+ import { P as PickFunc } from './meta-BTnLXuCa.js';
7
7
 
8
8
  declare function TestFactory<T extends Construct[]>(...Modules: T): Promise<{
9
9
  get<C extends T[number]>(Model: C): InstanceType<C>;
package/dist/test.js CHANGED
@@ -1,14 +1,14 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }
2
2
 
3
- var _chunkPKSWGQLWjs = require('./chunk-PKSWGQLW.js');
3
+ var _chunkTR5Z4SDIjs = require('./chunk-TR5Z4SDI.js');
4
4
 
5
5
 
6
- var _chunkRQSQRZL4js = require('./chunk-RQSQRZL4.js');
6
+ var _chunkKFFS2P7Ijs = require('./chunk-KFFS2P7I.js');
7
7
 
8
8
  // src/test.ts
9
9
  var _phecdacore = require('phecda-core');
10
10
  async function TestFactory(...Modules) {
11
- const { moduleMap, modelMap } = await _chunkPKSWGQLWjs.Factory.call(void 0, Modules);
11
+ const { moduleMap, modelMap } = await _chunkTR5Z4SDIjs.Factory.call(void 0, Modules);
12
12
  return {
13
13
  get(Model) {
14
14
  const tag = _phecdacore.getTag.call(void 0, Model);
@@ -19,7 +19,7 @@ async function TestFactory(...Modules) {
19
19
  }
20
20
  };
21
21
  }
22
- _chunkRQSQRZL4js.__name.call(void 0, TestFactory, "TestFactory");
22
+ _chunkKFFS2P7Ijs.__name.call(void 0, TestFactory, "TestFactory");
23
23
  async function TestHttp(app, { moduleMap, meta }, isAgent = true) {
24
24
  const { default: request, agent } = await Promise.resolve().then(() => _interopRequireWildcard(require("supertest")));
25
25
  const Agent = agent(app);
@@ -59,11 +59,11 @@ async function TestHttp(app, { moduleMap, meta }, isAgent = true) {
59
59
  }
60
60
  });
61
61
  }
62
- _chunkRQSQRZL4js.__name.call(void 0, module, "module");
62
+ _chunkKFFS2P7Ijs.__name.call(void 0, module, "module");
63
63
  Agent.module = module;
64
64
  return Agent;
65
65
  }
66
- _chunkRQSQRZL4js.__name.call(void 0, TestHttp, "TestHttp");
66
+ _chunkKFFS2P7Ijs.__name.call(void 0, TestHttp, "TestHttp");
67
67
 
68
68
 
69
69
 
package/dist/test.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Factory
3
- } from "./chunk-A53KNKY4.mjs";
3
+ } from "./chunk-3ISYBU3P.mjs";
4
4
  import {
5
5
  __name
6
- } from "./chunk-QD3QR3NW.mjs";
6
+ } from "./chunk-UXGJD2PK.mjs";
7
7
 
8
8
  // src/test.ts
9
9
  import { getTag } from "phecda-core";
@@ -1,5 +1,5 @@
1
1
  import { IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'node:http';
2
- import { D as DefaultOptions, B as BaseContext } from './meta-D1M85Hef.js';
2
+ import { D as DefaultOptions, B as BaseContext } from './meta-BTnLXuCa.js';
3
3
 
4
4
  interface HttpOptions extends DefaultOptions {
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { D as DefaultOptions, B as BaseContext } from './meta-D1M85Hef.mjs';
1
+ import { D as DefaultOptions, B as BaseContext } from './meta-BTnLXuCa.mjs';
2
2
 
3
3
  interface RpcServerOptions extends DefaultOptions {
4
4
  defaultQueue?: string;
@@ -1,5 +1,5 @@
1
1
  import { IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'node:http';
2
- import { D as DefaultOptions, B as BaseContext } from './meta-D1M85Hef.mjs';
2
+ import { D as DefaultOptions, B as BaseContext } from './meta-BTnLXuCa.mjs';
3
3
 
4
4
  interface HttpOptions extends DefaultOptions {
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { D as DefaultOptions, B as BaseContext } from './meta-D1M85Hef.js';
1
+ import { D as DefaultOptions, B as BaseContext } from './meta-BTnLXuCa.js';
2
2
 
3
3
  interface RpcServerOptions extends DefaultOptions {
4
4
  defaultQueue?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "phecda-server",
3
- "version": "7.0.0-alpha.3",
3
+ "version": "7.0.0-alpha.5",
4
4
  "description": "server framework that provide IOC/type-reuse/http&rpc-adaptor",
5
5
  "author": "fgsreally",
6
6
  "license": "MIT",
@@ -147,7 +147,7 @@
147
147
  "picocolors": "^1.0.0",
148
148
  "reflect-metadata": "^0.1.13",
149
149
  "ts-mixer": "^6.0.4",
150
- "phecda-core": "4.0.1"
150
+ "phecda-core": "4.1.0-alpha.0"
151
151
  },
152
152
  "devDependencies": {
153
153
  "@koa/router": "^12.0.1",
@@ -1,40 +1,41 @@
1
- import { register } from 'node:module'
2
- import { MessageChannel } from 'node:worker_threads'
3
- import { log } from '../dist/index.mjs'
4
- const { port1, port2 } = new MessageChannel()
5
-
6
- register('./loader.mjs', {
7
- parentURL: import.meta.url,
8
- data: { port: port2 },
9
- transferList: [port2],
10
- })
11
-
12
- let isRunning = true
13
-
14
- port1.on('message', async (data) => {
15
- const { type, files } = JSON.parse(data)
16
-
17
- if (!isRunning || !globalThis.__PS_HMR__ || type === 'relaunch')
18
- return process.exit(2)// file change -> relaunch
19
-
20
- if (type === 'change') {
21
- log('reload module...')
22
-
23
- for (const cb of globalThis.__PS_HMR__) await cb(files)
24
-
25
- log('reload done')
26
- }
27
- })
28
-
29
- process.on('uncaughtException', (err) => {
30
- log('Uncaught Exception:', 'error')
31
- isRunning = false
32
- console.error(err)
33
- })
34
-
35
- process.on('unhandledRejection', (err) => {
36
- log('Unhandled Promise Rejection:', 'error')
37
- isRunning = false
38
-
39
- console.error(err)
40
- })
1
+ import { register } from 'node:module'
2
+ import { MessageChannel } from 'node:worker_threads'
3
+ import { log } from '../dist/index.mjs'
4
+
5
+ const { port1, port2 } = new MessageChannel()
6
+
7
+ register('./loader.mjs', {
8
+ parentURL: import.meta.url,
9
+ data: { port: port2 },
10
+ transferList: [port2],
11
+ })
12
+
13
+ let isRunning = true
14
+
15
+ port1.on('message', async (data) => {
16
+ const { type, files } = JSON.parse(data)
17
+
18
+ if (!isRunning || !globalThis.__PS_HMR__ || type === 'relaunch')
19
+ return process.exit(2)// file change -> relaunch
20
+
21
+ if (type === 'change') {
22
+ log('reload module...')
23
+
24
+ for (const cb of globalThis.__PS_HMR__) await cb(files)
25
+
26
+ log('reload done')
27
+ }
28
+ })
29
+
30
+ process.on('uncaughtException', (err) => {
31
+ log('Uncaught Exception:', 'error')
32
+ isRunning = false
33
+ console.error(err)
34
+ })
35
+
36
+ process.on('unhandledRejection', (err) => {
37
+ log('Unhandled Promise Rejection:', 'error')
38
+ isRunning = false
39
+
40
+ console.error(err)
41
+ })
@@ -2,26 +2,42 @@ import { fileURLToPath, pathToFileURL } from 'url'
2
2
  import { writeFile } from 'fs/promises'
3
3
  import {
4
4
  basename,
5
+ dirname,
5
6
  extname,
6
7
  isAbsolute,
7
8
  relative,
8
9
  resolve as resolvePath,
9
10
  } from 'path'
10
11
  import { createRequire } from 'module'
12
+ import { existsSync } from 'fs'
11
13
  import ts from 'typescript'
12
14
  import chokidar from 'chokidar'
13
15
  import { log } from '../dist/index.mjs'
14
16
  import { compile, genUnImportRet, handleClassTypes, slash } from './utils.mjs'
15
17
 
16
18
  let port
19
+ let tsconfig = {
20
+ module: ts.ModuleKind.ESNext,
21
+ moduleResolution: ts.ModuleResolutionKind.NodeNext,
22
+ }
17
23
 
18
24
  const isLowVersion = parseFloat(process.version.slice(1)) < 18.19
19
25
  // this part is important or not?
20
26
  const EXTENSIONS = [ts.Extension.Ts, ts.Extension.Tsx, ts.Extension.Mts]
21
- const tsconfig = {
22
- module: ts.ModuleKind.ESNext,
23
- moduleResolution: ts.ModuleResolutionKind.NodeNext,
27
+
28
+ const tsconfigPath = resolvePath(process.cwd(), 'tsconfig.json')
29
+ const tsRet = ts.readConfigFile(tsconfigPath, ts.sys.readFile)
30
+
31
+ if (!tsRet.error) {
32
+ const { error, options } = ts.parseJsonConfigFileContent(
33
+ tsRet.config,
34
+ ts.sys,
35
+ dirname(tsconfigPath),
36
+ )
37
+ if (!error)
38
+ tsconfig = options
24
39
  }
40
+
25
41
  const moduleResolutionCache = ts.createModuleResolutionCache(
26
42
  ts.sys.getCurrentDirectory(),
27
43
  x => x,
@@ -56,6 +72,8 @@ export async function initialize(data) {
56
72
  config = require(configPath)
57
73
  if (!config.virtualFile)
58
74
  config.virtualFile = {}
75
+ if (!config.paths)
76
+ config.paths = {}
59
77
 
60
78
  if (!process.env.PS_HMR_BAN) {
61
79
  chokidar.watch(configPath, { persistent: true }).on('change', () => {
@@ -127,13 +145,20 @@ export const resolve = async (specifier, context, nextResolve) => {
127
145
  }
128
146
  // entrypoint
129
147
  if (!context.parentURL) {
130
- entryUrl = specifier
131
- return {
132
- format: EXTENSIONS.some(ext => specifier.endsWith(ext))
133
- ? 'ts'
134
- : undefined,
135
- url: specifier,
136
- shortCircuit: true,
148
+ if (/^file:\/\/\//.test(specifier) && existsSync(fileURLToPath(specifier))) {
149
+ entryUrl = specifier
150
+
151
+ return {
152
+ format: EXTENSIONS.some(ext => specifier.endsWith(ext))
153
+ ? 'ts'
154
+ : undefined,
155
+ url: specifier,
156
+ shortCircuit: true,
157
+ }
158
+ }
159
+ else {
160
+ // won't resolve virtual file as entry in vite
161
+ return nextResolve(specifier)
137
162
  }
138
163
  }
139
164
  // url import
@@ -289,7 +314,8 @@ export const load = async (url, context, nextLoad) => {
289
314
 
290
315
  const code
291
316
  = typeof source === 'string' ? source : Buffer.from(source).toString()
292
- const compiled = await compile(code, url)
317
+ const compiled = (await compile(code, url)).replace(/_ts_metadata\(\"design:paramtypes\"\,/g, '_ts_metadata("design:paramtypes",()=>')// handle cycle
318
+
293
319
  if (unimportRet) {
294
320
  const { injectImports } = unimportRet
295
321
  return {
@@ -1,56 +1,56 @@
1
- import { basename } from 'path'
2
- import { transform } from '@swc-node/core'
3
- const injectInlineSourceMap = ({ code, map }) => {
4
- if (map) {
5
- const base64Map = Buffer.from(map, 'utf8').toString('base64')
6
- const sourceMapContent = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`
7
- return `${code}\n${sourceMapContent}`
8
- }
9
- return code
10
- }
11
-
12
- export async function compile(sourcecode, filename) {
13
- if (filename.endsWith('.d.ts'))
14
- return ''
15
-
16
- const { code, map } = await transform(sourcecode, filename, {
17
- sourcemap: true,
18
- module: 'es6',
19
- emitDecoratorMetadata: true,
20
- experimentalDecorators: true,
21
- esModuleInterop: false,
22
- })
23
-
24
- return injectInlineSourceMap({ code, map })
25
- }
26
-
27
- export async function genUnImportRet(opts) {
28
- try {
29
- const psExports = Object.keys(await import('../dist/index.mjs'))
30
- const { createUnimport } = await import('unimport')
31
- return createUnimport({
32
- ...opts,
33
- imports: psExports
34
- .map((k) => {
35
- return { name: k, from: 'phecda-server' }
36
- })
37
- .concat(opts.imports || []),
38
- })
39
- }
40
- catch (e) {
41
- return false
42
- }
43
- }
44
-
45
- export function handleClassTypes(input) {
46
- return input.replace(/const\s+(\w+)\s*:\s*typeof\s+import\(['"](.+)['"]\)\['(\w+)'\]/g, (_, n, p, e) => {
47
- // TestController in test.controller
48
- if (p.startsWith('./') && (basename(p).replace('.', '').toLowerCase() === e.toLowerCase()))
49
- return `${_}\n type ${n} = InstanceType<typeof import('${p}')['${e}']>`
50
-
51
- return _
52
- })
53
- }
54
- export function slash(str) {
55
- return str.replace(/\\/g, '/')
56
- }
1
+ import { basename } from 'path'
2
+ import { transform } from '@swc-node/core'
3
+ const injectInlineSourceMap = ({ code, map }) => {
4
+ if (map) {
5
+ const base64Map = Buffer.from(map, 'utf8').toString('base64')
6
+ const sourceMapContent = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`
7
+ return `${code}\n${sourceMapContent}`
8
+ }
9
+ return code
10
+ }
11
+
12
+ export async function compile(sourcecode, filename) {
13
+ if (filename.endsWith('.d.ts'))
14
+ return ''
15
+
16
+ const { code, map } = await transform(sourcecode, filename, {
17
+ sourcemap: true,
18
+ module: 'es6',
19
+ emitDecoratorMetadata: true,
20
+ experimentalDecorators: true,
21
+ esModuleInterop: false,
22
+ })
23
+
24
+ return injectInlineSourceMap({ code, map })
25
+ }
26
+
27
+ export async function genUnImportRet(opts) {
28
+ try {
29
+ const psExports = Object.keys(await import('../dist/index.mjs'))
30
+ const { createUnimport } = await import('unimport')
31
+ return createUnimport({
32
+ ...opts,
33
+ imports: psExports
34
+ .map((k) => {
35
+ return { name: k, from: 'phecda-server' }
36
+ })
37
+ .concat(opts.imports || []),
38
+ })
39
+ }
40
+ catch (e) {
41
+ return false
42
+ }
43
+ }
44
+
45
+ export function handleClassTypes(input) {
46
+ return input.replace(/const\s+(\w+)\s*:\s*typeof\s+import\(['"](.+)['"]\)\['(\w+)'\]/g, (_, n, p, e) => {
47
+ // TestController in test.controller
48
+ if (p.startsWith('./') && (basename(p).replace('.', '').toLowerCase() === e.toLowerCase()))
49
+ return `${_}\n type ${n} = InstanceType<typeof import('${p}')['${e}']>`
50
+
51
+ return _
52
+ })
53
+ }
54
+ export function slash(str) {
55
+ return str.replace(/\\/g, '/')
56
+ }