@skillcdn/console 0.4.1 → 0.4.3
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/README.md +19 -2
- package/SKILLCDN.md +7 -5
- package/dist/api.d.ts +5 -4
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +5 -4
- package/dist/api.js.map +1 -1
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +569 -48
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/format.d.ts +34 -3
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +283 -7
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +44 -7
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/plugin-check.d.ts +26 -0
- package/dist/cli/plugin-check.d.ts.map +1 -0
- package/dist/cli/plugin-check.js +396 -0
- package/dist/cli/plugin-check.js.map +1 -0
- package/dist/cli/plugin-cli.d.ts +20 -0
- package/dist/cli/plugin-cli.d.ts.map +1 -0
- package/dist/cli/plugin-cli.js +189 -0
- package/dist/cli/plugin-cli.js.map +1 -0
- package/dist/cli/plugin-init.d.ts +37 -0
- package/dist/cli/plugin-init.d.ts.map +1 -0
- package/dist/cli/plugin-init.js +206 -0
- package/dist/cli/plugin-init.js.map +1 -0
- package/dist/cli/plugin-main.d.ts +3 -0
- package/dist/cli/plugin-main.d.ts.map +1 -0
- package/dist/cli/plugin-main.js +28 -0
- package/dist/cli/plugin-main.js.map +1 -0
- package/dist/client.d.ts +100 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +79 -7
- package/dist/client.js.map +1 -1
- package/dist/compat.d.ts +1 -1
- package/dist/compat.js +2 -2
- package/dist/components/board.d.ts +8 -0
- package/dist/components/board.d.ts.map +1 -1
- package/dist/components/board.js +59 -15
- package/dist/components/board.js.map +1 -1
- package/dist/components/comments.d.ts.map +1 -1
- package/dist/components/comments.js +1 -1
- package/dist/components/comments.js.map +1 -1
- package/dist/components/decision-form.d.ts +2 -1
- package/dist/components/decision-form.d.ts.map +1 -1
- package/dist/components/decision-form.js +36 -4
- package/dist/components/decision-form.js.map +1 -1
- package/dist/components/decision-list.d.ts +4 -0
- package/dist/components/decision-list.d.ts.map +1 -1
- package/dist/components/decision-list.js +29 -3
- package/dist/components/decision-list.js.map +1 -1
- package/dist/components/event-feed.d.ts +1 -1
- package/dist/components/event-feed.d.ts.map +1 -1
- package/dist/components/event-feed.js +33 -1
- package/dist/components/event-feed.js.map +1 -1
- package/dist/components/my-decisions.d.ts +2 -0
- package/dist/components/my-decisions.d.ts.map +1 -1
- package/dist/components/my-decisions.js +2 -2
- package/dist/components/my-decisions.js.map +1 -1
- package/dist/components/plugin-frame.d.ts +52 -0
- package/dist/components/plugin-frame.d.ts.map +1 -0
- package/dist/components/plugin-frame.js +314 -0
- package/dist/components/plugin-frame.js.map +1 -0
- package/dist/components/plugin-settings.d.ts +38 -0
- package/dist/components/plugin-settings.d.ts.map +1 -0
- package/dist/components/plugin-settings.js +348 -0
- package/dist/components/plugin-settings.js.map +1 -0
- package/dist/components/shell.d.ts +2 -0
- package/dist/components/shell.d.ts.map +1 -1
- package/dist/components/shell.js +26 -1
- package/dist/components/shell.js.map +1 -1
- package/dist/components/task-view.d.ts +2 -1
- package/dist/components/task-view.d.ts.map +1 -1
- package/dist/components/task-view.js.map +1 -1
- package/dist/components/workspace.d.ts +7 -1
- package/dist/components/workspace.d.ts.map +1 -1
- package/dist/components/workspace.js +1 -1
- package/dist/components/workspace.js.map +1 -1
- package/dist/console.css +330 -1
- package/dist/console.d.ts.map +1 -1
- package/dist/console.js +152 -41
- package/dist/console.js.map +1 -1
- package/dist/data.d.ts +9 -2
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +45 -9
- package/dist/data.js.map +1 -1
- package/dist/i18n/en.d.ts +155 -0
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +166 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +150 -0
- package/dist/i18n/ko.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/limits.d.ts +2 -0
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +2 -0
- package/dist/limits.js.map +1 -1
- package/dist/plugin/args.d.ts +148 -0
- package/dist/plugin/args.d.ts.map +1 -0
- package/dist/plugin/args.js +369 -0
- package/dist/plugin/args.js.map +1 -0
- package/dist/plugin/bridge.d.ts +146 -0
- package/dist/plugin/bridge.d.ts.map +1 -0
- package/dist/plugin/bridge.js +125 -0
- package/dist/plugin/bridge.js.map +1 -0
- package/dist/plugin/capabilities.d.ts +20 -0
- package/dist/plugin/capabilities.d.ts.map +1 -0
- package/dist/plugin/capabilities.js +133 -0
- package/dist/plugin/capabilities.js.map +1 -0
- package/dist/plugin/context.d.ts +380 -0
- package/dist/plugin/context.d.ts.map +1 -0
- package/dist/plugin/context.js +2 -0
- package/dist/plugin/context.js.map +1 -0
- package/dist/plugin/define.d.ts +208 -0
- package/dist/plugin/define.d.ts.map +1 -0
- package/dist/plugin/define.js +482 -0
- package/dist/plugin/define.js.map +1 -0
- package/dist/plugin/definition-error.d.ts +11 -0
- package/dist/plugin/definition-error.d.ts.map +1 -0
- package/dist/plugin/definition-error.js +17 -0
- package/dist/plugin/definition-error.js.map +1 -0
- package/dist/plugin/limits.d.ts +67 -0
- package/dist/plugin/limits.d.ts.map +1 -0
- package/dist/plugin/limits.js +70 -0
- package/dist/plugin/limits.js.map +1 -0
- package/dist/plugin/load-worker.d.ts +7 -0
- package/dist/plugin/load-worker.d.ts.map +1 -0
- package/dist/plugin/load-worker.js +41 -0
- package/dist/plugin/load-worker.js.map +1 -0
- package/dist/plugin/load.d.ts +18 -0
- package/dist/plugin/load.d.ts.map +1 -0
- package/dist/plugin/load.js +62 -0
- package/dist/plugin/load.js.map +1 -0
- package/dist/plugin/manifest.d.ts +237 -0
- package/dist/plugin/manifest.d.ts.map +1 -0
- package/dist/plugin/manifest.js +411 -0
- package/dist/plugin/manifest.js.map +1 -0
- package/dist/plugin/refusals.d.ts +49 -0
- package/dist/plugin/refusals.d.ts.map +1 -0
- package/dist/plugin/refusals.js +79 -0
- package/dist/plugin/refusals.js.map +1 -0
- package/dist/plugin/rest-schemas.d.ts +556 -0
- package/dist/plugin/rest-schemas.d.ts.map +1 -0
- package/dist/plugin/rest-schemas.js +262 -0
- package/dist/plugin/rest-schemas.js.map +1 -0
- package/dist/plugin/sandbox.d.ts +23 -0
- package/dist/plugin/sandbox.d.ts.map +1 -0
- package/dist/plugin/sandbox.js +99 -0
- package/dist/plugin/sandbox.js.map +1 -0
- package/dist/plugin/testing.d.ts +45 -0
- package/dist/plugin/testing.d.ts.map +1 -0
- package/dist/plugin/testing.js +420 -0
- package/dist/plugin/testing.js.map +1 -0
- package/dist/plugin/web-react.d.ts +11 -0
- package/dist/plugin/web-react.d.ts.map +1 -0
- package/dist/plugin/web-react.js +34 -0
- package/dist/plugin/web-react.js.map +1 -0
- package/dist/plugin/web.d.ts +95 -0
- package/dist/plugin/web.d.ts.map +1 -0
- package/dist/plugin/web.js +245 -0
- package/dist/plugin/web.js.map +1 -0
- package/dist/plugin-nav.d.ts +29 -0
- package/dist/plugin-nav.d.ts.map +1 -0
- package/dist/plugin-nav.js +92 -0
- package/dist/plugin-nav.js.map +1 -0
- package/dist/plugin-testing.d.ts +2 -0
- package/dist/plugin-testing.d.ts.map +1 -0
- package/dist/plugin-testing.js +4 -0
- package/dist/plugin-testing.js.map +1 -0
- package/dist/plugin-web-react.d.ts +3 -0
- package/dist/plugin-web-react.d.ts.map +1 -0
- package/dist/plugin-web-react.js +3 -0
- package/dist/plugin-web-react.js.map +1 -0
- package/dist/plugin-web.d.ts +4 -0
- package/dist/plugin-web.d.ts.map +1 -0
- package/dist/plugin-web.js +5 -0
- package/dist/plugin-web.js.map +1 -0
- package/dist/plugin.d.ts +11 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +15 -0
- package/dist/plugin.js.map +1 -0
- package/dist/router.d.ts +28 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +47 -0
- package/dist/router.js.map +1 -1
- package/dist/routes.d.ts +4 -0
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +6 -0
- package/dist/routes.js.map +1 -1
- package/dist/schemas.d.ts +194 -9
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +98 -17
- package/dist/schemas.js.map +1 -1
- package/dist/tokens.d.ts +2 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +101 -0
- package/dist/tokens.js.map +1 -0
- package/dist/vocabulary.d.ts +11 -1
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +24 -0
- package/dist/vocabulary.js.map +1 -1
- package/dist/web.d.ts.map +1 -1
- package/dist/web.js +2 -0
- package/dist/web.js.map +1 -1
- package/docs/specs/cli.md +12 -5
- package/docs/specs/plugins.md +488 -0
- package/docs/specs/rest.md +11 -9
- package/package.json +26 -8
- package/skills/building-a-console/SKILL.md +25 -26
- package/skills/building-a-console/references/configuring.md +40 -0
- package/skills/building-a-console/references/the-default-console.md +1 -1
- package/skills/building-a-console/references/the-look-from-a-website.md +5 -5
- package/skills/building-a-plugin/SKILL.md +137 -0
- package/skills/deploying-a-console/SKILL.md +24 -26
- package/skills/deploying-a-console/references/access.md +13 -9
- package/skills/deploying-a-console/references/resources.md +25 -10
- package/skills/deploying-a-console/references/running-it-again.md +15 -0
- package/skills/deploying-a-console/references/sizing.md +2 -0
- package/skills/planning-the-board/SKILL.md +96 -0
- package/skills/planning-the-board/references/a-task.md +36 -0
- package/skills/planning-the-board/references/setting-up.md +44 -0
- package/skills/working-the-board/SKILL.md +43 -34
- package/skills/working-the-board/references/the-pack.md +19 -0
- package/src/api.ts +12 -0
- package/src/cli/cli.ts +737 -55
- package/src/cli/format.ts +368 -10
- package/src/cli/help.ts +50 -6
- package/src/cli/plugin-check.ts +497 -0
- package/src/cli/plugin-cli.ts +237 -0
- package/src/cli/plugin-init.ts +257 -0
- package/src/cli/plugin-main.ts +30 -0
- package/src/client.ts +322 -9
- package/src/compat.ts +2 -2
- package/src/components/board.tsx +62 -14
- package/src/components/comments.tsx +1 -0
- package/src/components/decision-form.tsx +92 -11
- package/src/components/decision-list.tsx +71 -2
- package/src/components/event-feed.tsx +42 -1
- package/src/components/my-decisions.tsx +4 -1
- package/src/components/plugin-frame.tsx +437 -0
- package/src/components/plugin-settings.tsx +1111 -0
- package/src/components/shell.tsx +82 -14
- package/src/components/task-view.tsx +2 -1
- package/src/components/workspace.tsx +18 -0
- package/src/console.tsx +304 -31
- package/src/data.ts +59 -11
- package/src/i18n/en.ts +175 -0
- package/src/i18n/ko.ts +155 -0
- package/src/index.ts +12 -0
- package/src/limits.ts +2 -0
- package/src/plugin/args.ts +526 -0
- package/src/plugin/bridge.ts +314 -0
- package/src/plugin/capabilities.ts +150 -0
- package/src/plugin/context.ts +421 -0
- package/src/plugin/define.ts +792 -0
- package/src/plugin/definition-error.ts +19 -0
- package/src/plugin/limits.ts +70 -0
- package/src/plugin/load-worker.ts +50 -0
- package/src/plugin/load.ts +82 -0
- package/src/plugin/manifest.ts +561 -0
- package/src/plugin/refusals.ts +94 -0
- package/src/plugin/rest-schemas.ts +354 -0
- package/src/plugin/sandbox.ts +123 -0
- package/src/plugin/testing.ts +612 -0
- package/src/plugin/web-react.ts +45 -0
- package/src/plugin/web.ts +403 -0
- package/src/plugin-nav.ts +132 -0
- package/src/plugin-testing.ts +10 -0
- package/src/plugin-web-react.ts +4 -0
- package/src/plugin-web.ts +35 -0
- package/src/plugin.ts +126 -0
- package/src/router.ts +73 -0
- package/src/routes.ts +7 -0
- package/src/schemas.ts +115 -18
- package/src/styles/console.css +330 -1
- package/src/tokens.ts +101 -0
- package/src/vocabulary.ts +30 -0
- package/src/web.ts +2 -0
- package/template/plugin/.gitignore +2 -0
- package/template/plugin/README.md +26 -0
- package/template/plugin/SKILLCDN.md +13 -0
- package/template/plugin/build.mjs +40 -0
- package/template/plugin/console-plugin.json +50 -0
- package/template/plugin/package.json +27 -0
- package/template/plugin/skills/__key__/SKILL.md +23 -0
- package/template/plugin/src/check.test.ts +34 -0
- package/template/plugin/src/server/index.test.ts +41 -0
- package/template/plugin/src/server/index.ts +72 -0
- package/template/plugin/src/web/index.css +51 -0
- package/template/plugin/src/web/index.ts +115 -0
- package/template/plugin/tsconfig.json +17 -0
- package/skills/working-the-board/references/setting-up.md +0 -3
- /package/skills/{working-the-board → planning-the-board}/references/project-rules.md +0 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import type { ArgDefinitions, ArgDescription, ArgsOf } from "./args.js";
|
|
2
|
+
import type { CollectionDefinition, EndpointRequest, EndpointResponse, PluginContext, PluginHookEvent, RecordSchema } from "./context.js";
|
|
3
|
+
/** The milliseconds an ISO 8601 duration such as `P1D`, `PT30M` or `P1W` stands for; nothing for what is not one. */
|
|
4
|
+
export declare function durationMs(iso: string): number | undefined;
|
|
5
|
+
export interface CollectionInput<S extends RecordSchema> {
|
|
6
|
+
/** A zod schema of the record's data, or any schema that follows Standard Schema. Checked on every write. */
|
|
7
|
+
readonly schema: S;
|
|
8
|
+
/** The fields `where` and `order` may name, and `aggregate` groups by; up to eight. */
|
|
9
|
+
readonly indexes?: readonly string[];
|
|
10
|
+
/** The fields searched as words. */
|
|
11
|
+
readonly search?: readonly string[];
|
|
12
|
+
/** The field that holds a person's id, by which `readOwn` roles read their own records. */
|
|
13
|
+
readonly owner?: string;
|
|
14
|
+
/** Whether a record is linked to a project: never, where the caller says, or always. */
|
|
15
|
+
readonly project?: "none" | "optional" | "required";
|
|
16
|
+
/** The roles that read the collection through the console's routes and the bridge. */
|
|
17
|
+
readonly read?: readonly string[];
|
|
18
|
+
/** The roles that read their own records in it. */
|
|
19
|
+
readonly readOwn?: readonly string[];
|
|
20
|
+
/** A version kept per write; on unless said otherwise. */
|
|
21
|
+
readonly history?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** A collection of records the console keeps for the plugin, by name. */
|
|
24
|
+
export declare function defineCollection<S extends RecordSchema>(name: string, input: CollectionInput<S>): CollectionDefinition<S>;
|
|
25
|
+
/** What a command answers: what it prints, what `--json` prints, and the decision the caller waits for, if any. */
|
|
26
|
+
export interface CommandResult {
|
|
27
|
+
readonly text: string;
|
|
28
|
+
readonly data?: unknown;
|
|
29
|
+
readonly waiting?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface CommandInput<A extends ArgDefinitions> {
|
|
32
|
+
readonly about: string;
|
|
33
|
+
readonly args?: A;
|
|
34
|
+
/** The roles that may run it, any of them; left out, every member may. */
|
|
35
|
+
readonly roles?: readonly string[];
|
|
36
|
+
run(ctx: PluginContext, args: ArgsOf<A>): Promise<CommandResult>;
|
|
37
|
+
}
|
|
38
|
+
export interface CommandDefinition<A extends ArgDefinitions = ArgDefinitions> {
|
|
39
|
+
readonly kind: "command";
|
|
40
|
+
readonly about: string;
|
|
41
|
+
readonly args: A;
|
|
42
|
+
readonly roles: readonly string[] | null;
|
|
43
|
+
run(ctx: PluginContext, args: ArgsOf<A>): Promise<CommandResult>;
|
|
44
|
+
}
|
|
45
|
+
/** A file a query answers with, in place of JSON. */
|
|
46
|
+
export interface QueryFile {
|
|
47
|
+
readonly file: {
|
|
48
|
+
readonly name: string;
|
|
49
|
+
readonly type: string;
|
|
50
|
+
readonly bytes: Uint8Array;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export declare function isQueryFile(value: unknown): value is QueryFile;
|
|
54
|
+
export interface QueryInput<A extends ArgDefinitions> {
|
|
55
|
+
readonly about: string;
|
|
56
|
+
readonly args?: A;
|
|
57
|
+
readonly roles?: readonly string[];
|
|
58
|
+
/** JSON, or a `QueryFile` for an export. */
|
|
59
|
+
run(ctx: PluginContext, args: ArgsOf<A>): Promise<unknown>;
|
|
60
|
+
}
|
|
61
|
+
export interface QueryDefinition<A extends ArgDefinitions = ArgDefinitions> {
|
|
62
|
+
readonly kind: "query";
|
|
63
|
+
readonly about: string;
|
|
64
|
+
readonly args: A;
|
|
65
|
+
readonly roles: readonly string[] | null;
|
|
66
|
+
run(ctx: PluginContext, args: ArgsOf<A>): Promise<unknown>;
|
|
67
|
+
}
|
|
68
|
+
/** Plugin code that writes, run as the person who asked. */
|
|
69
|
+
export declare function defineCommand<A extends ArgDefinitions = Record<never, never>>(input: CommandInput<A>): CommandDefinition<A>;
|
|
70
|
+
/** Plugin code that reads, run as the person who asked. */
|
|
71
|
+
export declare function defineQuery<A extends ArgDefinitions = Record<never, never>>(input: QueryInput<A>): QueryDefinition<A>;
|
|
72
|
+
export type EndpointAuth = "person" | "webhook";
|
|
73
|
+
export interface EndpointInput {
|
|
74
|
+
/** `person`: a session or a token, with `roles`; `webhook`: nobody, the plugin verifies the signature with `secret`. */
|
|
75
|
+
readonly auth: EndpointAuth;
|
|
76
|
+
readonly roles?: readonly string[];
|
|
77
|
+
/** The `secret` setting a webhook's signature is verified with, through `ctx.secrets.verify`. */
|
|
78
|
+
readonly secret?: string;
|
|
79
|
+
/** The methods accepted; `POST` alone when left out. */
|
|
80
|
+
readonly methods?: readonly string[];
|
|
81
|
+
/** The request headers handed to `run` beside `content-type`, in lowercase. */
|
|
82
|
+
readonly headers?: readonly string[];
|
|
83
|
+
run(ctx: PluginContext, request: EndpointRequest): Promise<EndpointResponse>;
|
|
84
|
+
}
|
|
85
|
+
export interface EndpointDefinition {
|
|
86
|
+
readonly kind: "endpoint";
|
|
87
|
+
readonly auth: EndpointAuth;
|
|
88
|
+
readonly roles: readonly string[] | null;
|
|
89
|
+
readonly secret: string | null;
|
|
90
|
+
readonly methods: readonly string[];
|
|
91
|
+
readonly headers: readonly string[];
|
|
92
|
+
run(ctx: PluginContext, request: EndpointRequest): Promise<EndpointResponse>;
|
|
93
|
+
}
|
|
94
|
+
/** An inbound request the plugin accepts under `/api/v1/plugins/<key>/x/<name>`, with the `endpoints` capability. */
|
|
95
|
+
export declare function defineEndpoint(input: EndpointInput): EndpointDefinition;
|
|
96
|
+
export type HookHandler = (ctx: PluginContext, event: PluginHookEvent) => Promise<void>;
|
|
97
|
+
export interface JobDefinition {
|
|
98
|
+
readonly about: string;
|
|
99
|
+
/** An ISO 8601 duration, five minutes or more. */
|
|
100
|
+
readonly every: string;
|
|
101
|
+
/** A time of day, `HH:MM` in the workspace's time zone, for a daily or longer `every`. */
|
|
102
|
+
readonly at?: string;
|
|
103
|
+
run(ctx: PluginContext): Promise<void>;
|
|
104
|
+
}
|
|
105
|
+
export interface UpgradeDefinition {
|
|
106
|
+
/** The `dataVersion` this upgrade brings the records to. */
|
|
107
|
+
readonly to: number;
|
|
108
|
+
readonly about: string;
|
|
109
|
+
run(ctx: PluginContext): Promise<void>;
|
|
110
|
+
}
|
|
111
|
+
export interface ApiDefinition<S extends RecordSchema = RecordSchema> {
|
|
112
|
+
readonly about: string;
|
|
113
|
+
/** The schema of what a caller sends. */
|
|
114
|
+
readonly input: S;
|
|
115
|
+
run(ctx: PluginContext, input: unknown): Promise<unknown>;
|
|
116
|
+
}
|
|
117
|
+
export type Lifecycle = (ctx: PluginContext) => Promise<void>;
|
|
118
|
+
export interface PluginParts {
|
|
119
|
+
readonly collections?: readonly CollectionDefinition[];
|
|
120
|
+
readonly commands?: Readonly<Record<string, CommandDefinition>>;
|
|
121
|
+
readonly queries?: Readonly<Record<string, QueryDefinition>>;
|
|
122
|
+
readonly endpoints?: Readonly<Record<string, EndpointDefinition>>;
|
|
123
|
+
/** Hooks: `"console:<kind>"` with `events:console`, `"plugin:<key>:<kind>"` with `events:plugins`. */
|
|
124
|
+
readonly on?: Readonly<Record<string, HookHandler>>;
|
|
125
|
+
readonly jobs?: Readonly<Record<string, JobDefinition>>;
|
|
126
|
+
readonly upgrades?: readonly UpgradeDefinition[];
|
|
127
|
+
/** What other plugins may call with `plugins:<key>`. */
|
|
128
|
+
readonly api?: Readonly<Record<string, ApiDefinition>>;
|
|
129
|
+
readonly onEnable?: Lifecycle;
|
|
130
|
+
readonly onDisable?: Lifecycle;
|
|
131
|
+
}
|
|
132
|
+
/** The default export of a plugin's server module. */
|
|
133
|
+
export interface PluginDefinition {
|
|
134
|
+
readonly pluginApi: number;
|
|
135
|
+
readonly collections: readonly CollectionDefinition[];
|
|
136
|
+
readonly commands: Readonly<Record<string, CommandDefinition>>;
|
|
137
|
+
readonly queries: Readonly<Record<string, QueryDefinition>>;
|
|
138
|
+
readonly endpoints: Readonly<Record<string, EndpointDefinition>>;
|
|
139
|
+
readonly on: Readonly<Record<string, HookHandler>>;
|
|
140
|
+
readonly jobs: Readonly<Record<string, JobDefinition>>;
|
|
141
|
+
readonly upgrades: readonly UpgradeDefinition[];
|
|
142
|
+
readonly api: Readonly<Record<string, ApiDefinition>>;
|
|
143
|
+
readonly onEnable: Lifecycle | null;
|
|
144
|
+
readonly onDisable: Lifecycle | null;
|
|
145
|
+
}
|
|
146
|
+
/** The whole of a plugin's server module, checked once when it loads. */
|
|
147
|
+
export declare function definePlugin(parts: PluginParts): PluginDefinition;
|
|
148
|
+
/** True for what `definePlugin` yields, whichever copy of this package built it. */
|
|
149
|
+
export declare function isPluginDefinition(value: unknown): value is PluginDefinition;
|
|
150
|
+
/** A command or a query as the console describes it: enough to parse words, write help and draw a form. */
|
|
151
|
+
export interface OperationDescription {
|
|
152
|
+
readonly about: string;
|
|
153
|
+
readonly args: Readonly<Record<string, ArgDescription>>;
|
|
154
|
+
readonly roles: readonly string[] | null;
|
|
155
|
+
}
|
|
156
|
+
export interface CollectionDescription {
|
|
157
|
+
readonly name: string;
|
|
158
|
+
readonly indexes: readonly string[];
|
|
159
|
+
readonly search: readonly string[];
|
|
160
|
+
readonly owner: string | null;
|
|
161
|
+
readonly project: "none" | "optional" | "required";
|
|
162
|
+
readonly read: readonly string[];
|
|
163
|
+
readonly readOwn: readonly string[];
|
|
164
|
+
readonly history: boolean;
|
|
165
|
+
}
|
|
166
|
+
export interface EndpointDescription {
|
|
167
|
+
readonly auth: EndpointAuth;
|
|
168
|
+
readonly roles: readonly string[] | null;
|
|
169
|
+
readonly secret: string | null;
|
|
170
|
+
readonly methods: readonly string[];
|
|
171
|
+
readonly headers: readonly string[];
|
|
172
|
+
}
|
|
173
|
+
/** The server module as data: what crosses from the plugin's thread to the console, as JSON. */
|
|
174
|
+
export interface PluginDescription {
|
|
175
|
+
readonly pluginApi: number;
|
|
176
|
+
readonly collections: readonly CollectionDescription[];
|
|
177
|
+
readonly commands: Readonly<Record<string, OperationDescription>>;
|
|
178
|
+
readonly queries: Readonly<Record<string, OperationDescription>>;
|
|
179
|
+
readonly endpoints: Readonly<Record<string, EndpointDescription>>;
|
|
180
|
+
readonly hooks: readonly string[];
|
|
181
|
+
readonly jobs: Readonly<Record<string, {
|
|
182
|
+
readonly about: string;
|
|
183
|
+
readonly every: string;
|
|
184
|
+
readonly at: string | null;
|
|
185
|
+
}>>;
|
|
186
|
+
readonly upgrades: readonly {
|
|
187
|
+
readonly to: number;
|
|
188
|
+
readonly about: string;
|
|
189
|
+
}[];
|
|
190
|
+
readonly api: Readonly<Record<string, {
|
|
191
|
+
readonly about: string;
|
|
192
|
+
}>>;
|
|
193
|
+
readonly onEnable: boolean;
|
|
194
|
+
readonly onDisable: boolean;
|
|
195
|
+
}
|
|
196
|
+
/** The definition as JSON, functions and schemas left behind. */
|
|
197
|
+
export declare function describePlugin(definition: PluginDefinition): PluginDescription;
|
|
198
|
+
/** What a manifest must declare for a description to hold: the problems, or none. */
|
|
199
|
+
export declare function descriptionProblems(description: PluginDescription, manifest: {
|
|
200
|
+
readonly roles: Readonly<Record<string, unknown>>;
|
|
201
|
+
readonly capabilities: readonly string[];
|
|
202
|
+
readonly settings: readonly {
|
|
203
|
+
readonly key: string;
|
|
204
|
+
readonly type: string;
|
|
205
|
+
}[];
|
|
206
|
+
readonly dataVersion: number;
|
|
207
|
+
}): string[];
|
|
208
|
+
//# sourceMappingURL=define.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../src/plugin/define.ts"],"names":[],"mappings":"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"}
|