@koishijs/loader
Advanced tools
Comparing version 4.2.7 to 4.3.0
@@ -8,2 +8,3 @@ import { Loader } from './shared'; | ||
init(filename?: string): Promise<void>; | ||
migrate(): Promise<void>; | ||
readConfig(): Promise<import("@koishijs/core").Context.Config>; | ||
@@ -10,0 +11,0 @@ import(name: string): Promise<any>; |
@@ -40,2 +40,3 @@ var __create = Object.create; | ||
var import_fs = require("fs"); | ||
var import_package = require("../package.json"); | ||
var dotenv = __toESM(require("dotenv")); | ||
@@ -61,2 +62,25 @@ var import_ns_require = __toESM(require("ns-require")); | ||
} | ||
async migrate() { | ||
if (this.config["port"]) { | ||
const { port, host, maxPort, selfUrl } = this.config; | ||
delete this.config["port"]; | ||
delete this.config["host"]; | ||
delete this.config["maxPort"]; | ||
delete this.config["selfUrl"]; | ||
this.config.plugins = { | ||
server: { port, host, maxPort, selfUrl }, | ||
...this.config.plugins | ||
}; | ||
try { | ||
const version = import_package.dependencies["@koishijs/plugin-server"]; | ||
const data = JSON.parse(await import_fs.promises.readFile("package.json", "utf8")); | ||
data.dependencies["@koishijs/plugin-server"] = version; | ||
data.dependencies = Object.fromEntries(Object.entries(data.dependencies).sort(([a], [b]) => a.localeCompare(b))); | ||
await import_fs.promises.writeFile("package.json", JSON.stringify(data, null, 2) + "\n"); | ||
} catch { | ||
logger.warn("cannot find package.json, please install @koishijs/plugin-server manually"); | ||
} | ||
} | ||
await super.migrate(); | ||
} | ||
async readConfig() { | ||
@@ -63,0 +87,0 @@ for (const key of this.localKeys) { |
@@ -32,3 +32,3 @@ /// <reference types="node" /> | ||
[Loader.kRecord]?: Dict<ForkScope<C>>; | ||
alias?: string; | ||
key?: string; | ||
} | ||
@@ -55,2 +55,3 @@ } | ||
envFiles: string[]; | ||
names: Set<string>; | ||
cache: Dict<string>; | ||
@@ -64,2 +65,4 @@ prolog: Logger.Record[]; | ||
private findConfig; | ||
private migrateGroup; | ||
migrate(): Promise<void>; | ||
readConfig(): Promise<Context.Config>; | ||
@@ -83,5 +86,5 @@ writeConfig(silent?: boolean): Promise<void>; | ||
unloadPlugin(ctx: Context, key: string): void; | ||
paths(scope: EffectScope, suffix?: string[]): string[]; | ||
paths(scope: EffectScope): string[]; | ||
createApp(): Promise<Context>; | ||
} | ||
export {}; |
@@ -111,2 +111,3 @@ var __create = Object.create; | ||
envFiles; | ||
names = /* @__PURE__ */ new Set(); | ||
cache = /* @__PURE__ */ Object.create(null); | ||
@@ -168,2 +169,28 @@ prolog = []; | ||
} | ||
migrateGroup(plugins) { | ||
const backup = { ...plugins }; | ||
for (const key in backup) | ||
delete plugins[key]; | ||
for (const key in backup) { | ||
if (key.startsWith("$")) { | ||
plugins[key] = backup[key]; | ||
continue; | ||
} | ||
const [name] = key.split(":", 1); | ||
const isGroup = name === "group" || name === "~group"; | ||
if (isGroup) | ||
this.migrateGroup(backup[key]); | ||
let ident = key.slice(name.length + 1); | ||
if (ident && !this.names.has(ident)) { | ||
this.names.add(ident); | ||
plugins[key] = backup[key]; | ||
continue; | ||
} | ||
ident = Math.random().toString(36).slice(2, 8); | ||
plugins[`${name}:${ident}`] = backup[key]; | ||
} | ||
} | ||
async migrate() { | ||
this.migrateGroup(this.config.plugins); | ||
} | ||
async readConfig() { | ||
@@ -178,2 +205,5 @@ if (this.mime === "application/yaml") { | ||
} | ||
await this.migrate(); | ||
if (this.writable) | ||
await this.writeConfig(true); | ||
return new import_core.Context.Config(this.interpolate(this.config)); | ||
@@ -263,3 +293,3 @@ } | ||
ctx[_Loader.ancestor] = fork.uid; | ||
fork.alias = key.slice(name.length + 1); | ||
fork.key = key.slice(name.length + 1); | ||
parent.scope[_Loader.kRecord][key] = fork; | ||
@@ -303,18 +333,11 @@ } | ||
} | ||
paths(scope, suffix = []) { | ||
if (scope === scope.parent.scope) { | ||
return [suffix.slice(1).join("/")]; | ||
} | ||
paths(scope) { | ||
if (scope === scope.parent.scope) | ||
return []; | ||
if (scope.runtime === scope) { | ||
return [].concat(...scope.runtime.children.map((child2) => this.paths(child2, suffix))); | ||
return [].concat(...scope.runtime.children.map((child) => this.paths(child))); | ||
} | ||
const child = scope; | ||
scope = scope.parent.scope; | ||
const record = scope[_Loader.kRecord]; | ||
if (!record) | ||
return this.paths(scope, suffix); | ||
const entry = Object.entries(record).find(([, value]) => value === child); | ||
if (!entry) | ||
return []; | ||
return this.paths(scope, [entry[0], ...suffix]); | ||
if (scope.key) | ||
return [scope.key]; | ||
return this.paths(scope.parent.scope); | ||
} | ||
@@ -321,0 +344,0 @@ async createApp() { |
{ | ||
"name": "@koishijs/loader", | ||
"description": "Config Loader for Koishi", | ||
"version": "4.2.7", | ||
"version": "4.3.0", | ||
"main": "lib/index.js", | ||
@@ -44,9 +44,10 @@ "module": "lib/shared.mjs", | ||
"peerDependencies": { | ||
"@koishijs/core": "4.15.7" | ||
"@koishijs/core": "4.16.0" | ||
}, | ||
"devDependencies": { | ||
"@koishijs/core": "4.15.7", | ||
"@types/js-yaml": "^4.0.8" | ||
"@koishijs/core": "4.16.0", | ||
"@types/js-yaml": "^4.0.9" | ||
}, | ||
"dependencies": { | ||
"@koishijs/plugin-server": "^0.1.3", | ||
"dotenv": "^16.3.1", | ||
@@ -53,0 +54,0 @@ "js-yaml": "^4.1.0", |
import { Logger } from '@koishijs/core' | ||
import { Loader } from './shared' | ||
import { promises as fs } from 'fs' | ||
// @ts-ignore | ||
import { dependencies } from '../package.json' | ||
import * as dotenv from 'dotenv' | ||
@@ -32,2 +34,26 @@ import ns from 'ns-require' | ||
async migrate() { | ||
if (this.config['port']) { | ||
const { port, host, maxPort, selfUrl } = this.config as any | ||
delete this.config['port'] | ||
delete this.config['host'] | ||
delete this.config['maxPort'] | ||
delete this.config['selfUrl'] | ||
this.config.plugins = { | ||
server: { port, host, maxPort, selfUrl }, | ||
...this.config.plugins, | ||
} | ||
try { | ||
const version = dependencies['@koishijs/plugin-server'] | ||
const data = JSON.parse(await fs.readFile('package.json', 'utf8')) | ||
data.dependencies['@koishijs/plugin-server'] = version | ||
data.dependencies = Object.fromEntries(Object.entries(data.dependencies).sort(([a], [b]) => a.localeCompare(b))) | ||
await fs.writeFile('package.json', JSON.stringify(data, null, 2) + '\n') | ||
} catch { | ||
logger.warn('cannot find package.json, please install @koishijs/plugin-server manually') | ||
} | ||
} | ||
await super.migrate() | ||
} | ||
async readConfig() { | ||
@@ -34,0 +60,0 @@ // remove local env variables |
@@ -42,3 +42,3 @@ import { Context, Dict, EffectScope, ForkScope, interpolate, isNullable, Logger, Plugin, Universal, valueMap, version } from '@koishijs/core' | ||
[Loader.kRecord]?: Dict<ForkScope<C>> | ||
alias?: string | ||
key?: string | ||
} | ||
@@ -126,2 +126,3 @@ } | ||
public envFiles: string[] | ||
public names = new Set<string>() | ||
public cache: Dict<string> = Object.create(null) | ||
@@ -190,2 +191,28 @@ public prolog: Logger.Record[] = [] | ||
private migrateGroup(plugins: Dict) { | ||
const backup = { ...plugins } | ||
for (const key in backup) delete plugins[key] | ||
for (const key in backup) { | ||
if (key.startsWith('$')) { | ||
plugins[key] = backup[key] | ||
continue | ||
} | ||
const [name] = key.split(':', 1) | ||
const isGroup = name === 'group' || name === '~group' | ||
if (isGroup) this.migrateGroup(backup[key]) | ||
let ident = key.slice(name.length + 1) | ||
if (ident && !this.names.has(ident)) { | ||
this.names.add(ident) | ||
plugins[key] = backup[key] | ||
continue | ||
} | ||
ident = Math.random().toString(36).slice(2, 8) | ||
plugins[`${name}:${ident}`] = backup[key] | ||
} | ||
} | ||
async migrate() { | ||
this.migrateGroup(this.config.plugins) | ||
} | ||
async readConfig() { | ||
@@ -202,2 +229,4 @@ if (this.mime === 'application/yaml') { | ||
await this.migrate() | ||
if (this.writable) await this.writeConfig(true) | ||
return new Context.Config(this.interpolate(this.config)) | ||
@@ -289,3 +318,3 @@ } | ||
ctx[Loader.ancestor] = fork.uid | ||
fork.alias = key.slice(name.length + 1) | ||
fork.key = key.slice(name.length + 1) | ||
parent.scope[Loader.kRecord][key] = fork | ||
@@ -333,20 +362,13 @@ } | ||
paths(scope: EffectScope, suffix: string[] = []): string[] { | ||
paths(scope: EffectScope): string[] { | ||
// root scope | ||
if (scope === scope.parent.scope) { | ||
return [suffix.slice(1).join('/')] | ||
} | ||
if (scope === scope.parent.scope) return [] | ||
// runtime scope | ||
if (scope.runtime === scope) { | ||
return [].concat(...scope.runtime.children.map(child => this.paths(child, suffix))) | ||
return [].concat(...scope.runtime.children.map(child => this.paths(child))) | ||
} | ||
const child = scope | ||
scope = scope.parent.scope | ||
const record = scope[Loader.kRecord] | ||
if (!record) return this.paths(scope, suffix) | ||
const entry = Object.entries(record).find(([, value]) => value === child) | ||
if (!entry) return [] | ||
return this.paths(scope, [entry[0], ...suffix]) | ||
if (scope.key) return [scope.key] | ||
return this.paths(scope.parent.scope) | ||
} | ||
@@ -353,0 +375,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
67425
1438
5
+ Added@cordisjs/plugin-http@0.6.3(transitive)
+ Added@cordisjs/plugin-proxy-agent@0.3.3(transitive)
+ Added@cordisjs/plugin-server@0.2.5(transitive)
+ Added@cordisjs/server@0.1.8(transitive)
+ Added@hapi/bourne@3.0.0(transitive)
+ Added@koa/router@10.1.1(transitive)
+ Added@koishijs/core@4.16.04.18.7(transitive)
+ Added@koishijs/loader@4.6.7(transitive)
+ Added@koishijs/plugin-http@0.6.3(transitive)
+ Added@koishijs/plugin-proxy-agent@0.3.3(transitive)
+ Added@koishijs/plugin-server@0.1.33.2.4(transitive)
+ Added@satorijs/core@4.5.0(transitive)
+ Added@types/accepts@1.3.7(transitive)
+ Added@types/body-parser@1.19.5(transitive)
+ Added@types/co-body@6.1.3(transitive)
+ Added@types/connect@3.4.38(transitive)
+ Added@types/content-disposition@0.5.8(transitive)
+ Added@types/cookies@0.9.0(transitive)
+ Added@types/express@5.0.0(transitive)
+ Added@types/express-serve-static-core@5.0.6(transitive)
+ Added@types/formidable@2.0.6(transitive)
+ Added@types/http-assert@1.5.6(transitive)
+ Added@types/http-errors@2.0.4(transitive)
+ Added@types/keygrip@1.0.6(transitive)
+ Added@types/koa@2.15.0(transitive)
+ Added@types/koa-compose@3.2.8(transitive)
+ Added@types/koa__router@12.0.4(transitive)
+ Added@types/mime@1.3.5(transitive)
+ Added@types/node@22.13.5(transitive)
+ Added@types/qs@6.9.18(transitive)
+ Added@types/range-parser@1.2.7(transitive)
+ Added@types/send@0.17.4(transitive)
+ Added@types/serve-static@1.15.7(transitive)
+ Added@types/ws@8.5.14(transitive)
+ Addedaccepts@1.3.8(transitive)
+ Addedagent-base@7.1.3(transitive)
+ Addedasap@2.0.6(transitive)
+ Addedbytes@3.1.2(transitive)
+ Addedcache-content-type@1.0.1(transitive)
+ Addedcall-bind-apply-helpers@1.0.2(transitive)
+ Addedcall-bound@1.0.3(transitive)
+ Addedco@4.6.0(transitive)
+ Addedco-body@6.2.0(transitive)
+ Addedcontent-disposition@0.5.4(transitive)
+ Addedcontent-type@1.0.5(transitive)
+ Addedcookies@0.9.1(transitive)
+ Addedcopy-to@2.0.1(transitive)
+ Addeddebug@4.4.0(transitive)
+ Addeddeep-equal@1.0.1(transitive)
+ Addeddelegates@1.0.0(transitive)
+ Addeddepd@1.1.22.0.0(transitive)
+ Addeddestroy@1.2.0(transitive)
+ Addeddezalgo@1.0.4(transitive)
+ Addeddunder-proto@1.0.1(transitive)
+ Addedee-first@1.1.1(transitive)
+ Addedencodeurl@1.0.2(transitive)
+ Addedes-define-property@1.0.1(transitive)
+ Addedes-errors@1.3.0(transitive)
+ Addedes-object-atoms@1.1.1(transitive)
+ Addedescape-html@1.0.3(transitive)
+ Addedformidable@2.1.2(transitive)
+ Addedfresh@0.5.2(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedget-intrinsic@1.3.0(transitive)
+ Addedget-proto@1.0.1(transitive)
+ Addedgopd@1.2.0(transitive)
+ Addedhas-symbols@1.1.0(transitive)
+ Addedhas-tostringtag@1.0.2(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedhexoid@1.0.0(transitive)
+ Addedhttp-assert@1.5.0(transitive)
+ Addedhttp-errors@1.8.12.0.0(transitive)
+ Addedhttp-proxy-agent@7.0.2(transitive)
+ Addedhttps-proxy-agent@7.0.6(transitive)
+ Addediconv-lite@0.4.24(transitive)
+ Addedinflation@2.1.0(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedip-address@9.0.5(transitive)
+ Addedis-generator-function@1.1.0(transitive)
+ Addedis-regex@1.2.1(transitive)
+ Addedjsbn@1.1.0(transitive)
+ Addedkeygrip@1.1.0(transitive)
+ Addedkoa@2.16.0(transitive)
+ Addedkoa-body@6.0.1(transitive)
+ Addedkoa-bodyparser@4.4.1(transitive)
+ Addedkoa-compose@4.2.0(transitive)
+ Addedkoa-convert@2.0.0(transitive)
+ Addedkoishi@4.18.7(transitive)
+ Addedmath-intrinsics@1.1.0(transitive)
+ Addedmedia-typer@0.3.0(transitive)
+ Addedmethods@1.1.2(transitive)
+ Addedmime-db@1.52.0(transitive)
+ Addedmime-types@2.1.35(transitive)
+ Addedminato@3.6.1(transitive)
+ Addedms@2.1.3(transitive)
+ Addednegotiator@0.6.3(transitive)
+ Addedon-finished@2.4.1(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedonly@0.0.2(transitive)
+ Addedparseurl@1.3.3(transitive)
+ Addedpath-to-regexp@6.3.08.2.0(transitive)
+ Addedqs@6.14.0(transitive)
+ Addedraw-body@2.5.2(transitive)
+ Addedsafe-regex-test@1.1.0(transitive)
+ Addedsafer-buffer@2.1.2(transitive)
+ Addedsetprototypeof@1.2.0(transitive)
+ Addedside-channel@1.1.0(transitive)
+ Addedside-channel-list@1.0.0(transitive)
+ Addedside-channel-map@1.0.1(transitive)
+ Addedside-channel-weakmap@1.0.2(transitive)
+ Addedsmart-buffer@4.2.0(transitive)
+ Addedsocks@2.8.4(transitive)
+ Addedsocks-proxy-agent@8.0.5(transitive)
+ Addedsprintf-js@1.1.3(transitive)
+ Addedstatuses@1.5.02.0.1(transitive)
+ Addedtoidentifier@1.0.1(transitive)
+ Addedtsscmp@1.0.6(transitive)
+ Addedtype-is@1.6.18(transitive)
+ Addedundici@6.21.1(transitive)
+ Addedundici-types@6.20.0(transitive)
+ Addedunpipe@1.0.0(transitive)
+ Addedvary@1.1.2(transitive)
+ Addedwrappy@1.0.2(transitive)
+ Addedylru@1.4.0(transitive)
+ Addedzod@3.24.2(transitive)
- Removed@koishijs/core@4.15.7(transitive)