@arki/dot 0.2.0 → 0.4.0
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 +86 -86
- package/dist/cli/discover.js +2 -2
- package/dist/cli/discover.js.map +1 -1
- package/dist/cli/error-codes.d.ts +8 -0
- package/dist/cli/error-codes.d.ts.map +1 -1
- package/dist/cli/error-codes.js +12 -0
- package/dist/cli/error-codes.js.map +1 -1
- package/dist/cli/index.d.ts +11 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +66 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/new.d.ts +1 -1
- package/dist/cli/new.js +1 -1
- package/dist/cli/render-doctor.d.ts +1 -1
- package/dist/cli/render-doctor.js +23 -23
- package/dist/cli/render-doctor.js.map +1 -1
- package/dist/cli/render-explain.d.ts.map +1 -1
- package/dist/cli/render-explain.js +33 -19
- package/dist/cli/render-explain.js.map +1 -1
- package/dist/cli/render-graph.d.ts +3 -3
- package/dist/cli/render-graph.js +12 -12
- package/dist/cli/render-graph.js.map +1 -1
- package/dist/cli/render-openapi.d.ts +38 -0
- package/dist/cli/render-openapi.d.ts.map +1 -0
- package/dist/cli/render-openapi.js +131 -0
- package/dist/cli/render-openapi.js.map +1 -0
- package/dist/cli/render-projection.d.ts +29 -0
- package/dist/cli/render-projection.d.ts.map +1 -0
- package/dist/cli/render-projection.js +202 -0
- package/dist/cli/render-projection.js.map +1 -0
- package/dist/define-app.d.ts +49 -17
- package/dist/define-app.d.ts.map +1 -1
- package/dist/define-app.js +16 -9
- package/dist/define-app.js.map +1 -1
- package/dist/diagnostics.d.ts +19 -15
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +2 -2
- package/dist/index.d.ts +15 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/init-pips.d.ts +45 -0
- package/dist/init-pips.d.ts.map +1 -0
- package/dist/init-pips.js +49 -0
- package/dist/init-pips.js.map +1 -0
- package/dist/init-plugins.d.ts +45 -0
- package/dist/init-plugins.d.ts.map +1 -0
- package/dist/init-plugins.js +49 -0
- package/dist/init-plugins.js.map +1 -0
- package/dist/kernel/app-instance.d.ts +5 -5
- package/dist/kernel/app-instance.d.ts.map +1 -1
- package/dist/kernel/app-instance.js +375 -244
- package/dist/kernel/app-instance.js.map +1 -1
- package/dist/kernel/otel.d.ts +19 -19
- package/dist/kernel/otel.d.ts.map +1 -1
- package/dist/kernel/otel.js +22 -22
- package/dist/kernel/otel.js.map +1 -1
- package/dist/lifecycle-observer.d.ts +10 -10
- package/dist/lifecycle-observer.d.ts.map +1 -1
- package/dist/lifecycle-observer.js +1 -1
- package/dist/lifecycle.d.ts +18 -14
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +13 -9
- package/dist/lifecycle.js.map +1 -1
- package/dist/manifest.d.ts +70 -29
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +74 -5
- package/dist/manifest.js.map +1 -1
- package/dist/pip-contract.d.ts +40 -10
- package/dist/pip-contract.d.ts.map +1 -1
- package/dist/pip-contract.js +1 -25
- package/dist/pip-contract.js.map +1 -1
- package/dist/pip.d.ts +7 -4
- package/dist/pip.d.ts.map +1 -1
- package/dist/pip.js +2 -0
- package/dist/pip.js.map +1 -1
- package/dist/plugin-contract.d.ts +335 -143
- package/dist/plugin-contract.d.ts.map +1 -1
- package/dist/plugin-contract.js +201 -36
- package/dist/plugin-contract.js.map +1 -1
- package/dist/plugin.d.ts +18 -15
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +11 -11
- package/dist/plugin.js.map +1 -1
- package/dist/test-harness.d.ts +31 -31
- package/dist/test-harness.d.ts.map +1 -1
- package/dist/test-harness.js +29 -28
- package/dist/test-harness.js.map +1 -1
- package/dist/timeline.d.ts +2 -2
- package/dist/timeline.js +5 -5
- package/dist/timeline.js.map +1 -1
- package/package.json +9 -9
- package/src/cli/discover.ts +2 -2
- package/src/cli/error-codes.ts +12 -0
- package/src/cli/index.ts +93 -15
- package/src/cli/new.ts +1 -1
- package/src/cli/render-doctor.ts +21 -21
- package/src/cli/render-explain.ts +37 -19
- package/src/cli/render-graph.ts +12 -12
- package/src/cli/render-projection.ts +239 -0
- package/src/define-app.ts +85 -22
- package/src/diagnostics.ts +19 -15
- package/src/index.ts +38 -20
- package/src/init-plugins.ts +142 -0
- package/src/kernel/app-instance.ts +428 -282
- package/src/kernel/otel.ts +27 -27
- package/src/lifecycle-observer.ts +10 -10
- package/src/lifecycle.ts +19 -15
- package/src/manifest.ts +128 -31
- package/src/{pip-contract.ts → plugin-contract.ts} +83 -44
- package/src/{pip.ts → plugin.ts} +38 -18
- package/src/test-harness.ts +52 -51
- package/src/timeline.ts +6 -6
- package/templates/app-minimal/AGENTS.md.tmpl +9 -9
- package/templates/app-minimal/README.md.tmpl +1 -1
- package/templates/app-minimal/tests/boot.test.ts.tmpl +1 -1
package/dist/lifecycle.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
/**
|
|
18
18
|
* The complete set of lifecycle hooks in execution order.
|
|
19
|
-
* `stop` and `dispose` run in reverse declaration order across
|
|
19
|
+
* `stop` and `dispose` run in reverse declaration order across plugins, but the
|
|
20
20
|
* sequence of hooks themselves is always `configure -> boot -> start -> stop -> dispose`.
|
|
21
21
|
*/
|
|
22
22
|
export const DOT_LIFECYCLE_HOOKS = [
|
|
@@ -48,16 +48,20 @@ export const DotLifecycleErrorCode = {
|
|
|
48
48
|
// v2 wiring model — declaration order is boot order, so cycles and
|
|
49
49
|
// name-based dependency declarations no longer exist. Codes are never
|
|
50
50
|
// reused for new meanings.
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
/** A
|
|
51
|
+
/** Plugin registered twice. */
|
|
52
|
+
DuplicatePlugin: 'DOT_LIFECYCLE_E011',
|
|
53
|
+
/** A plugin's `needs` entry has no provider among earlier-booted plugins. */
|
|
54
54
|
UnsatisfiedNeed: 'DOT_LIFECYCLE_E012',
|
|
55
|
-
/** A
|
|
55
|
+
/** A plugin published a wire key that an earlier plugin already provides. */
|
|
56
56
|
ServiceCollision: 'DOT_LIFECYCLE_E013',
|
|
57
57
|
/** A needs alias, publish key, or rename target uses the reserved `$` prefix. */
|
|
58
58
|
ReservedServiceKey: 'DOT_LIFECYCLE_E014',
|
|
59
59
|
/** A lifecycle hook exceeded the app's `hookTimeoutMs` watchdog. */
|
|
60
60
|
HookTimeout: 'DOT_LIFECYCLE_E015',
|
|
61
|
+
/** Two actions in the same binding use the same id. */
|
|
62
|
+
DuplicateAction: 'DOT_LIFECYCLE_E016',
|
|
63
|
+
/** Action metadata is not JSON-round-trip safe. */
|
|
64
|
+
ActionMetaNotJson: 'DOT_LIFECYCLE_E017',
|
|
61
65
|
};
|
|
62
66
|
/**
|
|
63
67
|
* Structured error thrown for any lifecycle failure or misuse.
|
|
@@ -65,14 +69,14 @@ export const DotLifecycleErrorCode = {
|
|
|
65
69
|
* Carries:
|
|
66
70
|
* - `code` — stable machine-readable error code (see {@link DotLifecycleErrorCode}).
|
|
67
71
|
* - `phase` — which hook (or pseudo-hook) failed.
|
|
68
|
-
* - `
|
|
72
|
+
* - `plugin` — which plugin name, when applicable.
|
|
69
73
|
* - `cause` — original error if wrapped from a hook throw.
|
|
70
|
-
* - `failures` — for aggregate errors (stop/dispose), the per-
|
|
74
|
+
* - `failures` — for aggregate errors (stop/dispose), the per-plugin failures.
|
|
71
75
|
*/
|
|
72
76
|
export class DotLifecycleError extends Error {
|
|
73
77
|
code;
|
|
74
78
|
phase;
|
|
75
|
-
|
|
79
|
+
plugin;
|
|
76
80
|
cause;
|
|
77
81
|
failures;
|
|
78
82
|
constructor(args) {
|
|
@@ -80,7 +84,7 @@ export class DotLifecycleError extends Error {
|
|
|
80
84
|
this.name = 'DotLifecycleError';
|
|
81
85
|
this.code = args.code;
|
|
82
86
|
this.phase = args.phase;
|
|
83
|
-
this.
|
|
87
|
+
this.plugin = args.plugin;
|
|
84
88
|
this.cause = args.cause;
|
|
85
89
|
this.failures = args.failures;
|
|
86
90
|
}
|
package/dist/lifecycle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC9D,WAAW;IACX,MAAM;IACN,OAAO;IACP,MAAM;IACN,SAAS;CACD,CAAC;AAiBX,iDAAiD;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,oEAAoE;IACpE,cAAc,EAAE,oBAAoB;IACpC,gCAAgC;IAChC,eAAe,EAAE,oBAAoB;IACrC,2BAA2B;IAC3B,UAAU,EAAE,oBAAoB;IAChC,4BAA4B;IAC5B,WAAW,EAAE,oBAAoB;IACjC,kDAAkD;IAClD,UAAU,EAAE,oBAAoB;IAChC,qDAAqD;IACrD,aAAa,EAAE,oBAAoB;IACnC,mDAAmD;IACnD,iBAAiB,EAAE,oBAAoB;IACvC,8DAA8D;IAC9D,iBAAiB,EAAE,oBAAoB;IACvC,2EAA2E;IAC3E,mEAAmE;IACnE,sEAAsE;IACtE,2BAA2B;IAC3B
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC9D,WAAW;IACX,MAAM;IACN,OAAO;IACP,MAAM;IACN,SAAS;CACD,CAAC;AAiBX,iDAAiD;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,oEAAoE;IACpE,cAAc,EAAE,oBAAoB;IACpC,gCAAgC;IAChC,eAAe,EAAE,oBAAoB;IACrC,2BAA2B;IAC3B,UAAU,EAAE,oBAAoB;IAChC,4BAA4B;IAC5B,WAAW,EAAE,oBAAoB;IACjC,kDAAkD;IAClD,UAAU,EAAE,oBAAoB;IAChC,qDAAqD;IACrD,aAAa,EAAE,oBAAoB;IACnC,mDAAmD;IACnD,iBAAiB,EAAE,oBAAoB;IACvC,8DAA8D;IAC9D,iBAAiB,EAAE,oBAAoB;IACvC,2EAA2E;IAC3E,mEAAmE;IACnE,sEAAsE;IACtE,2BAA2B;IAC3B,+BAA+B;IAC/B,eAAe,EAAE,oBAAoB;IACrC,6EAA6E;IAC7E,eAAe,EAAE,oBAAoB;IACrC,6EAA6E;IAC7E,gBAAgB,EAAE,oBAAoB;IACtC,iFAAiF;IACjF,kBAAkB,EAAE,oBAAoB;IACxC,oEAAoE;IACpE,WAAW,EAAE,oBAAoB;IACjC,uDAAuD;IACvD,eAAe,EAAE,oBAAoB;IACrC,mDAAmD;IACnD,iBAAiB,EAAE,oBAAoB;CAC/B,CAAC;AAIX;;;;;;;;;GASG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAA6B;IACjC,KAAK,CAAmB;IACxB,MAAM,CAAU;IACP,KAAK,CAAW;IACzB,QAAQ,CAAwC;IAEzD,YAAY,IAOX;QACC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;CACF"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -2,71 +2,112 @@
|
|
|
2
2
|
* Manifest types for the DOT kernel.
|
|
3
3
|
*
|
|
4
4
|
* A `DotAppManifest` is the static, declarative description of an app: which
|
|
5
|
-
*
|
|
5
|
+
* plugins are registered, what actions/services/projections they contribute, and how they
|
|
6
6
|
* depend on each other. It is built up during the `configure` phase from
|
|
7
7
|
* registration calls and finalised once `configure` completes.
|
|
8
8
|
*
|
|
9
|
-
* CONTRACT: `DotAppManifest` always exposes the same
|
|
10
|
-
* (`
|
|
11
|
-
* MUST NOT see an omitted array — empty is empty,
|
|
12
|
-
*
|
|
9
|
+
* CONTRACT: `DotAppManifest` always exposes the same six top-level arrays
|
|
10
|
+
* (`plugins`, `actions`, `services`, `lifecycle`, `dependencies`,
|
|
11
|
+
* `projections`). Consumers MUST NOT see an omitted array — empty is empty,
|
|
12
|
+
* but never missing.
|
|
13
13
|
*/
|
|
14
14
|
import type { DotLifecycleHook } from './lifecycle.js';
|
|
15
|
+
/** JSON-serializable value — the manifest's currency. */
|
|
16
|
+
export type JsonValue = string | number | boolean | null | JsonValue[] | {
|
|
17
|
+
[key: string]: JsonValue;
|
|
18
|
+
};
|
|
19
|
+
/** JSON-serializable object used for adapter-owned manifest metadata. */
|
|
20
|
+
export type JsonObject = {
|
|
21
|
+
[key: string]: JsonValue;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Validate and narrow unknown adapter data into manifest JSON metadata.
|
|
25
|
+
*
|
|
26
|
+
* The check intentionally compares the original value against a
|
|
27
|
+
* JSON.stringify/parse round trip. Dates, functions, undefined fields, NaN,
|
|
28
|
+
* Infinity, class instances, and cycles fail instead of being silently
|
|
29
|
+
* coerced in `dot explain --json`.
|
|
30
|
+
*/
|
|
31
|
+
export declare function toJsonObject(value: unknown): JsonObject;
|
|
15
32
|
/**
|
|
16
|
-
* Kind of service that a
|
|
33
|
+
* Kind of service that a plugin can publish.
|
|
17
34
|
*
|
|
18
35
|
* Well-known kinds map 1:1 to the canonical `@arki/*` adapters. `custom`
|
|
19
|
-
* is the escape hatch for
|
|
20
|
-
*
|
|
36
|
+
* is the escape hatch for plugin-defined service kinds — use it whenever a
|
|
37
|
+
* plugin publishes something that does not fit a reserved shape.
|
|
21
38
|
*/
|
|
22
39
|
export type ServiceKind = 'env' | 'db' | 'kv' | 'queue' | 'auth' | 'email' | 'logger' | 'event-store' | 'message-bus' | 'custom';
|
|
23
|
-
/**
|
|
24
|
-
export type RouteTransport = 'http' | 'orpc' | 'trpc' | 'rpc' | 'custom';
|
|
25
|
-
/** Kind of dependency edge between two pips. */
|
|
40
|
+
/** Kind of dependency edge between two plugins. */
|
|
26
41
|
export type DependencyEdgeKind = 'requires' | 'provides' | 'uses';
|
|
42
|
+
/** Direction of a boundary interaction, viewed from the app. */
|
|
43
|
+
export type ActionDirection = 'in' | 'out';
|
|
44
|
+
/** Something the app does at a boundary — universal, serializable, tiny. */
|
|
45
|
+
export type ActionManifest = {
|
|
46
|
+
/** Stable identifier, e.g. `orders.list` or `orders.created.consume`. */
|
|
47
|
+
id: string;
|
|
48
|
+
plugin: string;
|
|
49
|
+
/** Adapter-owned binding name: `http`, `queue`, `cli`, `cron`, etc. */
|
|
50
|
+
binding: string;
|
|
51
|
+
/** `in` = world invokes/feeds the app; `out` = app emits. */
|
|
52
|
+
direction: ActionDirection;
|
|
53
|
+
/** Display-only address printed by `dot explain`. */
|
|
54
|
+
address?: string;
|
|
55
|
+
/** Human summary rendered into explain output and projected documents. */
|
|
56
|
+
summary?: string;
|
|
57
|
+
/** Adapter-owned, JSON-serializable detail. Opaque to the kernel. */
|
|
58
|
+
meta?: Readonly<JsonObject>;
|
|
59
|
+
/** Optional adapter-owned identifier+version for the meta layout. */
|
|
60
|
+
metaSchema?: string;
|
|
61
|
+
};
|
|
62
|
+
/** Registered projection renderer for an adapter-owned document format. */
|
|
63
|
+
export type ProjectionManifest = {
|
|
64
|
+
/** Document format key matched by `dot explain --as <format>`. */
|
|
65
|
+
format: string;
|
|
66
|
+
/** Binding this projection primarily renders. Informational. */
|
|
67
|
+
binding: string;
|
|
68
|
+
/** Import specifier for the projection module. */
|
|
69
|
+
module: string;
|
|
70
|
+
/** Plugin that registered this projection. */
|
|
71
|
+
plugin: string;
|
|
72
|
+
};
|
|
27
73
|
/**
|
|
28
74
|
* Top-level manifest describing the static shape of a DOT app.
|
|
29
75
|
*
|
|
30
|
-
* Always carries the
|
|
76
|
+
* Always carries the six arrays — never omits any of them.
|
|
31
77
|
*/
|
|
32
78
|
export type DotAppManifest = {
|
|
79
|
+
/** Manifest schema version. 2 = actions/projections era. */
|
|
80
|
+
manifestVersion: 2;
|
|
33
81
|
app: {
|
|
34
82
|
name: string;
|
|
35
83
|
version?: string;
|
|
36
84
|
};
|
|
37
|
-
|
|
38
|
-
|
|
85
|
+
plugins: PluginManifest[];
|
|
86
|
+
actions: ActionManifest[];
|
|
39
87
|
services: ServiceManifest[];
|
|
40
88
|
lifecycle: LifecycleManifest[];
|
|
41
89
|
dependencies: DependencyEdge[];
|
|
90
|
+
projections: ProjectionManifest[];
|
|
42
91
|
};
|
|
43
|
-
/** Single
|
|
44
|
-
export type
|
|
92
|
+
/** Single plugin's declarative metadata. */
|
|
93
|
+
export type PluginManifest = {
|
|
45
94
|
name: string;
|
|
46
95
|
version?: string;
|
|
47
96
|
dependencies: readonly string[];
|
|
48
97
|
provides: readonly string[];
|
|
49
98
|
};
|
|
50
|
-
/** Single
|
|
51
|
-
export type RouteManifest = {
|
|
52
|
-
id: string;
|
|
53
|
-
pip: string;
|
|
54
|
-
method?: string;
|
|
55
|
-
path?: string;
|
|
56
|
-
transport: RouteTransport;
|
|
57
|
-
};
|
|
58
|
-
/** Single service published by a pip. */
|
|
99
|
+
/** Single service published by a plugin. */
|
|
59
100
|
export type ServiceManifest = {
|
|
60
101
|
name: string;
|
|
61
|
-
|
|
102
|
+
plugin: string;
|
|
62
103
|
kind: ServiceKind;
|
|
63
104
|
};
|
|
64
|
-
/** Which lifecycle hooks a
|
|
105
|
+
/** Which lifecycle hooks a plugin participates in. */
|
|
65
106
|
export type LifecycleManifest = {
|
|
66
|
-
|
|
107
|
+
plugin: string;
|
|
67
108
|
hooks: readonly DotLifecycleHook[];
|
|
68
109
|
};
|
|
69
|
-
/** Directed edge in the
|
|
110
|
+
/** Directed edge in the plugin dependency graph. */
|
|
70
111
|
export type DependencyEdge = {
|
|
71
112
|
from: string;
|
|
72
113
|
to: string;
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,aAAa,GACb,aAAa,GACb,QAAQ,CAAC;AAEb
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/manifest.js
CHANGED
|
@@ -2,13 +2,82 @@
|
|
|
2
2
|
* Manifest types for the DOT kernel.
|
|
3
3
|
*
|
|
4
4
|
* A `DotAppManifest` is the static, declarative description of an app: which
|
|
5
|
-
*
|
|
5
|
+
* plugins are registered, what actions/services/projections they contribute, and how they
|
|
6
6
|
* depend on each other. It is built up during the `configure` phase from
|
|
7
7
|
* registration calls and finalised once `configure` completes.
|
|
8
8
|
*
|
|
9
|
-
* CONTRACT: `DotAppManifest` always exposes the same
|
|
10
|
-
* (`
|
|
11
|
-
* MUST NOT see an omitted array — empty is empty,
|
|
12
|
-
*
|
|
9
|
+
* CONTRACT: `DotAppManifest` always exposes the same six top-level arrays
|
|
10
|
+
* (`plugins`, `actions`, `services`, `lifecycle`, `dependencies`,
|
|
11
|
+
* `projections`). Consumers MUST NOT see an omitted array — empty is empty,
|
|
12
|
+
* but never missing.
|
|
13
13
|
*/
|
|
14
|
+
function jsonRoundTrip(value) {
|
|
15
|
+
let serialized;
|
|
16
|
+
try {
|
|
17
|
+
serialized = JSON.stringify(value);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
throw new TypeError('Value must be JSON-serializable manifest data.', { cause: error });
|
|
21
|
+
}
|
|
22
|
+
if (serialized === undefined) {
|
|
23
|
+
throw new TypeError('Value must be a JSON-serializable object.');
|
|
24
|
+
}
|
|
25
|
+
return JSON.parse(serialized);
|
|
26
|
+
}
|
|
27
|
+
function isJsonPrimitive(value) {
|
|
28
|
+
return value === null || typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number';
|
|
29
|
+
}
|
|
30
|
+
function isPlainObject(value) {
|
|
31
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
32
|
+
return false;
|
|
33
|
+
const prototype = Object.getPrototypeOf(value);
|
|
34
|
+
return prototype === Object.prototype || prototype === null;
|
|
35
|
+
}
|
|
36
|
+
function isJsonValue(value) {
|
|
37
|
+
if (isJsonPrimitive(value))
|
|
38
|
+
return typeof value !== 'number' || Number.isFinite(value);
|
|
39
|
+
if (Array.isArray(value))
|
|
40
|
+
return value.every(isJsonValue);
|
|
41
|
+
if (!isPlainObject(value))
|
|
42
|
+
return false;
|
|
43
|
+
return Object.values(value).every(isJsonValue);
|
|
44
|
+
}
|
|
45
|
+
function isJsonObject(value) {
|
|
46
|
+
return isPlainObject(value) && Object.values(value).every(isJsonValue);
|
|
47
|
+
}
|
|
48
|
+
function jsonDeepEqual(left, right) {
|
|
49
|
+
if (isJsonPrimitive(left) || isJsonPrimitive(right))
|
|
50
|
+
return Object.is(left, right);
|
|
51
|
+
if (Array.isArray(left) || Array.isArray(right)) {
|
|
52
|
+
if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length)
|
|
53
|
+
return false;
|
|
54
|
+
return left.every((value, index) => jsonDeepEqual(value, right[index]));
|
|
55
|
+
}
|
|
56
|
+
if (!isPlainObject(left) || !isPlainObject(right))
|
|
57
|
+
return false;
|
|
58
|
+
const leftEntries = Object.entries(left);
|
|
59
|
+
const rightEntries = Object.entries(right);
|
|
60
|
+
if (leftEntries.length !== rightEntries.length)
|
|
61
|
+
return false;
|
|
62
|
+
for (const [key, value] of leftEntries) {
|
|
63
|
+
if (!Object.hasOwn(right, key) || !jsonDeepEqual(value, right[key]))
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Validate and narrow unknown adapter data into manifest JSON metadata.
|
|
70
|
+
*
|
|
71
|
+
* The check intentionally compares the original value against a
|
|
72
|
+
* JSON.stringify/parse round trip. Dates, functions, undefined fields, NaN,
|
|
73
|
+
* Infinity, class instances, and cycles fail instead of being silently
|
|
74
|
+
* coerced in `dot explain --json`.
|
|
75
|
+
*/
|
|
76
|
+
export function toJsonObject(value) {
|
|
77
|
+
const parsed = jsonRoundTrip(value);
|
|
78
|
+
if (!isJsonObject(parsed) || !jsonDeepEqual(value, parsed)) {
|
|
79
|
+
throw new TypeError('Value must be a JSON-serializable object without lossy coercions.');
|
|
80
|
+
}
|
|
81
|
+
return parsed;
|
|
82
|
+
}
|
|
14
83
|
//# sourceMappingURL=manifest.js.map
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/pip-contract.d.ts
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* - `stop` and `dispose` run in reverse declaration order and continue
|
|
18
18
|
* through individual pip failures, reporting an aggregate error.
|
|
19
19
|
*/
|
|
20
|
-
import type {
|
|
20
|
+
import type { ActionManifest, ProjectionManifest, JsonObject, ServiceKind } from './manifest.js';
|
|
21
21
|
declare const TypeOf: unique symbol;
|
|
22
22
|
/**
|
|
23
23
|
* Phantom type witness for a service. Carries `T` at the type level only —
|
|
@@ -192,6 +192,25 @@ export type KernelCtx = {
|
|
|
192
192
|
readonly $config: Readonly<Record<string, unknown>>;
|
|
193
193
|
};
|
|
194
194
|
/** Context provided to a `configure` hook (sync registration only). */
|
|
195
|
+
export type ActionDeclaration = Omit<ActionManifest, 'pip'>;
|
|
196
|
+
/** Structural protocol for adapter-owned declarations. */
|
|
197
|
+
export type ActionSource = ActionDeclaration | {
|
|
198
|
+
toDotAction(): ActionDeclaration;
|
|
199
|
+
};
|
|
200
|
+
export type ProjectionDeclaration = Omit<ProjectionManifest, 'pip'>;
|
|
201
|
+
type LegacyRouteDeclaration = {
|
|
202
|
+
id: string;
|
|
203
|
+
method?: string;
|
|
204
|
+
path?: string;
|
|
205
|
+
transport: string;
|
|
206
|
+
description?: string;
|
|
207
|
+
input?: {
|
|
208
|
+
readonly query?: Readonly<JsonObject>;
|
|
209
|
+
readonly body?: Readonly<JsonObject>;
|
|
210
|
+
};
|
|
211
|
+
output?: Readonly<JsonObject>;
|
|
212
|
+
streaming?: boolean;
|
|
213
|
+
};
|
|
195
214
|
export type DotConfigureContext = {
|
|
196
215
|
pipName: string;
|
|
197
216
|
/** App name. */
|
|
@@ -202,13 +221,12 @@ export type DotConfigureContext = {
|
|
|
202
221
|
* is returned from the `boot` hook.
|
|
203
222
|
*/
|
|
204
223
|
registerService(name: string, kind: ServiceKind): void;
|
|
205
|
-
/** Register
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}): void;
|
|
224
|
+
/** Register an action this pip contributes at an app boundary. */
|
|
225
|
+
registerAction(action: ActionDeclaration): void;
|
|
226
|
+
/** Register a projection renderer this pip contributes. */
|
|
227
|
+
registerProjection(projection: ProjectionDeclaration): void;
|
|
228
|
+
/** @deprecated Use `registerAction`; removed in DOT 0.5.0. */
|
|
229
|
+
registerRoute(route: LegacyRouteDeclaration): void;
|
|
212
230
|
/** Mark the pip as participating in a lifecycle hook. */
|
|
213
231
|
registerLifecycleHook(hook: 'configure' | 'boot' | 'start' | 'stop' | 'dispose'): void;
|
|
214
232
|
/** Append `provides` capability strings (informational, manifest-only). */
|
|
@@ -235,6 +253,7 @@ export type Pip<TNeeds extends ServiceRecord = ServiceRecord, TProvides extends
|
|
|
235
253
|
readonly version?: string;
|
|
236
254
|
/** Runtime needs shape (local alias → witness). */
|
|
237
255
|
readonly needs: NeedsShape;
|
|
256
|
+
readonly actions: readonly ActionSource[];
|
|
238
257
|
/** Mount-time renames: publish key → new wire key (see {@link rename}). */
|
|
239
258
|
readonly renames: Readonly<Record<string, string>>;
|
|
240
259
|
readonly hooks: {
|
|
@@ -278,16 +297,27 @@ export type AnyPip = Pip<ServiceRecord, ServiceRecord>;
|
|
|
278
297
|
* });
|
|
279
298
|
* ```
|
|
280
299
|
*/
|
|
300
|
+
/**
|
|
301
|
+
* A `boot` that returns `void` gives `TProvides` no inference candidate,
|
|
302
|
+
* and TypeScript then substitutes the CONSTRAINT (`ServiceRecord & …`,
|
|
303
|
+
* whose `keyof` is `string`) rather than the declared default. That wide
|
|
304
|
+
* record would poison the app builder's collision check for every later
|
|
305
|
+
* `.use()` — `keyof TAvail & string` is never empty. Detect the fallback
|
|
306
|
+
* by its tell (a full string index signature — no `pip()`-authored
|
|
307
|
+
* provides record has one) and collapse it to "provides nothing".
|
|
308
|
+
*/
|
|
309
|
+
export type InferredProvides<TP extends ServiceRecord> = string extends keyof TP ? EmptyShape : TP;
|
|
281
310
|
export declare function pip<TShape extends NeedsShape & NoReservedKeys = EmptyShape, TProvides extends ServiceRecord & NoReservedKeys = EmptyShape>(def: {
|
|
282
311
|
readonly name: string;
|
|
283
312
|
readonly version?: string;
|
|
284
313
|
readonly needs?: TShape;
|
|
314
|
+
readonly actions?: readonly ActionSource[];
|
|
285
315
|
readonly configure?: (ctx: DotConfigureContext) => void;
|
|
286
316
|
readonly boot?: (ctx: CtxOf<TShape> & KernelCtx) => MaybePromise<TProvides | void>;
|
|
287
317
|
readonly start?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
|
|
288
318
|
readonly stop?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
|
|
289
319
|
readonly dispose?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
|
|
290
|
-
}): Pip<WireNeeds<TShape>, TProvides
|
|
320
|
+
}): Pip<WireNeeds<TShape>, InferredProvides<TProvides>>;
|
|
291
321
|
/** Rename a pip's published wire keys — the multi-instance primitive. */
|
|
292
322
|
export type RenamedProvides<TP, M> = {
|
|
293
323
|
[K in keyof TP as K extends keyof M ? (M[K] extends string ? M[K] : K) : K]: TP[K];
|
|
@@ -333,5 +363,5 @@ export declare class DotPipError extends Error {
|
|
|
333
363
|
});
|
|
334
364
|
}
|
|
335
365
|
/** Re-exported for downstream typing. */
|
|
336
|
-
export { type DotAppManifest, type PipManifest } from './manifest.js';
|
|
366
|
+
export { type ActionManifest, type DotAppManifest, type PipManifest, type ProjectionManifest } from './manifest.js';
|
|
337
367
|
//# sourceMappingURL=pip-contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pip-contract.d.ts","sourceRoot":"","sources":["../src/pip-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"pip-contract.d.ts","sourceRoot":"","sources":["../src/pip-contract.ts"],"names":[],"mappings":"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"}
|
package/dist/pip-contract.js
CHANGED
|
@@ -137,36 +137,12 @@ export function lazyOf(value) {
|
|
|
137
137
|
},
|
|
138
138
|
};
|
|
139
139
|
}
|
|
140
|
-
/**
|
|
141
|
-
* Author a DOT pip.
|
|
142
|
-
*
|
|
143
|
-
* - `TShape` is inferred from the `needs` object literal.
|
|
144
|
-
* - `TProvides` is inferred from `boot`'s return type — no generic argument.
|
|
145
|
-
* - `boot({ db, log, $app })` destructures typed services under the local
|
|
146
|
-
* aliases declared in `needs`, plus the `$`-prefixed kernel keys.
|
|
147
|
-
* - `start` / `stop` / `dispose` additionally receive the pip's own
|
|
148
|
-
* provides. Reverse-order teardown guarantees needs are still alive in
|
|
149
|
-
* `dispose`.
|
|
150
|
-
*
|
|
151
|
-
* @example
|
|
152
|
-
* ```ts
|
|
153
|
-
* export const billing = pip({
|
|
154
|
-
* name: 'billing',
|
|
155
|
-
* needs: { db: service<Db>(), log: service<Logger>() },
|
|
156
|
-
* async boot({ db, log }) {
|
|
157
|
-
* return { billing: new BillingService(db, log) };
|
|
158
|
-
* },
|
|
159
|
-
* async dispose({ billing }) {
|
|
160
|
-
* await billing.flush();
|
|
161
|
-
* },
|
|
162
|
-
* });
|
|
163
|
-
* ```
|
|
164
|
-
*/
|
|
165
140
|
export function pip(def) {
|
|
166
141
|
return {
|
|
167
142
|
name: def.name,
|
|
168
143
|
...(def.version === undefined ? {} : { version: def.version }),
|
|
169
144
|
needs: def.needs ?? {},
|
|
145
|
+
actions: def.actions ?? [],
|
|
170
146
|
renames: {},
|
|
171
147
|
hooks: {
|
|
172
148
|
...(def.configure === undefined ? {} : { configure: def.configure }),
|
package/dist/pip-contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pip-contract.js","sourceRoot":"","sources":["../src/pip-contract.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pip-contract.js","sourceRoot":"","sources":["../src/pip-contract.ts"],"names":[],"mappings":"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"}
|
package/dist/pip.d.ts
CHANGED
|
@@ -15,15 +15,18 @@
|
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
17
|
export { isLazy, lazy, lazyOf, pip, provide, rename, service, token, DotPipError } from './pip-contract.js';
|
|
18
|
-
export type { AnyPip, CtxOf, DotConfigureContext, EmptyShape, KernelCtx, Lazy, LazyService, NeedsShape, Pip, PipNeeds, PipProvides, RenamedProvides, Service, ServiceRecord, Token, WireNeeds, } from './pip-contract.js';
|
|
18
|
+
export type { AnyPip, ActionDeclaration, ActionSource, CtxOf, DotConfigureContext, EmptyShape, InferredProvides, KernelCtx, Lazy, LazyService, NeedsShape, NoReservedKeys, Pip, PipNeeds, PipProvides, ProjectionDeclaration, RenamedProvides, Service, ServiceRecord, Token, WireNeeds, } from './pip-contract.js';
|
|
19
19
|
export { defineApp } from './define-app.js';
|
|
20
|
-
export type { DotApp, DotAppBuilder, DotAppConfigured } from './define-app.js';
|
|
20
|
+
export type { DotApp, DotAppBuilder, DotAppConfigured, NormalizeProvides, UseAllAvail, UseAllGuard, UseGuard, } from './define-app.js';
|
|
21
|
+
export { initPips } from './init-pips.js';
|
|
22
|
+
export type { InitPipsFactory } from './init-pips.js';
|
|
21
23
|
export { testApp, bootTestApp } from './test-harness.js';
|
|
22
24
|
export type { TestAppOptions } from './test-harness.js';
|
|
23
25
|
export type { DotLifecycleHook, DotLifecycleState, DotLifecyclePipFailure, DotLifecycleErrorCodeValue, } from './lifecycle.js';
|
|
24
26
|
export { DotLifecycleError, DotLifecycleErrorCode, DOT_LIFECYCLE_HOOKS } from './lifecycle.js';
|
|
25
|
-
export type { DotAppManifest, PipManifest,
|
|
26
|
-
export
|
|
27
|
+
export type { DotAppManifest, ActionDirection, ActionManifest, JsonObject, JsonValue, PipManifest, ProjectionManifest, ServiceManifest, LifecycleManifest, DependencyEdge, DependencyEdgeKind, ServiceKind, } from './manifest.js';
|
|
28
|
+
export { toJsonObject } from './manifest.js';
|
|
29
|
+
export type { DotDiagnosticsSnapshot, PipDiagnostic, ActionDiagnostic, ServiceDiagnostic, LifecycleDiagnostic, DiagnosticIssue, DiagnosticSeverity, DiagnosticStatus, } from './diagnostics.js';
|
|
27
30
|
export type { DotLifecycleEvent, DotLifecycleEventStatus, DotLifecycleObserver, DotPhaseLifecycleEvent, DotPipHookLifecycleEvent, } from './lifecycle-observer.js';
|
|
28
31
|
export { renderTimeline } from './timeline.js';
|
|
29
32
|
export type { RenderTimelineOptions } from './timeline.js';
|
package/dist/pip.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pip.d.ts","sourceRoot":"","sources":["../src/pip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5G,YAAY,EACV,MAAM,EACN,KAAK,EACL,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,IAAI,EACJ,WAAW,EACX,UAAU,EACV,GAAG,EACH,QAAQ,EACR,WAAW,EACX,eAAe,EACf,OAAO,EACP,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,
|
|
1
|
+
{"version":3,"file":"pip.d.ts","sourceRoot":"","sources":["../src/pip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5G,YAAY,EACV,MAAM,EACN,iBAAiB,EACjB,YAAY,EACZ,KAAK,EACL,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,IAAI,EACJ,WAAW,EACX,UAAU,EACV,cAAc,EACd,GAAG,EACH,QAAQ,EACR,WAAW,EACX,qBAAqB,EACrB,eAAe,EACf,OAAO,EACP,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE/F,YAAY,EACV,cAAc,EACd,eAAe,EACf,cAAc,EACd,UAAU,EACV,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/pip.js
CHANGED
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
*/
|
|
17
17
|
export { isLazy, lazy, lazyOf, pip, provide, rename, service, token, DotPipError } from './pip-contract.js';
|
|
18
18
|
export { defineApp } from './define-app.js';
|
|
19
|
+
export { initPips } from './init-pips.js';
|
|
19
20
|
export { testApp, bootTestApp } from './test-harness.js';
|
|
20
21
|
export { DotLifecycleError, DotLifecycleErrorCode, DOT_LIFECYCLE_HOOKS } from './lifecycle.js';
|
|
22
|
+
export { toJsonObject } from './manifest.js';
|
|
21
23
|
export { renderTimeline } from './timeline.js';
|
|
22
24
|
//# sourceMappingURL=pip.js.map
|
package/dist/pip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pip.js","sourceRoot":"","sources":["../src/pip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"pip.js","sourceRoot":"","sources":["../src/pip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAyB5G,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AASzD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAgB/F,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAqB7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|