@ykdz/template 0.0.37 → 0.0.40
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/dist/application.d.ts +1 -52
- package/dist/application.js +0 -81
- package/dist/cli.js +14 -28
- package/dist/input-schemas.d.ts +30 -0
- package/dist/input-schemas.js +75 -0
- package/dist/main.d.ts +3 -14
- package/dist/main.js +496 -378
- package/dist/result-schemas.d.ts +222 -0
- package/dist/result-schemas.js +74 -0
- package/dist/standard-schema.d.ts +3 -0
- package/dist/standard-schema.js +29 -0
- package/node_modules/@standard-schema/spec/LICENSE +21 -0
- package/node_modules/@standard-schema/spec/README.md +198 -0
- package/node_modules/@standard-schema/spec/dist/index.cjs +18 -0
- package/node_modules/@standard-schema/spec/dist/index.d.cts +119 -0
- package/node_modules/@standard-schema/spec/dist/index.d.ts +119 -0
- package/node_modules/@standard-schema/spec/dist/index.js +0 -0
- package/node_modules/@standard-schema/spec/package.json +52 -0
- package/node_modules/@types/node/LICENSE +21 -0
- package/node_modules/@types/node/README.md +15 -0
- package/node_modules/@types/node/assert/strict.d.ts +111 -0
- package/node_modules/@types/node/assert.d.ts +1115 -0
- package/node_modules/@types/node/async_hooks.d.ts +619 -0
- package/node_modules/@types/node/buffer.buffer.d.ts +477 -0
- package/node_modules/@types/node/buffer.d.ts +1941 -0
- package/node_modules/@types/node/child_process.d.ts +1480 -0
- package/node_modules/@types/node/cluster.d.ts +578 -0
- package/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
- package/node_modules/@types/node/console.d.ts +453 -0
- package/node_modules/@types/node/constants.d.ts +21 -0
- package/node_modules/@types/node/crypto.d.ts +5484 -0
- package/node_modules/@types/node/dgram.d.ts +715 -0
- package/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
- package/node_modules/@types/node/dns/promises.d.ts +503 -0
- package/node_modules/@types/node/dns.d.ts +923 -0
- package/node_modules/@types/node/domain.d.ts +166 -0
- package/node_modules/@types/node/events.d.ts +967 -0
- package/node_modules/@types/node/fs/promises.d.ts +1354 -0
- package/node_modules/@types/node/fs.d.ts +4777 -0
- package/node_modules/@types/node/globals.d.ts +170 -0
- package/node_modules/@types/node/globals.typedarray.d.ts +41 -0
- package/node_modules/@types/node/http.d.ts +2246 -0
- package/node_modules/@types/node/http2.d.ts +2882 -0
- package/node_modules/@types/node/https.d.ts +585 -0
- package/node_modules/@types/node/index.d.ts +101 -0
- package/node_modules/@types/node/inspector.d.ts +323 -0
- package/node_modules/@types/node/inspector.generated.d.ts +4406 -0
- package/node_modules/@types/node/module.d.ts +844 -0
- package/node_modules/@types/node/net.d.ts +1197 -0
- package/node_modules/@types/node/os.d.ts +507 -0
- package/node_modules/@types/node/package.json +140 -0
- package/node_modules/@types/node/path.d.ts +200 -0
- package/node_modules/@types/node/perf_hooks.d.ts +1054 -0
- package/node_modules/@types/node/process.d.ts +2101 -0
- package/node_modules/@types/node/punycode.d.ts +117 -0
- package/node_modules/@types/node/querystring.d.ts +152 -0
- package/node_modules/@types/node/readline/promises.d.ts +161 -0
- package/node_modules/@types/node/readline.d.ts +600 -0
- package/node_modules/@types/node/repl.d.ts +438 -0
- package/node_modules/@types/node/sea.d.ts +162 -0
- package/node_modules/@types/node/sqlite.d.ts +1182 -0
- package/node_modules/@types/node/stream/consumers.d.ts +45 -0
- package/node_modules/@types/node/stream/promises.d.ts +90 -0
- package/node_modules/@types/node/stream/web.d.ts +596 -0
- package/node_modules/@types/node/stream.d.ts +1707 -0
- package/node_modules/@types/node/string_decoder.d.ts +67 -0
- package/node_modules/@types/node/test.d.ts +2656 -0
- package/node_modules/@types/node/timers/promises.d.ts +108 -0
- package/node_modules/@types/node/timers.d.ts +285 -0
- package/node_modules/@types/node/tls.d.ts +1314 -0
- package/node_modules/@types/node/trace_events.d.ts +197 -0
- package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +473 -0
- package/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
- package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
- package/node_modules/@types/node/ts5.6/index.d.ts +103 -0
- package/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
- package/node_modules/@types/node/ts5.7/index.d.ts +103 -0
- package/node_modules/@types/node/tty.d.ts +209 -0
- package/node_modules/@types/node/url.d.ts +1103 -0
- package/node_modules/@types/node/util.d.ts +2376 -0
- package/node_modules/@types/node/v8.d.ts +1010 -0
- package/node_modules/@types/node/vm.d.ts +1160 -0
- package/node_modules/@types/node/wasi.d.ts +202 -0
- package/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
- package/node_modules/@types/node/web-globals/crypto.d.ts +32 -0
- package/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
- package/node_modules/@types/node/web-globals/events.d.ts +97 -0
- package/node_modules/@types/node/web-globals/fetch.d.ts +62 -0
- package/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
- package/node_modules/@types/node/web-globals/storage.d.ts +24 -0
- package/node_modules/@types/node/web-globals/streams.d.ts +22 -0
- package/node_modules/@types/node/worker_threads.d.ts +894 -0
- package/node_modules/@types/node/zlib.d.ts +768 -0
- package/node_modules/@valibot/to-json-schema/LICENSE.md +9 -0
- package/node_modules/@valibot/to-json-schema/README.md +475 -0
- package/node_modules/@valibot/to-json-schema/dist/index.cjs +800 -0
- package/node_modules/@valibot/to-json-schema/dist/index.d.cts +991 -0
- package/node_modules/@valibot/to-json-schema/dist/index.d.mts +991 -0
- package/node_modules/@valibot/to-json-schema/dist/index.min.cjs +1 -0
- package/node_modules/@valibot/to-json-schema/dist/index.min.mjs +1 -0
- package/node_modules/@valibot/to-json-schema/dist/index.mjs +795 -0
- package/node_modules/@valibot/to-json-schema/package.json +75 -0
- package/node_modules/@ykdz/cli-contract/LICENSE +21 -0
- package/node_modules/@ykdz/cli-contract/dist/atomic-variant-compiler.d.ts +17 -0
- package/node_modules/@ykdz/cli-contract/dist/atomic-variant-compiler.js +55 -0
- package/node_modules/@ykdz/cli-contract/dist/cli-contract.d.ts +1164 -0
- package/node_modules/@ykdz/cli-contract/dist/cli-contract.js +1408 -0
- package/node_modules/@ykdz/cli-contract/dist/cli-execution.d.ts +54 -0
- package/node_modules/@ykdz/cli-contract/dist/cli-execution.js +708 -0
- package/node_modules/@ykdz/cli-contract/dist/cli-invocation.d.ts +174 -0
- package/node_modules/@ykdz/cli-contract/dist/cli-invocation.js +524 -0
- package/node_modules/@ykdz/cli-contract/dist/cli-write-error.d.ts +10 -0
- package/node_modules/@ykdz/cli-contract/dist/cli-write-error.js +14 -0
- package/node_modules/@ykdz/cli-contract/dist/contract-definition-error.d.ts +260 -0
- package/node_modules/@ykdz/cli-contract/dist/contract-definition-error.js +130 -0
- package/node_modules/@ykdz/cli-contract/dist/contract-execution-error.d.ts +63 -0
- package/node_modules/@ykdz/cli-contract/dist/contract-execution-error.js +17 -0
- package/node_modules/@ykdz/cli-contract/dist/contract-schema-compiler.d.ts +6 -0
- package/node_modules/@ykdz/cli-contract/dist/contract-schema-compiler.js +532 -0
- package/node_modules/@ykdz/cli-contract/dist/contract-schema.d.ts +14 -0
- package/node_modules/@ykdz/cli-contract/dist/contract-schema.js +1 -0
- package/node_modules/@ykdz/cli-contract/dist/description.d.ts +2 -0
- package/node_modules/@ykdz/cli-contract/dist/description.js +13 -0
- package/node_modules/@ykdz/cli-contract/dist/index.d.ts +8 -0
- package/node_modules/@ykdz/cli-contract/dist/index.js +7 -0
- package/node_modules/@ykdz/cli-contract/dist/json-value.d.ts +4 -0
- package/node_modules/@ykdz/cli-contract/dist/json-value.js +64 -0
- package/node_modules/@ykdz/cli-contract/dist/node.d.ts +21 -0
- package/node_modules/@ykdz/cli-contract/dist/node.js +109 -0
- package/node_modules/@ykdz/cli-contract/dist/outcome-fact.d.ts +162 -0
- package/node_modules/@ykdz/cli-contract/dist/outcome-fact.js +113 -0
- package/node_modules/@ykdz/cli-contract/dist/outcome-wire.d.ts +53 -0
- package/node_modules/@ykdz/cli-contract/dist/outcome-wire.js +189 -0
- package/node_modules/@ykdz/cli-contract/dist/stream-variant-compiler.d.ts +16 -0
- package/node_modules/@ykdz/cli-contract/dist/stream-variant-compiler.js +45 -0
- package/node_modules/@ykdz/cli-contract/package.json +69 -0
- package/node_modules/@ykdz/template-builtin-presets/dist/src/foundation.d.ts +20 -0
- package/node_modules/@ykdz/template-builtin-presets/dist/src/foundation.js +27 -28
- package/node_modules/@ykdz/template-builtin-presets/dist/src/generation-record.d.ts +19 -0
- package/node_modules/@ykdz/template-builtin-presets/dist/src/generation-record.js +1 -1
- package/node_modules/@ykdz/template-builtin-presets/dist/src/index.d.ts +2 -1
- package/node_modules/@ykdz/template-builtin-presets/dist/src/index.js +2 -1
- package/node_modules/@ykdz/template-builtin-presets/dist/src/ts-cli/definition.js +9 -5
- package/node_modules/@ykdz/template-builtin-presets/dist/src/vike-app/definition.js +0 -4
- package/node_modules/@ykdz/template-builtin-presets/package.json +2 -1
- package/node_modules/@ykdz/template-builtin-presets/templates/foundation/AGENTS.md.template +10 -4
- package/node_modules/@ykdz/template-builtin-presets/templates/foundation/devcontainer.json +3 -0
- package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/artifact.ts +128 -59
- package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/handoff.ts +80 -8
- package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/readiness.ts +7 -3
- package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/src/cli.ts +9 -19
- package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/src/main.ts +144 -60
- package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/src/standard-schema.ts +37 -0
- package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/test/e2e/journeys/lookup.journey.ts +71 -0
- package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/test/integration/command.test.ts +118 -59
- package/node_modules/@ykdz/template-core/dist/package-contribution.d.ts +0 -1
- package/node_modules/@ykdz/template-core/dist/pnpm-workspace.yaml +2 -1
- package/node_modules/@ykdz/template-core/dist/project-blueprint.d.ts +15 -0
- package/node_modules/@ykdz/template-core/dist/project-blueprint.js +1 -1
- package/node_modules/@ykdz/template-core/dist/project-github.d.ts +1 -1
- package/node_modules/undici-types/LICENSE +21 -0
- package/node_modules/undici-types/README.md +6 -0
- package/node_modules/undici-types/agent.d.ts +32 -0
- package/node_modules/undici-types/api.d.ts +43 -0
- package/node_modules/undici-types/balanced-pool.d.ts +30 -0
- package/node_modules/undici-types/cache-interceptor.d.ts +179 -0
- package/node_modules/undici-types/cache.d.ts +36 -0
- package/node_modules/undici-types/client-stats.d.ts +15 -0
- package/node_modules/undici-types/client.d.ts +123 -0
- package/node_modules/undici-types/connector.d.ts +36 -0
- package/node_modules/undici-types/content-type.d.ts +21 -0
- package/node_modules/undici-types/cookies.d.ts +30 -0
- package/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
- package/node_modules/undici-types/dispatcher.d.ts +279 -0
- package/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
- package/node_modules/undici-types/errors.d.ts +177 -0
- package/node_modules/undici-types/eventsource.d.ts +66 -0
- package/node_modules/undici-types/fetch.d.ts +211 -0
- package/node_modules/undici-types/formdata.d.ts +108 -0
- package/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/node_modules/undici-types/global-origin.d.ts +7 -0
- package/node_modules/undici-types/h2c-client.d.ts +73 -0
- package/node_modules/undici-types/handlers.d.ts +15 -0
- package/node_modules/undici-types/header.d.ts +160 -0
- package/node_modules/undici-types/index.d.ts +91 -0
- package/node_modules/undici-types/interceptors.d.ts +80 -0
- package/node_modules/undici-types/mock-agent.d.ts +68 -0
- package/node_modules/undici-types/mock-call-history.d.ts +111 -0
- package/node_modules/undici-types/mock-client.d.ts +27 -0
- package/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/node_modules/undici-types/mock-interceptor.d.ts +94 -0
- package/node_modules/undici-types/mock-pool.d.ts +27 -0
- package/node_modules/undici-types/package.json +55 -0
- package/node_modules/undici-types/patch.d.ts +29 -0
- package/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/node_modules/undici-types/pool.d.ts +41 -0
- package/node_modules/undici-types/proxy-agent.d.ts +29 -0
- package/node_modules/undici-types/readable.d.ts +68 -0
- package/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/node_modules/undici-types/retry-handler.d.ts +125 -0
- package/node_modules/undici-types/round-robin-pool.d.ts +41 -0
- package/node_modules/undici-types/snapshot-agent.d.ts +109 -0
- package/node_modules/undici-types/socks5-proxy-agent.d.ts +25 -0
- package/node_modules/undici-types/util.d.ts +18 -0
- package/node_modules/undici-types/utility.d.ts +7 -0
- package/node_modules/undici-types/webidl.d.ts +347 -0
- package/node_modules/undici-types/websocket.d.ts +188 -0
- package/package.json +5 -3
- package/dist/command-result.d.ts +0 -9
- package/dist/command-result.js +0 -231
- package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/test/e2e/journeys/greet.journey.ts +0 -46
- package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/test/unit/greet.test.ts +0 -15
- package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/devcontainer/docker-client.Dockerfile +0 -3
- package/node_modules/commander/LICENSE +0 -22
- package/node_modules/commander/Readme.md +0 -1172
- package/node_modules/commander/index.js +0 -21
- package/node_modules/commander/lib/argument.js +0 -147
- package/node_modules/commander/lib/command.js +0 -2790
- package/node_modules/commander/lib/error.js +0 -36
- package/node_modules/commander/lib/help.js +0 -731
- package/node_modules/commander/lib/option.js +0 -377
- package/node_modules/commander/lib/suggestSimilar.js +0 -99
- package/node_modules/commander/package-support.json +0 -19
- package/node_modules/commander/package.json +0 -64
- package/node_modules/commander/typings/index.d.ts +0 -1113
|
@@ -5,79 +5,138 @@ import { describe, expect, it } from "vitest";
|
|
|
5
5
|
import { cliCommandIdentity } from "../../src/cli-command-identity.ts";
|
|
6
6
|
import { runCli, type CliRuntime } from "../../src/main.ts";
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const identity = cliCommandIdentity(
|
|
9
|
+
createRequire(import.meta.url)("../../package.json"),
|
|
10
|
+
);
|
|
11
11
|
|
|
12
|
-
function testRuntime(args: readonly string[])
|
|
13
|
-
readonly runtime: CliRuntime;
|
|
14
|
-
readonly stdout: () => string;
|
|
15
|
-
readonly stderr: () => string;
|
|
16
|
-
} {
|
|
12
|
+
function testRuntime(args: readonly string[]) {
|
|
17
13
|
let stdout = "";
|
|
18
14
|
let stderr = "";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
stderr: { write: (chunk) => (stderr += chunk) },
|
|
26
|
-
},
|
|
27
|
-
cwd: "/workspace",
|
|
28
|
-
env: { MODE: "test" },
|
|
29
|
-
tty: { stdin: false, stdout: false, stderr: false },
|
|
30
|
-
identity,
|
|
15
|
+
const runtime: CliRuntime = {
|
|
16
|
+
argv: ["node", identity.commandName, ...args],
|
|
17
|
+
identity,
|
|
18
|
+
write: ({ destination, chunk }) => {
|
|
19
|
+
if (destination === "stdout") stdout += chunk;
|
|
20
|
+
else stderr += chunk;
|
|
31
21
|
},
|
|
32
|
-
stdout: () => stdout,
|
|
33
|
-
stderr: () => stderr,
|
|
34
22
|
};
|
|
23
|
+
return { runtime, stdout: () => stdout, stderr: () => stderr };
|
|
35
24
|
}
|
|
36
25
|
|
|
37
|
-
describe("CLI
|
|
38
|
-
it("
|
|
39
|
-
const output = testRuntime(["
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
26
|
+
describe("CLI 契约", () => {
|
|
27
|
+
it("查询成功默认返回结构化数据,也支持中文文本", async () => {
|
|
28
|
+
const output = testRuntime(["lookup", "ada"]);
|
|
29
|
+
expect(await runCli(output.runtime)).toBe(0);
|
|
30
|
+
expect(JSON.parse(output.stdout())).toEqual({
|
|
31
|
+
schemaVersion: "1",
|
|
32
|
+
command: "lookup",
|
|
33
|
+
kind: "data",
|
|
34
|
+
variant: "found",
|
|
35
|
+
data: { name: "ada", title: "Ada Lovelace" },
|
|
36
|
+
});
|
|
43
37
|
expect(output.stderr()).toBe("");
|
|
38
|
+
const human = testRuntime(["lookup", "ada", "--output-format", "text"]);
|
|
39
|
+
expect(await runCli(human.runtime)).toBe(0);
|
|
40
|
+
expect(human.stdout()).toContain("找到记录");
|
|
41
|
+
expect(human.stdout()).toContain("Ada Lovelace");
|
|
44
42
|
});
|
|
45
43
|
|
|
46
|
-
it("
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
expect(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
44
|
+
it("未找到记录是已声明失败,非法名称是用法错误", async () => {
|
|
45
|
+
const missing = testRuntime(["lookup", "missing"]);
|
|
46
|
+
expect(await runCli(missing.runtime)).toBe(1);
|
|
47
|
+
expect(missing.stdout()).toBe("");
|
|
48
|
+
expect(JSON.parse(missing.stderr())).toMatchObject({
|
|
49
|
+
kind: "failure",
|
|
50
|
+
variant: "notFound",
|
|
51
|
+
data: { name: "missing" },
|
|
52
|
+
});
|
|
53
|
+
for (const args of [["lookup"], ["lookup", " "]]) {
|
|
54
|
+
const invalid = testRuntime([...args, "--output-format", "text"]);
|
|
55
|
+
expect(await runCli(invalid.runtime)).toBe(2);
|
|
56
|
+
expect(invalid.stdout()).toBe("");
|
|
57
|
+
expect(JSON.parse(invalid.stderr())).toMatchObject({
|
|
58
|
+
kind: "usageFailure",
|
|
59
|
+
});
|
|
60
|
+
}
|
|
63
61
|
});
|
|
64
62
|
|
|
65
|
-
it("
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
expect(output.stderr()).toContain(
|
|
71
|
-
"error: missing required argument 'name'",
|
|
63
|
+
it("帮助和版本使用 manifest 身份,schema 导出完整契约", async () => {
|
|
64
|
+
const version = testRuntime(["--version"]);
|
|
65
|
+
expect(await runCli(version.runtime)).toBe(0);
|
|
66
|
+
expect(version.stdout()).toBe(
|
|
67
|
+
`${identity.commandName} ${identity.version}\n`,
|
|
72
68
|
);
|
|
73
|
-
|
|
69
|
+
const help = testRuntime(["--help"]);
|
|
70
|
+
expect(await runCli(help.runtime)).toBe(0);
|
|
71
|
+
expect(help.stdout()).toContain(identity.commandName);
|
|
72
|
+
expect(help.stdout()).toContain("lookup");
|
|
73
|
+
expect(help.stdout()).toContain("schema");
|
|
74
|
+
const schema = testRuntime(["schema"]);
|
|
75
|
+
expect(await runCli(schema.runtime)).toBe(0);
|
|
76
|
+
const humanSchema = testRuntime(["schema", "--output-format", "text"]);
|
|
77
|
+
expect(await runCli(humanSchema.runtime)).toBe(0);
|
|
78
|
+
expect(humanSchema.stdout()).toContain("CLI 契约");
|
|
79
|
+
expect(humanSchema.stdout()).toContain('"commands"');
|
|
80
|
+
const manifest = JSON.parse(schema.stdout()).data.manifest;
|
|
81
|
+
expect(manifest).toMatchObject({
|
|
82
|
+
commands: {
|
|
83
|
+
lookup: {
|
|
84
|
+
input: {
|
|
85
|
+
inputSchema: {
|
|
86
|
+
properties: { name: { pattern: "^[a-z]+$" } },
|
|
87
|
+
required: ["name"],
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
success: { variants: { found: { exitCode: 0 } } },
|
|
91
|
+
failures: { notFound: { exitCode: 1 } },
|
|
92
|
+
},
|
|
93
|
+
schema: { success: { variants: { exported: { exitCode: 0 } } } },
|
|
94
|
+
},
|
|
95
|
+
controls: {
|
|
96
|
+
output: {
|
|
97
|
+
defaultFormat: "structured",
|
|
98
|
+
formats: ["structured", "text"],
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
usageFailure: { exitCode: 2 },
|
|
102
|
+
});
|
|
74
103
|
});
|
|
75
104
|
|
|
76
|
-
it("
|
|
77
|
-
const output = testRuntime(["
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
105
|
+
it("等待输出完成,仅 stdout EPIPE 安静成功", async () => {
|
|
106
|
+
const output = testRuntime(["lookup", "ada"]);
|
|
107
|
+
expect(
|
|
108
|
+
await runCli({
|
|
109
|
+
...output.runtime,
|
|
110
|
+
write: async () => {
|
|
111
|
+
throw Object.assign(new Error("pipe"), { code: "EPIPE" });
|
|
112
|
+
},
|
|
113
|
+
}),
|
|
114
|
+
).toBe(0);
|
|
115
|
+
expect(
|
|
116
|
+
await runCli({
|
|
117
|
+
...output.runtime,
|
|
118
|
+
write: async () => {
|
|
119
|
+
throw new Error("disk");
|
|
120
|
+
},
|
|
121
|
+
}),
|
|
122
|
+
).toBe(70);
|
|
123
|
+
const failure = testRuntime(["lookup", "missing"]);
|
|
124
|
+
expect(
|
|
125
|
+
await runCli({
|
|
126
|
+
...failure.runtime,
|
|
127
|
+
write: async () => {
|
|
128
|
+
throw Object.assign(new Error("pipe"), { code: "EPIPE" });
|
|
129
|
+
},
|
|
130
|
+
}),
|
|
131
|
+
).toBe(70);
|
|
132
|
+
const argv = ["node", identity.commandName];
|
|
133
|
+
Object.defineProperty(argv, "slice", {
|
|
134
|
+
value() {
|
|
135
|
+
throw new Error("内部细节");
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
expect(await runCli({ ...output.runtime, argv })).toBe(70);
|
|
139
|
+
expect(output.stderr()).toContain("命令执行失败");
|
|
140
|
+
expect(output.stderr()).not.toContain("内部细节");
|
|
82
141
|
});
|
|
83
142
|
});
|
|
@@ -32,7 +32,6 @@ export type FoundationContribution = {
|
|
|
32
32
|
readonly dockerfile: FoundationTemplateAssetSource;
|
|
33
33
|
readonly dockerIgnore: FoundationTemplateAssetSource;
|
|
34
34
|
readonly shellCheckDockerfile: FoundationTemplateAssetSource;
|
|
35
|
-
readonly dockerClientToolLayer: FoundationTemplateAssetSource;
|
|
36
35
|
};
|
|
37
36
|
};
|
|
38
37
|
/** Closed publication capability consumed only by coordinated root policy. */
|
|
@@ -21,6 +21,8 @@ overrides:
|
|
|
21
21
|
"vue>typescript": "-"
|
|
22
22
|
|
|
23
23
|
catalog:
|
|
24
|
+
"@ykdz/cli-contract": 0.2.1
|
|
25
|
+
"@valibot/to-json-schema": ^1.8.0
|
|
24
26
|
"@devcontainers/cli": 0.89.0
|
|
25
27
|
"@hono/node-server": ^2.0.12
|
|
26
28
|
"@playwright/test": ^1.62.1
|
|
@@ -31,7 +33,6 @@ catalog:
|
|
|
31
33
|
"@vikejs/hono": ^0.2.1
|
|
32
34
|
"@vue/devtools-api": ^8.1.5
|
|
33
35
|
"@vue/tsconfig": ^0.9.1
|
|
34
|
-
commander: ^15.0.0
|
|
35
36
|
drizzle-kit: 1.0.0-rc.5-ab785fc
|
|
36
37
|
drizzle-orm: 1.0.0-rc.5-ab785fc
|
|
37
38
|
execa: ^10.0.1
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
1
2
|
/**
|
|
2
3
|
* The durable, preset-agnostic topology used by local template follow-up
|
|
3
4
|
* operations. Preset provenance deliberately belongs in Generation Record.
|
|
@@ -40,6 +41,20 @@ export type BlueprintValidationResult = {
|
|
|
40
41
|
readonly ok: false;
|
|
41
42
|
readonly issues: readonly BlueprintValidationIssue[];
|
|
42
43
|
};
|
|
44
|
+
declare function packageDefinitionMessage(issue: v.BaseIssue<unknown>): string;
|
|
45
|
+
export declare const projectBlueprintSchema: v.StrictObjectSchema<{
|
|
46
|
+
readonly schemaVersion: v.LiteralSchema<3, (issue: v.LiteralIssue) => string>;
|
|
47
|
+
readonly packages: v.ArraySchema<v.StrictObjectSchema<{
|
|
48
|
+
readonly name: v.StringSchema<"Package name must be a string">;
|
|
49
|
+
readonly path: v.StringSchema<"Package Path must be a string">;
|
|
50
|
+
readonly role: v.PicklistSchema<readonly ["cli-tool", "runtime-service", "shared-library", "native-package"], "Package Role must be cli-tool, runtime-service, shared-library, or native-package">;
|
|
51
|
+
readonly packageDefinitionId: v.StringSchema<"Package Definition ID must use the package-<sha256> format">;
|
|
52
|
+
}, typeof packageDefinitionMessage>, "Package Definitions must be an array">;
|
|
53
|
+
readonly packageLinkIntents: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
|
|
54
|
+
readonly consumerPackagePath: v.StringSchema<"Package Link Intent consumer Package Path must be a string">;
|
|
55
|
+
readonly providerPackagePath: v.StringSchema<"Package Link Intent provider Package Path must be a string">;
|
|
56
|
+
}, (issue: v.StrictObjectIssue) => "Package Link Intent must be an object" | "Unknown Blueprint v3 field">, "Package Link Intents must be an array">, undefined>;
|
|
57
|
+
}, (issue: v.StrictObjectIssue) => "Local Template Metadata must be an object" | "Unknown Blueprint v3 field">;
|
|
43
58
|
/** Canonical npm package-name predicate shared by Blueprint and input preparation. */
|
|
44
59
|
export declare function isValidNewNpmPackageName(value: string): boolean;
|
|
45
60
|
export type NewPackagePathValidation = {
|
|
@@ -42,7 +42,7 @@ const packageLinkIntentSchema = v.strictObject({
|
|
|
42
42
|
}, (issue) => issue.path?.at(-1)?.origin === "key" && issue.input !== undefined
|
|
43
43
|
? unknownBlueprintField
|
|
44
44
|
: "Package Link Intent must be an object");
|
|
45
|
-
const projectBlueprintSchema = v.strictObject({
|
|
45
|
+
export const projectBlueprintSchema = v.strictObject({
|
|
46
46
|
schemaVersion: v.literal(3, (issue) => `Unsupported Local Template Metadata schema version ${String(issue.input)}; expected 3`),
|
|
47
47
|
packages: v.array(packageDefinitionSchema, "Package Definitions must be an array"),
|
|
48
48
|
packageLinkIntents: v.optional(v.array(packageLinkIntentSchema, "Package Link Intents must be an array")),
|
|
@@ -47,7 +47,7 @@ export type ProjectCheckWorkflowPlan = {
|
|
|
47
47
|
readonly packagePaths: readonly string[];
|
|
48
48
|
readonly diagnosticArtifacts: readonly CiDiagnosticArtifactDeclaration[];
|
|
49
49
|
};
|
|
50
|
-
export type DependencyEcosystem = "npm" | "cargo" | "github-actions" | "docker" | "rust-toolchain";
|
|
50
|
+
export type DependencyEcosystem = "npm" | "cargo" | "github-actions" | "docker" | "devcontainers" | "rust-toolchain";
|
|
51
51
|
export type DependabotDirectory = `/${string}`;
|
|
52
52
|
export type DependencyMaintenancePolicy = {
|
|
53
53
|
readonly ecosystems: DependencyEcosystem[];
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Matteo Collina and Undici contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# undici-types
|
|
2
|
+
|
|
3
|
+
This package is a dual-publish of the [undici](https://www.npmjs.com/package/undici) library types. The `undici` package **still contains types**. This package is for users who _only_ need undici types (such as for `@types/node`). It is published alongside every release of `undici`, so you can always use the same version.
|
|
4
|
+
|
|
5
|
+
- [GitHub nodejs/undici](https://github.com/nodejs/undici)
|
|
6
|
+
- [Undici Documentation](https://undici.nodejs.org/#/)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { URL } from 'node:url'
|
|
2
|
+
import Pool from './pool'
|
|
3
|
+
import Dispatcher from './dispatcher'
|
|
4
|
+
import TClientStats from './client-stats'
|
|
5
|
+
import TPoolStats from './pool-stats'
|
|
6
|
+
|
|
7
|
+
export default Agent
|
|
8
|
+
|
|
9
|
+
declare class Agent extends Dispatcher {
|
|
10
|
+
constructor (opts?: Agent.Options)
|
|
11
|
+
/** `true` after `dispatcher.close()` has been called. */
|
|
12
|
+
closed: boolean
|
|
13
|
+
/** `true` after `dispatcher.destroyed()` has been called or `dispatcher.close()` has been called and the dispatcher shutdown has completed. */
|
|
14
|
+
destroyed: boolean
|
|
15
|
+
/** Dispatches a request. */
|
|
16
|
+
dispatch (options: Agent.DispatchOptions, handler: Dispatcher.DispatchHandler): boolean
|
|
17
|
+
/** Aggregate stats for a Agent by origin. */
|
|
18
|
+
readonly stats: Record<string, TClientStats | TPoolStats>
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare namespace Agent {
|
|
22
|
+
export interface Options extends Pool.Options {
|
|
23
|
+
/** Default: `(origin, opts) => new Pool(origin, opts)`. */
|
|
24
|
+
factory?(origin: string | URL, opts: Object): Dispatcher;
|
|
25
|
+
|
|
26
|
+
interceptors?: { Agent?: readonly Dispatcher.DispatchInterceptor[] } & Pool.Options['interceptors']
|
|
27
|
+
maxOrigins?: number
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface DispatchOptions extends Dispatcher.DispatchOptions {
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { URL, UrlObject } from 'node:url'
|
|
2
|
+
import { Duplex } from 'node:stream'
|
|
3
|
+
import Dispatcher from './dispatcher'
|
|
4
|
+
|
|
5
|
+
/** Performs an HTTP request. */
|
|
6
|
+
declare function request<TOpaque = null> (
|
|
7
|
+
url: string | URL | UrlObject,
|
|
8
|
+
options?: { dispatcher?: Dispatcher } & Omit<Dispatcher.RequestOptions<TOpaque>, 'origin' | 'path' | 'method'> & Partial<Pick<Dispatcher.RequestOptions, 'method'>>,
|
|
9
|
+
): Promise<Dispatcher.ResponseData<TOpaque>>
|
|
10
|
+
|
|
11
|
+
/** A faster version of `request`. */
|
|
12
|
+
declare function stream<TOpaque = null> (
|
|
13
|
+
url: string | URL | UrlObject,
|
|
14
|
+
options: { dispatcher?: Dispatcher } & Omit<Dispatcher.RequestOptions<TOpaque>, 'origin' | 'path'>,
|
|
15
|
+
factory: Dispatcher.StreamFactory<TOpaque>
|
|
16
|
+
): Promise<Dispatcher.StreamData<TOpaque>>
|
|
17
|
+
|
|
18
|
+
/** For easy use with `stream.pipeline`. */
|
|
19
|
+
declare function pipeline<TOpaque = null> (
|
|
20
|
+
url: string | URL | UrlObject,
|
|
21
|
+
options: { dispatcher?: Dispatcher } & Omit<Dispatcher.PipelineOptions<TOpaque>, 'origin' | 'path'>,
|
|
22
|
+
handler: Dispatcher.PipelineHandler<TOpaque>
|
|
23
|
+
): Duplex
|
|
24
|
+
|
|
25
|
+
/** Starts two-way communications with the requested resource. */
|
|
26
|
+
declare function connect<TOpaque = null> (
|
|
27
|
+
url: string | URL | UrlObject,
|
|
28
|
+
options?: { dispatcher?: Dispatcher } & Omit<Dispatcher.ConnectOptions<TOpaque>, 'origin' | 'path'>
|
|
29
|
+
): Promise<Dispatcher.ConnectData<TOpaque>>
|
|
30
|
+
|
|
31
|
+
/** Upgrade to a different protocol. */
|
|
32
|
+
declare function upgrade (
|
|
33
|
+
url: string | URL | UrlObject,
|
|
34
|
+
options?: { dispatcher?: Dispatcher } & Omit<Dispatcher.UpgradeOptions, 'origin' | 'path'>
|
|
35
|
+
): Promise<Dispatcher.UpgradeData>
|
|
36
|
+
|
|
37
|
+
export {
|
|
38
|
+
request,
|
|
39
|
+
stream,
|
|
40
|
+
pipeline,
|
|
41
|
+
connect,
|
|
42
|
+
upgrade
|
|
43
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import Pool from './pool'
|
|
2
|
+
import Dispatcher from './dispatcher'
|
|
3
|
+
import { URL } from 'node:url'
|
|
4
|
+
|
|
5
|
+
export default BalancedPool
|
|
6
|
+
|
|
7
|
+
type BalancedPoolConnectOptions = Omit<Dispatcher.ConnectOptions, 'origin'>
|
|
8
|
+
|
|
9
|
+
declare class BalancedPool extends Dispatcher {
|
|
10
|
+
constructor (url: string | string[] | URL | URL[], options?: Pool.Options)
|
|
11
|
+
|
|
12
|
+
addUpstream (upstream: string | URL): BalancedPool
|
|
13
|
+
removeUpstream (upstream: string | URL): BalancedPool
|
|
14
|
+
getUpstream (upstream: string | URL): Pool | undefined
|
|
15
|
+
upstreams: Array<string>
|
|
16
|
+
|
|
17
|
+
/** `true` after `pool.close()` has been called. */
|
|
18
|
+
closed: boolean
|
|
19
|
+
/** `true` after `pool.destroyed()` has been called or `pool.close()` has been called and the pool shutdown has completed. */
|
|
20
|
+
destroyed: boolean
|
|
21
|
+
|
|
22
|
+
// Override dispatcher APIs.
|
|
23
|
+
override connect (
|
|
24
|
+
options: BalancedPoolConnectOptions
|
|
25
|
+
): Promise<Dispatcher.ConnectData>
|
|
26
|
+
override connect (
|
|
27
|
+
options: BalancedPoolConnectOptions,
|
|
28
|
+
callback: (err: Error | null, data: Dispatcher.ConnectData) => void
|
|
29
|
+
): void
|
|
30
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { Readable, Writable } from 'node:stream'
|
|
2
|
+
|
|
3
|
+
export default CacheHandler
|
|
4
|
+
|
|
5
|
+
declare namespace CacheHandler {
|
|
6
|
+
export type CacheMethods = 'GET' | 'HEAD' | 'OPTIONS' | 'TRACE'
|
|
7
|
+
|
|
8
|
+
export interface CacheHandlerOptions {
|
|
9
|
+
store: CacheStore
|
|
10
|
+
|
|
11
|
+
cacheByDefault?: number
|
|
12
|
+
|
|
13
|
+
type?: CacheOptions['type']
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface CacheOptions {
|
|
17
|
+
store?: CacheStore
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The methods to cache
|
|
21
|
+
* Note we can only cache safe methods. Unsafe methods (i.e. PUT, POST)
|
|
22
|
+
* invalidate the cache for a origin.
|
|
23
|
+
* @see https://www.rfc-editor.org/rfc/rfc9111.html#name-invalidating-stored-respons
|
|
24
|
+
* @see https://www.rfc-editor.org/rfc/rfc9110#section-9.2.1
|
|
25
|
+
*/
|
|
26
|
+
methods?: CacheMethods[]
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* RFC9111 allows for caching responses that we aren't explicitly told to
|
|
30
|
+
* cache or to not cache.
|
|
31
|
+
* @see https://www.rfc-editor.org/rfc/rfc9111.html#section-3-5
|
|
32
|
+
* @default undefined
|
|
33
|
+
*/
|
|
34
|
+
cacheByDefault?: number
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* TODO docs
|
|
38
|
+
* @default 'shared'
|
|
39
|
+
*/
|
|
40
|
+
type?: 'shared' | 'private'
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Array of origins to cache. Only requests to these origins will be cached.
|
|
44
|
+
* Supports strings (case insensitive) and RegExp patterns.
|
|
45
|
+
* @default undefined (cache all origins)
|
|
46
|
+
*/
|
|
47
|
+
origins?: (string | RegExp)[]
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface CacheControlDirectives {
|
|
51
|
+
'max-stale'?: number;
|
|
52
|
+
'min-fresh'?: number;
|
|
53
|
+
'max-age'?: number;
|
|
54
|
+
's-maxage'?: number;
|
|
55
|
+
'stale-while-revalidate'?: number;
|
|
56
|
+
'stale-if-error'?: number;
|
|
57
|
+
public?: true;
|
|
58
|
+
private?: true | string[];
|
|
59
|
+
'no-store'?: true;
|
|
60
|
+
'no-cache'?: true | string[];
|
|
61
|
+
'must-revalidate'?: true;
|
|
62
|
+
'proxy-revalidate'?: true;
|
|
63
|
+
immutable?: true;
|
|
64
|
+
'no-transform'?: true;
|
|
65
|
+
'must-understand'?: true;
|
|
66
|
+
'only-if-cached'?: true;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface CacheKey {
|
|
70
|
+
origin: string
|
|
71
|
+
method: string
|
|
72
|
+
path: string
|
|
73
|
+
headers?: Record<string, string | string[]>
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface CacheValue {
|
|
77
|
+
statusCode: number
|
|
78
|
+
statusMessage: string
|
|
79
|
+
headers: Record<string, string | string[]>
|
|
80
|
+
vary?: Record<string, string | string[] | null>
|
|
81
|
+
etag?: string
|
|
82
|
+
cacheControlDirectives?: CacheControlDirectives
|
|
83
|
+
cachedAt: number
|
|
84
|
+
staleAt: number
|
|
85
|
+
deleteAt: number
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface DeleteByUri {
|
|
89
|
+
origin: string
|
|
90
|
+
method: string
|
|
91
|
+
path: string
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
type GetResult = {
|
|
95
|
+
statusCode: number
|
|
96
|
+
statusMessage: string
|
|
97
|
+
headers: Record<string, string | string[]>
|
|
98
|
+
vary?: Record<string, string | string[] | null>
|
|
99
|
+
etag?: string
|
|
100
|
+
body?: Readable | Iterable<Buffer> | AsyncIterable<Buffer> | Buffer | Iterable<string> | AsyncIterable<string> | string
|
|
101
|
+
cacheControlDirectives: CacheControlDirectives,
|
|
102
|
+
cachedAt: number
|
|
103
|
+
staleAt: number
|
|
104
|
+
deleteAt: number
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Underlying storage provider for cached responses
|
|
109
|
+
*/
|
|
110
|
+
export interface CacheStore {
|
|
111
|
+
get(key: CacheKey): GetResult | Promise<GetResult | undefined> | undefined
|
|
112
|
+
|
|
113
|
+
createWriteStream(key: CacheKey, val: CacheValue): Writable | undefined
|
|
114
|
+
|
|
115
|
+
delete(key: CacheKey): void | Promise<void>
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface MemoryCacheStoreOpts {
|
|
119
|
+
/**
|
|
120
|
+
* @default Infinity
|
|
121
|
+
*/
|
|
122
|
+
maxCount?: number
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* @default Infinity
|
|
126
|
+
*/
|
|
127
|
+
maxSize?: number
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* @default Infinity
|
|
131
|
+
*/
|
|
132
|
+
maxEntrySize?: number
|
|
133
|
+
|
|
134
|
+
errorCallback?: (err: Error) => void
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export class MemoryCacheStore implements CacheStore {
|
|
138
|
+
constructor (opts?: MemoryCacheStoreOpts)
|
|
139
|
+
|
|
140
|
+
get (key: CacheKey): GetResult | Promise<GetResult | undefined> | undefined
|
|
141
|
+
|
|
142
|
+
createWriteStream (key: CacheKey, value: CacheValue): Writable | undefined
|
|
143
|
+
|
|
144
|
+
delete (key: CacheKey): void | Promise<void>
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export interface SqliteCacheStoreOpts {
|
|
148
|
+
/**
|
|
149
|
+
* Location of the database
|
|
150
|
+
* @default ':memory:'
|
|
151
|
+
*/
|
|
152
|
+
location?: string
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @default Infinity
|
|
156
|
+
*/
|
|
157
|
+
maxCount?: number
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* @default Infinity
|
|
161
|
+
*/
|
|
162
|
+
maxEntrySize?: number
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export class SqliteCacheStore implements CacheStore {
|
|
166
|
+
constructor (opts?: SqliteCacheStoreOpts)
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Closes the connection to the database
|
|
170
|
+
*/
|
|
171
|
+
close (): void
|
|
172
|
+
|
|
173
|
+
get (key: CacheKey): GetResult | Promise<GetResult | undefined> | undefined
|
|
174
|
+
|
|
175
|
+
createWriteStream (key: CacheKey, value: CacheValue): Writable | undefined
|
|
176
|
+
|
|
177
|
+
delete (key: CacheKey): void | Promise<void>
|
|
178
|
+
}
|
|
179
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { RequestInfo, Response, Request } from './fetch'
|
|
2
|
+
|
|
3
|
+
export interface CacheStorage {
|
|
4
|
+
match (request: RequestInfo, options?: MultiCacheQueryOptions): Promise<Response | undefined>,
|
|
5
|
+
has (cacheName: string): Promise<boolean>,
|
|
6
|
+
open (cacheName: string): Promise<Cache>,
|
|
7
|
+
delete (cacheName: string): Promise<boolean>,
|
|
8
|
+
keys (): Promise<string[]>
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
declare const CacheStorage: {
|
|
12
|
+
prototype: CacheStorage
|
|
13
|
+
new(): CacheStorage
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface Cache {
|
|
17
|
+
match (request: RequestInfo, options?: CacheQueryOptions): Promise<Response | undefined>,
|
|
18
|
+
matchAll (request?: RequestInfo, options?: CacheQueryOptions): Promise<readonly Response[]>,
|
|
19
|
+
add (request: RequestInfo): Promise<undefined>,
|
|
20
|
+
addAll (requests: RequestInfo[]): Promise<undefined>,
|
|
21
|
+
put (request: RequestInfo, response: Response): Promise<undefined>,
|
|
22
|
+
delete (request: RequestInfo, options?: CacheQueryOptions): Promise<boolean>,
|
|
23
|
+
keys (request?: RequestInfo, options?: CacheQueryOptions): Promise<readonly Request[]>
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface CacheQueryOptions {
|
|
27
|
+
ignoreSearch?: boolean,
|
|
28
|
+
ignoreMethod?: boolean,
|
|
29
|
+
ignoreVary?: boolean
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface MultiCacheQueryOptions extends CacheQueryOptions {
|
|
33
|
+
cacheName?: string
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export declare const caches: CacheStorage
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import Client from './client'
|
|
2
|
+
|
|
3
|
+
export default ClientStats
|
|
4
|
+
|
|
5
|
+
declare class ClientStats {
|
|
6
|
+
constructor (pool: Client)
|
|
7
|
+
/** If socket has open connection. */
|
|
8
|
+
connected: boolean
|
|
9
|
+
/** Number of open socket connections in this client that do not have an active request. */
|
|
10
|
+
pending: number
|
|
11
|
+
/** Number of currently active requests of this client. */
|
|
12
|
+
running: number
|
|
13
|
+
/** Number of active, pending, or queued requests of this client. */
|
|
14
|
+
size: number
|
|
15
|
+
}
|