@voidzero-dev/vite-plus-core 0.2.4 → 0.2.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/LICENSE +7 -115
- package/dist/rolldown/cli.mjs +11 -8
- package/dist/rolldown/config.d.mts +15 -2
- package/dist/rolldown/config.mjs +2 -2
- package/dist/rolldown/experimental-index.d.mts +4 -4
- package/dist/rolldown/experimental-index.mjs +8 -8
- package/dist/rolldown/filter-index.d.mts +1 -1
- package/dist/rolldown/index.d.mts +3 -3
- package/dist/rolldown/index.mjs +10 -4
- package/dist/rolldown/parallel-plugin-worker.mjs +2 -2
- package/dist/rolldown/parallel-plugin.d.mts +1 -1
- package/dist/rolldown/parse-ast-index.d.mts +1 -1
- package/dist/rolldown/parse-ast-index.mjs +2 -2
- package/dist/rolldown/plugins-index.d.mts +3 -3
- package/dist/rolldown/plugins-index.mjs +2 -2
- package/dist/rolldown/shared/{binding-B1q9aYT-.d.mts → binding-D26QphWG.d.mts} +12 -0
- package/dist/rolldown/shared/{binding-BmkJW3Wy.mjs → binding-TuFFIE_J.mjs} +26 -26
- package/dist/rolldown/shared/{bindingify-input-options-Cmm60vfj.mjs → bindingify-input-options-CwbcQL6W.mjs} +11 -13
- package/dist/rolldown/shared/{constructors-2i1T9YcF.d.mts → constructors-BbWPse2X.d.mts} +2 -2
- package/dist/rolldown/shared/{constructors-CE6zZSUt.mjs → constructors-D_3i7dpX.mjs} +1 -1
- package/dist/rolldown/shared/{define-config-BBz954-q.d.mts → define-config-BhJ90aEv.d.mts} +79 -2
- package/dist/rolldown/shared/dist-DX3cAjHx.mjs +154 -0
- package/dist/rolldown/shared/{error-BlQ0-ek7.mjs → error-BHRSI0R7.mjs} +1 -1
- package/dist/rolldown/shared/{load-config-CVVMWSlg.mjs → load-config-Bd7MgqCK.mjs} +19 -2
- package/dist/rolldown/shared/{logs-aMKUxRpj.mjs → logs-ZGEh6uhb.mjs} +6 -1
- package/dist/rolldown/shared/{normalize-string-or-regex-BYkbbGqQ.mjs → normalize-string-or-regex-dnh67V_w.mjs} +2 -2
- package/dist/rolldown/shared/{parse-Dphnedsw.mjs → parse-B6_waszz.mjs} +2 -2
- package/dist/rolldown/shared/{prompt-Bgj-uEyc.mjs → prompt-pZFoa1TT.mjs} +59 -17
- package/dist/rolldown/shared/{resolve-tsconfig-CdIAR1Eb.mjs → resolve-tsconfig-DxqIJB3x.mjs} +2 -2
- package/dist/rolldown/shared/{rolldown-Bnp916iM.mjs → rolldown-CACDGVWV.mjs} +1 -1
- package/dist/rolldown/shared/{rolldown-build-Cs2iVJuw.mjs → rolldown-build-BV22mk7t.mjs} +33 -13
- package/dist/rolldown/shared/{transform-CEmFsvJW.d.mts → transform-BPrUvqEZ.d.mts} +1 -1
- package/dist/rolldown/shared/{watch-ECGr-_QS.mjs → watch-CS_JygCu.mjs} +5 -5
- package/dist/rolldown/utils-index.d.mts +3 -3
- package/dist/rolldown/utils-index.mjs +8 -6
- package/dist/tsdown/{build-B_nvJe4A-CvbtVBxy.js → build-BlM3pDGJ-C8Uovnt4.js} +166 -76
- package/dist/tsdown/{debug-DLdR-9XB-DQZ6QLC0.js → debug-B1wUEHkd-DhRzGJTf.js} +21 -6
- package/dist/tsdown/{detect-B97OSl92-BJPZyIKJ.js → detect-BNXt7gkp-DKAC9Z7n.js} +7 -2
- package/dist/tsdown/dist-Pjag7IPt.js +3206 -0
- package/dist/tsdown/fs-qxJxxoCE-B_amenYz.js +46 -0
- package/dist/tsdown/{general-Cp4NiJNK-CbyrS9q1.js → general-Cp4NiJNK-xAqmPhMP.js} +1 -1
- package/dist/tsdown/index-types.d.ts +1361 -1326
- package/dist/tsdown/index.js +7 -4
- package/dist/tsdown/internal-Bn6NGoha.js +3 -0
- package/dist/tsdown/npm_cjs_chunk_range.cjs +14 -13
- package/dist/tsdown/npm_cjs_chunk_semver.cjs +6 -6
- package/dist/tsdown/npm_entry_picomatch.cjs +44 -15
- package/dist/tsdown/npm_entry_semver_functions_coerce.cjs +2 -2
- package/dist/tsdown/npm_entry_semver_functions_satisfies.cjs +1 -1
- package/dist/tsdown/npm_entry_semver_ranges_min-version.cjs +1 -1
- package/dist/tsdown/run.js +3 -3
- package/dist/tsdown/{src-CISfE_A0.js → src-CK50m8R_.js} +5 -5
- package/dist/tsdown/target-CqeSqtms-CIvlAiuG.js +35 -0
- package/dist/tsdown/{tsc-CdZE7QwS.js → tsc-CilQvmj4.js} +15 -7
- package/dist/tsdown/{tsc-context-CX_GXdyS.js → tsc-context-BusiAGCd.js} +6 -2
- package/dist/tsdown/tsdown-css.js +74 -23
- package/dist/tsdown/tsdown-exe.js +27 -26
- package/dist/vite/client/client.mjs +4 -4
- package/dist/vite/node/chunks/build.js +194 -84
- package/dist/vite/node/chunks/dist2.js +1 -1
- package/dist/vite/node/chunks/lib.js +1 -1
- package/dist/vite/node/chunks/node.js +484 -71
- package/dist/vite/node/chunks/postcss-import.js +1 -1
- package/dist/vite/node/cli.js +3 -4
- package/dist/vite/node/index.d.ts +3 -3
- package/dist/vite/node/index.js +1 -2
- package/package.json +18 -16
- package/dist/tsdown/dist-CZtGyfn3.js +0 -200
- package/dist/tsdown/dist-CqbVlnVq.js +0 -32057
- package/dist/tsdown/internal-bfoxcI4F.js +0 -3
- package/dist/tsdown/target-CqeSqtms-FAqYuGyB.js +0 -79
- package/dist/vite/node/chunks/logger.js +0 -361
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mt as __require, pt as __commonJSMin } from "./node.js";
|
|
2
2
|
import { t as require_lib } from "./lib.js";
|
|
3
3
|
//#region ../../node_modules/.pnpm/postcss-import@16.1.1_postcss@8.5.16/node_modules/postcss-import/lib/format-import-prelude.js
|
|
4
4
|
var require_format_import_prelude = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
package/dist/vite/node/cli.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { E as createBuilder, J as createLogger, ft as require_picocolors, ht as __toESM, ut as VITE_PLUS_VERSION } from "./chunks/node.js";
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { inspect } from "node:util";
|
|
@@ -703,7 +703,7 @@ const convertBase = (v) => {
|
|
|
703
703
|
cli.option("-c, --config <file>", `[string] use specified config file`).option("--base <path>", `[string] public base path (default: /)`, { type: [convertBase] }).option("-l, --logLevel <level>", `[string] info | warn | error | silent`).option("--clearScreen", `[boolean] allow/disable clear screen when logging`).option("--configLoader <loader>", `[string] use 'bundle' to bundle the config with Rolldown, or 'runner' (experimental) to process it on the fly, or 'native' (experimental) to load using the native runtime (default: bundle)`).option("-d, --debug [feat]", `[string | boolean] show debug logs`).option("-f, --filter <filter>", `[string] filter debug logs`).option("-m, --mode <mode>", `[string] set env mode`);
|
|
704
704
|
cli.command("[root]", "start dev server").alias("serve").alias("dev").option("--host [host]", `[string] specify hostname`, { type: [convertHost] }).option("--port <port>", `[number] specify port`).option("--open [path]", `[boolean | string] open browser on startup`).option("--cors", `[boolean] enable CORS`).option("--strictPort", `[boolean] exit if specified port is already in use`).option("--force", `[boolean] force the optimizer to ignore the cache and re-bundle`).option("--experimentalBundle", `[boolean] use experimental full bundle mode (this is highly experimental)`).action(async (root, options) => {
|
|
705
705
|
filterDuplicateOptions(options);
|
|
706
|
-
const { createServer } = await import("./chunks/node.js").then((n) => n.
|
|
706
|
+
const { createServer } = await import("./chunks/node.js").then((n) => n.j);
|
|
707
707
|
try {
|
|
708
708
|
const server = await createServer({
|
|
709
709
|
root,
|
|
@@ -760,7 +760,6 @@ cli.command("[root]", "start dev server").alias("serve").alias("dev").option("--
|
|
|
760
760
|
});
|
|
761
761
|
cli.command("build [root]", "build for production").option("--target <target>", `[string] transpile target (default: 'baseline-widely-available')`).option("--outDir <dir>", `[string] output directory (default: dist)`).option("--assetsDir <dir>", `[string] directory under outDir to place assets in (default: assets)`).option("--assetsInlineLimit <number>", `[number] static asset base64 inline threshold in bytes (default: 4096)`).option("--ssr [entry]", `[string] build specified entry for server-side rendering`).option("--sourcemap [output]", `[boolean | "inline" | "hidden"] output source maps for build (default: false)`).option("--minify [minifier]", "[boolean | \"oxc\" | \"terser\" | \"esbuild\"] enable/disable minification, or specify minifier to use (default: oxc)").option("--manifest [name]", `[boolean | string] emit build manifest json`).option("--ssrManifest [name]", `[boolean | string] emit ssr manifest json`).option("--emptyOutDir", `[boolean] force empty outDir when it's outside of root`).option("-w, --watch", `[boolean] rebuilds when modules have changed on disk`).option("--app", `[boolean] same as \`builder: {}\``).action(async (root, options) => {
|
|
762
762
|
filterDuplicateOptions(options);
|
|
763
|
-
const { createBuilder } = await import("./chunks/node.js").then((n) => n.E);
|
|
764
763
|
const buildOptions = cleanGlobalCLIOptions(cleanBuilderCLIOptions(options));
|
|
765
764
|
try {
|
|
766
765
|
const builder = await createBuilder({
|
|
@@ -786,7 +785,7 @@ cli.command("build [root]", "build for production").option("--target <target>",
|
|
|
786
785
|
cli.command("optimize [root]", "pre-bundle dependencies (deprecated, the pre-bundle process runs automatically and does not need to be called)").option("--force", `[boolean] force the optimizer to ignore the cache and re-bundle`).action(async (root, options) => {
|
|
787
786
|
filterDuplicateOptions(options);
|
|
788
787
|
const { resolveConfig } = await import("./chunks/node.js").then((n) => n.f);
|
|
789
|
-
const { optimizeDeps } = await import("./chunks/node.js").then((n) => n.
|
|
788
|
+
const { optimizeDeps } = await import("./chunks/node.js").then((n) => n.O);
|
|
790
789
|
try {
|
|
791
790
|
await optimizeDeps(await resolveConfig({
|
|
792
791
|
root,
|
|
@@ -31,7 +31,7 @@ import { GeneralImportGlobOptions, ImportGlobFunction, ImportGlobOptions, KnownA
|
|
|
31
31
|
|
|
32
32
|
//#region \0rolldown/runtime.js
|
|
33
33
|
//#endregion
|
|
34
|
-
//#region ../../../node_modules/.pnpm/@vitejs+devtools@0.3.
|
|
34
|
+
//#region ../../../node_modules/.pnpm/@vitejs+devtools@0.3.4_crossws@0.4.10_srvx@0.11.15__typescript@6.0.2_vite@packages+core/node_modules/@vitejs/devtools/dist/cli-commands.d.ts
|
|
35
35
|
//#region src/node/cli-commands.d.ts
|
|
36
36
|
interface StartOptions {
|
|
37
37
|
root?: string;
|
|
@@ -41,7 +41,7 @@ interface StartOptions {
|
|
|
41
41
|
open?: boolean;
|
|
42
42
|
}
|
|
43
43
|
//#endregion
|
|
44
|
-
//#region ../../../node_modules/.pnpm/@vitejs+devtools@0.3.
|
|
44
|
+
//#region ../../../node_modules/.pnpm/@vitejs+devtools@0.3.4_crossws@0.4.10_srvx@0.11.15__typescript@6.0.2_vite@packages+core/node_modules/@vitejs/devtools/dist/config.d.ts
|
|
45
45
|
//#region src/node/config.d.ts
|
|
46
46
|
interface DevToolsConfig extends Partial<StartOptions> {
|
|
47
47
|
enabled: boolean;
|
|
@@ -666,7 +666,7 @@ interface CommonServerOptions {
|
|
|
666
666
|
* Set to `true` to allow all methods from any origin, or configure separately
|
|
667
667
|
* using an object.
|
|
668
668
|
*
|
|
669
|
-
* @default
|
|
669
|
+
* @default { origin: /^https?:\/\/(?:(?:[^:]+\.)?localhost|127\.0\.0\.1|\[::1\])(?::\d+)?$/ }
|
|
670
670
|
*/
|
|
671
671
|
cors?: CorsOptions | boolean;
|
|
672
672
|
/**
|
package/dist/vite/node/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { I as
|
|
2
|
-
import { $ as mergeConfig, A as createServerHotChannel, B as send, C as fetchModule, D as createBuilder, F as searchForWorkspaceRoot, G as loadEnv, H as createServerModuleRunner, I as createIdResolver, J as transformWithEsbuild, K as resolveEnvPrefix, L as perEnvironmentState, N as formatPostcssSourceMap, O as optimizeDeps, P as preprocessCSS, Q as mergeAlias, R as isFileLoadingAllowed, S as DevEnvironment, T as build, U as createServerModuleRunnerTransport, V as ssrTransform, W as buildErrorMessage, X as createFilter, Y as perEnvironmentPlugin, Z as isCSSRequest, _ as runnerImport, a as minifySync, b as createRunnableDevEnvironment, c as parseAstAsync, d as isFetchableDevEnvironment, et as normalizePath, g as sortUserPlugins, h as resolveConfig, i as minify, j as createServer, l as parseSync, m as loadConfigFromFile, n as esbuildVersion, nt as rollupVersion, o as parse, p as defineConfig, q as transformWithOxc, r as esmExternalRequirePlugin, rt as withFilter, s as parseAst, t as Visitor, tt as rolldownVersion, u as createFetchableDevEnvironment, v as preview, w as BuildEnvironment, x as isRunnableDevEnvironment, z as isFileServingAllowed } from "./chunks/node.js";
|
|
1
|
+
import { $ as mergeConfig, A as createServer, B as ssrTransform, C as fetchModule, D as optimizeDeps, E as createBuilder, F as createIdResolver, G as resolveEnvPrefix, H as createServerModuleRunnerTransport, I as perEnvironmentState, J as createLogger, K as transformWithOxc, L as isFileLoadingAllowed, M as formatPostcssSourceMap, N as preprocessCSS, P as searchForWorkspaceRoot, Q as mergeAlias, R as isFileServingAllowed, S as DevEnvironment, T as build, U as buildErrorMessage, V as createServerModuleRunner, W as loadEnv, X as createFilter, Y as perEnvironmentPlugin, Z as isCSSRequest, _ as runnerImport, a as minifySync, at as DEFAULT_CLIENT_MAIN_FIELDS, b as createRunnableDevEnvironment, c as parseAstAsync, ct as DEFAULT_SERVER_MAIN_FIELDS, d as isFetchableDevEnvironment, dt as defaultAllowedOrigins, et as normalizePath, g as sortUserPlugins, h as resolveConfig, i as minify, it as DEFAULT_CLIENT_CONDITIONS, k as createServerHotChannel, l as parseSync, lt as VERSION, m as loadConfigFromFile, n as esbuildVersion, nt as rollupVersion, o as parse, ot as DEFAULT_EXTERNAL_CONDITIONS, p as defineConfig, q as transformWithEsbuild, r as esmExternalRequirePlugin, rt as withFilter, s as parseAst, st as DEFAULT_SERVER_CONDITIONS, t as Visitor, tt as rolldownVersion, u as createFetchableDevEnvironment, v as preview, w as BuildEnvironment, x as isRunnableDevEnvironment, z as send } from "./chunks/node.js";
|
|
3
2
|
export { BuildEnvironment, DevEnvironment, Visitor, build, buildErrorMessage, createBuilder, createFetchableDevEnvironment, createFilter, createIdResolver, createLogger, createRunnableDevEnvironment, createServer, createServerHotChannel, createServerModuleRunner, createServerModuleRunnerTransport, defaultAllowedOrigins, DEFAULT_CLIENT_CONDITIONS as defaultClientConditions, DEFAULT_CLIENT_MAIN_FIELDS as defaultClientMainFields, DEFAULT_EXTERNAL_CONDITIONS as defaultExternalConditions, DEFAULT_SERVER_CONDITIONS as defaultServerConditions, DEFAULT_SERVER_MAIN_FIELDS as defaultServerMainFields, defineConfig, esbuildVersion, esmExternalRequirePlugin, fetchModule, formatPostcssSourceMap, isCSSRequest, isFetchableDevEnvironment, isFileLoadingAllowed, isFileServingAllowed, isRunnableDevEnvironment, loadConfigFromFile, loadEnv, mergeAlias, mergeConfig, minify, minifySync, ssrTransform as moduleRunnerTransform, normalizePath, optimizeDeps, parse, parseAst, parseAstAsync, parseSync, perEnvironmentPlugin, perEnvironmentState, preprocessCSS, preview, resolveConfig, resolveEnvPrefix, rolldownVersion, rollupVersion, runnerImport, searchForWorkspaceRoot, send, sortUserPlugins, transformWithEsbuild, transformWithOxc, VERSION as version, withFilter };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voidzero-dev/vite-plus-core",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "The Unified Toolchain for the Web",
|
|
5
5
|
"homepage": "https://viteplus.dev/guide",
|
|
6
6
|
"bugs": {
|
|
@@ -97,10 +97,12 @@
|
|
|
97
97
|
"./types/internal/*": null
|
|
98
98
|
},
|
|
99
99
|
"dependencies": {
|
|
100
|
-
"@oxc-project/runtime": "=0.
|
|
101
|
-
"@oxc-project/types": "=0.
|
|
100
|
+
"@oxc-project/runtime": "=0.139.0",
|
|
101
|
+
"@oxc-project/types": "=0.139.0",
|
|
102
102
|
"lightningcss": "^1.32.0",
|
|
103
|
-
"postcss": "^8.5.6"
|
|
103
|
+
"postcss": "^8.5.6",
|
|
104
|
+
"yuku-codegen": "^0.5.44",
|
|
105
|
+
"yuku-parser": "^0.5.44"
|
|
104
106
|
},
|
|
105
107
|
"devDependencies": {
|
|
106
108
|
"@ast-grep/napi": "^0.43.0",
|
|
@@ -109,14 +111,14 @@
|
|
|
109
111
|
"@babel/types": "^7.28.5",
|
|
110
112
|
"@oxc-node/cli": "^0.1.0",
|
|
111
113
|
"@oxc-node/core": "^0.1.0",
|
|
112
|
-
"@tsdown/css": "^0.22.
|
|
113
|
-
"@tsdown/exe": "^0.22.
|
|
114
|
-
"@vitejs/devtools": "^0.
|
|
114
|
+
"@tsdown/css": "^0.22.7",
|
|
115
|
+
"@tsdown/exe": "^0.22.7",
|
|
116
|
+
"@vitejs/devtools": "^0.4.0",
|
|
115
117
|
"es-module-lexer": "^1.7.0",
|
|
116
118
|
"hookable": "^6.0.1",
|
|
117
119
|
"magic-string": "^0.30.21",
|
|
118
|
-
"oxc-parser": "=0.
|
|
119
|
-
"oxfmt": "=0.
|
|
120
|
+
"oxc-parser": "=0.139.0",
|
|
121
|
+
"oxfmt": "=0.58.0",
|
|
120
122
|
"picocolors": "^1.1.1",
|
|
121
123
|
"picomatch": "^4.0.3",
|
|
122
124
|
"pkg-types": "^2.3.0",
|
|
@@ -126,9 +128,9 @@
|
|
|
126
128
|
"semver": "^7.7.3",
|
|
127
129
|
"tinyglobby": "^0.2.15",
|
|
128
130
|
"tree-kill": "^1.2.2",
|
|
129
|
-
"tsdown": "^0.22.
|
|
130
|
-
"rolldown": "1.1.
|
|
131
|
-
"vite": "npm:@voidzero-dev/vite-plus-core@0.2.
|
|
131
|
+
"tsdown": "^0.22.7",
|
|
132
|
+
"rolldown": "1.1.5",
|
|
133
|
+
"vite": "npm:@voidzero-dev/vite-plus-core@0.2.5"
|
|
132
134
|
},
|
|
133
135
|
"peerDependencies": {
|
|
134
136
|
"@arethetypeswrong/core": "^0.18.1",
|
|
@@ -144,7 +146,7 @@
|
|
|
144
146
|
"sugarss": "^5.0.0",
|
|
145
147
|
"terser": "^5.16.0",
|
|
146
148
|
"tsx": "^4.8.1",
|
|
147
|
-
"typescript": "^5.0.0 || ^6.0.0",
|
|
149
|
+
"typescript": "^5.0.0 || ^6.0.0 || ^7.0.0",
|
|
148
150
|
"unplugin-unused": "^0.5.0",
|
|
149
151
|
"unrun": "*",
|
|
150
152
|
"yaml": "^2.4.2"
|
|
@@ -209,9 +211,9 @@
|
|
|
209
211
|
"node": "^20.19.0 || ^22.18.0 || >=24.11.0"
|
|
210
212
|
},
|
|
211
213
|
"bundledVersions": {
|
|
212
|
-
"vite": "8.1.
|
|
213
|
-
"rolldown": "1.1.
|
|
214
|
-
"tsdown": "0.22.
|
|
214
|
+
"vite": "8.1.4",
|
|
215
|
+
"rolldown": "1.1.5",
|
|
216
|
+
"tsdown": "0.22.7"
|
|
215
217
|
},
|
|
216
218
|
"scripts": {
|
|
217
219
|
"build": "oxnode -C dev ./build.ts"
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
//#region ../../node_modules/.pnpm/birpc@4.0.0/node_modules/birpc/dist/index.mjs
|
|
2
|
-
const TYPE_REQUEST = "q";
|
|
3
|
-
const TYPE_RESPONSE = "s";
|
|
4
|
-
function createPromiseWithResolvers() {
|
|
5
|
-
let resolve;
|
|
6
|
-
let reject;
|
|
7
|
-
return {
|
|
8
|
-
promise: new Promise((res, rej) => {
|
|
9
|
-
resolve = res;
|
|
10
|
-
reject = rej;
|
|
11
|
-
}),
|
|
12
|
-
resolve,
|
|
13
|
-
reject
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
const random = Math.random.bind(Math);
|
|
17
|
-
const urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
|
|
18
|
-
function nanoid(size = 21) {
|
|
19
|
-
let id = "";
|
|
20
|
-
let i = size;
|
|
21
|
-
while (i--) id += urlAlphabet[random() * 64 | 0];
|
|
22
|
-
return id;
|
|
23
|
-
}
|
|
24
|
-
const DEFAULT_TIMEOUT = 6e4;
|
|
25
|
-
const defaultSerialize = (i) => i;
|
|
26
|
-
const defaultDeserialize = defaultSerialize;
|
|
27
|
-
const { clearTimeout, setTimeout } = globalThis;
|
|
28
|
-
function createBirpc($functions, options) {
|
|
29
|
-
const { post, on, off = () => {}, eventNames = [], serialize = defaultSerialize, deserialize = defaultDeserialize, resolver, bind = "rpc", timeout = DEFAULT_TIMEOUT, proxify = true } = options;
|
|
30
|
-
let $closed = false;
|
|
31
|
-
const _rpcPromiseMap = /* @__PURE__ */ new Map();
|
|
32
|
-
let _promiseInit;
|
|
33
|
-
let rpc;
|
|
34
|
-
async function _call(method, args, event, optional) {
|
|
35
|
-
if ($closed) throw new Error(`[birpc] rpc is closed, cannot call "${method}"`);
|
|
36
|
-
const req = {
|
|
37
|
-
m: method,
|
|
38
|
-
a: args,
|
|
39
|
-
t: TYPE_REQUEST
|
|
40
|
-
};
|
|
41
|
-
if (optional) req.o = true;
|
|
42
|
-
const send = async (_req) => post(serialize(_req));
|
|
43
|
-
if (event) {
|
|
44
|
-
await send(req);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
if (_promiseInit) try {
|
|
48
|
-
await _promiseInit;
|
|
49
|
-
} finally {
|
|
50
|
-
_promiseInit = void 0;
|
|
51
|
-
}
|
|
52
|
-
let { promise, resolve, reject } = createPromiseWithResolvers();
|
|
53
|
-
const id = nanoid();
|
|
54
|
-
req.i = id;
|
|
55
|
-
let timeoutId;
|
|
56
|
-
async function handler(newReq = req) {
|
|
57
|
-
if (timeout >= 0) {
|
|
58
|
-
timeoutId = setTimeout(() => {
|
|
59
|
-
try {
|
|
60
|
-
if (options.onTimeoutError?.call(rpc, method, args) !== true) throw new Error(`[birpc] timeout on calling "${method}"`);
|
|
61
|
-
} catch (e) {
|
|
62
|
-
reject(e);
|
|
63
|
-
}
|
|
64
|
-
_rpcPromiseMap.delete(id);
|
|
65
|
-
}, timeout);
|
|
66
|
-
if (typeof timeoutId === "object") timeoutId = timeoutId.unref?.();
|
|
67
|
-
}
|
|
68
|
-
_rpcPromiseMap.set(id, {
|
|
69
|
-
resolve,
|
|
70
|
-
reject,
|
|
71
|
-
timeoutId,
|
|
72
|
-
method
|
|
73
|
-
});
|
|
74
|
-
await send(newReq);
|
|
75
|
-
return promise;
|
|
76
|
-
}
|
|
77
|
-
try {
|
|
78
|
-
if (options.onRequest) await options.onRequest.call(rpc, req, handler, resolve);
|
|
79
|
-
else await handler();
|
|
80
|
-
} catch (e) {
|
|
81
|
-
if (options.onGeneralError?.call(rpc, e) !== true) throw e;
|
|
82
|
-
return;
|
|
83
|
-
} finally {
|
|
84
|
-
clearTimeout(timeoutId);
|
|
85
|
-
_rpcPromiseMap.delete(id);
|
|
86
|
-
}
|
|
87
|
-
return promise;
|
|
88
|
-
}
|
|
89
|
-
const builtinMethods = {
|
|
90
|
-
$call: (method, ...args) => _call(method, args, false),
|
|
91
|
-
$callOptional: (method, ...args) => _call(method, args, false, true),
|
|
92
|
-
$callEvent: (method, ...args) => _call(method, args, true),
|
|
93
|
-
$callRaw: (options$1) => _call(options$1.method, options$1.args, options$1.event, options$1.optional),
|
|
94
|
-
$rejectPendingCalls,
|
|
95
|
-
get $closed() {
|
|
96
|
-
return $closed;
|
|
97
|
-
},
|
|
98
|
-
get $meta() {
|
|
99
|
-
return options.meta;
|
|
100
|
-
},
|
|
101
|
-
$close,
|
|
102
|
-
$functions
|
|
103
|
-
};
|
|
104
|
-
if (proxify) rpc = new Proxy({}, { get(_, method) {
|
|
105
|
-
if (Object.prototype.hasOwnProperty.call(builtinMethods, method)) return builtinMethods[method];
|
|
106
|
-
if (method === "then" && !eventNames.includes("then") && !("then" in $functions)) return void 0;
|
|
107
|
-
const sendEvent = (...args) => _call(method, args, true);
|
|
108
|
-
if (eventNames.includes(method)) {
|
|
109
|
-
sendEvent.asEvent = sendEvent;
|
|
110
|
-
return sendEvent;
|
|
111
|
-
}
|
|
112
|
-
const sendCall = (...args) => _call(method, args, false);
|
|
113
|
-
sendCall.asEvent = sendEvent;
|
|
114
|
-
return sendCall;
|
|
115
|
-
} });
|
|
116
|
-
else rpc = builtinMethods;
|
|
117
|
-
function $close(customError) {
|
|
118
|
-
$closed = true;
|
|
119
|
-
_rpcPromiseMap.forEach(({ reject, method }) => {
|
|
120
|
-
const error = /* @__PURE__ */ new Error(`[birpc] rpc is closed, cannot call "${method}"`);
|
|
121
|
-
if (customError) {
|
|
122
|
-
customError.cause ??= error;
|
|
123
|
-
return reject(customError);
|
|
124
|
-
}
|
|
125
|
-
reject(error);
|
|
126
|
-
});
|
|
127
|
-
_rpcPromiseMap.clear();
|
|
128
|
-
off(onMessage);
|
|
129
|
-
}
|
|
130
|
-
function $rejectPendingCalls(handler) {
|
|
131
|
-
const handlerResults = Array.from(_rpcPromiseMap.values()).map(({ method, reject }) => {
|
|
132
|
-
if (!handler) return reject(/* @__PURE__ */ new Error(`[birpc]: rejected pending call "${method}".`));
|
|
133
|
-
return handler({
|
|
134
|
-
method,
|
|
135
|
-
reject
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
_rpcPromiseMap.clear();
|
|
139
|
-
return handlerResults;
|
|
140
|
-
}
|
|
141
|
-
async function onMessage(data, ...extra) {
|
|
142
|
-
let msg;
|
|
143
|
-
try {
|
|
144
|
-
msg = deserialize(data);
|
|
145
|
-
} catch (e) {
|
|
146
|
-
if (options.onGeneralError?.call(rpc, e) !== true) throw e;
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
if (msg.t === TYPE_REQUEST) {
|
|
150
|
-
const { m: method, a: args, o: optional } = msg;
|
|
151
|
-
let result, error;
|
|
152
|
-
let fn = await (resolver ? resolver.call(rpc, method, $functions[method]) : $functions[method]);
|
|
153
|
-
if (optional) fn ||= () => void 0;
|
|
154
|
-
if (!fn) error = /* @__PURE__ */ new Error(`[birpc] function "${method}" not found`);
|
|
155
|
-
else try {
|
|
156
|
-
result = await fn.apply(bind === "rpc" ? rpc : $functions, args);
|
|
157
|
-
} catch (e) {
|
|
158
|
-
error = e;
|
|
159
|
-
}
|
|
160
|
-
if (msg.i) {
|
|
161
|
-
if (error && options.onFunctionError) {
|
|
162
|
-
if (options.onFunctionError.call(rpc, error, method, args) === true) return;
|
|
163
|
-
}
|
|
164
|
-
if (!error) try {
|
|
165
|
-
await post(serialize({
|
|
166
|
-
t: TYPE_RESPONSE,
|
|
167
|
-
i: msg.i,
|
|
168
|
-
r: result
|
|
169
|
-
}), ...extra);
|
|
170
|
-
return;
|
|
171
|
-
} catch (e) {
|
|
172
|
-
error = e;
|
|
173
|
-
if (options.onGeneralError?.call(rpc, e, method, args) !== true) throw e;
|
|
174
|
-
}
|
|
175
|
-
try {
|
|
176
|
-
await post(serialize({
|
|
177
|
-
t: TYPE_RESPONSE,
|
|
178
|
-
i: msg.i,
|
|
179
|
-
e: error
|
|
180
|
-
}), ...extra);
|
|
181
|
-
} catch (e) {
|
|
182
|
-
if (options.onGeneralError?.call(rpc, e, method, args) !== true) throw e;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
} else {
|
|
186
|
-
const { i: ack, r: result, e: error } = msg;
|
|
187
|
-
const promise = _rpcPromiseMap.get(ack);
|
|
188
|
-
if (promise) {
|
|
189
|
-
clearTimeout(promise.timeoutId);
|
|
190
|
-
if (error) promise.reject(error);
|
|
191
|
-
else promise.resolve(result);
|
|
192
|
-
}
|
|
193
|
-
_rpcPromiseMap.delete(ack);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
_promiseInit = on(onMessage);
|
|
197
|
-
return rpc;
|
|
198
|
-
}
|
|
199
|
-
//#endregion
|
|
200
|
-
export { createBirpc };
|