@kodycodes/cli 1.26.2 → 1.26.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth-4FW6GCLG.js +26 -0
- package/dist/auth-4FW6GCLG.js.map +6 -0
- package/dist/bin.js +27 -3
- package/dist/bin.js.map +6 -1
- package/dist/chunk-46IJPEID.js +30 -0
- package/dist/chunk-46IJPEID.js.map +6 -0
- package/dist/chunk-4D6ORNXY.js +24404 -0
- package/dist/chunk-4D6ORNXY.js.map +6 -0
- package/dist/chunk-64IM6G4Z.js +341 -0
- package/dist/chunk-64IM6G4Z.js.map +6 -0
- package/dist/{package-local-runtime-source.js → chunk-64XN367G.js} +373 -52
- package/dist/chunk-64XN367G.js.map +6 -0
- package/dist/chunk-6XQP5SWX.js +26 -0
- package/dist/chunk-6XQP5SWX.js.map +6 -0
- package/dist/chunk-75RZUXQL.js +62 -0
- package/dist/chunk-75RZUXQL.js.map +6 -0
- package/dist/chunk-BISUL7CE.js +106 -0
- package/dist/chunk-BISUL7CE.js.map +6 -0
- package/dist/chunk-BPGY4IE7.js +57 -0
- package/dist/chunk-BPGY4IE7.js.map +6 -0
- package/dist/chunk-CASGRYOF.js +21 -0
- package/dist/chunk-CASGRYOF.js.map +6 -0
- package/dist/chunk-CWWHR4FH.js +19 -0
- package/dist/chunk-CWWHR4FH.js.map +6 -0
- package/dist/chunk-D55XPY3T.js +1382 -0
- package/dist/chunk-D55XPY3T.js.map +6 -0
- package/dist/chunk-EOCV74B2.js +948 -0
- package/dist/chunk-EOCV74B2.js.map +6 -0
- package/dist/chunk-FBVNFWR6.js +437 -0
- package/dist/chunk-FBVNFWR6.js.map +6 -0
- package/dist/chunk-G4YN6XP5.js +14 -0
- package/dist/chunk-G4YN6XP5.js.map +6 -0
- package/dist/chunk-G6LJWROP.js +18 -0
- package/dist/chunk-G6LJWROP.js.map +6 -0
- package/dist/chunk-IHP6PV6X.js +49 -0
- package/dist/chunk-IHP6PV6X.js.map +6 -0
- package/dist/chunk-JWEFKKAD.js +24 -0
- package/dist/chunk-JWEFKKAD.js.map +6 -0
- package/dist/chunk-LWNB26KO.js +147 -0
- package/dist/chunk-LWNB26KO.js.map +6 -0
- package/dist/chunk-OVGXPRSY.js +20 -0
- package/dist/chunk-OVGXPRSY.js.map +6 -0
- package/dist/chunk-PDWCKWQF.js +453 -0
- package/dist/chunk-PDWCKWQF.js.map +6 -0
- package/dist/chunk-QHBCP4OB.js +44 -0
- package/dist/chunk-QHBCP4OB.js.map +6 -0
- package/dist/chunk-R4IUV5P5.js +664 -0
- package/dist/chunk-R4IUV5P5.js.map +6 -0
- package/dist/chunk-RM34N3KI.js +525 -0
- package/dist/chunk-RM34N3KI.js.map +6 -0
- package/dist/chunk-RTWUNV76.js +309 -0
- package/dist/chunk-RTWUNV76.js.map +6 -0
- package/dist/chunk-SMURF26I.js +23 -0
- package/dist/chunk-SMURF26I.js.map +6 -0
- package/dist/chunk-SXHULGL4.js +426 -0
- package/dist/chunk-SXHULGL4.js.map +6 -0
- package/dist/chunk-TIL35OWA.js +1959 -0
- package/dist/chunk-TIL35OWA.js.map +6 -0
- package/dist/chunk-VQS5YSCI.js +54 -0
- package/dist/chunk-VQS5YSCI.js.map +6 -0
- package/dist/chunk-XDCOWU5R.js +696 -0
- package/dist/chunk-XDCOWU5R.js.map +6 -0
- package/dist/chunk-XOPPGRUP.js +605 -0
- package/dist/chunk-XOPPGRUP.js.map +6 -0
- package/dist/cli.js +74 -1500
- package/dist/cli.js.map +6 -1
- package/dist/dev-command-3LX234N6.js +4900 -0
- package/dist/dev-command-3LX234N6.js.map +6 -0
- package/dist/git-credential-FUE3JE3T.js +163 -0
- package/dist/git-credential-FUE3JE3T.js.map +6 -0
- package/dist/install-ZML2TCDG.js +10694 -0
- package/dist/install-ZML2TCDG.js.map +6 -0
- package/dist/local-execute-SZV6XN4T.js +368 -0
- package/dist/local-execute-SZV6XN4T.js.map +6 -0
- package/dist/local-package-run-2TMCAZZ2.js +23 -0
- package/dist/local-package-run-2TMCAZZ2.js.map +6 -0
- package/dist/mcp-G2AWTIXR.js +21 -0
- package/dist/mcp-G2AWTIXR.js.map +6 -0
- package/dist/mock-dep-resolve-TVABDNR7.js +52 -0
- package/dist/mock-dep-resolve-TVABDNR7.js.map +6 -0
- package/dist/mock-fetch-gateway-B5TFGGQS.js +34 -0
- package/dist/mock-fetch-gateway-B5TFGGQS.js.map +6 -0
- package/dist/mock-local-deps-5SZT3PWT.js +197 -0
- package/dist/mock-local-deps-5SZT3PWT.js.map +6 -0
- package/dist/mock-server-SV2IKC4I.js +21 -0
- package/dist/mock-server-SV2IKC4I.js.map +6 -0
- package/dist/open-api-client-DVVMLY7P.js +42 -0
- package/dist/open-api-client-DVVMLY7P.js.map +6 -0
- package/dist/org-X7B5BI4R.js +132 -0
- package/dist/org-X7B5BI4R.js.map +6 -0
- package/dist/package-manifest-QH2RU64C.js +14 -0
- package/dist/package-manifest-QH2RU64C.js.map +6 -0
- package/dist/remote-execute-QMQDVHOY.js +110 -0
- package/dist/remote-execute-QMQDVHOY.js.map +6 -0
- package/dist/setup-git-5KCUBYPB.js +88 -0
- package/dist/setup-git-5KCUBYPB.js.map +6 -0
- package/dist/skill-ENPATRIW.js +43 -0
- package/dist/skill-ENPATRIW.js.map +6 -0
- package/dist/store-WTMRH527.js +48 -0
- package/dist/store-WTMRH527.js.map +6 -0
- package/dist/structured-error-C65GQ53Z.js +13 -0
- package/dist/structured-error-C65GQ53Z.js.map +6 -0
- package/dist/target-3QHY7JT4.js +45 -0
- package/dist/target-3QHY7JT4.js.map +6 -0
- package/dist/webapi-NTVP4BO3.js +2482 -0
- package/dist/webapi-NTVP4BO3.js.map +6 -0
- package/package.json +8 -8
- package/dist/add-mcp-install.js +0 -59
- package/dist/add-mcp-install.js.map +0 -1
- package/dist/api-token-store.js +0 -120
- package/dist/api-token-store.js.map +0 -1
- package/dist/api-token.js +0 -238
- package/dist/api-token.js.map +0 -1
- package/dist/auth-bootstrap.js +0 -373
- package/dist/auth-bootstrap.js.map +0 -1
- package/dist/auth.js +0 -386
- package/dist/auth.js.map +0 -1
- package/dist/capability-proxy.js +0 -527
- package/dist/capability-proxy.js.map +0 -1
- package/dist/credential-call-map.js +0 -155
- package/dist/credential-call-map.js.map +0 -1
- package/dist/credential-client-runtime-source.js +0 -9
- package/dist/credential-client-runtime-source.js.map +0 -1
- package/dist/credentialed-fetch-scan.js +0 -98
- package/dist/credentialed-fetch-scan.js.map +0 -1
- package/dist/defaults.js +0 -34
- package/dist/defaults.js.map +0 -1
- package/dist/detect-running-hosts.js +0 -13
- package/dist/detect-running-hosts.js.map +0 -1
- package/dist/dev/dev-assets.js +0 -202
- package/dist/dev/dev-assets.js.map +0 -1
- package/dist/dev/dev-bundler.js +0 -65
- package/dist/dev/dev-bundler.js.map +0 -1
- package/dist/dev/dev-events.js +0 -94
- package/dist/dev/dev-events.js.map +0 -1
- package/dist/dev/dev-port.js +0 -80
- package/dist/dev/dev-port.js.map +0 -1
- package/dist/dev/dev-protocol.js +0 -14
- package/dist/dev/dev-protocol.js.map +0 -1
- package/dist/dev/dev-registry.js +0 -95
- package/dist/dev/dev-registry.js.map +0 -1
- package/dist/dev/dev-watcher.js +0 -162
- package/dist/dev/dev-watcher.js.map +0 -1
- package/dist/dev/error-page.js +0 -64
- package/dist/dev/error-page.js.map +0 -1
- package/dist/dev/live-reload.js +0 -151
- package/dist/dev/live-reload.js.map +0 -1
- package/dist/dev/prebuild.js +0 -102
- package/dist/dev/prebuild.js.map +0 -1
- package/dist/dev/process-reaper.js +0 -151
- package/dist/dev/process-reaper.js.map +0 -1
- package/dist/dev/stack-trace.js +0 -56
- package/dist/dev/stack-trace.js.map +0 -1
- package/dist/dev/workerd-process.js +0 -118
- package/dist/dev/workerd-process.js.map +0 -1
- package/dist/dev-command.js +0 -676
- package/dist/dev-command.js.map +0 -1
- package/dist/discover-login-identity.js +0 -77
- package/dist/discover-login-identity.js.map +0 -1
- package/dist/discover-org.js +0 -62
- package/dist/discover-org.js.map +0 -1
- package/dist/git-credential.js +0 -147
- package/dist/git-credential.js.map +0 -1
- package/dist/help.js +0 -333
- package/dist/help.js.map +0 -1
- package/dist/host-catalog.js +0 -427
- package/dist/host-catalog.js.map +0 -1
- package/dist/host-config.js +0 -80
- package/dist/host-config.js.map +0 -1
- package/dist/http-error-body.js +0 -35
- package/dist/http-error-body.js.map +0 -1
- package/dist/install-hosts.js +0 -328
- package/dist/install-hosts.js.map +0 -1
- package/dist/install.js +0 -120
- package/dist/install.js.map +0 -1
- package/dist/invoke-passthrough.js +0 -60
- package/dist/invoke-passthrough.js.map +0 -1
- package/dist/local-bundle.js +0 -200
- package/dist/local-bundle.js.map +0 -1
- package/dist/local-execute-auth.js +0 -53
- package/dist/local-execute-auth.js.map +0 -1
- package/dist/local-execute.js +0 -338
- package/dist/local-execute.js.map +0 -1
- package/dist/local-gateway-fetch-forward.js +0 -135
- package/dist/local-gateway-fetch-forward.js.map +0 -1
- package/dist/local-host-runtime-surface.js +0 -75
- package/dist/local-host-runtime-surface.js.map +0 -1
- package/dist/local-package-graph.js +0 -405
- package/dist/local-package-graph.js.map +0 -1
- package/dist/local-package-run.js +0 -307
- package/dist/local-package-run.js.map +0 -1
- package/dist/local-runtime-bridge.js +0 -132
- package/dist/local-runtime-bridge.js.map +0 -1
- package/dist/local-runtime-source.js +0 -541
- package/dist/local-runtime-source.js.map +0 -1
- package/dist/login-callback-assets.js +0 -10
- package/dist/login-callback-assets.js.map +0 -1
- package/dist/login-callback-page.js +0 -362
- package/dist/login-callback-page.js.map +0 -1
- package/dist/mcp.js +0 -134
- package/dist/mcp.js.map +0 -1
- package/dist/mock/ensure-msw.js +0 -215
- package/dist/mock/ensure-msw.js.map +0 -1
- package/dist/mock/install-mock-fetch-shim.js +0 -36
- package/dist/mock/install-mock-fetch-shim.js.map +0 -1
- package/dist/mock/load-package-mocks.js +0 -136
- package/dist/mock/load-package-mocks.js.map +0 -1
- package/dist/mock/mock-fetch-gateway.js +0 -343
- package/dist/mock/mock-fetch-gateway.js.map +0 -1
- package/dist/mock/mock-gateway-fetch-shim.js +0 -104
- package/dist/mock/mock-gateway-fetch-shim.js.map +0 -1
- package/dist/mock/mock-server.js +0 -499
- package/dist/mock/mock-server.js.map +0 -1
- package/dist/mock/mock-storage.js +0 -186
- package/dist/mock/mock-storage.js.map +0 -1
- package/dist/mock/mock-supported.js +0 -63
- package/dist/mock/mock-supported.js.map +0 -1
- package/dist/mock-dep-resolve.js +0 -47
- package/dist/mock-dep-resolve.js.map +0 -1
- package/dist/mock-local-deps.js +0 -207
- package/dist/mock-local-deps.js.map +0 -1
- package/dist/network-error.js +0 -11
- package/dist/network-error.js.map +0 -1
- package/dist/node-engine.js +0 -21
- package/dist/node-engine.js.map +0 -1
- package/dist/oauth-provider.js +0 -107
- package/dist/oauth-provider.js.map +0 -1
- package/dist/onboarding-prompt.js +0 -15
- package/dist/onboarding-prompt.js.map +0 -1
- package/dist/open-api-client.js +0 -432
- package/dist/open-api-client.js.map +0 -1
- package/dist/open-url.js +0 -21
- package/dist/open-url.js.map +0 -1
- package/dist/org-resolve.js +0 -16
- package/dist/org-resolve.js.map +0 -1
- package/dist/org-slug.js +0 -11
- package/dist/org-slug.js.map +0 -1
- package/dist/org.js +0 -100
- package/dist/org.js.map +0 -1
- package/dist/package-app-dev.js +0 -922
- package/dist/package-app-dev.js.map +0 -1
- package/dist/package-collaborators.js +0 -179
- package/dist/package-collaborators.js.map +0 -1
- package/dist/package-info.js +0 -19
- package/dist/package-info.js.map +0 -1
- package/dist/package-local-runtime-source.js.map +0 -1
- package/dist/package-manifest.js +0 -364
- package/dist/package-manifest.js.map +0 -1
- package/dist/process-info.js +0 -14
- package/dist/process-info.js.map +0 -1
- package/dist/redact.js +0 -16
- package/dist/redact.js.map +0 -1
- package/dist/remote-execute.js +0 -108
- package/dist/remote-execute.js.map +0 -1
- package/dist/setup-git.js +0 -676
- package/dist/setup-git.js.map +0 -1
- package/dist/skill.js +0 -35
- package/dist/skill.js.map +0 -1
- package/dist/store.js +0 -597
- package/dist/store.js.map +0 -1
- package/dist/structured-error.js +0 -57
- package/dist/structured-error.js.map +0 -1
- package/dist/target.js +0 -52
- package/dist/target.js.map +0 -1
- package/dist/tool-result.js +0 -19
- package/dist/tool-result.js.map +0 -1
- package/dist/which.js +0 -22
- package/dist/which.js.map +0 -1
- package/dist/workerd-binary.js +0 -98
- package/dist/workerd-binary.js.map +0 -1
package/dist/dev/dev-events.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Events a running `kody dev` server reports: rebuilds, build and runtime
|
|
3
|
-
* errors, and app logs. Humans get {@link formatDevEvent}; agents get the
|
|
4
|
-
* same objects as NDJSON.
|
|
5
|
-
*/
|
|
6
|
-
import { formatBundleDiagnostic } from '../local-bundle.js';
|
|
7
|
-
import { appLogMarker } from './dev-protocol.js';
|
|
8
|
-
const logLevels = new Set(['log', 'info', 'warn', 'error', 'debug']);
|
|
9
|
-
/** Parse one workerd stdout line; plain lines become untagged `log` events. */
|
|
10
|
-
export function parseWorkerdStdoutLine(line) {
|
|
11
|
-
if (line.startsWith(appLogMarker)) {
|
|
12
|
-
try {
|
|
13
|
-
const parsed = JSON.parse(line.slice(appLogMarker.length));
|
|
14
|
-
const level = typeof parsed.level === 'string' && logLevels.has(parsed.level)
|
|
15
|
-
? parsed.level
|
|
16
|
-
: 'log';
|
|
17
|
-
return {
|
|
18
|
-
type: 'log',
|
|
19
|
-
source: 'app',
|
|
20
|
-
level,
|
|
21
|
-
message: typeof parsed.message === 'string' ? parsed.message : String(parsed.message),
|
|
22
|
-
request: readRequestTag(parsed.request),
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
catch { }
|
|
26
|
-
}
|
|
27
|
-
return { type: 'log', source: 'app', level: 'log', message: line, request: null };
|
|
28
|
-
}
|
|
29
|
-
function readRequestTag(value) {
|
|
30
|
-
if (!value || typeof value !== 'object')
|
|
31
|
-
return null;
|
|
32
|
-
const record = value;
|
|
33
|
-
if (typeof record.id !== 'string')
|
|
34
|
-
return null;
|
|
35
|
-
return {
|
|
36
|
-
id: record.id,
|
|
37
|
-
method: typeof record.method === 'string' ? record.method : 'GET',
|
|
38
|
-
path: typeof record.path === 'string' ? record.path : '/',
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* A fix line for runtime errors with a known cause, or undefined. esbuild's ESM
|
|
43
|
-
* output turns a CommonJS `require()` of an external (a Node builtin) into a
|
|
44
|
-
* shim that throws in Workers — hosted apps fail the same way.
|
|
45
|
-
*/
|
|
46
|
-
export function runtimeErrorFix(message) {
|
|
47
|
-
const dynamicRequire = /Dynamic require of "([^"]+)" is not supported/.exec(message);
|
|
48
|
-
if (dynamicRequire) {
|
|
49
|
-
return (`A CommonJS dependency calls require("${dynamicRequire[1]}"), which an ESM Worker cannot run (hosted apps fail the same way). ` +
|
|
50
|
-
'It likely resolved to its Node build: import the package’s Workers/edge entry (an exports subpath or condition like `edge`, `worker`, or `workerd`) or an ESM build instead.');
|
|
51
|
-
}
|
|
52
|
-
return undefined;
|
|
53
|
-
}
|
|
54
|
-
export function formatRequestTag(request) {
|
|
55
|
-
return request ? `[${request.method} ${request.path} #${request.id}]` : '[app]';
|
|
56
|
-
}
|
|
57
|
-
/** One human-readable block for terminals. */
|
|
58
|
-
export function formatDevEvent(event) {
|
|
59
|
-
switch (event.type) {
|
|
60
|
-
case 'rebuild_start':
|
|
61
|
-
return {
|
|
62
|
-
stream: 'stderr',
|
|
63
|
-
text: event.files.length > 0 ? `Rebuilding (${event.files.join(', ')})…` : 'Building…',
|
|
64
|
-
};
|
|
65
|
-
case 'rebuild_ok':
|
|
66
|
-
return {
|
|
67
|
-
stream: 'stderr',
|
|
68
|
-
text: event.restarted
|
|
69
|
-
? `Ready in ${event.ms}ms (build ${event.buildId})`
|
|
70
|
-
: `No bundle changes (${event.ms}ms)`,
|
|
71
|
-
};
|
|
72
|
-
case 'build_error':
|
|
73
|
-
return {
|
|
74
|
-
stream: 'stderr',
|
|
75
|
-
text: `Build failed${event.diagnostics.length > 0 ? `:\n${event.diagnostics.map(formatBundleDiagnostic).join('\n')}` : `: ${event.message}`}\nThe last good build is paused until this is fixed; requests get the error page.`,
|
|
76
|
-
};
|
|
77
|
-
case 'runtime_error':
|
|
78
|
-
return {
|
|
79
|
-
stream: 'stderr',
|
|
80
|
-
text: `${formatRequestTag(event.request)} Uncaught ${event.stack || event.message}${event.fix ? `\nfix: ${event.fix}` : ''}`,
|
|
81
|
-
};
|
|
82
|
-
case 'log': {
|
|
83
|
-
const tag = event.source === 'app' ? formatRequestTag(event.request) : `[${event.source}]`;
|
|
84
|
-
const level = event.level === 'log' || event.level === 'info' ? '' : `${event.level}: `;
|
|
85
|
-
const stream = event.level === 'error' || event.level === 'warn' ? 'stderr' : 'stdout';
|
|
86
|
-
return { stream, text: `${tag} ${level}${event.message}` };
|
|
87
|
-
}
|
|
88
|
-
default: {
|
|
89
|
-
const exhaustive = event;
|
|
90
|
-
throw new Error(`Unhandled dev event: ${JSON.stringify(exhaustive)}`);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=dev-events.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev-events.js","sourceRoot":"","sources":["../../src/dev/dev-events.ts"],"names":[],"mappings":"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"}
|
package/dist/dev/dev-port.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `kody dev` ports: each package gets a stable default (so bookmarks, OAuth
|
|
3
|
-
* redirect URIs, and agent notes keep working across restarts) and walks up to
|
|
4
|
-
* the next free port when that one is taken. An explicit `--port` is honored
|
|
5
|
-
* exactly and fails with an actionable message instead.
|
|
6
|
-
*/
|
|
7
|
-
import { createHash } from 'node:crypto';
|
|
8
|
-
import { StructuredCliError } from '../structured-error.js';
|
|
9
|
-
export const devPortRange = { min: 4100, max: 4999 };
|
|
10
|
-
const fallbackAttempts = 20;
|
|
11
|
-
export function defaultDevPort(kodyId) {
|
|
12
|
-
const span = devPortRange.max - devPortRange.min + 1;
|
|
13
|
-
const hash = createHash('sha256').update(kodyId).digest();
|
|
14
|
-
return devPortRange.min + (hash.readUInt32BE(0) % span);
|
|
15
|
-
}
|
|
16
|
-
export function parseDevPort(raw) {
|
|
17
|
-
const port = /^\d+$/.test(raw.trim()) ? Number(raw) : Number.NaN;
|
|
18
|
-
if (!Number.isInteger(port) || port > 65_535) {
|
|
19
|
-
throw new StructuredCliError({
|
|
20
|
-
code: 'invalid_port',
|
|
21
|
-
message: `--port must be an integer from 0 to 65535 (got "${raw}").`,
|
|
22
|
-
fix: 'Pass --port 0 for any free port, or omit --port to use this package’s stable default.',
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
return port;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Listen on `port` exactly when `explicit`, otherwise on `port` or the next
|
|
29
|
-
* free port above it. Returns the bound port.
|
|
30
|
-
*/
|
|
31
|
-
export async function listenDevServer(server, input) {
|
|
32
|
-
const attempts = input.explicit || input.port === 0 ? 1 : fallbackAttempts;
|
|
33
|
-
for (let attempt = 0; attempt < attempts; attempt += 1) {
|
|
34
|
-
const port = input.port === 0 ? 0 : wrapPort(input.port + attempt);
|
|
35
|
-
try {
|
|
36
|
-
await listenOnce(server, input.host, port);
|
|
37
|
-
return server.address().port;
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
if (!isAddressInUse(error))
|
|
41
|
-
throw error;
|
|
42
|
-
if (input.explicit)
|
|
43
|
-
throw portInUseError(input.host, port);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
throw new StructuredCliError({
|
|
47
|
-
code: 'dev_port_in_use',
|
|
48
|
-
message: `Ports ${input.port}–${wrapPort(input.port + attempts - 1)} on ${input.host} are all in use.`,
|
|
49
|
-
fix: 'Stop old `kody dev` processes, or pass --port 0 for any free port.',
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
function portInUseError(host, port) {
|
|
53
|
-
return new StructuredCliError({
|
|
54
|
-
code: 'dev_port_in_use',
|
|
55
|
-
message: `Port ${port} on ${host} is already in use.`,
|
|
56
|
-
fix: `Find the owner with \`lsof -nP -iTCP:${port} -sTCP:LISTEN\` and stop it, pass another --port, or omit --port to use this package’s default (it moves to the next free port automatically).`,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
function wrapPort(port) {
|
|
60
|
-
return port > 65_535 ? devPortRange.min + (port - 65_536) : port;
|
|
61
|
-
}
|
|
62
|
-
function listenOnce(server, host, port) {
|
|
63
|
-
return new Promise((resolve, reject) => {
|
|
64
|
-
const onError = (error) => {
|
|
65
|
-
server.off('listening', onListening);
|
|
66
|
-
reject(error);
|
|
67
|
-
};
|
|
68
|
-
const onListening = () => {
|
|
69
|
-
server.off('error', onError);
|
|
70
|
-
resolve();
|
|
71
|
-
};
|
|
72
|
-
server.once('error', onError);
|
|
73
|
-
server.once('listening', onListening);
|
|
74
|
-
server.listen(port, host);
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
function isAddressInUse(error) {
|
|
78
|
-
return error?.code === 'EADDRINUSE';
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=dev-port.js.map
|
package/dist/dev/dev-port.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev-port.js","sourceRoot":"","sources":["../../src/dev/dev-port.ts"],"names":[],"mappings":"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"}
|
package/dist/dev/dev-protocol.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wire constants shared by the `kody dev` proxy (Node) and the dev entry that
|
|
3
|
-
* runs inside workerd.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Prefix the dev entry puts on every captured `console.*` line it writes to
|
|
7
|
-
* workerd stdout. Control characters keep it from colliding with app output.
|
|
8
|
-
*/
|
|
9
|
-
export const appLogMarker = '\u001fkody-dev-log\u001f';
|
|
10
|
-
/** Proxy → workerd: short request id used to tag logs and errors. */
|
|
11
|
-
export const devRequestIdHeader = 'x-kody-dev-request';
|
|
12
|
-
/** workerd → proxy: the response carries a serialized uncaught handler error. */
|
|
13
|
-
export const devErrorHeader = 'x-kody-dev-error';
|
|
14
|
-
//# sourceMappingURL=dev-protocol.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev-protocol.js","sourceRoot":"","sources":["../../src/dev/dev-protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAA;AAEtD,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAEtD,iFAAiF;AACjF,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAA"}
|
package/dist/dev/dev-registry.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Where a running `kody dev` server advertises itself so `kody dev fetch` can
|
|
3
|
-
* reuse it instead of booting a second workerd. One JSON file per package root
|
|
4
|
-
* + target under the user cache dir; stale entries (dead pid, wrong package)
|
|
5
|
-
* are ignored.
|
|
6
|
-
*/
|
|
7
|
-
import { createHash } from 'node:crypto';
|
|
8
|
-
import { mkdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
9
|
-
import { join } from 'node:path';
|
|
10
|
-
import { userCacheDir } from '../workerd-binary.js';
|
|
11
|
-
import { isProcessAlive } from './process-reaper.js';
|
|
12
|
-
export const devStatusPath = '/__kody/dev/status';
|
|
13
|
-
export function devRegistryPath(root, target, cacheDir = userCacheDir()) {
|
|
14
|
-
const key = createHash('sha256').update(`${root}\0${target}`).digest('hex').slice(0, 16);
|
|
15
|
-
return join(cacheDir, 'dev-servers', `${key}.json`);
|
|
16
|
-
}
|
|
17
|
-
export async function writeDevRegistration(registration, cacheDir) {
|
|
18
|
-
const path = devRegistryPath(registration.root, registration.target, cacheDir);
|
|
19
|
-
await mkdir(join(path, '..'), { recursive: true });
|
|
20
|
-
await writeFile(path, `${JSON.stringify(registration, null, 2)}\n`);
|
|
21
|
-
return path;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Remove the entry only if it still belongs to `pid`. Missing or unreadable
|
|
25
|
-
* files are left alone — a successor may have truncated or rewritten the path
|
|
26
|
-
* before our shutdown finishes (same rule as `--ready-file` cleanup).
|
|
27
|
-
*/
|
|
28
|
-
export async function removeDevRegistration(root, pid, target, cacheDir) {
|
|
29
|
-
const path = devRegistryPath(root, target, cacheDir);
|
|
30
|
-
try {
|
|
31
|
-
const current = await readRegistration(path);
|
|
32
|
-
if (!current || current.pid !== pid)
|
|
33
|
-
return;
|
|
34
|
-
await rm(path, { force: true });
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
// Missing or unreadable — nothing to clean up.
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* The live `kody dev` server for `root` on `target`, confirmed via its status
|
|
42
|
-
* endpoint, or null.
|
|
43
|
-
*/
|
|
44
|
-
export async function findRunningDevServer(input) {
|
|
45
|
-
const path = devRegistryPath(input.root, input.target, input.cacheDir);
|
|
46
|
-
const registration = await readRegistration(path);
|
|
47
|
-
if (!registration || registration.root !== input.root)
|
|
48
|
-
return null;
|
|
49
|
-
if (!isProcessAlive(registration.pid)) {
|
|
50
|
-
// Re-read before deleting: a successor may have rewritten the same path
|
|
51
|
-
// after we snapped `registration` but before we noticed the pid was dead.
|
|
52
|
-
const current = await readRegistration(path);
|
|
53
|
-
if (current && current.pid === registration.pid) {
|
|
54
|
-
await rm(path, { force: true });
|
|
55
|
-
}
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
if (registration.target !== input.target)
|
|
59
|
-
return null;
|
|
60
|
-
try {
|
|
61
|
-
const response = await (input.fetchFn ?? fetch)(new URL(devStatusPath, registration.origin), { signal: AbortSignal.timeout(input.timeoutMs ?? 1500) });
|
|
62
|
-
if (!response.ok)
|
|
63
|
-
return null;
|
|
64
|
-
const status = (await response.json());
|
|
65
|
-
if (status.package?.root !== input.root || status.target !== input.target)
|
|
66
|
-
return null;
|
|
67
|
-
return { registration, status };
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
async function readRegistration(path) {
|
|
74
|
-
try {
|
|
75
|
-
const parsed = JSON.parse(await readFile(path, 'utf8'));
|
|
76
|
-
if (typeof parsed.pid !== 'number' ||
|
|
77
|
-
typeof parsed.origin !== 'string' ||
|
|
78
|
-
typeof parsed.root !== 'string' ||
|
|
79
|
-
(parsed.target !== 'mock' && parsed.target !== 'prod')) {
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
return {
|
|
83
|
-
pid: parsed.pid,
|
|
84
|
-
origin: parsed.origin,
|
|
85
|
-
port: typeof parsed.port === 'number' ? parsed.port : Number(new URL(parsed.origin).port),
|
|
86
|
-
basePath: typeof parsed.basePath === 'string' ? parsed.basePath : '',
|
|
87
|
-
target: parsed.target,
|
|
88
|
-
root: parsed.root,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=dev-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev-registry.js","sourceRoot":"","sources":["../../src/dev/dev-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/dev/dev-watcher.js
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* File watching for `kody dev`. chokidar watches the package tree (it re-arms
|
|
3
|
-
* per-directory watchers when editors or `sed -i` / `cp` replace a file with a
|
|
4
|
-
* new inode). A low-frequency stat poll over the files in the current bundle
|
|
5
|
-
* graph backs it up, so a missed event can never leave a stale bundle serving.
|
|
6
|
-
*/
|
|
7
|
-
import { watch } from 'chokidar';
|
|
8
|
-
import { stat } from 'node:fs/promises';
|
|
9
|
-
import { relative, sep } from 'node:path';
|
|
10
|
-
const defaultPollIntervalMs = 1000;
|
|
11
|
-
export function createDevWatcher(input) {
|
|
12
|
-
const ignorePrefixes = (input.ignore ?? []).map(normalizePrefix).filter(Boolean);
|
|
13
|
-
const ignored = (path) => shouldIgnoreWatchPath(relative(input.root, path), ignorePrefixes);
|
|
14
|
-
const watcher = watch(input.root, {
|
|
15
|
-
ignoreInitial: true,
|
|
16
|
-
ignored,
|
|
17
|
-
atomic: true,
|
|
18
|
-
});
|
|
19
|
-
watcher.on('all', (_event, path) => {
|
|
20
|
-
if (!ignored(path))
|
|
21
|
-
input.onChange(path);
|
|
22
|
-
});
|
|
23
|
-
// Init errors reject `ready` (awaited by start). Later errors are swallowed
|
|
24
|
-
// so a transient watch glitch cannot crash the process.
|
|
25
|
-
let readySettled = false;
|
|
26
|
-
const ready = new Promise((resolve, reject) => {
|
|
27
|
-
watcher.once('ready', () => {
|
|
28
|
-
readySettled = true;
|
|
29
|
-
resolve();
|
|
30
|
-
});
|
|
31
|
-
watcher.on('error', (error) => {
|
|
32
|
-
if (readySettled)
|
|
33
|
-
return;
|
|
34
|
-
readySettled = true;
|
|
35
|
-
reject(error instanceof Error ? error : new Error(String(error)));
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
let tracked = new Map();
|
|
39
|
-
let trackGeneration = 0;
|
|
40
|
-
let polling = false;
|
|
41
|
-
const poll = async () => {
|
|
42
|
-
if (polling)
|
|
43
|
-
return;
|
|
44
|
-
polling = true;
|
|
45
|
-
// Hold map + generation. track()/rebaseline() replace `tracked` with a
|
|
46
|
-
// fresh Map at the start so an in-flight poll fails `tracked !== map`
|
|
47
|
-
// immediately — otherwise it can fingerprint post-build bytes against
|
|
48
|
-
// the pre-build baseline and echo a no-op rebuild.
|
|
49
|
-
const map = tracked;
|
|
50
|
-
const generation = trackGeneration;
|
|
51
|
-
try {
|
|
52
|
-
for (const [path, previous] of [...map]) {
|
|
53
|
-
if (tracked !== map || generation !== trackGeneration)
|
|
54
|
-
return;
|
|
55
|
-
const next = await fingerprint(path);
|
|
56
|
-
if (tracked !== map || generation !== trackGeneration)
|
|
57
|
-
return;
|
|
58
|
-
if (!map.has(path))
|
|
59
|
-
continue;
|
|
60
|
-
if (previous !== null && next !== previous) {
|
|
61
|
-
if (tracked !== map || generation !== trackGeneration)
|
|
62
|
-
return;
|
|
63
|
-
// Defer (false): do not advance the fingerprint — the next
|
|
64
|
-
// poll must still see this change (e.g. failed-prebuild absorb).
|
|
65
|
-
if (input.onChange(path) === false)
|
|
66
|
-
continue;
|
|
67
|
-
if (tracked !== map || generation !== trackGeneration)
|
|
68
|
-
return;
|
|
69
|
-
map.set(path, next);
|
|
70
|
-
}
|
|
71
|
-
else if (previous === null) {
|
|
72
|
-
map.set(path, next);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
finally {
|
|
77
|
-
polling = false;
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
const timer = setInterval(() => void poll(), input.pollIntervalMs ?? defaultPollIntervalMs);
|
|
81
|
-
timer.unref();
|
|
82
|
-
return {
|
|
83
|
-
ready,
|
|
84
|
-
rebaseline: async () => {
|
|
85
|
-
const generation = ++trackGeneration;
|
|
86
|
-
const previousTracked = tracked;
|
|
87
|
-
tracked = new Map();
|
|
88
|
-
const next = new Map();
|
|
89
|
-
for (const path of previousTracked.keys()) {
|
|
90
|
-
next.set(path, await fingerprint(path));
|
|
91
|
-
if (generation !== trackGeneration)
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
if (generation !== trackGeneration)
|
|
95
|
-
return;
|
|
96
|
-
tracked = next;
|
|
97
|
-
trackGeneration++;
|
|
98
|
-
},
|
|
99
|
-
track: async (paths, options) => {
|
|
100
|
-
const ignoreChanges = new Set(options?.ignoreChanges ?? []);
|
|
101
|
-
const generation = ++trackGeneration;
|
|
102
|
-
const previousTracked = tracked;
|
|
103
|
-
// Detach before fingerprinting so concurrent polls cannot treat the
|
|
104
|
-
// just-written files as fresh edits against the pre-build baseline.
|
|
105
|
-
tracked = new Map();
|
|
106
|
-
const changedDuringBuild = [];
|
|
107
|
-
const next = new Map();
|
|
108
|
-
for (const path of paths) {
|
|
109
|
-
if (ignored(path))
|
|
110
|
-
continue;
|
|
111
|
-
const current = await fingerprint(path);
|
|
112
|
-
if (generation !== trackGeneration)
|
|
113
|
-
return [];
|
|
114
|
-
const previous = previousTracked.get(path);
|
|
115
|
-
if (previous !== undefined &&
|
|
116
|
-
previous !== null &&
|
|
117
|
-
current !== previous &&
|
|
118
|
-
!ignoreChanges.has(path)) {
|
|
119
|
-
changedDuringBuild.push(path);
|
|
120
|
-
}
|
|
121
|
-
next.set(path, current);
|
|
122
|
-
}
|
|
123
|
-
if (generation !== trackGeneration)
|
|
124
|
-
return [];
|
|
125
|
-
tracked = next;
|
|
126
|
-
trackGeneration++;
|
|
127
|
-
return changedDuringBuild;
|
|
128
|
-
},
|
|
129
|
-
close: async () => {
|
|
130
|
-
clearInterval(timer);
|
|
131
|
-
trackGeneration++;
|
|
132
|
-
tracked = new Map();
|
|
133
|
-
await watcher.close();
|
|
134
|
-
},
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
async function fingerprint(path) {
|
|
138
|
-
try {
|
|
139
|
-
const info = await stat(path);
|
|
140
|
-
return `${info.ino}:${info.size}:${info.mtimeMs}`;
|
|
141
|
-
}
|
|
142
|
-
catch {
|
|
143
|
-
return 'missing';
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
function normalizePrefix(prefix) {
|
|
147
|
-
return prefix.replace(/^\.\//, '').replace(/\/+$/, '').split('/').join(sep);
|
|
148
|
-
}
|
|
149
|
-
export function shouldIgnoreWatchPath(relativePath, ignorePrefixes = []) {
|
|
150
|
-
if (!relativePath || relativePath === '.')
|
|
151
|
-
return false;
|
|
152
|
-
if (relativePath.startsWith('..'))
|
|
153
|
-
return true;
|
|
154
|
-
const segments = relativePath.split(sep);
|
|
155
|
-
if (segments.some((segment) => segment === 'node_modules' || segment.startsWith('.'))) {
|
|
156
|
-
return true;
|
|
157
|
-
}
|
|
158
|
-
if (relativePath.endsWith('.map'))
|
|
159
|
-
return true;
|
|
160
|
-
return ignorePrefixes.some((prefix) => relativePath === prefix || relativePath.startsWith(`${prefix}${sep}`));
|
|
161
|
-
}
|
|
162
|
-
//# sourceMappingURL=dev-watcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev-watcher.js","sourceRoot":"","sources":["../../src/dev/dev-watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/dev/error-page.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dev-only error responses served by the `kody dev` proxy for build failures
|
|
3
|
-
* and uncaught handler errors. HTML for browsers, plain text for everyone else
|
|
4
|
-
* (curl, agents, `kody dev fetch`).
|
|
5
|
-
*/
|
|
6
|
-
export function wantsHtml(req) {
|
|
7
|
-
const accept = req.headers.accept ?? '';
|
|
8
|
-
return /\btext\/html\b/.test(accept);
|
|
9
|
-
}
|
|
10
|
-
export function sendDevError(req, res, status, view, options = {}) {
|
|
11
|
-
if (res.headersSent) {
|
|
12
|
-
res.end();
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
const headers = {
|
|
16
|
-
'cache-control': 'no-store',
|
|
17
|
-
'x-kody-dev-error': view.kind,
|
|
18
|
-
};
|
|
19
|
-
if (wantsHtml(req)) {
|
|
20
|
-
res.writeHead(status, { ...headers, 'content-type': 'text/html; charset=utf-8' });
|
|
21
|
-
res.end(renderDevErrorPage(view) + (options.htmlTail ?? ''));
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
res.writeHead(status, { ...headers, 'content-type': 'text/plain; charset=utf-8' });
|
|
25
|
-
res.end(`kody dev ${view.kind} error${view.request ? ` (${view.request})` : ''}\n\n${view.detail}\n`);
|
|
26
|
-
}
|
|
27
|
-
export function renderDevErrorPage(view) {
|
|
28
|
-
const label = view.kind === 'build' ? 'Build error' : 'Runtime error';
|
|
29
|
-
return `<!doctype html>
|
|
30
|
-
<html lang="en">
|
|
31
|
-
<head>
|
|
32
|
-
<meta charset="utf-8">
|
|
33
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
34
|
-
<title>${escapeHtml(label)} · kody dev</title>
|
|
35
|
-
<style>
|
|
36
|
-
:root { color-scheme: dark; }
|
|
37
|
-
body { margin: 0; font: 14px/1.5 ui-sans-serif, system-ui, sans-serif; background: #1a1015; color: #f5e9ee; }
|
|
38
|
-
main { max-width: 960px; margin: 0 auto; padding: 32px 24px; }
|
|
39
|
-
.label { display: inline-block; font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: #ff8fab; }
|
|
40
|
-
h1 { font-size: 20px; margin: 8px 0 20px; word-break: break-word; }
|
|
41
|
-
pre { margin: 0; padding: 16px; overflow: auto; background: #0e080b; border: 1px solid #3a2530; border-radius: 8px; font: 13px/1.55 ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre; }
|
|
42
|
-
p { color: #bfa9b3; font-size: 13px; }
|
|
43
|
-
</style>
|
|
44
|
-
</head>
|
|
45
|
-
<body>
|
|
46
|
-
<main>
|
|
47
|
-
<span class="label">${escapeHtml(label)}</span>
|
|
48
|
-
<h1>${escapeHtml(view.title)}</h1>${view.request ? `\n<p>${escapeHtml(view.request)}</p>` : ''}
|
|
49
|
-
<pre>${escapeHtml(view.detail)}</pre>
|
|
50
|
-
<p>Served by <code>kody dev</code> only; published apps never see this page.</p>
|
|
51
|
-
</main>
|
|
52
|
-
</body>
|
|
53
|
-
</html>
|
|
54
|
-
`;
|
|
55
|
-
}
|
|
56
|
-
export function escapeHtml(value) {
|
|
57
|
-
return value
|
|
58
|
-
.replace(/&/g, '&')
|
|
59
|
-
.replace(/</g, '<')
|
|
60
|
-
.replace(/>/g, '>')
|
|
61
|
-
.replace(/"/g, '"')
|
|
62
|
-
.replace(/'/g, ''');
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=error-page.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-page.js","sourceRoot":"","sources":["../../src/dev/error-page.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,MAAM,UAAU,SAAS,CAAC,GAAoB;IAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA;IACvC,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,YAAY,CAC3B,GAAoB,EACpB,GAAmB,EACnB,MAAc,EACd,IAAkB,EAClB,UAAiC,EAAE;IAEnC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,GAAG,CAAC,GAAG,EAAE,CAAA;QACT,OAAM;IACP,CAAC;IACD,MAAM,OAAO,GAAG;QACf,eAAe,EAAE,UAAU;QAC3B,kBAAkB,EAAE,IAAI,CAAC,IAAI;KAC7B,CAAA;IACD,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAA;QACjF,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAA;QAC5D,OAAM;IACP,CAAC;IACD,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,CAAC,CAAA;IAClF,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;AACtG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAkB;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAA;IACrE,OAAO;;;;;SAKC,UAAU,CAAC,KAAK,CAAC;;;;;;;;;;;;;sBAaJ,UAAU,CAAC,KAAK,CAAC;MACjC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;OACvF,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;CAK7B,CAAA;AACD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACvC,OAAO,KAAK;SACV,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACzB,CAAC"}
|