@nocobase/server 0.14.0-alpha.2 → 0.14.0-alpha.4
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/lib/app-command.d.ts +8 -0
- package/lib/app-command.js +59 -0
- package/lib/application.d.ts +8 -7
- package/lib/application.js +10 -4
- package/lib/commands/install.js +1 -1
- package/lib/commands/pm.js +6 -7
- package/lib/commands/restart.js +1 -1
- package/lib/commands/stop.js +1 -1
- package/lib/commands/upgrade.js +1 -1
- package/lib/gateway/index.js +4 -2
- package/lib/gateway/ipc-socket-server.d.ts +1 -1
- package/lib/gateway/ipc-socket-server.js +6 -0
- package/lib/locale/locale.js +9 -2
- package/lib/plugin-manager/options/resource.js +1 -4
- package/lib/swagger/index.json +6 -2
- package/package.json +12 -12
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export declare class AppCommand extends Command {
|
|
3
|
+
private _handleByIPCServer;
|
|
4
|
+
ipc(): this;
|
|
5
|
+
isHandleByIPCServer(): boolean;
|
|
6
|
+
createCommand(name?: string): AppCommand;
|
|
7
|
+
parseHandleByIPCServer(argv: any, parseOptions?: any): Boolean;
|
|
8
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var app_command_exports = {};
|
|
20
|
+
__export(app_command_exports, {
|
|
21
|
+
AppCommand: () => AppCommand
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(app_command_exports);
|
|
24
|
+
var import_commander = require("commander");
|
|
25
|
+
const _AppCommand = class _AppCommand extends import_commander.Command {
|
|
26
|
+
_handleByIPCServer = false;
|
|
27
|
+
ipc() {
|
|
28
|
+
this._handleByIPCServer = true;
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
isHandleByIPCServer() {
|
|
32
|
+
return this._handleByIPCServer;
|
|
33
|
+
}
|
|
34
|
+
createCommand(name) {
|
|
35
|
+
return new _AppCommand(name);
|
|
36
|
+
}
|
|
37
|
+
parseHandleByIPCServer(argv, parseOptions) {
|
|
38
|
+
const userArgs = this._prepareUserArgs(argv, parseOptions);
|
|
39
|
+
if (userArgs[0] === "nocobase") {
|
|
40
|
+
userArgs.shift();
|
|
41
|
+
}
|
|
42
|
+
let lastCommand = this;
|
|
43
|
+
for (const arg of userArgs) {
|
|
44
|
+
const subCommand = lastCommand._findCommand(arg);
|
|
45
|
+
if (subCommand) {
|
|
46
|
+
lastCommand = subCommand;
|
|
47
|
+
} else {
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return lastCommand && lastCommand.isHandleByIPCServer();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
__name(_AppCommand, "AppCommand");
|
|
55
|
+
let AppCommand = _AppCommand;
|
|
56
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
57
|
+
0 && (module.exports = {
|
|
58
|
+
AppCommand
|
|
59
|
+
});
|
package/lib/application.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ import { ApplicationVersion } from './helpers/application-version';
|
|
|
16
16
|
import { Locale } from './locale';
|
|
17
17
|
import { Plugin } from './plugin';
|
|
18
18
|
import { InstallOptions, PluginManager } from './plugin-manager';
|
|
19
|
+
import { AppCommand } from './app-command';
|
|
19
20
|
export type PluginType = string | typeof Plugin;
|
|
20
21
|
export type PluginConfiguration = PluginType | [PluginType, any];
|
|
21
22
|
export interface ResourcerOptions {
|
|
@@ -97,8 +98,8 @@ export declare class Application<StateT = DefaultState, ContextT = DefaultContex
|
|
|
97
98
|
get resourcer(): Resourcer;
|
|
98
99
|
protected _cache: Cache;
|
|
99
100
|
get cache(): Cache;
|
|
100
|
-
protected _cli:
|
|
101
|
-
get cli():
|
|
101
|
+
protected _cli: AppCommand;
|
|
102
|
+
get cli(): AppCommand;
|
|
102
103
|
protected _i18n: i18n;
|
|
103
104
|
get i18n(): i18n;
|
|
104
105
|
protected _pm: PluginManager;
|
|
@@ -124,18 +125,18 @@ export declare class Application<StateT = DefaultState, ContextT = DefaultContex
|
|
|
124
125
|
collection(options: CollectionOptions): import("@nocobase/database").Collection<any, any>;
|
|
125
126
|
resource(options: ResourceOptions): import("@nocobase/resourcer").Resource;
|
|
126
127
|
actions(handlers: any, options?: ActionsOptions): void;
|
|
127
|
-
command(name: string, desc?: string, opts?: CommandOptions):
|
|
128
|
+
command(name: string, desc?: string, opts?: CommandOptions): AppCommand;
|
|
128
129
|
findCommand(name: string): Command;
|
|
129
130
|
load(options?: any): Promise<void>;
|
|
130
131
|
reload(options?: any): Promise<void>;
|
|
131
132
|
getPlugin<P extends Plugin>(name: string | typeof Plugin): P;
|
|
132
|
-
parse(argv?: string[]): Promise<
|
|
133
|
+
parse(argv?: string[]): Promise<AppCommand>;
|
|
133
134
|
authenticate(): Promise<void>;
|
|
134
|
-
runCommand(command: string, ...args: any[]): Promise<
|
|
135
|
-
createCli():
|
|
135
|
+
runCommand(command: string, ...args: any[]): Promise<AppCommand>;
|
|
136
|
+
createCli(): AppCommand;
|
|
136
137
|
runAsCLI(argv?: string[], options?: ParseOptions & {
|
|
137
138
|
throwError?: boolean;
|
|
138
|
-
}): Promise<
|
|
139
|
+
}): Promise<AppCommand>;
|
|
139
140
|
start(options?: StartOptions): Promise<void>;
|
|
140
141
|
emitStartedEvent(): Promise<void>;
|
|
141
142
|
isStarted(): Promise<boolean>;
|
package/lib/application.js
CHANGED
|
@@ -39,7 +39,6 @@ var import_database = __toESM(require("@nocobase/database"));
|
|
|
39
39
|
var import_logger = require("@nocobase/logger");
|
|
40
40
|
var import_utils = require("@nocobase/utils");
|
|
41
41
|
var import_chalk = __toESM(require("chalk"));
|
|
42
|
-
var import_commander = require("commander");
|
|
43
42
|
var import_koa = __toESM(require("koa"));
|
|
44
43
|
var import_koa_compose = __toESM(require("koa-compose"));
|
|
45
44
|
var import_lodash = __toESM(require("lodash"));
|
|
@@ -51,6 +50,7 @@ var import_helper = require("./helper");
|
|
|
51
50
|
var import_application_version = require("./helpers/application-version");
|
|
52
51
|
var import_locale = require("./locale");
|
|
53
52
|
var import_plugin_manager = require("./plugin-manager");
|
|
53
|
+
var import_app_command = require("./app-command");
|
|
54
54
|
const packageJson = require("../package.json");
|
|
55
55
|
const _Application = class _Application extends import_koa.default {
|
|
56
56
|
constructor(options) {
|
|
@@ -236,7 +236,7 @@ const _Application = class _Application extends import_koa.default {
|
|
|
236
236
|
return;
|
|
237
237
|
}
|
|
238
238
|
this._authenticated = true;
|
|
239
|
-
await this.db.auth(
|
|
239
|
+
await this.db.auth();
|
|
240
240
|
await this.dbVersionCheck({ exit: true });
|
|
241
241
|
await this.db.prepare();
|
|
242
242
|
}
|
|
@@ -244,7 +244,7 @@ const _Application = class _Application extends import_koa.default {
|
|
|
244
244
|
return await this.runAsCLI([command, ...args], { from: "user" });
|
|
245
245
|
}
|
|
246
246
|
createCli() {
|
|
247
|
-
const command = new
|
|
247
|
+
const command = new import_app_command.AppCommand("nocobase").usage("[command] [options]").hook("preAction", async (_, actionCommand) => {
|
|
248
248
|
this._actionCommand = actionCommand;
|
|
249
249
|
this.activatedCommand = {
|
|
250
250
|
name: (0, import_helper.getCommandFullName)(actionCommand)
|
|
@@ -283,6 +283,7 @@ const _Application = class _Application extends import_koa.default {
|
|
|
283
283
|
});
|
|
284
284
|
return command;
|
|
285
285
|
} catch (error) {
|
|
286
|
+
console.log({ error });
|
|
286
287
|
if (!this.activatedCommand) {
|
|
287
288
|
this.activatedCommand = {
|
|
288
289
|
name: "unknown"
|
|
@@ -299,11 +300,16 @@ const _Application = class _Application extends import_koa.default {
|
|
|
299
300
|
} finally {
|
|
300
301
|
const _actionCommand = this._actionCommand;
|
|
301
302
|
if (_actionCommand) {
|
|
303
|
+
const options2 = _actionCommand["options"];
|
|
302
304
|
_actionCommand["_optionValues"] = {};
|
|
303
305
|
_actionCommand["_optionValueSources"] = {};
|
|
306
|
+
_actionCommand["options"] = [];
|
|
307
|
+
for (const option of options2) {
|
|
308
|
+
_actionCommand.addOption(option);
|
|
309
|
+
}
|
|
304
310
|
}
|
|
305
|
-
this.activatedCommand = null;
|
|
306
311
|
this._actionCommand = null;
|
|
312
|
+
this.activatedCommand = null;
|
|
307
313
|
}
|
|
308
314
|
}
|
|
309
315
|
async start(options = {}) {
|
package/lib/commands/install.js
CHANGED
|
@@ -22,7 +22,7 @@ __export(install_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(install_exports);
|
|
24
24
|
var install_default = /* @__PURE__ */ __name((app) => {
|
|
25
|
-
app.command("install").option("-f, --force").option("-c, --clean").action(async (...cliArgs) => {
|
|
25
|
+
app.command("install").ipc().option("-f, --force").option("-c, --clean").action(async (...cliArgs) => {
|
|
26
26
|
const [opts] = cliArgs;
|
|
27
27
|
await app.install({
|
|
28
28
|
cliArgs,
|
package/lib/commands/pm.js
CHANGED
|
@@ -35,18 +35,17 @@ var import_lodash = __toESM(require("lodash"));
|
|
|
35
35
|
var import_plugin_command_error = require("../errors/plugin-command-error");
|
|
36
36
|
var pm_default = /* @__PURE__ */ __name((app) => {
|
|
37
37
|
const pm = app.command("pm");
|
|
38
|
-
pm.command("create").arguments("plugin").action(async (plugin) => {
|
|
38
|
+
pm.command("create").ipc().arguments("plugin").action(async (plugin) => {
|
|
39
39
|
await app.pm.create(plugin);
|
|
40
40
|
});
|
|
41
|
-
pm.command("add").argument("<pkg>").option("--registry [registry]").option("--auth-token [authToken]").option("--version [version]").action(async (name, options, cli) => {
|
|
42
|
-
console.log("pm.add", name, options);
|
|
41
|
+
pm.command("add").ipc().argument("<pkg>").option("--registry [registry]").option("--auth-token [authToken]").option("--version [version]").action(async (name, options, cli) => {
|
|
43
42
|
try {
|
|
44
43
|
await app.pm.addViaCLI(name, import_lodash.default.cloneDeep(options));
|
|
45
44
|
} catch (error) {
|
|
46
45
|
throw new import_plugin_command_error.PluginCommandError(`Failed to add plugin: ${error.message}`);
|
|
47
46
|
}
|
|
48
47
|
});
|
|
49
|
-
pm.command("update").argument("<packageName>").option("--path [path]").option("--url [url]").option("--registry [registry]").option("--auth-token [authToken]").option("--version [version]").action(async (packageName, options) => {
|
|
48
|
+
pm.command("update").ipc().argument("<packageName>").option("--path [path]").option("--url [url]").option("--registry [registry]").option("--auth-token [authToken]").option("--version [version]").action(async (packageName, options) => {
|
|
50
49
|
try {
|
|
51
50
|
await app.pm.update({
|
|
52
51
|
...options,
|
|
@@ -56,21 +55,21 @@ var pm_default = /* @__PURE__ */ __name((app) => {
|
|
|
56
55
|
throw new import_plugin_command_error.PluginCommandError(`Failed to update plugin: ${error.message}`);
|
|
57
56
|
}
|
|
58
57
|
});
|
|
59
|
-
pm.command("enable").arguments("<plugins...>").action(async (plugins) => {
|
|
58
|
+
pm.command("enable").ipc().arguments("<plugins...>").action(async (plugins) => {
|
|
60
59
|
try {
|
|
61
60
|
await app.pm.enable(plugins);
|
|
62
61
|
} catch (error) {
|
|
63
62
|
throw new import_plugin_command_error.PluginCommandError(`Failed to enable plugin: ${error.message}`);
|
|
64
63
|
}
|
|
65
64
|
});
|
|
66
|
-
pm.command("disable").arguments("<plugins...>").action(async (plugins) => {
|
|
65
|
+
pm.command("disable").ipc().arguments("<plugins...>").action(async (plugins) => {
|
|
67
66
|
try {
|
|
68
67
|
await app.pm.disable(plugins);
|
|
69
68
|
} catch (error) {
|
|
70
69
|
throw new import_plugin_command_error.PluginCommandError(`Failed to disable plugin: ${error.message}`);
|
|
71
70
|
}
|
|
72
71
|
});
|
|
73
|
-
pm.command("remove").arguments("<plugins...>").action(async (plugins) => {
|
|
72
|
+
pm.command("remove").ipc().arguments("<plugins...>").action(async (plugins) => {
|
|
74
73
|
await app.pm.remove(plugins);
|
|
75
74
|
});
|
|
76
75
|
}, "default");
|
package/lib/commands/restart.js
CHANGED
|
@@ -22,7 +22,7 @@ __export(restart_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(restart_exports);
|
|
24
24
|
var restart_default = /* @__PURE__ */ __name((app) => {
|
|
25
|
-
app.command("restart").action(async (...cliArgs) => {
|
|
25
|
+
app.command("restart").ipc().action(async (...cliArgs) => {
|
|
26
26
|
await app.restart({
|
|
27
27
|
cliArgs
|
|
28
28
|
});
|
package/lib/commands/stop.js
CHANGED
|
@@ -22,7 +22,7 @@ __export(stop_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(stop_exports);
|
|
24
24
|
var stop_default = /* @__PURE__ */ __name((app) => {
|
|
25
|
-
app.command("stop").action(async (...cliArgs) => {
|
|
25
|
+
app.command("stop").ipc().action(async (...cliArgs) => {
|
|
26
26
|
await app.stop({
|
|
27
27
|
cliArgs
|
|
28
28
|
});
|
package/lib/commands/upgrade.js
CHANGED
|
@@ -33,7 +33,7 @@ __export(upgrade_exports, {
|
|
|
33
33
|
module.exports = __toCommonJS(upgrade_exports);
|
|
34
34
|
var import_chalk = __toESM(require("chalk"));
|
|
35
35
|
var upgrade_default = /* @__PURE__ */ __name((app) => {
|
|
36
|
-
app.command("upgrade").action(async (...cliArgs) => {
|
|
36
|
+
app.command("upgrade").ipc().action(async (...cliArgs) => {
|
|
37
37
|
const [opts] = cliArgs;
|
|
38
38
|
console.log("upgrading...");
|
|
39
39
|
await app.upgrade();
|
package/lib/gateway/index.js
CHANGED
|
@@ -201,9 +201,11 @@ const _Gateway = class _Gateway extends import_events.EventEmitter {
|
|
|
201
201
|
} else if (!this.isHelp()) {
|
|
202
202
|
ipcClient = await this.tryConnectToIPCServer();
|
|
203
203
|
if (ipcClient) {
|
|
204
|
-
await ipcClient.write({ type: "passCliArgv", payload: { argv: process.argv } });
|
|
204
|
+
const response = await ipcClient.write({ type: "passCliArgv", payload: { argv: process.argv } });
|
|
205
205
|
ipcClient.close();
|
|
206
|
-
|
|
206
|
+
if (response.type !== "error" || response.payload.message !== "Not handle by ipc server") {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
207
209
|
}
|
|
208
210
|
}
|
|
209
211
|
if (isStart || !ipcClient) {
|
|
@@ -82,6 +82,12 @@ const _IPCSocketServer = class _IPCSocketServer {
|
|
|
82
82
|
if (type === "passCliArgv") {
|
|
83
83
|
const argv = payload.argv;
|
|
84
84
|
const mainApp = await import_app_supervisor.AppSupervisor.getInstance().getApp("main");
|
|
85
|
+
const cli = mainApp.cli;
|
|
86
|
+
if (!cli.parseHandleByIPCServer(argv, {
|
|
87
|
+
from: "node"
|
|
88
|
+
})) {
|
|
89
|
+
throw new Error("Not handle by ipc server");
|
|
90
|
+
}
|
|
85
91
|
return mainApp.runAsCLI(argv, {
|
|
86
92
|
from: "node",
|
|
87
93
|
throwError: true
|
package/lib/locale/locale.js
CHANGED
|
@@ -23,7 +23,6 @@ __export(locale_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(locale_exports);
|
|
24
24
|
var import_cache = require("@nocobase/cache");
|
|
25
25
|
var import_utils = require("@nocobase/utils");
|
|
26
|
-
var import_plugin_manager = require("../plugin-manager");
|
|
27
26
|
var import_resource = require("./resource");
|
|
28
27
|
const _Locale = class _Locale {
|
|
29
28
|
app;
|
|
@@ -75,11 +74,19 @@ const _Locale = class _Locale {
|
|
|
75
74
|
return await this.wrapCache(`locale:resources:${lang}`, () => this.getResources(lang));
|
|
76
75
|
}
|
|
77
76
|
getResources(lang) {
|
|
77
|
+
var _a;
|
|
78
78
|
const resources = {};
|
|
79
79
|
const names = this.app.pm.getAliases();
|
|
80
80
|
for (const name of names) {
|
|
81
81
|
try {
|
|
82
|
-
const
|
|
82
|
+
const p = this.app.pm.get(name);
|
|
83
|
+
if (!p) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const packageName = (_a = p.options) == null ? void 0 : _a.packageName;
|
|
87
|
+
if (!packageName) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
83
90
|
const res = (0, import_resource.getResource)(packageName, lang);
|
|
84
91
|
if (res) {
|
|
85
92
|
resources[name] = { ...res };
|
|
@@ -34,7 +34,6 @@ var import_utils = require("@nocobase/utils");
|
|
|
34
34
|
var import_fs = __toESM(require("fs"));
|
|
35
35
|
var import_path = __toESM(require("path"));
|
|
36
36
|
var import_clientStaticUtils = require("../clientStaticUtils");
|
|
37
|
-
var import_plugin_manager = __toESM(require("../plugin-manager"));
|
|
38
37
|
var resource_default = {
|
|
39
38
|
name: "pm",
|
|
40
39
|
actions: {
|
|
@@ -154,11 +153,9 @@ var resource_default = {
|
|
|
154
153
|
});
|
|
155
154
|
ctx.body = items.map((item) => {
|
|
156
155
|
try {
|
|
157
|
-
const packageName = import_plugin_manager.default.getPackageName(item.name);
|
|
158
156
|
return {
|
|
159
157
|
...item.toJSON(),
|
|
160
|
-
packageName,
|
|
161
|
-
url: (0, import_clientStaticUtils.getExposeUrl)(packageName, PLUGIN_CLIENT_ENTRY_FILE)
|
|
158
|
+
url: (0, import_clientStaticUtils.getExposeUrl)(item.packageName, PLUGIN_CLIENT_ENTRY_FILE)
|
|
162
159
|
};
|
|
163
160
|
} catch {
|
|
164
161
|
return false;
|
package/lib/swagger/index.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/server",
|
|
3
|
-
"version": "0.14.0-alpha.
|
|
3
|
+
"version": "0.14.0-alpha.4",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"types": "./lib/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -10,16 +10,16 @@
|
|
|
10
10
|
"@koa/cors": "^3.1.0",
|
|
11
11
|
"@koa/multer": "^3.0.2",
|
|
12
12
|
"@koa/router": "^9.4.0",
|
|
13
|
-
"@nocobase/acl": "0.14.0-alpha.
|
|
14
|
-
"@nocobase/actions": "0.14.0-alpha.
|
|
15
|
-
"@nocobase/auth": "0.14.0-alpha.
|
|
16
|
-
"@nocobase/cache": "0.14.0-alpha.
|
|
17
|
-
"@nocobase/database": "0.14.0-alpha.
|
|
18
|
-
"@nocobase/evaluators": "0.14.0-alpha.
|
|
19
|
-
"@nocobase/logger": "0.14.0-alpha.
|
|
20
|
-
"@nocobase/resourcer": "0.14.0-alpha.
|
|
21
|
-
"@nocobase/sdk": "0.14.0-alpha.
|
|
22
|
-
"@nocobase/utils": "0.14.0-alpha.
|
|
13
|
+
"@nocobase/acl": "0.14.0-alpha.4",
|
|
14
|
+
"@nocobase/actions": "0.14.0-alpha.4",
|
|
15
|
+
"@nocobase/auth": "0.14.0-alpha.4",
|
|
16
|
+
"@nocobase/cache": "0.14.0-alpha.4",
|
|
17
|
+
"@nocobase/database": "0.14.0-alpha.4",
|
|
18
|
+
"@nocobase/evaluators": "0.14.0-alpha.4",
|
|
19
|
+
"@nocobase/logger": "0.14.0-alpha.4",
|
|
20
|
+
"@nocobase/resourcer": "0.14.0-alpha.4",
|
|
21
|
+
"@nocobase/sdk": "0.14.0-alpha.4",
|
|
22
|
+
"@nocobase/utils": "0.14.0-alpha.4",
|
|
23
23
|
"@types/decompress": "4.2.4",
|
|
24
24
|
"@types/ini": "^1.3.31",
|
|
25
25
|
"@types/koa-send": "^4.1.3",
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"@types/serve-handler": "^6.1.1",
|
|
52
52
|
"@types/ws": "^8.5.5"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "e2aab7863bbdfd76afc7164272b275e868ac59c0"
|
|
55
55
|
}
|