@pikku/deploy 0.12.1

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 ADDED
@@ -0,0 +1,27 @@
1
+ # @pikku/deploy
2
+
3
+ ## 0.12.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 32616af: Give the deploy pipeline one shared contract instead of a copy per adapter
8
+
9
+ `DeploymentManifest`, `DeploymentUnit`, `EntryGenerationContext` and
10
+ `ProviderAdapter` were hand-copied into eleven source files across the four
11
+ provider adapters and the CLI — three copies inside `@pikku/deploy-cloudflare`
12
+ alone. Nothing compared the copies, so they had already drifted: several typed
13
+ `role` as a bare `string`, and none carried the manifest's addon-scoping fields.
14
+
15
+ They now live in a new zero-dependency `@pikku/deploy` package that every
16
+ adapter and the CLI import, and each adapter declares `implements
17
+ ProviderAdapter` so the compiler checks it against the contract it claims to
18
+ satisfy. That check immediately caught a real disagreement: the deploy result's
19
+ `workersDeployed` and `resourcesCreated` were `string[]` from Cloudflare — the
20
+ shape the result file and the generated SDK types already record — but
21
+ `Array<{ name: string }>` from the standalone adapter. Both are now `string[]`.
22
+
23
+ The Lambda and Azure adapters also derived their esbuild externals from a
24
+ hand-written list of 25 node builtins, so anything outside it (`async_hooks`,
25
+ `perf_hooks`, `timers`, `http2`, …) was bundled instead of resolved from the
26
+ runtime. They now use `nodeBuiltinExternals()`, which reads `builtinModules`
27
+ from the running Node and cannot fall behind it.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 - present Yasser Fadl and Pikku contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # @pikku/deploy
2
+
3
+ The shared contract between the Pikku deploy pipeline and the provider adapters
4
+ that plug into it.
5
+
6
+ It holds three things:
7
+
8
+ - **`DeploymentManifest` and friends** — the provider-agnostic description of
9
+ what a project deploys to: units, queues, scheduled tasks, channels, agents,
10
+ MCP endpoints, workflows, secrets and variables.
11
+ - **`ProviderAdapter`** — the interface every provider implements to supply the
12
+ provider-specific parts: entry generation, config files, infra manifests and
13
+ the deploy call itself.
14
+ - **`nodeBuiltinExternals()`** — the esbuild externals list for providers whose
15
+ runtime is Node.js, derived from the running Node rather than hand-written.
16
+
17
+ Nothing here executes at request time; it is a build-time package that the CLI
18
+ and the `@pikku/deploy-*` adapters share so the manifest has one definition
19
+ instead of one per adapter.
20
+
21
+ ```ts
22
+ import type { ProviderAdapter, EntryGenerationContext } from '@pikku/deploy'
23
+ import { nodeBuiltinExternals } from '@pikku/deploy'
24
+
25
+ export class MyProviderAdapter implements ProviderAdapter {
26
+ readonly name = 'my-provider'
27
+ readonly deployDirName = 'my-provider'
28
+
29
+ getExternals(): string[] {
30
+ return nodeBuiltinExternals('@my-sdk/*')
31
+ }
32
+
33
+ generateEntrySource(ctx: EntryGenerationContext): string {
34
+ return `import './${ctx.bootstrapPath}'`
35
+ }
36
+
37
+ // …
38
+ }
39
+ ```
@@ -0,0 +1,3 @@
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';
2
+ export type { EntryGenerationContext, ProviderAdapter, } from './provider-adapter.js';
3
+ export { nodeBuiltinExternals } from './node-builtins.js';
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export { nodeBuiltinExternals } from './node-builtins.js';
@@ -0,0 +1,170 @@
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
+ /** What kind of deployment entry */
9
+ export type DeploymentUnitRole = 'function' | 'mcp' | 'agent' | 'channel' | 'workflow' | 'workflow-step';
10
+ /** What handlers a unit needs to export */
11
+ export type DeploymentHandler = {
12
+ type: 'fetch';
13
+ routes: HttpRouteInfo[];
14
+ } | {
15
+ type: 'queue';
16
+ queueName: string;
17
+ } | {
18
+ type: 'scheduled';
19
+ schedule: string;
20
+ taskName: string;
21
+ };
22
+ /** Abstract infrastructure capability */
23
+ export type ServiceCapability = 'database' | 'object-storage' | 'queue' | 'kv' | 'ai-model' | 'ai-storage' | 'scheduler' | 'workflow-state' | 'credential-store';
24
+ export interface ServiceRequirement {
25
+ capability: ServiceCapability;
26
+ /** Original service name from code (e.g. 'kysely', 'contentService') */
27
+ sourceServiceName: string;
28
+ }
29
+ export interface HttpRouteInfo {
30
+ method: string;
31
+ route: string;
32
+ pikkuFuncId: string;
33
+ }
34
+ export interface DeploymentUnit {
35
+ name: string;
36
+ role: DeploymentUnitRole;
37
+ /** Deploy target: serverless (CF Worker / Lambda) or server (container) */
38
+ target: 'serverless' | 'server';
39
+ /** Functions bundled in this unit (for function/workflow-step units) */
40
+ functionIds: string[];
41
+ services: ServiceRequirement[];
42
+ /** Other unit names this unit calls via RPC / service bindings */
43
+ dependsOn: string[];
44
+ /** What runtime handlers this unit needs to export */
45
+ handlers: DeploymentHandler[];
46
+ tags: string[];
47
+ /** SHA-256 of final bundled artifact (set by build pipeline) */
48
+ bundleHash?: string;
49
+ /** Final bundle size in bytes (set by build pipeline) */
50
+ bundleSizeBytes?: number;
51
+ /** SHA-256 of sorted exact dependency map (set by build pipeline) */
52
+ exactDependenciesHash?: string;
53
+ /** Top-level exact runtime dependency versions for this unit (set by build pipeline) */
54
+ exactDependencies?: Record<string, string>;
55
+ /** Top-level exact optional runtime dependency versions for this unit (set by build pipeline) */
56
+ exactOptionalDependencies?: Record<string, string>;
57
+ }
58
+ export interface QueueDefinition {
59
+ name: string;
60
+ consumerUnit: string;
61
+ consumerFunctionId: string;
62
+ }
63
+ export interface ScheduledTaskDefinition {
64
+ name: string;
65
+ schedule: string;
66
+ unitName: string;
67
+ functionId: string;
68
+ }
69
+ export interface ChannelDefinition {
70
+ name: string;
71
+ route: string;
72
+ unitName: string;
73
+ functionIds: string[];
74
+ }
75
+ export interface AgentDefinition {
76
+ name: string;
77
+ unitName: string;
78
+ toolFunctionIds: string[];
79
+ subAgentNames: string[];
80
+ model: string;
81
+ }
82
+ export interface MCPEndpointDefinition {
83
+ unitName: string;
84
+ toolFunctionIds: string[];
85
+ resourceFunctionIds: string[];
86
+ promptFunctionIds: string[];
87
+ }
88
+ export interface WorkflowStepDefinition {
89
+ name: string;
90
+ inline: boolean;
91
+ functionId?: string;
92
+ unitName?: string;
93
+ }
94
+ export interface WorkflowDefinition {
95
+ name: string;
96
+ pikkuFuncId: string;
97
+ orchestratorUnit: string;
98
+ steps: WorkflowStepDefinition[];
99
+ }
100
+ export interface SecretDeclaration {
101
+ secretId: string;
102
+ displayName: string;
103
+ description?: string;
104
+ /** Hosts this secret may be sent to. Absent means unrestricted. */
105
+ allowedHosts?: string[];
106
+ /** True when some code reads this secret with a statically resolvable key. */
107
+ read?: boolean;
108
+ }
109
+ /** Secret reads whose key the inspector could not resolve, as `file:line:source`. */
110
+ export type UnresolvedSecretRead = string;
111
+ /** A `wireAddon` instance the app exempted from secret or credential scoping. */
112
+ export interface UnscopedAddon {
113
+ namespace: string;
114
+ package: string;
115
+ /** The app's stated reason, from `wireAddon({ globalSecrets | globalCredentials })`. */
116
+ reason: string;
117
+ }
118
+ /** A `wireAddon` instance the app lent named secrets or credentials it never declared. */
119
+ export interface GrantedAddon {
120
+ namespace: string;
121
+ package: string;
122
+ /**
123
+ * The names the addon may now read, as the addon reads them — grants and
124
+ * override keys alike, since scoping is checked before an override renames.
125
+ */
126
+ granted: string[];
127
+ }
128
+ export interface VariableDeclaration {
129
+ variableId: string;
130
+ displayName: string;
131
+ description?: string;
132
+ }
133
+ export interface DeploymentManifest {
134
+ projectId: string;
135
+ manifestVersion: 1;
136
+ units: DeploymentUnit[];
137
+ queues: QueueDefinition[];
138
+ scheduledTasks: ScheduledTaskDefinition[];
139
+ channels: ChannelDefinition[];
140
+ agents: AgentDefinition[];
141
+ mcpEndpoints: MCPEndpointDefinition[];
142
+ workflows: WorkflowDefinition[];
143
+ secrets: SecretDeclaration[];
144
+ /**
145
+ * Reads with a non-literal key. A deployment can only narrow a unit's secret
146
+ * scope to the declared set when this is empty.
147
+ */
148
+ unresolvedSecretReads: UnresolvedSecretRead[];
149
+ /**
150
+ * Addon instances exempted from secret scoping. Every other addon reads only
151
+ * the secrets it declared, so this is the full list of packages that can
152
+ * reach a secret the app never named for them.
153
+ */
154
+ unscopedSecretAddons: UnscopedAddon[];
155
+ /**
156
+ * Addon instances exempted from credential scoping. Every other addon reaches
157
+ * only the credentials it declared, and none can enumerate the app's users.
158
+ */
159
+ unscopedCredentialAddons: UnscopedAddon[];
160
+ /**
161
+ * Addon instances lent named secrets on top of the ones they declared. The
162
+ * other half of the same waiver as `unscopedSecretAddons` — narrower, because
163
+ * the app named the set — so between them a deployment sees every secret an
164
+ * addon can reach that it did not declare for itself.
165
+ */
166
+ grantedSecretAddons: GrantedAddon[];
167
+ /** Addon instances lent named credentials on top of the ones they declared. */
168
+ grantedCredentialAddons: GrantedAddon[];
169
+ variables: VariableDeclaration[];
170
+ }
@@ -0,0 +1,8 @@
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
+ export {};
@@ -0,0 +1,13 @@
1
+ /**
2
+ * esbuild externals covering every Node.js builtin, under both spellings.
3
+ *
4
+ * `node:*` alone is not enough: a dependency compiled to CJS requires the bare
5
+ * name (`require('buffer')`), which esbuild resolves and bundles rather than
6
+ * leaving external. Both forms are emitted so either import style resolves to
7
+ * the runtime's own module.
8
+ *
9
+ * The list comes from the running Node so it cannot fall behind the runtime —
10
+ * a hand-written array silently stops covering builtins added since it was
11
+ * typed, and the missing ones get bundled instead.
12
+ */
13
+ export declare const nodeBuiltinExternals: (...extra: string[]) => string[];
@@ -0,0 +1,18 @@
1
+ import { builtinModules } from 'node:module';
2
+ /**
3
+ * esbuild externals covering every Node.js builtin, under both spellings.
4
+ *
5
+ * `node:*` alone is not enough: a dependency compiled to CJS requires the bare
6
+ * name (`require('buffer')`), which esbuild resolves and bundles rather than
7
+ * leaving external. Both forms are emitted so either import style resolves to
8
+ * the runtime's own module.
9
+ *
10
+ * The list comes from the running Node so it cannot fall behind the runtime —
11
+ * a hand-written array silently stops covering builtins added since it was
12
+ * typed, and the missing ones get bundled instead.
13
+ */
14
+ export const nodeBuiltinExternals = (...extra) => [
15
+ 'node:*',
16
+ ...builtinModules,
17
+ ...extra,
18
+ ];
@@ -0,0 +1,173 @@
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
+ import type { DeploymentManifest, DeploymentUnit } from './manifest.js';
11
+ export interface EntryGenerationContext {
12
+ /** The unit being generated */
13
+ unit: DeploymentUnit;
14
+ /** Absolute path to the unit's output directory */
15
+ unitDir: string;
16
+ /** Relative path to the unit's pikku-bootstrap.gen.js */
17
+ bootstrapPath: string;
18
+ /** Import statement for createConfig */
19
+ configImport: string;
20
+ /** Variable name for createConfig */
21
+ configVar: string;
22
+ /** Import statement for createSingletonServices */
23
+ servicesImport: string;
24
+ /** Variable name for createSingletonServices */
25
+ servicesVar: string;
26
+ /** Import statement for SingletonServices type (or empty string) */
27
+ singletonServicesImport: string;
28
+ /** Type expression for Partial<SingletonServices> (or fallback) */
29
+ servicesType: string;
30
+ /**
31
+ * `import mcpJson from '…/mcp.gen.json' with { type: 'json' }` when the unit
32
+ * has a non-empty mcp.gen.json, else ''. Pair with `mcpServerOption`.
33
+ */
34
+ mcpImport: string;
35
+ /**
36
+ * `'mcpJson, '` to splice into the PikkuNodeHTTPServer *third* (options) arg —
37
+ * the server reads `this.options.mcpJson`, NOT the first config arg — so it
38
+ * mounts /mcp. Else ''. Empty is safe — trailing commas are valid.
39
+ */
40
+ mcpServerOption: string;
41
+ }
42
+ export interface ProviderAdapter {
43
+ /** Provider name (e.g. 'cloudflare', 'aws') */
44
+ readonly name: string;
45
+ /** Subdirectory name under .deploy/ (e.g. 'cloudflare') */
46
+ readonly deployDirName: string;
47
+ /**
48
+ * When true, skips per-unit decomposition and bundles everything
49
+ * into a single unit using the project's full .pikku/ directory.
50
+ * Used by standalone adapter.
51
+ */
52
+ readonly singleUnit?: boolean;
53
+ /**
54
+ * Whether the provider's workflow runtime needs synthesized per-step
55
+ * dispatch queues. Defaults to `true`.
56
+ *
57
+ * - `true` (default): The deploy pipeline synthesizes a `wf-orchestrator-*`
58
+ * queue and a `wf-step-*` queue for every workflow step, plus producer
59
+ * bindings, so the workflow runtime can fan out via queues.
60
+ * - `false`: No synthetic workflow queues are emitted into the manifest
61
+ * or per-unit codegen. Use this when the provider's workflow runtime
62
+ * dispatches steps natively (e.g. Cloudflare's Durable-Object-based
63
+ * `CloudflareWorkflowService`, where the orchestrator DO advances
64
+ * steps directly without a queue hop). Queues created via explicit
65
+ * `wireQueue(...)` user code are unaffected.
66
+ */
67
+ readonly workflowQueues?: boolean;
68
+ /**
69
+ * Generate the entry file source for a deployment unit.
70
+ * Called once per unit.
71
+ */
72
+ generateEntrySource(ctx: EntryGenerationContext): string;
73
+ /**
74
+ * Generate the entry file source for a `target: 'server'` (container) unit.
75
+ *
76
+ * Optional. When a provider implements it, the deploy pipeline uses it
77
+ * instead of the provider-agnostic `generateServerEntrySource`, so the
78
+ * provider can inject the SAME platform services (kysely, secrets, …) into
79
+ * the container that it injects into its serverless workers — sourcing the
80
+ * bindings from `process.env` instead of a runtime `env` object. When
81
+ * omitted, the pipeline falls back to the generic generator (no platform
82
+ * injection), which is correct for providers whose containers carry no
83
+ * platform services.
84
+ */
85
+ generateServerEntrySource?(ctx: EntryGenerationContext): string;
86
+ /**
87
+ * Generate provider-specific config files per unit (e.g. wrangler.toml).
88
+ * Returns a map of filename → content to write into the unit directory.
89
+ */
90
+ generateUnitConfigs(unit: DeploymentUnit, manifest: DeploymentManifest, projectId: string): Map<string, string>;
91
+ /**
92
+ * Generate provider-level infrastructure manifest (e.g. infra.json).
93
+ * Returns file content, or null if not applicable.
94
+ */
95
+ generateInfraManifest(manifest: DeploymentManifest): string | null;
96
+ /**
97
+ * External modules for esbuild bundling.
98
+ * Defaults to ['node:*'] if not provided.
99
+ */
100
+ getExternals?(): string[];
101
+ /**
102
+ * Regex sources for modules to stub to `export {}` during bundling — modules
103
+ * this provider's runtime never executes (e.g. the `postgres` driver on CF
104
+ * Workers, which use a libsql/Turso dialect). Unlike `getExternals`, a stub
105
+ * removes the bytes entirely rather than leaving a runtime import to resolve.
106
+ */
107
+ getStubModules?(): string[];
108
+ /**
109
+ * Module aliases for esbuild bundling (e.g. { crypto: 'node:crypto' }).
110
+ * Used to remap bare imports to platform-compatible paths.
111
+ */
112
+ getAliases?(): Record<string, string>;
113
+ /**
114
+ * esbuild define map for compile-time constants (e.g. { 'process.env.NODE_ENV': '"production"' }).
115
+ */
116
+ getDefine?(): Record<string, string>;
117
+ /**
118
+ * esbuild platform target. Defaults to 'node'.
119
+ * Cloudflare Workers should use 'neutral'.
120
+ */
121
+ getPlatform?(): 'node' | 'neutral' | 'browser';
122
+ /**
123
+ * esbuild output format. Defaults to 'esm'.
124
+ * pkg requires 'cjs' for standalone binaries.
125
+ */
126
+ getFormat?(): 'esm' | 'cjs';
127
+ /**
128
+ * Skip the createRequire banner. CF Workers should return true —
129
+ * `import.meta.url` is undefined there and the banner crashes at boot.
130
+ */
131
+ getNoRequireShim?(): boolean;
132
+ /**
133
+ * Generate additional provider-level config files (e.g. serverless.yml).
134
+ * Returns a map of filename → content to write into the deploy directory.
135
+ */
136
+ generateProviderConfigs?(manifest: DeploymentManifest): Map<string, string>;
137
+ /**
138
+ * Emit any provider-specific artifacts that aren't tied to a single user
139
+ * unit — e.g. a synthesized proxy Worker that fronts a CF Container.
140
+ * Called after the infra manifest is written so providers can read it
141
+ * and key off resources that were provisioned in earlier steps.
142
+ */
143
+ emitSideArtifacts?(options: {
144
+ buildDir: string;
145
+ manifest: DeploymentManifest;
146
+ logger: {
147
+ info(msg: string): void;
148
+ error(msg: string): void;
149
+ };
150
+ }): Promise<void>;
151
+ /**
152
+ * Deploy the built artifacts to the provider.
153
+ * Optional — if not implemented, the CLI just outputs the build directory.
154
+ */
155
+ deploy?(options: {
156
+ buildDir: string;
157
+ logger: {
158
+ info(msg: string): void;
159
+ error(msg: string): void;
160
+ };
161
+ onProgress?: (step: string, detail: string) => void;
162
+ }): Promise<{
163
+ success: boolean;
164
+ /** Names of the deployed units, as they appear on the provider. */
165
+ workersDeployed?: string[];
166
+ /** Identifiers of the resources provisioned for this deploy. */
167
+ resourcesCreated?: string[];
168
+ errors: Array<{
169
+ step: string;
170
+ error: string;
171
+ }>;
172
+ }>;
173
+ }
@@ -0,0 +1,10 @@
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
+ export {};
package/package.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "@pikku/deploy",
3
+ "version": "0.12.1",
4
+ "description": "Shared deploy contract for Pikku — the deployment manifest types, the provider adapter interface, and the helpers every provider adapter needs",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "scripts": {
8
+ "build": "tsc -b",
9
+ "tsc": "tsc --noEmit",
10
+ "test": "node --test --import tsx src/*.test.ts"
11
+ },
12
+ "devDependencies": {
13
+ "tsx": "^4.23.12",
14
+ "typescript": "^6.0.3"
15
+ },
16
+ "exports": {
17
+ ".": "./dist/index.js"
18
+ },
19
+ "license": "MIT"
20
+ }
package/src/index.ts ADDED
@@ -0,0 +1,28 @@
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 type {
24
+ EntryGenerationContext,
25
+ ProviderAdapter,
26
+ } from './provider-adapter.js'
27
+
28
+ export { nodeBuiltinExternals } from './node-builtins.js'
@@ -0,0 +1,192 @@
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
+ /** SHA-256 of final bundled artifact (set by build pipeline) */
57
+ bundleHash?: string
58
+ /** Final bundle size in bytes (set by build pipeline) */
59
+ bundleSizeBytes?: number
60
+ /** SHA-256 of sorted exact dependency map (set by build pipeline) */
61
+ exactDependenciesHash?: string
62
+ /** Top-level exact runtime dependency versions for this unit (set by build pipeline) */
63
+ exactDependencies?: Record<string, string>
64
+ /** Top-level exact optional runtime dependency versions for this unit (set by build pipeline) */
65
+ exactOptionalDependencies?: Record<string, string>
66
+ }
67
+
68
+ export interface QueueDefinition {
69
+ name: string
70
+ consumerUnit: string
71
+ consumerFunctionId: string
72
+ }
73
+
74
+ export interface ScheduledTaskDefinition {
75
+ name: string
76
+ schedule: string
77
+ unitName: string
78
+ functionId: string
79
+ }
80
+
81
+ export interface ChannelDefinition {
82
+ name: string
83
+ route: string
84
+ unitName: string
85
+ functionIds: string[]
86
+ }
87
+
88
+ export interface AgentDefinition {
89
+ name: string
90
+ unitName: string
91
+ toolFunctionIds: string[]
92
+ subAgentNames: string[]
93
+ model: string
94
+ }
95
+
96
+ export interface MCPEndpointDefinition {
97
+ unitName: string
98
+ toolFunctionIds: string[]
99
+ resourceFunctionIds: string[]
100
+ promptFunctionIds: string[]
101
+ }
102
+
103
+ export interface WorkflowStepDefinition {
104
+ name: string
105
+ inline: boolean
106
+ functionId?: string
107
+ unitName?: string
108
+ }
109
+
110
+ export interface WorkflowDefinition {
111
+ name: string
112
+ pikkuFuncId: string
113
+ orchestratorUnit: string
114
+ steps: WorkflowStepDefinition[]
115
+ }
116
+
117
+ export interface SecretDeclaration {
118
+ secretId: string
119
+ displayName: string
120
+ description?: string
121
+ /** Hosts this secret may be sent to. Absent means unrestricted. */
122
+ allowedHosts?: string[]
123
+ /** True when some code reads this secret with a statically resolvable key. */
124
+ read?: boolean
125
+ }
126
+
127
+ /** Secret reads whose key the inspector could not resolve, as `file:line:source`. */
128
+ export type UnresolvedSecretRead = string
129
+
130
+ /** A `wireAddon` instance the app exempted from secret or credential scoping. */
131
+ export interface UnscopedAddon {
132
+ namespace: string
133
+ package: string
134
+ /** The app's stated reason, from `wireAddon({ globalSecrets | globalCredentials })`. */
135
+ reason: string
136
+ }
137
+
138
+ /** A `wireAddon` instance the app lent named secrets or credentials it never declared. */
139
+ export interface GrantedAddon {
140
+ namespace: string
141
+ package: string
142
+ /**
143
+ * The names the addon may now read, as the addon reads them — grants and
144
+ * override keys alike, since scoping is checked before an override renames.
145
+ */
146
+ granted: string[]
147
+ }
148
+
149
+ export interface VariableDeclaration {
150
+ variableId: string
151
+ displayName: string
152
+ description?: string
153
+ }
154
+
155
+ export interface DeploymentManifest {
156
+ projectId: string
157
+ manifestVersion: 1
158
+ units: DeploymentUnit[]
159
+ queues: QueueDefinition[]
160
+ scheduledTasks: ScheduledTaskDefinition[]
161
+ channels: ChannelDefinition[]
162
+ agents: AgentDefinition[]
163
+ mcpEndpoints: MCPEndpointDefinition[]
164
+ workflows: WorkflowDefinition[]
165
+ secrets: SecretDeclaration[]
166
+ /**
167
+ * Reads with a non-literal key. A deployment can only narrow a unit's secret
168
+ * scope to the declared set when this is empty.
169
+ */
170
+ unresolvedSecretReads: UnresolvedSecretRead[]
171
+ /**
172
+ * Addon instances exempted from secret scoping. Every other addon reads only
173
+ * the secrets it declared, so this is the full list of packages that can
174
+ * reach a secret the app never named for them.
175
+ */
176
+ unscopedSecretAddons: UnscopedAddon[]
177
+ /**
178
+ * Addon instances exempted from credential scoping. Every other addon reaches
179
+ * only the credentials it declared, and none can enumerate the app's users.
180
+ */
181
+ unscopedCredentialAddons: UnscopedAddon[]
182
+ /**
183
+ * Addon instances lent named secrets on top of the ones they declared. The
184
+ * other half of the same waiver as `unscopedSecretAddons` — narrower, because
185
+ * the app named the set — so between them a deployment sees every secret an
186
+ * addon can reach that it did not declare for itself.
187
+ */
188
+ grantedSecretAddons: GrantedAddon[]
189
+ /** Addon instances lent named credentials on top of the ones they declared. */
190
+ grantedCredentialAddons: GrantedAddon[]
191
+ variables: VariableDeclaration[]
192
+ }
@@ -0,0 +1,26 @@
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
+ })
@@ -0,0 +1,19 @@
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
+ ]
@@ -0,0 +1,188 @@
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
+
45
+ export interface ProviderAdapter {
46
+ /** Provider name (e.g. 'cloudflare', 'aws') */
47
+ readonly name: string
48
+
49
+ /** Subdirectory name under .deploy/ (e.g. 'cloudflare') */
50
+ readonly deployDirName: string
51
+
52
+ /**
53
+ * When true, skips per-unit decomposition and bundles everything
54
+ * into a single unit using the project's full .pikku/ directory.
55
+ * Used by standalone adapter.
56
+ */
57
+ readonly singleUnit?: boolean
58
+
59
+ /**
60
+ * Whether the provider's workflow runtime needs synthesized per-step
61
+ * dispatch queues. Defaults to `true`.
62
+ *
63
+ * - `true` (default): The deploy pipeline synthesizes a `wf-orchestrator-*`
64
+ * queue and a `wf-step-*` queue for every workflow step, plus producer
65
+ * bindings, so the workflow runtime can fan out via queues.
66
+ * - `false`: No synthetic workflow queues are emitted into the manifest
67
+ * or per-unit codegen. Use this when the provider's workflow runtime
68
+ * dispatches steps natively (e.g. Cloudflare's Durable-Object-based
69
+ * `CloudflareWorkflowService`, where the orchestrator DO advances
70
+ * steps directly without a queue hop). Queues created via explicit
71
+ * `wireQueue(...)` user code are unaffected.
72
+ */
73
+ readonly workflowQueues?: boolean
74
+
75
+ /**
76
+ * Generate the entry file source for a deployment unit.
77
+ * Called once per unit.
78
+ */
79
+ generateEntrySource(ctx: EntryGenerationContext): string
80
+
81
+ /**
82
+ * Generate the entry file source for a `target: 'server'` (container) unit.
83
+ *
84
+ * Optional. When a provider implements it, the deploy pipeline uses it
85
+ * instead of the provider-agnostic `generateServerEntrySource`, so the
86
+ * provider can inject the SAME platform services (kysely, secrets, …) into
87
+ * the container that it injects into its serverless workers — sourcing the
88
+ * bindings from `process.env` instead of a runtime `env` object. When
89
+ * omitted, the pipeline falls back to the generic generator (no platform
90
+ * injection), which is correct for providers whose containers carry no
91
+ * platform services.
92
+ */
93
+ generateServerEntrySource?(ctx: EntryGenerationContext): string
94
+
95
+ /**
96
+ * Generate provider-specific config files per unit (e.g. wrangler.toml).
97
+ * Returns a map of filename → content to write into the unit directory.
98
+ */
99
+ generateUnitConfigs(
100
+ unit: DeploymentUnit,
101
+ manifest: DeploymentManifest,
102
+ projectId: string
103
+ ): Map<string, string>
104
+
105
+ /**
106
+ * Generate provider-level infrastructure manifest (e.g. infra.json).
107
+ * Returns file content, or null if not applicable.
108
+ */
109
+ generateInfraManifest(manifest: DeploymentManifest): string | null
110
+
111
+ /**
112
+ * External modules for esbuild bundling.
113
+ * Defaults to ['node:*'] if not provided.
114
+ */
115
+ getExternals?(): string[]
116
+
117
+ /**
118
+ * Regex sources for modules to stub to `export {}` during bundling — modules
119
+ * this provider's runtime never executes (e.g. the `postgres` driver on CF
120
+ * Workers, which use a libsql/Turso dialect). Unlike `getExternals`, a stub
121
+ * removes the bytes entirely rather than leaving a runtime import to resolve.
122
+ */
123
+ getStubModules?(): string[]
124
+
125
+ /**
126
+ * Module aliases for esbuild bundling (e.g. { crypto: 'node:crypto' }).
127
+ * Used to remap bare imports to platform-compatible paths.
128
+ */
129
+ getAliases?(): Record<string, string>
130
+
131
+ /**
132
+ * esbuild define map for compile-time constants (e.g. { 'process.env.NODE_ENV': '"production"' }).
133
+ */
134
+ getDefine?(): Record<string, string>
135
+
136
+ /**
137
+ * esbuild platform target. Defaults to 'node'.
138
+ * Cloudflare Workers should use 'neutral'.
139
+ */
140
+ getPlatform?(): 'node' | 'neutral' | 'browser'
141
+
142
+ /**
143
+ * esbuild output format. Defaults to 'esm'.
144
+ * pkg requires 'cjs' for standalone binaries.
145
+ */
146
+ getFormat?(): 'esm' | 'cjs'
147
+
148
+ /**
149
+ * Skip the createRequire banner. CF Workers should return true —
150
+ * `import.meta.url` is undefined there and the banner crashes at boot.
151
+ */
152
+ getNoRequireShim?(): boolean
153
+
154
+ /**
155
+ * Generate additional provider-level config files (e.g. serverless.yml).
156
+ * Returns a map of filename → content to write into the deploy directory.
157
+ */
158
+ generateProviderConfigs?(manifest: DeploymentManifest): Map<string, string>
159
+
160
+ /**
161
+ * Emit any provider-specific artifacts that aren't tied to a single user
162
+ * unit — e.g. a synthesized proxy Worker that fronts a CF Container.
163
+ * Called after the infra manifest is written so providers can read it
164
+ * and key off resources that were provisioned in earlier steps.
165
+ */
166
+ emitSideArtifacts?(options: {
167
+ buildDir: string
168
+ manifest: DeploymentManifest
169
+ logger: { info(msg: string): void; error(msg: string): void }
170
+ }): Promise<void>
171
+
172
+ /**
173
+ * Deploy the built artifacts to the provider.
174
+ * Optional — if not implemented, the CLI just outputs the build directory.
175
+ */
176
+ deploy?(options: {
177
+ buildDir: string
178
+ logger: { info(msg: string): void; error(msg: string): void }
179
+ onProgress?: (step: string, detail: string) => void
180
+ }): Promise<{
181
+ success: boolean
182
+ /** Names of the deployed units, as they appear on the provider. */
183
+ workersDeployed?: string[]
184
+ /** Identifiers of the resources provisioned for this deploy. */
185
+ resourcesCreated?: string[]
186
+ errors: Array<{ step: string; error: string }>
187
+ }>
188
+ }
@@ -0,0 +1,102 @@
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
+ 'ChannelDefinition',
18
+ 'DeploymentHandler',
19
+ 'DeploymentManifest',
20
+ 'DeploymentUnit',
21
+ 'DeploymentUnitRole',
22
+ 'EntryGenerationContext',
23
+ 'GrantedAddon',
24
+ 'HttpRouteInfo',
25
+ 'MCPEndpointDefinition',
26
+ 'ProviderAdapter',
27
+ 'QueueDefinition',
28
+ 'ScheduledTaskDefinition',
29
+ 'SecretDeclaration',
30
+ 'ServiceCapability',
31
+ 'ServiceRequirement',
32
+ 'UnresolvedSecretRead',
33
+ 'UnscopedAddon',
34
+ 'VariableDeclaration',
35
+ 'WorkflowDefinition',
36
+ 'WorkflowStepDefinition',
37
+ ]
38
+
39
+ const sourceFiles = (dir: string): string[] => {
40
+ const found: string[] = []
41
+ for (const entry of readdirSync(dir)) {
42
+ if (entry === 'node_modules' || entry === 'dist') continue
43
+ const path = join(dir, entry)
44
+ if (statSync(path).isDirectory()) {
45
+ found.push(...sourceFiles(path))
46
+ } else if (entry.endsWith('.ts') && !entry.endsWith('.test.ts')) {
47
+ found.push(path)
48
+ }
49
+ }
50
+ return found
51
+ }
52
+
53
+ const consumerFiles = (): string[] => {
54
+ const deployPackages = join(repoRoot, 'packages', 'deploy')
55
+ const files: string[] = []
56
+ for (const entry of readdirSync(deployPackages)) {
57
+ if (entry === 'deploy-core') continue
58
+ const src = join(deployPackages, entry, 'src')
59
+ try {
60
+ if (statSync(src).isDirectory()) files.push(...sourceFiles(src))
61
+ } catch {
62
+ continue
63
+ }
64
+ }
65
+ files.push(...sourceFiles(join(repoRoot, 'packages', 'cli', 'src', 'deploy')))
66
+ return files
67
+ }
68
+
69
+ describe('the shared deploy contract has exactly one declaration', () => {
70
+ it('is never re-declared by a provider adapter or by the CLI pipeline', () => {
71
+ const offenders: string[] = []
72
+
73
+ for (const file of consumerFiles()) {
74
+ const source = readFileSync(file, 'utf-8')
75
+ for (const name of OWNED_NAMES) {
76
+ const declaration = new RegExp(
77
+ `^\\s*(?:export\\s+)?(?:interface|type)\\s+${name}\\b`,
78
+ 'm'
79
+ )
80
+ if (declaration.test(source)) {
81
+ offenders.push(`${relative(repoRoot, file)} declares ${name}`)
82
+ }
83
+ }
84
+ }
85
+
86
+ assert.deepEqual(
87
+ offenders.sort(),
88
+ [],
89
+ `these files re-declare a type @pikku/deploy owns — import it instead:\n ${offenders.sort().join('\n ')}`
90
+ )
91
+ })
92
+
93
+ it('exports every name it owns from the barrel', () => {
94
+ const barrel = readFileSync(join(packageDir, 'src', 'index.ts'), 'utf-8')
95
+ const missing = OWNED_NAMES.filter((name) => !barrel.includes(name))
96
+ assert.deepEqual(
97
+ missing,
98
+ [],
99
+ `owned but not re-exported from index.ts: ${missing.join(', ')}`
100
+ )
101
+ })
102
+ })
package/tsconfig.json ADDED
@@ -0,0 +1,13 @@
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
+ }
@@ -0,0 +1 @@
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/provider-adapter.ts","./src/node-builtins.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":[[100,161,162,164,172,176,179,181,182,183,196],[100,163,164,172,176,179,181,182,183,196],[164,172,176,179,181,182,183,196],[100,164,172,176,179,181,182,183,196,205],[100,164,165,170,172,175,176,179,181,182,183,185,196,201,214],[100,164,165,166,172,175,176,179,181,182,183,196],[100,164,172,176,179,181,182,183,196],[100,164,167,172,176,179,181,182,183,196,215],[100,164,168,169,172,176,179,181,182,183,187,196],[100,164,169,172,176,179,181,182,183,196,201,211],[100,164,170,172,175,176,179,181,182,183,185,196],[100,163,164,171,172,176,179,181,182,183,196],[100,164,172,173,176,179,181,182,183,196],[100,164,172,174,175,176,179,181,182,183,196],[100,163,164,172,175,176,179,181,182,183,196],[100,164,172,175,176,177,179,181,182,183,196,201,214],[100,164,172,175,176,177,179,181,182,183,196,201,203,205],[100,151,164,172,175,176,178,179,181,182,183,185,196,201,214],[100,164,172,175,176,178,179,181,182,183,185,196,201,211,214],[100,164,172,176,178,179,180,181,182,183,196,201,211,214],[98,99,100,101,102,103,104,105,106,107,108,152,153,154,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,187,188,189,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],[100,164,172,175,176,179,181,182,183,196],[100,164,172,176,179,181,183,196],[100,164,172,176,179,181,182,183,184,196,214],[100,164,172,175,176,179,181,182,183,185,196,201],[100,115,118,121,122,164,172,176,179,181,182,183,196,214],[100,118,164,172,176,179,181,182,183,196,201,214],[100,118,122,164,172,176,179,181,182,183,196,214],[100,164,172,176,179,181,182,183,196,201],[100,112,164,172,176,179,181,182,183,196],[100,116,164,172,176,179,181,182,183,196],[100,114,115,118,164,172,176,179,181,182,183,196,214],[100,164,172,176,179,181,182,183,185,196,211],[100,164,172,176,179,181,182,183,196,223],[100,112,164,172,176,179,181,182,183,196,223],[100,114,118,164,172,176,179,181,182,183,185,196,214],[100,109,110,111,113,117,164,172,175,176,179,181,182,183,196,201,214],[100,118,127,135,164,172,176,179,181,182,183,196],[100,110,116,164,172,176,179,181,182,183,196],[100,118,145,146,164,172,176,179,181,182,183,196],[100,110,113,118,164,172,176,179,181,182,183,196,205,214,223],[100,118,164,172,176,179,181,182,183,196],[100,114,118,164,172,176,179,181,182,183,196,214],[100,109,164,172,176,179,181,182,183,196],[100,112,113,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,164,172,176,179,181,182,183,196],[100,118,138,141,164,172,176,179,181,182,183,196],[100,118,127,128,129,164,172,176,179,181,182,183,196],[100,116,118,128,130,164,172,176,179,181,182,183,196],[100,117,164,172,176,179,181,182,183,196],[100,110,112,118,164,172,176,179,181,182,183,196],[100,118,122,128,130,164,172,176,179,181,182,183,196],[100,122,164,172,176,179,181,182,183,196],[100,116,118,121,164,172,176,179,181,182,183,196,214],[100,110,114,118,127,164,172,176,179,181,182,183,196],[100,118,138,164,172,176,179,181,182,183,196],[100,130,164,172,176,179,181,182,183,196],[100,110,114,118,122,164,172,176,179,181,182,183,196],[100,112,118,145,164,172,176,179,181,182,183,196,205,220,223],[100,164,172,176,179,181,182,183,187,196],[100,164,172,176,179,181,182,183,188,196],[100,164,172,175,176,179,181,182,183,191,196],[100,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,187,188,189,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],[100,164,172,176,179,181,182,183,193,196],[100,164,172,176,179,181,182,183,194,196],[100,164,169,172,176,179,181,182,183,185,196,205],[100,164,172,175,176,179,181,182,183,196,197],[100,164,172,176,179,181,182,183,196,198,215,218],[100,164,172,175,176,179,181,182,183,196,201,204,205],[100,164,172,176,179,181,182,183,196,202,205],[100,164,172,176,179,181,182,183,196,203],[100,164,172,176,179,181,182,183,196,205,215],[100,164,172,176,179,181,182,183,196,206],[100,161,164,172,176,179,181,182,183,196,201,208,214],[100,164,172,176,179,181,182,183,196,201,207],[100,164,172,175,176,179,181,182,183,196,209,210],[100,164,172,176,179,181,182,183,196,209,210],[100,164,169,172,176,179,181,182,183,185,196,201,211],[100,164,172,176,179,181,182,183,196,212],[100,164,172,176,179,181,182,183,185,196,213],[100,164,172,176,178,179,181,182,183,194,196,214],[100,164,172,176,179,181,182,183,196,215,216],[100,164,169,172,176,179,181,182,183,196,216],[100,164,172,176,179,181,182,183,196,201,217],[100,164,172,176,179,181,182,183,184,196,218],[100,164,172,176,179,181,182,183,196,219],[100,164,167,172,176,179,181,182,183,196],[100,164,169,172,176,179,181,182,183,196],[100,164,172,176,179,181,182,183,196,215],[100,151,164,172,176,179,181,182,183,196],[100,164,172,176,179,181,182,183,196,214],[100,164,172,176,179,181,182,183,196,220],[100,164,172,176,179,181,182,183,191,196],[100,164,172,176,179,181,182,183,196,210],[100,151,164,172,175,176,177,179,181,182,183,191,196,201,205,214,217,218,220],[100,164,172,176,179,181,182,183,196,201,221],[100,164,172,176,179,181,182,183,196,203,222],[94,95,96,100,164,172,176,179,181,182,183,196],[100,164,172,176,179,181,182,183,184,196],[94,100,164,172,176,179,181,182,183,196]],"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":"ce239259fc0a073405b8d39ce494a2b1e3913b1164ca30dc502b7b012dafc9b9","signature":"8785dca18fb826ec42a13290d99dadfe08b98ea215ab1bd85cad053eb638f97c","impliedFormat":99},{"version":"0519b7eb57acb763a97d81f3ade49927e4299826635e4927fe8df4b0e411c5aa","signature":"9ee6040f9ccbb5538c2dc9239b660d4130feaa69867fd9415d60f2d147ff53fc","impliedFormat":99},{"version":"5c4b7c21569730d421f63356b0ba1bc971f608d8ccdc911a2ce16fe13651e34c","signature":"9f2142592764e5d52df7ee53bc130ec7a83be6e76d4cf141b505d10bb7167337","impliedFormat":99},{"version":"88e85335042b6fb6b2f40ea4aabd6d55a861b812eff6da46d590245f52fc80fb","signature":"81017c39fb10be240acd2aae07dd0f03d00f030c1e2c98e25af4961a37066ff0","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,97]],"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":[[161,1],[162,1],[163,2],[100,3],[164,4],[165,5],[166,6],[98,7],[167,8],[168,9],[169,10],[170,11],[171,12],[172,13],[173,13],[174,14],[175,15],[176,16],[177,17],[101,7],[99,7],[178,18],[179,19],[180,20],[223,21],[181,22],[182,23],[183,22],[184,24],[185,25],[127,26],[140,27],[124,28],[141,29],[150,30],[115,31],[116,32],[114,33],[149,34],[144,35],[148,36],[118,37],[137,38],[117,39],[147,40],[112,41],[113,35],[119,42],[120,7],[126,43],[123,42],[110,44],[151,45],[142,46],[130,47],[129,42],[131,48],[134,49],[128,50],[132,51],[145,34],[121,52],[122,53],[135,54],[111,29],[139,55],[138,42],[125,53],[133,56],[136,57],[143,7],[109,7],[146,58],[187,59],[188,60],[189,60],[190,60],[191,61],[192,62],[193,63],[194,64],[195,65],[196,66],[197,66],[198,67],[199,7],[200,7],[201,68],[202,69],[203,70],[204,68],[205,71],[206,72],[207,73],[208,74],[209,75],[210,76],[211,77],[212,78],[213,79],[214,80],[215,81],[216,82],[217,83],[218,84],[219,85],[102,22],[103,7],[104,86],[105,87],[106,7],[107,88],[108,7],[152,89],[153,90],[154,91],[155,91],[156,92],[157,7],[158,4],[159,93],[160,90],[220,94],[221,95],[222,96],[186,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],[97,97],[94,7],[96,98],[95,99]],"latestChangedDtsFile":"./dist/index.d.ts","version":"6.0.3"}