@pikku/deploy 0.12.8 → 0.12.10
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/CHANGELOG.md +38 -0
- package/dist/index.d.ts +1 -1
- package/dist/manifest.d.ts +36 -0
- package/package.json +8 -4
- package/src/index.ts +0 -51
- package/src/manifest.ts +0 -198
- package/src/node-builtins.test.ts +0 -26
- package/src/node-builtins.ts +0 -19
- package/src/platform-service-contributor.test.ts +0 -113
- package/src/platform-service-contributor.ts +0 -111
- package/src/provider-adapter.ts +0 -267
- package/src/remote-job-inbox.ts +0 -29
- package/src/server-ready.test.ts +0 -38
- package/src/server-ready.ts +0 -21
- package/src/shared-contract.test.ts +0 -105
- package/tsconfig.json +0 -13
- package/tsconfig.tsbuildinfo +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# @pikku/deploy
|
|
2
2
|
|
|
3
|
+
## 0.12.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 2ce5e4b: Add `deploy.grouping.strategy: 'services'` — one deployment unit per distinct
|
|
8
|
+
set of singleton services.
|
|
9
|
+
|
|
10
|
+
One unit per function is a lot of units, and `'single'` is the only alternative,
|
|
11
|
+
which is too coarse: it puts the AI SDKs in with everything. `'services'` keys a
|
|
12
|
+
function on the singleton services its body destructures, minus the ones every
|
|
13
|
+
unit builds regardless, and names the unit for that set (`svc-todo-store`,
|
|
14
|
+
`svc-base`). On `templates/functions` it turns 44 units into 10.
|
|
15
|
+
|
|
16
|
+
The deploy target is part of the key, so a `server` unit is named `-server` and
|
|
17
|
+
never merges with its serverless twin — a function can declare `deploy: 'server'`
|
|
18
|
+
itself while carrying exactly the services a serverless one does, and keying on
|
|
19
|
+
services alone made that plan fail the mixed-target refusal.
|
|
20
|
+
|
|
21
|
+
Units named this way record their key as `servicesKey` in the deployment
|
|
22
|
+
manifest. The existing `services` list is keyed by capability and cannot tell
|
|
23
|
+
`workflowService` from `workflowRunService`.
|
|
24
|
+
|
|
25
|
+
- 5c236ee: A deployment unit records why it is where it is. `DeploymentUnit` gains `groupedBy` — the `deploy.grouping` rule that put its functions together — and `targetForcedBy` — the `serverlessIncompatible` services that crossed it to `target: 'server'`. Both are absent for the fallback and for a target that was chosen rather than forced, so anything reading a manifest can tell a deliberate `server` unit from a crossed one. `resolveDeployTarget` now shares `incompatibleServicesFor` with the analyzer, so resolving a target and explaining it cannot drift.
|
|
26
|
+
|
|
27
|
+
## 0.12.9
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- b28a8c0: An addon's exposed functions get their own deployment unit
|
|
32
|
+
|
|
33
|
+
`collectFilterNames` adds the `/rpc/:rpcName` scaffold name to every unit holding an exposed function, so that unit can serve its own `/rpc/<funcName>`. `filterInspectorState` read that same string back as "this unit is the generic dispatcher" and kept every wired addon's declaration for it, so almost every function unit imported each addon's whole package bootstrap — and the node-only modules it reaches.
|
|
34
|
+
|
|
35
|
+
No unit retains a wired addon on the strength of a catch-all route any more. Instead the analyzer emits a unit per addon carrying that addon's exposed functions, and the unit serving `/rpc/:rpcName` dispatches to it over a service binding rather than bundling it. Granularity is per addon rather than per function because an addon publishes a single prebuilt bootstrap that registers all of its functions at once.
|
|
36
|
+
|
|
37
|
+
`node:child_process` joins `node:fs` as a stubbed builtin: Workers have no implementation of it under any compatibility flag, and it is reached from the console addon's audit tooling.
|
|
38
|
+
|
|
39
|
+
`DeploymentUnit` gains `dispatch`, an RPC-name → unit-name map for calls whose target unit isn't the kebab-cased RPC name. `rpc.exposed(name)` falls through to the deployment service for a namespaced name with no local metadata, and Cloudflare function units with a `dependsOn` now get a `deploymentService`, which previously only gateway units had.
|
|
40
|
+
|
|
3
41
|
## 0.12.8
|
|
4
42
|
|
|
5
43
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { AgentDefinition, ChannelDefinition, DeploymentHandler, DeploymentManifest, DeploymentUnit, DeploymentUnitRole, GrantedAddon, HttpRouteInfo, MCPEndpointDefinition, QueueDefinition, ScheduledTaskDefinition, SecretDeclaration, ServiceCapability, ServiceRequirement, UnresolvedSecretRead, UnscopedAddon, VariableDeclaration, WorkflowDefinition, WorkflowStepDefinition, } from './manifest.js';
|
|
1
|
+
export type { AgentDefinition, ChannelDefinition, DeploymentHandler, DeploymentManifest, DeploymentUnit, DeploymentUnitRole, GrantedAddon, GroupingRule, HttpRouteInfo, MCPEndpointDefinition, QueueDefinition, ScheduledTaskDefinition, SecretDeclaration, ServiceCapability, ServiceRequirement, UnresolvedSecretRead, UnscopedAddon, VariableDeclaration, WorkflowDefinition, WorkflowStepDefinition, } from './manifest.js';
|
|
2
2
|
export { REMOTE_JOB_INBOX_PATHS, unitWiresRemoteJobInbox, } from './remote-job-inbox.js';
|
|
3
3
|
export type { EntryGenerationContext, ProviderAdapter, } from './provider-adapter.js';
|
|
4
4
|
export type { BindingSource, ContributorPlatform, PlatformServiceContributor, } from './platform-service-contributor.js';
|
package/dist/manifest.d.ts
CHANGED
|
@@ -31,6 +31,16 @@ export interface HttpRouteInfo {
|
|
|
31
31
|
route: string;
|
|
32
32
|
pikkuFuncId: string;
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* One `deploy.grouping` rule, as written in `pikku.config.json`. A function
|
|
36
|
+
* joins a rule's unit when it matches every predicate the rule sets.
|
|
37
|
+
*/
|
|
38
|
+
export interface GroupingRule {
|
|
39
|
+
unit: string;
|
|
40
|
+
tags?: string[];
|
|
41
|
+
addon?: string;
|
|
42
|
+
routes?: string[];
|
|
43
|
+
}
|
|
34
44
|
export interface DeploymentUnit {
|
|
35
45
|
name: string;
|
|
36
46
|
role: DeploymentUnitRole;
|
|
@@ -41,6 +51,32 @@ export interface DeploymentUnit {
|
|
|
41
51
|
services: ServiceRequirement[];
|
|
42
52
|
/** Other unit names this unit calls via RPC / service bindings */
|
|
43
53
|
dependsOn: string[];
|
|
54
|
+
/**
|
|
55
|
+
* The `deploy.grouping` rule that put these functions together. Absent when
|
|
56
|
+
* the unit came from the fallback — one unit per function, or the single
|
|
57
|
+
* `app` unit under `strategy: 'single'`.
|
|
58
|
+
*/
|
|
59
|
+
groupedBy?: GroupingRule;
|
|
60
|
+
/**
|
|
61
|
+
* The services that named this unit under `deploy.grouping.strategy:
|
|
62
|
+
* 'services'` — the set left after the ones every unit builds regardless.
|
|
63
|
+
* Absent under every other strategy. Recorded because `services` below is
|
|
64
|
+
* keyed by capability and so cannot tell two different service sets apart.
|
|
65
|
+
*/
|
|
66
|
+
servicesKey?: string[];
|
|
67
|
+
/**
|
|
68
|
+
* Services in `deploy.serverlessIncompatible` that forced `target: 'server'`.
|
|
69
|
+
* Absent when the target came from a function's own `deploy` flag or from
|
|
70
|
+
* `defaultTarget`, so its presence is what distinguishes a chosen target
|
|
71
|
+
* from a crossed one.
|
|
72
|
+
*/
|
|
73
|
+
targetForcedBy?: string[];
|
|
74
|
+
/**
|
|
75
|
+
* RPC name -> unit name, for calls whose target unit cannot be derived from
|
|
76
|
+
* the RPC name itself. A namespaced addon RPC (`console:runSecurityAudit`)
|
|
77
|
+
* is served by a unit named after the addon, not after the function.
|
|
78
|
+
*/
|
|
79
|
+
dispatch?: Record<string, string>;
|
|
44
80
|
/** What runtime handlers this unit needs to export */
|
|
45
81
|
handlers: DeploymentHandler[];
|
|
46
82
|
tags: string[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pikku/deploy",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.10",
|
|
4
|
+
"repository": {
|
|
5
|
+
"type": "git",
|
|
6
|
+
"url": "git+https://github.com/pikkujs/pikku.git",
|
|
7
|
+
"directory": "packages/deploy/deploy-core"
|
|
8
|
+
},
|
|
4
9
|
"description": "Shared deploy contract for Pikku — the deployment manifest types, the provider adapter interface, and the helpers every provider adapter needs",
|
|
5
10
|
"type": "module",
|
|
6
11
|
"main": "dist/index.js",
|
|
@@ -10,11 +15,10 @@
|
|
|
10
15
|
"test": "node --test --import tsx src/*.test.ts"
|
|
11
16
|
},
|
|
12
17
|
"devDependencies": {
|
|
13
|
-
"tsx": "^4.23.12"
|
|
14
|
-
"typescript": "^6.0.3"
|
|
18
|
+
"tsx": "^4.23.12"
|
|
15
19
|
},
|
|
16
20
|
"exports": {
|
|
17
21
|
".": "./dist/index.js"
|
|
18
22
|
},
|
|
19
23
|
"license": "MIT"
|
|
20
|
-
}
|
|
24
|
+
}
|
package/src/index.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
export type {
|
|
2
|
-
AgentDefinition,
|
|
3
|
-
ChannelDefinition,
|
|
4
|
-
DeploymentHandler,
|
|
5
|
-
DeploymentManifest,
|
|
6
|
-
DeploymentUnit,
|
|
7
|
-
DeploymentUnitRole,
|
|
8
|
-
GrantedAddon,
|
|
9
|
-
HttpRouteInfo,
|
|
10
|
-
MCPEndpointDefinition,
|
|
11
|
-
QueueDefinition,
|
|
12
|
-
ScheduledTaskDefinition,
|
|
13
|
-
SecretDeclaration,
|
|
14
|
-
ServiceCapability,
|
|
15
|
-
ServiceRequirement,
|
|
16
|
-
UnresolvedSecretRead,
|
|
17
|
-
UnscopedAddon,
|
|
18
|
-
VariableDeclaration,
|
|
19
|
-
WorkflowDefinition,
|
|
20
|
-
WorkflowStepDefinition,
|
|
21
|
-
} from './manifest.js'
|
|
22
|
-
|
|
23
|
-
export {
|
|
24
|
-
REMOTE_JOB_INBOX_PATHS,
|
|
25
|
-
unitWiresRemoteJobInbox,
|
|
26
|
-
} from './remote-job-inbox.js'
|
|
27
|
-
|
|
28
|
-
export type {
|
|
29
|
-
EntryGenerationContext,
|
|
30
|
-
ProviderAdapter,
|
|
31
|
-
} from './provider-adapter.js'
|
|
32
|
-
|
|
33
|
-
export type {
|
|
34
|
-
BindingSource,
|
|
35
|
-
ContributorPlatform,
|
|
36
|
-
PlatformServiceContributor,
|
|
37
|
-
} from './platform-service-contributor.js'
|
|
38
|
-
|
|
39
|
-
export {
|
|
40
|
-
DEFAULT_BINDING_SOURCES,
|
|
41
|
-
assertContributorsSupported,
|
|
42
|
-
collectContributorImports,
|
|
43
|
-
collectContributorLines,
|
|
44
|
-
contributorBindingSources,
|
|
45
|
-
dedupeContributors,
|
|
46
|
-
partitionContributors,
|
|
47
|
-
} from './platform-service-contributor.js'
|
|
48
|
-
|
|
49
|
-
export { nodeBuiltinExternals } from './node-builtins.js'
|
|
50
|
-
|
|
51
|
-
export { SERVER_READY_MARKER, serverReadyLine } from './server-ready.js'
|
package/src/manifest.ts
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provider-agnostic deployment manifest types.
|
|
3
|
-
*
|
|
4
|
-
* Core principle: one function = one deployment unit.
|
|
5
|
-
* Gateways (MCP, agents, channels, workflow orchestrators)
|
|
6
|
-
* don't bundle function code — they dispatch via RPC.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/** What kind of deployment entry */
|
|
10
|
-
export type DeploymentUnitRole =
|
|
11
|
-
'function' | 'mcp' | 'agent' | 'channel' | 'workflow' | 'workflow-step'
|
|
12
|
-
|
|
13
|
-
/** What handlers a unit needs to export */
|
|
14
|
-
export type DeploymentHandler =
|
|
15
|
-
| { type: 'fetch'; routes: HttpRouteInfo[] }
|
|
16
|
-
| { type: 'queue'; queueName: string }
|
|
17
|
-
| { type: 'scheduled'; schedule: string; taskName: string }
|
|
18
|
-
|
|
19
|
-
/** Abstract infrastructure capability */
|
|
20
|
-
export type ServiceCapability =
|
|
21
|
-
| 'database'
|
|
22
|
-
| 'object-storage'
|
|
23
|
-
| 'queue'
|
|
24
|
-
| 'kv'
|
|
25
|
-
| 'ai-model'
|
|
26
|
-
| 'ai-storage'
|
|
27
|
-
| 'scheduler'
|
|
28
|
-
| 'workflow-state'
|
|
29
|
-
| 'credential-store'
|
|
30
|
-
|
|
31
|
-
export interface ServiceRequirement {
|
|
32
|
-
capability: ServiceCapability
|
|
33
|
-
/** Original service name from code (e.g. 'kysely', 'contentService') */
|
|
34
|
-
sourceServiceName: string
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface HttpRouteInfo {
|
|
38
|
-
method: string
|
|
39
|
-
route: string
|
|
40
|
-
pikkuFuncId: string
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export interface DeploymentUnit {
|
|
44
|
-
name: string
|
|
45
|
-
role: DeploymentUnitRole
|
|
46
|
-
/** Deploy target: serverless (CF Worker / Lambda) or server (container) */
|
|
47
|
-
target: 'serverless' | 'server'
|
|
48
|
-
/** Functions bundled in this unit (for function/workflow-step units) */
|
|
49
|
-
functionIds: string[]
|
|
50
|
-
services: ServiceRequirement[]
|
|
51
|
-
/** Other unit names this unit calls via RPC / service bindings */
|
|
52
|
-
dependsOn: string[]
|
|
53
|
-
/** What runtime handlers this unit needs to export */
|
|
54
|
-
handlers: DeploymentHandler[]
|
|
55
|
-
tags: string[]
|
|
56
|
-
/**
|
|
57
|
-
* Agents named by a `runAgent`/`rpc.agent.run` call in one of this unit's
|
|
58
|
-
* function bodies. The lookup is in-process, so the agent has to be
|
|
59
|
-
* registered here as well as in its own gateway unit.
|
|
60
|
-
*/
|
|
61
|
-
invokedAgents?: string[]
|
|
62
|
-
/** SHA-256 of final bundled artifact (set by build pipeline) */
|
|
63
|
-
bundleHash?: string
|
|
64
|
-
/** Final bundle size in bytes (set by build pipeline) */
|
|
65
|
-
bundleSizeBytes?: number
|
|
66
|
-
/** SHA-256 of sorted exact dependency map (set by build pipeline) */
|
|
67
|
-
exactDependenciesHash?: string
|
|
68
|
-
/** Top-level exact runtime dependency versions for this unit (set by build pipeline) */
|
|
69
|
-
exactDependencies?: Record<string, string>
|
|
70
|
-
/** Top-level exact optional runtime dependency versions for this unit (set by build pipeline) */
|
|
71
|
-
exactOptionalDependencies?: Record<string, string>
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export interface QueueDefinition {
|
|
75
|
-
name: string
|
|
76
|
-
consumerUnit: string
|
|
77
|
-
consumerFunctionId: string
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export interface ScheduledTaskDefinition {
|
|
81
|
-
name: string
|
|
82
|
-
schedule: string
|
|
83
|
-
unitName: string
|
|
84
|
-
functionId: string
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export interface ChannelDefinition {
|
|
88
|
-
name: string
|
|
89
|
-
route: string
|
|
90
|
-
unitName: string
|
|
91
|
-
functionIds: string[]
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export interface AgentDefinition {
|
|
95
|
-
name: string
|
|
96
|
-
unitName: string
|
|
97
|
-
toolFunctionIds: string[]
|
|
98
|
-
subAgentNames: string[]
|
|
99
|
-
model: string
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
export interface MCPEndpointDefinition {
|
|
103
|
-
unitName: string
|
|
104
|
-
toolFunctionIds: string[]
|
|
105
|
-
resourceFunctionIds: string[]
|
|
106
|
-
promptFunctionIds: string[]
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
export interface WorkflowStepDefinition {
|
|
110
|
-
name: string
|
|
111
|
-
inline: boolean
|
|
112
|
-
functionId?: string
|
|
113
|
-
unitName?: string
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export interface WorkflowDefinition {
|
|
117
|
-
name: string
|
|
118
|
-
pikkuFuncId: string
|
|
119
|
-
orchestratorUnit: string
|
|
120
|
-
steps: WorkflowStepDefinition[]
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
export interface SecretDeclaration {
|
|
124
|
-
secretId: string
|
|
125
|
-
displayName: string
|
|
126
|
-
description?: string
|
|
127
|
-
/** Hosts this secret may be sent to. Absent means unrestricted. */
|
|
128
|
-
allowedHosts?: string[]
|
|
129
|
-
/** True when some code reads this secret with a statically resolvable key. */
|
|
130
|
-
read?: boolean
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/** Secret reads whose key the inspector could not resolve, as `file:line:source`. */
|
|
134
|
-
export type UnresolvedSecretRead = string
|
|
135
|
-
|
|
136
|
-
/** A `wireAddon` instance the app exempted from secret or credential scoping. */
|
|
137
|
-
export interface UnscopedAddon {
|
|
138
|
-
namespace: string
|
|
139
|
-
package: string
|
|
140
|
-
/** The app's stated reason, from `wireAddon({ globalSecrets | globalCredentials })`. */
|
|
141
|
-
reason: string
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/** A `wireAddon` instance the app lent named secrets or credentials it never declared. */
|
|
145
|
-
export interface GrantedAddon {
|
|
146
|
-
namespace: string
|
|
147
|
-
package: string
|
|
148
|
-
/**
|
|
149
|
-
* The names the addon may now read, as the addon reads them — grants and
|
|
150
|
-
* override keys alike, since scoping is checked before an override renames.
|
|
151
|
-
*/
|
|
152
|
-
granted: string[]
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
export interface VariableDeclaration {
|
|
156
|
-
variableId: string
|
|
157
|
-
displayName: string
|
|
158
|
-
description?: string
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
export interface DeploymentManifest {
|
|
162
|
-
projectId: string
|
|
163
|
-
manifestVersion: 1
|
|
164
|
-
units: DeploymentUnit[]
|
|
165
|
-
queues: QueueDefinition[]
|
|
166
|
-
scheduledTasks: ScheduledTaskDefinition[]
|
|
167
|
-
channels: ChannelDefinition[]
|
|
168
|
-
agents: AgentDefinition[]
|
|
169
|
-
mcpEndpoints: MCPEndpointDefinition[]
|
|
170
|
-
workflows: WorkflowDefinition[]
|
|
171
|
-
secrets: SecretDeclaration[]
|
|
172
|
-
/**
|
|
173
|
-
* Reads with a non-literal key. A deployment can only narrow a unit's secret
|
|
174
|
-
* scope to the declared set when this is empty.
|
|
175
|
-
*/
|
|
176
|
-
unresolvedSecretReads: UnresolvedSecretRead[]
|
|
177
|
-
/**
|
|
178
|
-
* Addon instances exempted from secret scoping. Every other addon reads only
|
|
179
|
-
* the secrets it declared, so this is the full list of packages that can
|
|
180
|
-
* reach a secret the app never named for them.
|
|
181
|
-
*/
|
|
182
|
-
unscopedSecretAddons: UnscopedAddon[]
|
|
183
|
-
/**
|
|
184
|
-
* Addon instances exempted from credential scoping. Every other addon reaches
|
|
185
|
-
* only the credentials it declared, and none can enumerate the app's users.
|
|
186
|
-
*/
|
|
187
|
-
unscopedCredentialAddons: UnscopedAddon[]
|
|
188
|
-
/**
|
|
189
|
-
* Addon instances lent named secrets on top of the ones they declared. The
|
|
190
|
-
* other half of the same waiver as `unscopedSecretAddons` — narrower, because
|
|
191
|
-
* the app named the set — so between them a deployment sees every secret an
|
|
192
|
-
* addon can reach that it did not declare for itself.
|
|
193
|
-
*/
|
|
194
|
-
grantedSecretAddons: GrantedAddon[]
|
|
195
|
-
/** Addon instances lent named credentials on top of the ones they declared. */
|
|
196
|
-
grantedCredentialAddons: GrantedAddon[]
|
|
197
|
-
variables: VariableDeclaration[]
|
|
198
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { describe, it } from 'node:test'
|
|
2
|
-
import assert from 'node:assert/strict'
|
|
3
|
-
import { nodeBuiltinExternals } from './node-builtins.js'
|
|
4
|
-
|
|
5
|
-
describe('nodeBuiltinExternals', () => {
|
|
6
|
-
it('covers a builtin under both the bare and the node: spelling', () => {
|
|
7
|
-
const externals = nodeBuiltinExternals()
|
|
8
|
-
assert.ok(externals.includes('node:*'))
|
|
9
|
-
assert.ok(externals.includes('buffer'))
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
it('covers builtins a hand-written list left out', () => {
|
|
13
|
-
const externals = nodeBuiltinExternals()
|
|
14
|
-
for (const missed of ['async_hooks', 'perf_hooks', 'timers', 'http2']) {
|
|
15
|
-
assert.ok(
|
|
16
|
-
externals.includes(missed),
|
|
17
|
-
`${missed} would be bundled instead of resolved from the runtime`
|
|
18
|
-
)
|
|
19
|
-
}
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
it('appends provider-specific externals after the builtins', () => {
|
|
23
|
-
const externals = nodeBuiltinExternals('@aws-sdk/*', '@smithy/*')
|
|
24
|
-
assert.deepEqual(externals.slice(-2), ['@aws-sdk/*', '@smithy/*'])
|
|
25
|
-
})
|
|
26
|
-
})
|
package/src/node-builtins.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { builtinModules } from 'node:module'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* esbuild externals covering every Node.js builtin, under both spellings.
|
|
5
|
-
*
|
|
6
|
-
* `node:*` alone is not enough: a dependency compiled to CJS requires the bare
|
|
7
|
-
* name (`require('buffer')`), which esbuild resolves and bundles rather than
|
|
8
|
-
* leaving external. Both forms are emitted so either import style resolves to
|
|
9
|
-
* the runtime's own module.
|
|
10
|
-
*
|
|
11
|
-
* The list comes from the running Node so it cannot fall behind the runtime —
|
|
12
|
-
* a hand-written array silently stops covering builtins added since it was
|
|
13
|
-
* typed, and the missing ones get bundled instead.
|
|
14
|
-
*/
|
|
15
|
-
export const nodeBuiltinExternals = (...extra: string[]): string[] => [
|
|
16
|
-
'node:*',
|
|
17
|
-
...builtinModules,
|
|
18
|
-
...extra,
|
|
19
|
-
]
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { describe, test } from 'node:test'
|
|
2
|
-
import assert from 'node:assert/strict'
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
assertContributorsSupported,
|
|
6
|
-
collectContributorImports,
|
|
7
|
-
collectContributorLines,
|
|
8
|
-
dedupeContributors,
|
|
9
|
-
partitionContributors,
|
|
10
|
-
type ContributorPlatform,
|
|
11
|
-
type PlatformServiceContributor,
|
|
12
|
-
} from './platform-service-contributor.js'
|
|
13
|
-
|
|
14
|
-
const platform: ContributorPlatform = {
|
|
15
|
-
serviceNames: ['browser'],
|
|
16
|
-
needsQueue: false,
|
|
17
|
-
needsWorkflow: false,
|
|
18
|
-
needsAgent: true,
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const ctx = { unit: { name: 'app', role: 'function' } } as never
|
|
22
|
-
|
|
23
|
-
const kysely: PlatformServiceContributor = {
|
|
24
|
-
name: 'kysely',
|
|
25
|
-
imports: (p) => [
|
|
26
|
-
`import { Kysely } from 'kysely'`,
|
|
27
|
-
...(p.needsAgent ? [`import { agentTables } from './agent.js'`] : []),
|
|
28
|
-
],
|
|
29
|
-
emit: () => [` services.kysely = new Kysely({})`],
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const browser: PlatformServiceContributor = {
|
|
33
|
-
name: 'browser',
|
|
34
|
-
imports: [
|
|
35
|
-
`import { Kysely } from 'kysely'`,
|
|
36
|
-
`import { Browser } from './browser.js'`,
|
|
37
|
-
],
|
|
38
|
-
emit: ({ isGateway }) =>
|
|
39
|
-
isGateway ? [] : [` services.browser = new Browser()`],
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const queue: PlatformServiceContributor = {
|
|
43
|
-
name: 'queue',
|
|
44
|
-
requires: ['cloudflare'],
|
|
45
|
-
emit: () => [` services.queue = env.QUEUE`],
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
describe('platform service contributors', () => {
|
|
49
|
-
test('dedupe keeps the last contributor registered under a name', () => {
|
|
50
|
-
const replacement: PlatformServiceContributor = {
|
|
51
|
-
...browser,
|
|
52
|
-
emit: () => [' replaced'],
|
|
53
|
-
}
|
|
54
|
-
const result = dedupeContributors([kysely, browser, replacement])
|
|
55
|
-
|
|
56
|
-
assert.deepEqual(
|
|
57
|
-
result.map((c) => c.name),
|
|
58
|
-
['kysely', 'browser']
|
|
59
|
-
)
|
|
60
|
-
assert.deepEqual(result[1]!.emit({ ctx, platform, isGateway: false }), [
|
|
61
|
-
' replaced',
|
|
62
|
-
])
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
test('imports are resolved against the platform and de-duplicated', () => {
|
|
66
|
-
assert.deepEqual(collectContributorImports([kysely, browser], platform), [
|
|
67
|
-
`import { Kysely } from 'kysely'`,
|
|
68
|
-
`import { agentTables } from './agent.js'`,
|
|
69
|
-
`import { Browser } from './browser.js'`,
|
|
70
|
-
])
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
test('lines are emitted in registration order and empty emits vanish', () => {
|
|
74
|
-
assert.deepEqual(
|
|
75
|
-
collectContributorLines([kysely, browser], {
|
|
76
|
-
ctx,
|
|
77
|
-
platform,
|
|
78
|
-
isGateway: true,
|
|
79
|
-
}),
|
|
80
|
-
[` services.kysely = new Kysely({})`]
|
|
81
|
-
)
|
|
82
|
-
})
|
|
83
|
-
|
|
84
|
-
test('a contributor without requires needs only env bindings', () => {
|
|
85
|
-
const { supported, unsupported } = partitionContributors(
|
|
86
|
-
[kysely, queue],
|
|
87
|
-
['env']
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
assert.deepEqual(
|
|
91
|
-
supported.map((c) => c.name),
|
|
92
|
-
['kysely']
|
|
93
|
-
)
|
|
94
|
-
assert.deepEqual(
|
|
95
|
-
unsupported.map((c) => c.name),
|
|
96
|
-
['queue']
|
|
97
|
-
)
|
|
98
|
-
})
|
|
99
|
-
|
|
100
|
-
test('an adapter that cannot satisfy a contributor names it', () => {
|
|
101
|
-
assert.throws(
|
|
102
|
-
() => assertContributorsSupported([kysely, queue], ['env'], 'standalone'),
|
|
103
|
-
/standalone adapter only provides env bindings; unsupported contributors: queue \(requires cloudflare\)/
|
|
104
|
-
)
|
|
105
|
-
assert.doesNotThrow(() =>
|
|
106
|
-
assertContributorsSupported(
|
|
107
|
-
[kysely, queue],
|
|
108
|
-
['env', 'cloudflare'],
|
|
109
|
-
'cloudflare'
|
|
110
|
-
)
|
|
111
|
-
)
|
|
112
|
-
})
|
|
113
|
-
})
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import type { EntryGenerationContext } from './provider-adapter.js'
|
|
2
|
-
|
|
3
|
-
export type BindingSource = 'env' | 'cloudflare'
|
|
4
|
-
|
|
5
|
-
export interface ContributorPlatform {
|
|
6
|
-
serviceNames: string[]
|
|
7
|
-
needsQueue: boolean
|
|
8
|
-
needsWorkflow: boolean
|
|
9
|
-
needsAgent: boolean
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface PlatformServiceContributor<
|
|
13
|
-
TPlatform extends ContributorPlatform = ContributorPlatform,
|
|
14
|
-
> {
|
|
15
|
-
name: string
|
|
16
|
-
requires?: BindingSource[]
|
|
17
|
-
imports?: string[] | ((platform: TPlatform) => string[])
|
|
18
|
-
emit(args: {
|
|
19
|
-
ctx: EntryGenerationContext
|
|
20
|
-
platform: TPlatform
|
|
21
|
-
isGateway: boolean
|
|
22
|
-
}): string[]
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export const DEFAULT_BINDING_SOURCES: readonly BindingSource[] = ['env']
|
|
26
|
-
|
|
27
|
-
export const contributorBindingSources = (
|
|
28
|
-
contributor: PlatformServiceContributor<any>
|
|
29
|
-
): readonly BindingSource[] => contributor.requires ?? DEFAULT_BINDING_SOURCES
|
|
30
|
-
|
|
31
|
-
export const dedupeContributors = <T extends PlatformServiceContributor<any>>(
|
|
32
|
-
contributors: readonly T[] | undefined
|
|
33
|
-
): T[] => {
|
|
34
|
-
const byName = new Map<string, T>()
|
|
35
|
-
for (const contributor of contributors ?? []) {
|
|
36
|
-
byName.set(contributor.name, contributor)
|
|
37
|
-
}
|
|
38
|
-
return [...byName.values()]
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export const partitionContributors = <
|
|
42
|
-
T extends PlatformServiceContributor<any>,
|
|
43
|
-
>(
|
|
44
|
-
contributors: readonly T[],
|
|
45
|
-
supported: readonly BindingSource[]
|
|
46
|
-
): { supported: T[]; unsupported: T[] } => {
|
|
47
|
-
const ok: T[] = []
|
|
48
|
-
const rejected: T[] = []
|
|
49
|
-
for (const contributor of contributors) {
|
|
50
|
-
const sources = contributorBindingSources(contributor)
|
|
51
|
-
if (sources.every((source) => supported.includes(source))) {
|
|
52
|
-
ok.push(contributor)
|
|
53
|
-
} else {
|
|
54
|
-
rejected.push(contributor)
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return { supported: ok, unsupported: rejected }
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export const assertContributorsSupported = (
|
|
61
|
-
contributors: readonly PlatformServiceContributor<any>[],
|
|
62
|
-
supported: readonly BindingSource[],
|
|
63
|
-
adapterName: string
|
|
64
|
-
): void => {
|
|
65
|
-
const { unsupported } = partitionContributors(contributors, supported)
|
|
66
|
-
if (unsupported.length === 0) return
|
|
67
|
-
const detail = unsupported
|
|
68
|
-
.map(
|
|
69
|
-
(contributor) =>
|
|
70
|
-
`${contributor.name} (requires ${contributorBindingSources(contributor).join(', ')})`
|
|
71
|
-
)
|
|
72
|
-
.join('; ')
|
|
73
|
-
throw new Error(
|
|
74
|
-
`${adapterName} adapter only provides ${supported.join(', ')} bindings; unsupported contributors: ${detail}`
|
|
75
|
-
)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export const collectContributorImports = <
|
|
79
|
-
TPlatform extends ContributorPlatform,
|
|
80
|
-
>(
|
|
81
|
-
contributors: readonly PlatformServiceContributor<TPlatform>[],
|
|
82
|
-
platform: TPlatform
|
|
83
|
-
): string[] => {
|
|
84
|
-
const seen = new Set<string>()
|
|
85
|
-
const out: string[] = []
|
|
86
|
-
for (const contributor of contributors) {
|
|
87
|
-
const lines =
|
|
88
|
-
typeof contributor.imports === 'function'
|
|
89
|
-
? contributor.imports(platform)
|
|
90
|
-
: (contributor.imports ?? [])
|
|
91
|
-
for (const line of lines) {
|
|
92
|
-
if (!seen.has(line)) {
|
|
93
|
-
seen.add(line)
|
|
94
|
-
out.push(line)
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return out
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export const collectContributorLines = <TPlatform extends ContributorPlatform>(
|
|
102
|
-
contributors: readonly PlatformServiceContributor<TPlatform>[],
|
|
103
|
-
args: { ctx: EntryGenerationContext; platform: TPlatform; isGateway: boolean }
|
|
104
|
-
): string[] => {
|
|
105
|
-
const out: string[] = []
|
|
106
|
-
for (const contributor of contributors) {
|
|
107
|
-
const lines = contributor.emit(args)
|
|
108
|
-
if (lines.length > 0) out.push(...lines)
|
|
109
|
-
}
|
|
110
|
-
return out
|
|
111
|
-
}
|
package/src/provider-adapter.ts
DELETED
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provider adapter interface for the deploy pipeline.
|
|
3
|
-
*
|
|
4
|
-
* Each provider (Cloudflare, AWS, etc.) implements this to handle
|
|
5
|
-
* the provider-specific parts of deployment: entry generation,
|
|
6
|
-
* infrastructure manifests, and config files.
|
|
7
|
-
*
|
|
8
|
-
* The generic pipeline handles: analysis, codegen, bundling, plan/apply.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import type { DeploymentManifest, DeploymentUnit } from './manifest.js'
|
|
12
|
-
|
|
13
|
-
export interface EntryGenerationContext {
|
|
14
|
-
/** The unit being generated */
|
|
15
|
-
unit: DeploymentUnit
|
|
16
|
-
/** Absolute path to the unit's output directory */
|
|
17
|
-
unitDir: string
|
|
18
|
-
/** Relative path to the unit's pikku-bootstrap.gen.js */
|
|
19
|
-
bootstrapPath: string
|
|
20
|
-
/** Import statement for createConfig */
|
|
21
|
-
configImport: string
|
|
22
|
-
/** Variable name for createConfig */
|
|
23
|
-
configVar: string
|
|
24
|
-
/** Import statement for createSingletonServices */
|
|
25
|
-
servicesImport: string
|
|
26
|
-
/** Variable name for createSingletonServices */
|
|
27
|
-
servicesVar: string
|
|
28
|
-
/** Import statement for SingletonServices type (or empty string) */
|
|
29
|
-
singletonServicesImport: string
|
|
30
|
-
/** Type expression for Partial<SingletonServices> (or fallback) */
|
|
31
|
-
servicesType: string
|
|
32
|
-
/**
|
|
33
|
-
* `import mcpJson from '…/mcp.gen.json' with { type: 'json' }` when the unit
|
|
34
|
-
* has a non-empty mcp.gen.json, else ''. Pair with `mcpServerOption`.
|
|
35
|
-
*/
|
|
36
|
-
mcpImport: string
|
|
37
|
-
/**
|
|
38
|
-
* `'mcpJson, '` to splice into the PikkuNodeHTTPServer *third* (options) arg —
|
|
39
|
-
* the server reads `this.options.mcpJson`, NOT the first config arg — so it
|
|
40
|
-
* mounts /mcp. Else ''. Empty is safe — trailing commas are valid.
|
|
41
|
-
*/
|
|
42
|
-
mcpServerOption: string
|
|
43
|
-
/**
|
|
44
|
-
* The mount for a frontend the deploy is serving from the server's own
|
|
45
|
-
* origin, or undefined when the project configured none.
|
|
46
|
-
*
|
|
47
|
-
* Only the mount's shape travels here — where the built files end up is the
|
|
48
|
-
* provider's business, because it differs per runtime: node reads a directory
|
|
49
|
-
* copied beside the bundle, while a compiled bun binary has no directory at
|
|
50
|
-
* all and reads an embedded asset map instead.
|
|
51
|
-
*/
|
|
52
|
-
frontend?: {
|
|
53
|
-
urlPrefix: string
|
|
54
|
-
spaFallback: boolean
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* The database the generated entry has to open for itself, or undefined when
|
|
58
|
-
* the project has none.
|
|
59
|
-
*
|
|
60
|
-
* A hosted runtime hands `kysely` to `createSingletonServices` — `pikku dev`
|
|
61
|
-
* builds one, and a Cloudflare deploy binds one — so app code is written
|
|
62
|
-
* expecting it and typically throws without it. A standalone artifact has no
|
|
63
|
-
* such host: it IS the runtime, and until this existed it started an app whose
|
|
64
|
-
* services factory had nothing to connect to.
|
|
65
|
-
*
|
|
66
|
-
* Only the engine and where to find the coercion map travel here. Which
|
|
67
|
-
* dialect package to import, and how to reach the database, is the provider's
|
|
68
|
-
* business — a compiled bun binary and a node bundle do not open SQLite the
|
|
69
|
-
* same way, and Postgres is reached by URL rather than by path at all.
|
|
70
|
-
*/
|
|
71
|
-
/**
|
|
72
|
-
* The project's own version, for the artifact to report as its own.
|
|
73
|
-
*
|
|
74
|
-
* An operator holding a bundle on a machine has no other way to tell which
|
|
75
|
-
* build it is — there is no manifest to read and no registry to ask — and
|
|
76
|
-
* "which version is actually running" is the first question of every
|
|
77
|
-
* incident.
|
|
78
|
-
*/
|
|
79
|
-
version?: string
|
|
80
|
-
db?: {
|
|
81
|
-
engine: 'sqlite' | 'postgres'
|
|
82
|
-
/**
|
|
83
|
-
* Import specifier for the generated `coercionMap`, relative to unitDir.
|
|
84
|
-
*
|
|
85
|
-
* Absent when the app generates no coercion map. It is not a SQLite
|
|
86
|
-
* concern: the map is built from `db/annotations.ts` rather than from the
|
|
87
|
-
* dialect, and a Postgres app that annotates a column needs it attached for
|
|
88
|
-
* the same reason.
|
|
89
|
-
*/
|
|
90
|
-
coercionImportPath?: string
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* The app's `pikkuServerLifecycle` export, when it declares one.
|
|
95
|
-
*
|
|
96
|
-
* Only `pikku dev` and `pikku serve` have ever called these hooks, so an app
|
|
97
|
-
* that seeds its first admin account or opens a connection pool in
|
|
98
|
-
* `beforeStart` did that in development and silently skipped it everywhere it
|
|
99
|
-
* was actually deployed. A generated entry is the app's real host and owes it
|
|
100
|
-
* the same lifecycle the dev server gives it.
|
|
101
|
-
*/
|
|
102
|
-
lifecycle?: {
|
|
103
|
-
/** Import specifier for the lifecycle module, relative to unitDir. */
|
|
104
|
-
importPath: string
|
|
105
|
-
/** The exported name to call the hooks on. */
|
|
106
|
-
variable: string
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export interface ProviderAdapter {
|
|
111
|
-
/** Provider name (e.g. 'cloudflare', 'aws') */
|
|
112
|
-
readonly name: string
|
|
113
|
-
|
|
114
|
-
/** Subdirectory name under .deploy/ (e.g. 'cloudflare') */
|
|
115
|
-
readonly deployDirName: string
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* When true, skips per-unit decomposition and bundles everything
|
|
119
|
-
* into a single unit using the project's full .pikku/ directory.
|
|
120
|
-
* Used by standalone adapter.
|
|
121
|
-
*/
|
|
122
|
-
readonly singleUnit?: boolean
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Whether the provider's workflow runtime needs synthesized per-step
|
|
126
|
-
* dispatch queues. Defaults to `true`.
|
|
127
|
-
*
|
|
128
|
-
* - `true` (default): The deploy pipeline synthesizes a `wf-orchestrator-*`
|
|
129
|
-
* queue and a `wf-step-*` queue for every workflow step, plus producer
|
|
130
|
-
* bindings, so the workflow runtime can fan out via queues.
|
|
131
|
-
* - `false`: No synthetic workflow queues are emitted into the manifest
|
|
132
|
-
* or per-unit codegen. Use this when the provider's workflow runtime
|
|
133
|
-
* dispatches steps natively (e.g. Cloudflare's Durable-Object-based
|
|
134
|
-
* `CloudflareWorkflowService`, where the orchestrator DO advances
|
|
135
|
-
* steps directly without a queue hop). Queues created via explicit
|
|
136
|
-
* `wireQueue(...)` user code are unaffected.
|
|
137
|
-
*/
|
|
138
|
-
readonly workflowQueues?: boolean
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Generate the entry file source for a deployment unit.
|
|
142
|
-
* Called once per unit.
|
|
143
|
-
*/
|
|
144
|
-
generateEntrySource(ctx: EntryGenerationContext): string
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Generate the entry file source for a `target: 'server'` (container) unit.
|
|
148
|
-
*
|
|
149
|
-
* Optional. When a provider implements it, the deploy pipeline uses it
|
|
150
|
-
* instead of the provider-agnostic `generateServerEntrySource`, so the
|
|
151
|
-
* provider can inject the SAME platform services (kysely, secrets, …) into
|
|
152
|
-
* the container that it injects into its serverless workers — sourcing the
|
|
153
|
-
* bindings from `process.env` instead of a runtime `env` object. When
|
|
154
|
-
* omitted, the pipeline falls back to the generic generator (no platform
|
|
155
|
-
* injection), which is correct for providers whose containers carry no
|
|
156
|
-
* platform services.
|
|
157
|
-
*/
|
|
158
|
-
generateServerEntrySource?(ctx: EntryGenerationContext): string
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Generate provider-specific config files per unit (e.g. wrangler.toml).
|
|
162
|
-
* Returns a map of filename → content to write into the unit directory.
|
|
163
|
-
*/
|
|
164
|
-
generateUnitConfigs(
|
|
165
|
-
unit: DeploymentUnit,
|
|
166
|
-
manifest: DeploymentManifest,
|
|
167
|
-
projectId: string
|
|
168
|
-
): Map<string, string>
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Generate provider-level infrastructure manifest (e.g. infra.json).
|
|
172
|
-
* Returns file content, or null if not applicable.
|
|
173
|
-
*/
|
|
174
|
-
generateInfraManifest(manifest: DeploymentManifest): string | null
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* External modules for esbuild bundling.
|
|
178
|
-
* Defaults to ['node:*'] if not provided.
|
|
179
|
-
*/
|
|
180
|
-
getExternals?(): string[]
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Regex sources for modules to stub to `export {}` during bundling — modules
|
|
184
|
-
* this provider's runtime never executes (e.g. the `postgres` driver on CF
|
|
185
|
-
* Workers, which use a libsql/Turso dialect). Unlike `getExternals`, a stub
|
|
186
|
-
* removes the bytes entirely rather than leaving a runtime import to resolve.
|
|
187
|
-
*/
|
|
188
|
-
getStubModules?(): string[]
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Module aliases for esbuild bundling (e.g. { crypto: 'node:crypto' }).
|
|
192
|
-
* Used to remap bare imports to platform-compatible paths.
|
|
193
|
-
*/
|
|
194
|
-
getAliases?(): Record<string, string>
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* esbuild define map for compile-time constants (e.g. { 'process.env.NODE_ENV': '"production"' }).
|
|
198
|
-
*/
|
|
199
|
-
getDefine?(): Record<string, string>
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* esbuild platform target. Defaults to 'node'.
|
|
203
|
-
* Cloudflare Workers should use 'neutral'.
|
|
204
|
-
*/
|
|
205
|
-
getPlatform?(): 'node' | 'neutral' | 'browser'
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* esbuild output format. Defaults to 'esm'.
|
|
209
|
-
* pkg requires 'cjs' for standalone binaries.
|
|
210
|
-
*/
|
|
211
|
-
getFormat?(): 'esm' | 'cjs'
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Whether the bundler may rename identifiers. Defaults to true, which is
|
|
215
|
-
* right whenever `bundle.js` is the artifact that runs.
|
|
216
|
-
*
|
|
217
|
-
* Return false when the bundle is fed to a SECOND bundler, because the two
|
|
218
|
-
* renamers do not agree on what is safe. `bun build --compile` renamed the
|
|
219
|
-
* parameter of a mangled `wireCLI` to `t6` — the name esbuild had already
|
|
220
|
-
* given the top-level `registerCLICommands` that same function calls — so
|
|
221
|
-
* every compiled bun binary died at boot on `t6 is not a function`. The
|
|
222
|
-
* second pass mangles anyway, so nothing is lost but an intermediate file
|
|
223
|
-
* being larger on disk.
|
|
224
|
-
*/
|
|
225
|
-
getMangleIdentifiers?(): boolean
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Skip the createRequire banner. CF Workers should return true —
|
|
229
|
-
* `import.meta.url` is undefined there and the banner crashes at boot.
|
|
230
|
-
*/
|
|
231
|
-
getNoRequireShim?(): boolean
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Generate additional provider-level config files (e.g. serverless.yml).
|
|
235
|
-
* Returns a map of filename → content to write into the deploy directory.
|
|
236
|
-
*/
|
|
237
|
-
generateProviderConfigs?(manifest: DeploymentManifest): Map<string, string>
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Emit any provider-specific artifacts that aren't tied to a single user
|
|
241
|
-
* unit — e.g. a synthesized proxy Worker that fronts a CF Container.
|
|
242
|
-
* Called after the infra manifest is written so providers can read it
|
|
243
|
-
* and key off resources that were provisioned in earlier steps.
|
|
244
|
-
*/
|
|
245
|
-
emitSideArtifacts?(options: {
|
|
246
|
-
buildDir: string
|
|
247
|
-
manifest: DeploymentManifest
|
|
248
|
-
logger: { info(msg: string): void; error(msg: string): void }
|
|
249
|
-
}): Promise<void>
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Deploy the built artifacts to the provider.
|
|
253
|
-
* Optional — if not implemented, the CLI just outputs the build directory.
|
|
254
|
-
*/
|
|
255
|
-
deploy?(options: {
|
|
256
|
-
buildDir: string
|
|
257
|
-
logger: { info(msg: string): void; error(msg: string): void }
|
|
258
|
-
onProgress?: (step: string, detail: string) => void
|
|
259
|
-
}): Promise<{
|
|
260
|
-
success: boolean
|
|
261
|
-
/** Names of the deployed units, as they appear on the provider. */
|
|
262
|
-
workersDeployed?: string[]
|
|
263
|
-
/** Identifiers of the resources provisioned for this deploy. */
|
|
264
|
-
resourcesCreated?: string[]
|
|
265
|
-
errors: Array<{ step: string; error: string }>
|
|
266
|
-
}>
|
|
267
|
-
}
|
package/src/remote-job-inbox.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { DeploymentUnit } from './manifest.js'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* The two paths `scaffold.remoteJobs` wires into the app itself. Kept as
|
|
5
|
-
* literals rather than imported from `@pikku/core` because deploy-core is
|
|
6
|
-
* dependency-free; they are the values of `REMOTE_QUEUE_JOB_PATH` and
|
|
7
|
-
* `REMOTE_SCHEDULER_JOB_PATH`.
|
|
8
|
-
*/
|
|
9
|
-
export const REMOTE_JOB_INBOX_PATHS = [
|
|
10
|
-
'/__pikku/queue-job',
|
|
11
|
-
'/__pikku/scheduler-job',
|
|
12
|
-
]
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Whether the unit serves the remote job inbox through its own wirings.
|
|
16
|
-
*
|
|
17
|
-
* Runtimes mount an inbox of their own ahead of route dispatch, which would
|
|
18
|
-
* shadow the wired one along with any middleware in front of it. A generator
|
|
19
|
-
* asks this so the runtime-level shim stands down where the app has already
|
|
20
|
-
* wired the inbox.
|
|
21
|
-
*/
|
|
22
|
-
export const unitWiresRemoteJobInbox = (unit: DeploymentUnit): boolean =>
|
|
23
|
-
unit.handlers.some(
|
|
24
|
-
(handler) =>
|
|
25
|
-
handler.type === 'fetch' &&
|
|
26
|
-
handler.routes.some((route) =>
|
|
27
|
-
REMOTE_JOB_INBOX_PATHS.includes(route.route)
|
|
28
|
-
)
|
|
29
|
-
)
|
package/src/server-ready.test.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { describe, it } from 'node:test'
|
|
2
|
-
import assert from 'node:assert/strict'
|
|
3
|
-
import { readFileSync } from 'node:fs'
|
|
4
|
-
import { join } from 'node:path'
|
|
5
|
-
import { fileURLToPath } from 'node:url'
|
|
6
|
-
|
|
7
|
-
import { SERVER_READY_MARKER, serverReadyLine } from './server-ready.js'
|
|
8
|
-
|
|
9
|
-
const packageDir = fileURLToPath(new URL('..', import.meta.url))
|
|
10
|
-
const repoRoot = join(packageDir, '..', '..', '..')
|
|
11
|
-
|
|
12
|
-
describe('the ready handshake a parent process waits for', () => {
|
|
13
|
-
it('keeps the marker string every existing waiter greps for', () => {
|
|
14
|
-
assert.equal(SERVER_READY_MARKER, 'pikku: ready')
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
it('names the port a parent should connect to', () => {
|
|
18
|
-
assert.equal(
|
|
19
|
-
serverReadyLine('127.0.0.1', 51234),
|
|
20
|
-
'pikku: ready on http://127.0.0.1:51234'
|
|
21
|
-
)
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
it('is declared once, and re-exported rather than copied by the CLI', () => {
|
|
25
|
-
const cliServerReady = readFileSync(
|
|
26
|
-
join(repoRoot, 'packages', 'cli', 'src', 'server', 'server-ready.ts'),
|
|
27
|
-
'utf-8'
|
|
28
|
-
)
|
|
29
|
-
assert.ok(
|
|
30
|
-
cliServerReady.includes("from '@pikku/deploy'"),
|
|
31
|
-
'the CLI must re-export the marker, not keep a second copy that can drift'
|
|
32
|
-
)
|
|
33
|
-
assert.ok(
|
|
34
|
-
!/SERVER_READY_MARKER\s*=/.test(cliServerReady),
|
|
35
|
-
'the CLI must not assign its own SERVER_READY_MARKER'
|
|
36
|
-
)
|
|
37
|
-
})
|
|
38
|
-
})
|
package/src/server-ready.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Printed once the server is listening AND the project's `afterStart`
|
|
3
|
-
* lifecycle has resolved.
|
|
4
|
-
*
|
|
5
|
-
* The runtime's own `listening on …` line is emitted inside `server.start()`,
|
|
6
|
-
* which runs *before* `afterStart` — so anything a project seeds there (users,
|
|
7
|
-
* scopes, fixtures) is still pending when it appears, and a parent process
|
|
8
|
-
* that treats it as readiness races the seed. This marker is the point at
|
|
9
|
-
* which the server is actually usable, and it is what `--spawn` waits for.
|
|
10
|
-
*
|
|
11
|
-
* It lives here rather than in the CLI because it is a contract between a
|
|
12
|
-
* pikku server and whatever spawned it, and the two ends are built by
|
|
13
|
-
* different packages: `pikku dev --spawn` waits on it from the CLI, while a
|
|
14
|
-
* deployed standalone binary — the desktop shell's sidecar — prints it from an
|
|
15
|
-
* entry the standalone provider generates. A second copy of the string would
|
|
16
|
-
* drift the moment either side changed it.
|
|
17
|
-
*/
|
|
18
|
-
export const SERVER_READY_MARKER = 'pikku: ready'
|
|
19
|
-
|
|
20
|
-
export const serverReadyLine = (hostname: string, port: number): string =>
|
|
21
|
-
`${SERVER_READY_MARKER} on http://${hostname}:${port}`
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { describe, it } from 'node:test'
|
|
2
|
-
import assert from 'node:assert/strict'
|
|
3
|
-
import { readdirSync, readFileSync, statSync } from 'node:fs'
|
|
4
|
-
import { join, relative } from 'node:path'
|
|
5
|
-
import { fileURLToPath } from 'node:url'
|
|
6
|
-
|
|
7
|
-
const packageDir = fileURLToPath(new URL('..', import.meta.url))
|
|
8
|
-
const repoRoot = join(packageDir, '..', '..', '..')
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Every name `@pikku/deploy` owns. A provider adapter that re-declares one is
|
|
12
|
-
* writing a second, unchecked copy of the contract: nothing compares the two,
|
|
13
|
-
* so the copy drifts silently until a deploy emits the wrong manifest.
|
|
14
|
-
*/
|
|
15
|
-
const OWNED_NAMES = [
|
|
16
|
-
'AgentDefinition',
|
|
17
|
-
'BindingSource',
|
|
18
|
-
'ChannelDefinition',
|
|
19
|
-
'ContributorPlatform',
|
|
20
|
-
'DeploymentHandler',
|
|
21
|
-
'DeploymentManifest',
|
|
22
|
-
'DeploymentUnit',
|
|
23
|
-
'DeploymentUnitRole',
|
|
24
|
-
'EntryGenerationContext',
|
|
25
|
-
'GrantedAddon',
|
|
26
|
-
'HttpRouteInfo',
|
|
27
|
-
'MCPEndpointDefinition',
|
|
28
|
-
'PlatformServiceContributor',
|
|
29
|
-
'ProviderAdapter',
|
|
30
|
-
'QueueDefinition',
|
|
31
|
-
'ScheduledTaskDefinition',
|
|
32
|
-
'SecretDeclaration',
|
|
33
|
-
'ServiceCapability',
|
|
34
|
-
'ServiceRequirement',
|
|
35
|
-
'UnresolvedSecretRead',
|
|
36
|
-
'UnscopedAddon',
|
|
37
|
-
'VariableDeclaration',
|
|
38
|
-
'WorkflowDefinition',
|
|
39
|
-
'WorkflowStepDefinition',
|
|
40
|
-
]
|
|
41
|
-
|
|
42
|
-
const sourceFiles = (dir: string): string[] => {
|
|
43
|
-
const found: string[] = []
|
|
44
|
-
for (const entry of readdirSync(dir)) {
|
|
45
|
-
if (entry === 'node_modules' || entry === 'dist') continue
|
|
46
|
-
const path = join(dir, entry)
|
|
47
|
-
if (statSync(path).isDirectory()) {
|
|
48
|
-
found.push(...sourceFiles(path))
|
|
49
|
-
} else if (entry.endsWith('.ts') && !entry.endsWith('.test.ts')) {
|
|
50
|
-
found.push(path)
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return found
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const consumerFiles = (): string[] => {
|
|
57
|
-
const deployPackages = join(repoRoot, 'packages', 'deploy')
|
|
58
|
-
const files: string[] = []
|
|
59
|
-
for (const entry of readdirSync(deployPackages)) {
|
|
60
|
-
if (entry === 'deploy-core') continue
|
|
61
|
-
const src = join(deployPackages, entry, 'src')
|
|
62
|
-
try {
|
|
63
|
-
if (statSync(src).isDirectory()) files.push(...sourceFiles(src))
|
|
64
|
-
} catch {
|
|
65
|
-
continue
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
files.push(...sourceFiles(join(repoRoot, 'packages', 'cli', 'src', 'deploy')))
|
|
69
|
-
return files
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
describe('the shared deploy contract has exactly one declaration', () => {
|
|
73
|
-
it('is never re-declared by a provider adapter or by the CLI pipeline', () => {
|
|
74
|
-
const offenders: string[] = []
|
|
75
|
-
|
|
76
|
-
for (const file of consumerFiles()) {
|
|
77
|
-
const source = readFileSync(file, 'utf-8')
|
|
78
|
-
for (const name of OWNED_NAMES) {
|
|
79
|
-
const declaration = new RegExp(
|
|
80
|
-
`^\\s*(?:export\\s+)?(?:interface|type)\\s+${name}\\b`,
|
|
81
|
-
'm'
|
|
82
|
-
)
|
|
83
|
-
if (declaration.test(source)) {
|
|
84
|
-
offenders.push(`${relative(repoRoot, file)} declares ${name}`)
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
assert.deepEqual(
|
|
90
|
-
offenders.sort(),
|
|
91
|
-
[],
|
|
92
|
-
`these files re-declare a type @pikku/deploy owns — import it instead:\n ${offenders.sort().join('\n ')}`
|
|
93
|
-
)
|
|
94
|
-
})
|
|
95
|
-
|
|
96
|
-
it('exports every name it owns from the barrel', () => {
|
|
97
|
-
const barrel = readFileSync(join(packageDir, 'src', 'index.ts'), 'utf-8')
|
|
98
|
-
const missing = OWNED_NAMES.filter((name) => !barrel.includes(name))
|
|
99
|
-
assert.deepEqual(
|
|
100
|
-
missing,
|
|
101
|
-
[],
|
|
102
|
-
`owned but not re-exported from index.ts: ${missing.join(', ')}`
|
|
103
|
-
)
|
|
104
|
-
})
|
|
105
|
-
})
|
package/tsconfig.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../../tsconfig.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"rootDir": "./src",
|
|
5
|
-
"module": "Node18",
|
|
6
|
-
"outDir": "dist",
|
|
7
|
-
"target": "esnext",
|
|
8
|
-
"declaration": true,
|
|
9
|
-
"composite": true
|
|
10
|
-
},
|
|
11
|
-
"include": ["src/**/*.ts"],
|
|
12
|
-
"exclude": ["**/*.test.ts", "node_modules", "dist"]
|
|
13
|
-
}
|
package/tsconfig.tsbuildinfo
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/typescript/lib/lib.es2025.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/typescript/lib/lib.es2025.collection.d.ts","../../../node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/typescript/lib/lib.es2025.intl.d.ts","../../../node_modules/typescript/lib/lib.es2025.iterator.d.ts","../../../node_modules/typescript/lib/lib.es2025.promise.d.ts","../../../node_modules/typescript/lib/lib.es2025.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/typescript/lib/lib.esnext.date.d.ts","../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.error.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../../node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.esnext.full.d.ts","./src/manifest.ts","./src/remote-job-inbox.ts","./src/provider-adapter.ts","./src/platform-service-contributor.ts","./src/node-builtins.ts","./src/server-ready.ts","./src/index.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/@types/node/node_modules/undici-types/utility.d.ts","../../../node_modules/@types/node/node_modules/undici-types/header.d.ts","../../../node_modules/@types/node/node_modules/undici-types/readable.d.ts","../../../node_modules/@types/node/node_modules/undici-types/fetch.d.ts","../../../node_modules/@types/node/node_modules/undici-types/formdata.d.ts","../../../node_modules/@types/node/node_modules/undici-types/connector.d.ts","../../../node_modules/@types/node/node_modules/undici-types/client-stats.d.ts","../../../node_modules/@types/node/node_modules/undici-types/client.d.ts","../../../node_modules/@types/node/node_modules/undici-types/errors.d.ts","../../../node_modules/@types/node/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/@types/node/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/@types/node/node_modules/undici-types/global-origin.d.ts","../../../node_modules/@types/node/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/@types/node/node_modules/undici-types/pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/handlers.d.ts","../../../node_modules/@types/node/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/@types/node/node_modules/undici-types/agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-client.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/@types/node/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/@types/node/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/@types/node/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/@types/node/node_modules/undici-types/api.d.ts","../../../node_modules/@types/node/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/@types/node/node_modules/undici-types/interceptors.d.ts","../../../node_modules/@types/node/node_modules/undici-types/util.d.ts","../../../node_modules/@types/node/node_modules/undici-types/cookies.d.ts","../../../node_modules/@types/node/node_modules/undici-types/patch.d.ts","../../../node_modules/@types/node/node_modules/undici-types/websocket.d.ts","../../../node_modules/@types/node/node_modules/undici-types/eventsource.d.ts","../../../node_modules/@types/node/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/@types/node/node_modules/undici-types/content-type.d.ts","../../../node_modules/@types/node/node_modules/undici-types/cache.d.ts","../../../node_modules/@types/node/node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/path/posix.d.ts","../../../node_modules/@types/node/path/win32.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/quic.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/iter.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/test/reporters.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[103,164,165,167,175,179,182,184,185,186,199],[103,166,167,175,179,182,184,185,186,199],[167,175,179,182,184,185,186,199],[103,167,175,179,182,184,185,186,199,208],[103,167,168,173,175,178,179,182,184,185,186,188,199,204,217],[103,167,168,169,175,178,179,182,184,185,186,199],[103,167,175,179,182,184,185,186,199],[103,167,170,175,179,182,184,185,186,199,218],[103,167,171,172,175,179,182,184,185,186,190,199],[103,167,172,175,179,182,184,185,186,199,204,214],[103,167,173,175,178,179,182,184,185,186,188,199],[103,166,167,174,175,179,182,184,185,186,199],[103,167,175,176,179,182,184,185,186,199],[103,167,175,177,178,179,182,184,185,186,199],[103,166,167,175,178,179,182,184,185,186,199],[103,167,175,178,179,180,182,184,185,186,199,204,217],[103,167,175,178,179,180,182,184,185,186,199,204,206,208],[103,154,167,175,178,179,181,182,184,185,186,188,199,204,217],[103,167,175,178,179,181,182,184,185,186,188,199,204,214,217],[103,167,175,179,181,182,183,184,185,186,199,204,214,217],[101,102,103,104,105,106,107,108,109,110,111,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225],[103,167,175,178,179,182,184,185,186,199],[103,167,175,179,182,184,186,199],[103,167,175,179,182,184,185,186,187,199,217],[103,167,175,178,179,182,184,185,186,188,199,204],[103,118,121,124,125,167,175,179,182,184,185,186,199,217],[103,121,167,175,179,182,184,185,186,199,204,217],[103,121,125,167,175,179,182,184,185,186,199,217],[103,167,175,179,182,184,185,186,199,204],[103,115,167,175,179,182,184,185,186,199],[103,119,167,175,179,182,184,185,186,199],[103,117,118,121,167,175,179,182,184,185,186,199,217],[103,167,175,179,182,184,185,186,188,199,214],[103,167,175,179,182,184,185,186,199,226],[103,115,167,175,179,182,184,185,186,199,226],[103,117,121,167,175,179,182,184,185,186,188,199,217],[103,112,113,114,116,120,167,175,178,179,182,184,185,186,199,204,217],[103,121,130,138,167,175,179,182,184,185,186,199],[103,113,119,167,175,179,182,184,185,186,199],[103,121,148,149,167,175,179,182,184,185,186,199],[103,113,116,121,167,175,179,182,184,185,186,199,208,217,226],[103,121,167,175,179,182,184,185,186,199],[103,117,121,167,175,179,182,184,185,186,199,217],[103,112,167,175,179,182,184,185,186,199],[103,115,116,117,119,120,121,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,149,150,151,152,153,167,175,179,182,184,185,186,199],[103,121,141,144,167,175,179,182,184,185,186,199],[103,121,130,131,132,167,175,179,182,184,185,186,199],[103,119,121,131,133,167,175,179,182,184,185,186,199],[103,120,167,175,179,182,184,185,186,199],[103,113,115,121,167,175,179,182,184,185,186,199],[103,121,125,131,133,167,175,179,182,184,185,186,199],[103,125,167,175,179,182,184,185,186,199],[103,119,121,124,167,175,179,182,184,185,186,199,217],[103,113,117,121,130,167,175,179,182,184,185,186,199],[103,121,141,167,175,179,182,184,185,186,199],[103,133,167,175,179,182,184,185,186,199],[103,113,117,121,125,167,175,179,182,184,185,186,199],[103,115,121,148,167,175,179,182,184,185,186,199,208,223,226],[103,167,175,179,182,184,185,186,190,199],[103,167,175,179,182,184,185,186,191,199],[103,167,175,178,179,182,184,185,186,194,199],[103,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224],[103,167,175,179,182,184,185,186,196,199],[103,167,175,179,182,184,185,186,197,199],[103,167,172,175,179,182,184,185,186,188,199,208],[103,167,175,178,179,182,184,185,186,199,200],[103,167,175,179,182,184,185,186,199,201,218,221],[103,167,175,178,179,182,184,185,186,199,204,207,208],[103,167,175,179,182,184,185,186,199,205,208],[103,167,175,179,182,184,185,186,199,206],[103,167,175,179,182,184,185,186,199,208,218],[103,167,175,179,182,184,185,186,199,209],[103,164,167,175,179,182,184,185,186,199,204,211,217],[103,167,175,179,182,184,185,186,199,204,210],[103,167,175,178,179,182,184,185,186,199,212,213],[103,167,175,179,182,184,185,186,199,212,213],[103,167,172,175,179,182,184,185,186,188,199,204,214],[103,167,175,179,182,184,185,186,199,215],[103,167,175,179,182,184,185,186,188,199,216],[103,167,175,179,181,182,184,185,186,197,199,217],[103,167,175,179,182,184,185,186,199,218,219],[103,167,172,175,179,182,184,185,186,199,219],[103,167,175,179,182,184,185,186,199,204,220],[103,167,175,179,182,184,185,186,187,199,221],[103,167,175,179,182,184,185,186,199,222],[103,167,170,175,179,182,184,185,186,199],[103,167,172,175,179,182,184,185,186,199],[103,167,175,179,182,184,185,186,199,218],[103,154,167,175,179,182,184,185,186,199],[103,167,175,179,182,184,185,186,199,217],[103,167,175,179,182,184,185,186,199,223],[103,167,175,179,182,184,185,186,194,199],[103,167,175,179,182,184,185,186,199,213],[103,154,167,175,178,179,180,182,184,185,186,194,199,204,208,217,220,221,223],[103,167,175,179,182,184,185,186,199,204,224],[103,167,175,179,182,184,185,186,199,206,225],[94,95,96,97,98,99,103,167,175,179,182,184,185,186,199],[103,167,175,179,182,184,185,186,187,199],[96,103,167,175,179,182,184,185,186,199],[94,103,167,175,179,182,184,185,186,199]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"2a2de5b9459b3fc44decd9ce6100b72f1b002ef523126c1d3d8b2a4a63d74d78","affectsGlobalScope":true,"impliedFormat":1},{"version":"f13f4b465c99041e912db5c44129a94588e1aafee35a50eab51044833f50b4ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"ef4a897cd2a3f91000c10264e400b3667c7e51e1b7365f03b62e8081dc53bde6","impliedFormat":1},{"version":"8e96d70e9ce6939d4172d72be6f7536723a9a1bfb0dc3a81a6578a829ea1254f","signature":"cdfe33a6026ce2f46c2a0d411cc01cd96edbc55ca552ac6b68d4f45bb3a16842","impliedFormat":99},{"version":"8303c0b324b285418011354e014934e5f362aaf14712772e31b571213817034f","signature":"6e1a68a8f389836ffeaa69690c276c3abc861a49286c521af8dc7b419de93bb0","impliedFormat":99},{"version":"9bcdd21f6c84d52b3a7ab72c0cec694aae9c6033de48cc12b497226974314a4e","signature":"52d3564a215414e2ad4bf84fec3a95cef2efa97ab787c7a795d5a3083b64aafe","impliedFormat":99},{"version":"73a7fe658ecd0b2d53e203f077743e118f99fc51ee469392ce1901cfa150e412","signature":"b236c2b62c3c0cb67f1847aa57146914e8cb2d6dcd25be4458a2c2f92eb39521","impliedFormat":99},{"version":"5c4b7c21569730d421f63356b0ba1bc971f608d8ccdc911a2ce16fe13651e34c","signature":"9f2142592764e5d52df7ee53bc130ec7a83be6e76d4cf141b505d10bb7167337","impliedFormat":99},{"version":"1801a313d8730cd052b0649716a3da309cbb02ac032ef2bf46e2aff866709659","signature":"9ca96d08569be9c3dd1a8bf60763afc83f347bdac58fcff43a96feb20dc4c603","impliedFormat":99},{"version":"557d500630c045dd3a835b0b459ae3f75a8f4819084a7bf1e5906248b4dca965","signature":"1418cb4ba4e77bbb50f50952132da66a616554775e8a6518359239e93c2be842","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc2110f7decca6bfb9392e30421cfa1436479e4a6756e8fec6cbc22625d4f881","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"14e9acf826baba0ef4b5665704084896e7bcc06f65a9ab13af7e93d27d6b7069","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"21adf13435b9b748529c8cedf80f884e5130b9684188120a686cd2b26a2059c7","impliedFormat":1},{"version":"eec76bf6b9346f3f95fa402621b889489e96930e72295b0369022f332e9b4a6a","impliedFormat":1},{"version":"0ecd58f413f9bc3b7d4383eae31b0c8fc576985cd7404d6f99f8c643543ade74","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"d33ce35e3f9cfcc1d94eca415bdd3bde94d5b153ffdd33e6c4455c029986c630","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"4dc59f6e1dbf3d5f66660fceabe6c174d3261b37b696ae1854f0dbaf255fc753","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"114f493b30f364255290472111b5a4791d5902c308645670cd0401429cbc6930","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2ae155afe8a01cc0ae612d99117cf8ef16692ba7c4366590156fdec1bcf2d8c","impliedFormat":1},{"version":"3f5e5d9be35913db9fea42a63f3df0b7e3c8703b97670a2125587b4dbbd56d7c","impliedFormat":1},{"version":"c8b8968311ec4e5e97b7b5fb8a65efaba455db9bdcfd7fff7fb15f6e317bfba0","impliedFormat":1},{"version":"57c23df0b5f7a8e26363a3849b0bc7763f6b241207157c8e40089d1df4116f35","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8bc0c17b54081b0878673989216229e575d67a10874e84566a21025a2461ee","impliedFormat":1},{"version":"5b0db5a58b73498792a29bfebc333438e61906fef75da898b410e24e52229e6f","impliedFormat":1},{"version":"dbe055b2b29a7bab2c1ca8f259436306adb43f469dca7e639a02cd3695d3f621","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"aecbf1d9e6a18dab7d92ef8a89a1444b47e1eb6134cb2bb776a26d55ff58c29a","impliedFormat":1},{"version":"2ea729503db9793f2691162fec3dd1118cab62e96d025f8eeb376d43ec293395","impliedFormat":1},{"version":"9ec87fea42b92894b0f209931a880789d43c3397d09dd99c631ae40a2f7071d1","impliedFormat":1},{"version":"c68e88cdfadfb6c8ba5fc38e58a3a166b0beae77b1f05b7d921150a32a5ffb8d","impliedFormat":1},{"version":"2bc7aa4fba46df0bd495425a7c8201437a7d465f83854fac859df2d67f664df3","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"1fede9296beac11ce8e6b425396a1791f64341f2be85deebb6286faf6e16306e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce697b6a251d9cad53998c7fd3098072df883b525ec45d83530e434dc6d80dc6","impliedFormat":1},{"version":"53ff1acab080a8318445df2c7da35ec47489dc83be40569e39c7c750046e217f","impliedFormat":1},{"version":"0eb5d0cbf09de5d34542b977fd6a933bb2e0817bffe8e1a541b2f1ad1b9af1ff","impliedFormat":1},{"version":"3db996ecdee7aabecc5385976cc07eb66216034a273c07b17d1a85292e9bab0c","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"c32c840c62d8bd7aeb3147aa6754cd2d922b990a6b6634530cb2ebdce5adc8e9","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"c1fa52b3d014001e8662fa2669d90ea15373958a288e3b83a3b621733d25292a","affectsGlobalScope":true,"impliedFormat":1},{"version":"cbed824fec91efefc7bbdcb8b43d1a531fdbebd0e2ef19481501ff365a93cb70","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"d0716593b3f2b0451bcf0c24cfa86dec2235c325c89f201934248b7c742715fc","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"2991bca2cc0f0628a278df2a2ccdb8d6cbcb700f3761abbed62bba137d5b1790","impliedFormat":1},{"version":"47d480d0c84b0f6215f1f817e0939b247ebf5217b6784846b96fa6ab710ce99d","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"8413d0641f293aed551c7464615b770d34a02dedede889b9591172287d68e773","impliedFormat":1},{"version":"0ea59f7d3e51440baa64f429253759b106cfcbaf51e474cae606e02265b37cf8","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"1b241e24f3227d078c06aeda6e050187ad59a4e591f4467abed44d92b084e08d","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"7fde0e1be5c8be204ffbf428abfcf01da2eb0f130e1bc3f539eb7275f4fd1f58","impliedFormat":1},{"version":"e284328553df5f425a5d33d36a0c3fa66b46af9d097cad6f4d2e8696dfdeb0f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"f36b3fbe2be150a9ca140da48593f21e6a8172004f92ddc549b43efec39f3e54","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"016b29bf4926b80255a108c53a1451717350059da04fcae64d1075f5e93bbb39","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"1c4f139ade4f6ebf45463505f8155173e5d7a5305e50e0aae0a5e712d6ff3b48","impliedFormat":1},{"version":"e16b319e5aca1031168de823c4946ff8e29629c4c8cc0ec0fcfe2a8ab2155043","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"9d3821bc75c59577e52643324cec92fc2145642e8d17cf7ee07a3181f21d985d","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"201db9cf1687fab1adf5282fcba861f382b32303dc4f67c89d59655e78a25461","impliedFormat":1},{"version":"2c3c5c0f54055e87640f5d233716fd889f3034fc7911d603b642369b0dbeb2a7","impliedFormat":1},{"version":"0a20eaf2e4b1e3c1e1f87f7bccb0c936375b23b022baeea750519b7c9bc6ce83","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"a16b91b27bd6b706c687c88cbc8a7d4ee98e5ed6043026d6b84bda923c0aed67","impliedFormat":1},{"version":"1c9e5b1a17b1fc9b3711fb36e0690421261ab2880f15b145155b5b2ba2ab6c2d","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"6eeded8c7e352be6e0efb83f4935ec752513c4d22043b52522b90849a49a3a11","impliedFormat":1},{"version":"6c1ad90050ffbb151cacc68e2d06ea1a26a945659391e32651f5d42b86fd7f2c","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"6953d7597831d0860c7034cf4f0419687d263b6b98a4b32e37ce6d49615c36e2","impliedFormat":1}],"root":[[94,100]],"options":{"allowJs":false,"composite":true,"declaration":true,"emitDecoratorMetadata":false,"experimentalDecorators":false,"importHelpers":false,"module":101,"noImplicitAny":false,"noUnusedLocals":true,"outDir":"./dist","removeComments":false,"rootDir":"./src","skipLibCheck":true,"sourceMap":false,"strict":true,"strictNullChecks":true,"target":99,"useUnknownInCatchVariables":false},"referencedMap":[[164,1],[165,1],[166,2],[103,3],[167,4],[168,5],[169,6],[101,7],[170,8],[171,9],[172,10],[173,11],[174,12],[175,13],[176,13],[177,14],[178,15],[179,16],[180,17],[104,7],[102,7],[181,18],[182,19],[183,20],[226,21],[184,22],[185,23],[186,22],[187,24],[188,25],[130,26],[143,27],[127,28],[144,29],[153,30],[118,31],[119,32],[117,33],[152,34],[147,35],[151,36],[121,37],[140,38],[120,39],[150,40],[115,41],[116,35],[122,42],[123,7],[129,43],[126,42],[113,44],[154,45],[145,46],[133,47],[132,42],[134,48],[137,49],[131,50],[135,51],[148,34],[124,52],[125,53],[138,54],[114,29],[142,55],[141,42],[128,53],[136,56],[139,57],[146,7],[112,7],[149,58],[190,59],[191,60],[192,60],[193,60],[194,61],[195,62],[196,63],[197,64],[198,65],[199,66],[200,66],[201,67],[202,7],[203,7],[204,68],[205,69],[206,70],[207,68],[208,71],[209,72],[210,73],[211,74],[212,75],[213,76],[214,77],[215,78],[216,79],[217,80],[218,81],[219,82],[220,83],[221,84],[222,85],[105,22],[106,7],[107,86],[108,87],[109,7],[110,88],[111,7],[155,89],[156,90],[157,91],[158,91],[159,92],[160,7],[161,4],[162,93],[163,90],[223,94],[224,95],[225,96],[189,7],[91,7],[92,7],[16,7],[14,7],[15,7],[20,7],[19,7],[2,7],[21,7],[22,7],[23,7],[24,7],[25,7],[26,7],[27,7],[28,7],[3,7],[29,7],[30,7],[4,7],[31,7],[35,7],[32,7],[33,7],[34,7],[36,7],[37,7],[38,7],[5,7],[39,7],[40,7],[41,7],[42,7],[6,7],[46,7],[43,7],[44,7],[45,7],[47,7],[7,7],[48,7],[53,7],[54,7],[49,7],[50,7],[51,7],[52,7],[8,7],[58,7],[55,7],[56,7],[57,7],[59,7],[9,7],[60,7],[61,7],[62,7],[64,7],[63,7],[65,7],[66,7],[10,7],[67,7],[68,7],[69,7],[11,7],[70,7],[71,7],[72,7],[73,7],[74,7],[75,7],[12,7],[76,7],[77,7],[78,7],[79,7],[80,7],[1,7],[81,7],[82,7],[13,7],[83,7],[84,7],[85,7],[86,7],[93,7],[87,7],[88,7],[89,7],[90,7],[18,7],[17,7],[100,97],[94,7],[98,98],[97,99],[96,100],[95,100],[99,7]],"latestChangedDtsFile":"./dist/index.d.ts","version":"6.0.3"}
|