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.
- package/assets/schema.json +55 -55
- package/dist/{chunk-MMG73S64.mjs → chunk-2ESEXJQM.mjs} +1 -1
- package/dist/{chunk-A53KNKY4.mjs → chunk-3ISYBU3P.mjs} +33 -3
- package/dist/{chunk-6EBEME3I.js → chunk-K54JYYXK.js} +51 -51
- package/dist/{chunk-RQSQRZL4.js → chunk-KFFS2P7I.js} +3 -1
- package/dist/{chunk-KUGFI6SC.mjs → chunk-PXLG75ED.mjs} +1 -1
- package/dist/{chunk-PKSWGQLW.js → chunk-TR5Z4SDI.js} +50 -20
- package/dist/{chunk-QD3QR3NW.mjs → chunk-UXGJD2PK.mjs} +2 -0
- package/dist/{chunk-QCOBXM7F.js → chunk-Y2OLA5OJ.js} +24 -24
- package/dist/{core-C1kHRqU9.d.ts → core-CzElxZoF.d.ts} +2 -1
- package/dist/{core-CSiaRU7r.d.mts → core-DU7gQKSk.d.mts} +2 -1
- package/dist/helper.d.mts +1 -1
- package/dist/helper.d.ts +1 -1
- package/dist/helper.js +3 -3
- package/dist/helper.mjs +2 -2
- package/dist/http/elysia/index.d.mts +3 -3
- package/dist/http/elysia/index.d.ts +3 -3
- package/dist/http/elysia/index.js +40 -40
- package/dist/http/elysia/index.mjs +3 -3
- package/dist/http/express/index.d.mts +3 -3
- package/dist/http/express/index.d.ts +3 -3
- package/dist/http/express/index.js +37 -37
- package/dist/http/express/index.mjs +2 -2
- package/dist/http/fastify/index.d.mts +3 -3
- package/dist/http/fastify/index.d.ts +3 -3
- package/dist/http/fastify/index.js +38 -38
- package/dist/http/fastify/index.mjs +3 -3
- package/dist/http/h3/index.d.mts +3 -3
- package/dist/http/h3/index.d.ts +3 -3
- package/dist/http/h3/index.js +37 -37
- package/dist/http/h3/index.mjs +2 -2
- package/dist/http/hono/index.d.mts +3 -3
- package/dist/http/hono/index.d.ts +3 -3
- package/dist/http/hono/index.js +35 -35
- package/dist/http/hono/index.mjs +2 -2
- package/dist/http/hyper-express/index.d.mts +3 -3
- package/dist/http/hyper-express/index.d.ts +3 -3
- package/dist/http/hyper-express/index.js +35 -35
- package/dist/http/hyper-express/index.mjs +2 -2
- package/dist/http/koa/index.d.mts +3 -3
- package/dist/http/koa/index.d.ts +3 -3
- package/dist/http/koa/index.js +37 -37
- package/dist/http/koa/index.mjs +2 -2
- package/dist/index.d.mts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +40 -38
- package/dist/index.mjs +6 -4
- package/dist/{meta-D1M85Hef.d.ts → meta-BTnLXuCa.d.mts} +2 -1
- package/dist/{meta-D1M85Hef.d.mts → meta-BTnLXuCa.d.ts} +2 -1
- package/dist/rpc/bullmq/index.d.mts +3 -3
- package/dist/rpc/bullmq/index.d.ts +3 -3
- package/dist/rpc/bullmq/index.js +14 -14
- package/dist/rpc/bullmq/index.mjs +2 -2
- package/dist/rpc/kafka/index.d.mts +3 -3
- package/dist/rpc/kafka/index.d.ts +3 -3
- package/dist/rpc/kafka/index.js +14 -14
- package/dist/rpc/kafka/index.mjs +2 -2
- package/dist/rpc/nats/index.d.mts +3 -3
- package/dist/rpc/nats/index.d.ts +3 -3
- package/dist/rpc/nats/index.js +13 -13
- package/dist/rpc/nats/index.mjs +2 -2
- package/dist/rpc/rabbitmq/index.d.mts +3 -3
- package/dist/rpc/rabbitmq/index.d.ts +3 -3
- package/dist/rpc/rabbitmq/index.js +15 -15
- package/dist/rpc/rabbitmq/index.mjs +2 -2
- package/dist/rpc/redis/index.d.mts +3 -3
- package/dist/rpc/redis/index.d.ts +3 -3
- package/dist/rpc/redis/index.js +13 -13
- package/dist/rpc/redis/index.mjs +2 -2
- package/dist/test.d.mts +2 -2
- package/dist/test.d.ts +2 -2
- package/dist/test.js +6 -6
- package/dist/test.mjs +2 -2
- package/dist/{types-ee1FBodH.d.ts → types--E-OCZhC.d.ts} +1 -1
- package/dist/{types-JMhFVp-Z.d.mts → types-BYqBeqrs.d.mts} +1 -1
- package/dist/{types-wbHHC93P.d.mts → types-BxlzVoRv.d.mts} +1 -1
- package/dist/{types-C9Remkup.d.ts → types-CbfaGkPA.d.ts} +1 -1
- package/package.json +2 -2
- package/register/index.mjs +41 -40
- package/register/loader.mjs +37 -11
- package/register/utils.mjs +56 -56
package/dist/rpc/redis/index.js
CHANGED
|
@@ -4,29 +4,29 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkK54JYYXKjs = require('../../chunk-K54JYYXK.js');
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
58
|
+
const aop = _chunkK54JYYXKjs.Context.getAop(meta2, {
|
|
59
59
|
globalFilter,
|
|
60
60
|
globalGuards,
|
|
61
61
|
globalPipe
|
|
62
62
|
});
|
|
63
|
-
const context = new (0,
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
165
|
+
_chunkKFFS2P7Ijs.__name.call(void 0, createClient, "createClient");
|
|
166
166
|
|
|
167
167
|
|
|
168
168
|
|
package/dist/rpc/redis/index.mjs
CHANGED
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
createControllerMetaMap,
|
|
5
5
|
detectAopDep,
|
|
6
6
|
genClientQueue
|
|
7
|
-
} from "../../chunk-
|
|
7
|
+
} from "../../chunk-2ESEXJQM.mjs";
|
|
8
8
|
import {
|
|
9
9
|
__name
|
|
10
|
-
} from "../../chunk-
|
|
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-
|
|
6
|
-
import { P as PickFunc } from './meta-
|
|
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-
|
|
6
|
-
import { P as PickFunc } from './meta-
|
|
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
|
|
3
|
+
var _chunkTR5Z4SDIjs = require('./chunk-TR5Z4SDI.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
62
|
+
_chunkKFFS2P7Ijs.__name.call(void 0, module, "module");
|
|
63
63
|
Agent.module = module;
|
|
64
64
|
return Agent;
|
|
65
65
|
}
|
|
66
|
-
|
|
66
|
+
_chunkKFFS2P7Ijs.__name.call(void 0, TestHttp, "TestHttp");
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
|
package/dist/test.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
-
import { D as DefaultOptions, B as BaseContext } from './meta-
|
|
2
|
+
import { D as DefaultOptions, B as BaseContext } from './meta-BTnLXuCa.js';
|
|
3
3
|
|
|
4
4
|
interface HttpOptions extends DefaultOptions {
|
|
5
5
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
-
import { D as DefaultOptions, B as BaseContext } from './meta-
|
|
2
|
+
import { D as DefaultOptions, B as BaseContext } from './meta-BTnLXuCa.mjs';
|
|
3
3
|
|
|
4
4
|
interface HttpOptions extends DefaultOptions {
|
|
5
5
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "phecda-server",
|
|
3
|
-
"version": "7.0.0-alpha.
|
|
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.
|
|
150
|
+
"phecda-core": "4.1.0-alpha.0"
|
|
151
151
|
},
|
|
152
152
|
"devDependencies": {
|
|
153
153
|
"@koa/router": "^12.0.1",
|
package/register/index.mjs
CHANGED
|
@@ -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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
+
})
|
package/register/loader.mjs
CHANGED
|
@@ -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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
:
|
|
135
|
-
|
|
136
|
-
|
|
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 {
|
package/register/utils.mjs
CHANGED
|
@@ -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
|
+
}
|