@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 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';
@@ -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.8",
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
- })
@@ -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
- }
@@ -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
- }
@@ -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
- )
@@ -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
- })
@@ -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
- }
@@ -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"}