forgeos 0.1.0-alpha.0 → 0.1.0-alpha.2
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/.npmignore +9 -1
- package/AGENTS.md +6 -1
- package/CHANGELOG.md +30 -0
- package/CONTRIBUTING.md +22 -1
- package/README.md +30 -3
- package/bin/forge.mjs +4 -3
- package/package.json +3 -1
- package/packages/eslint-plugin-forge/index.ts +15 -15
- package/packages/eslint-plugin-forge/package.json +10 -10
- package/packages/eslint-plugin-forge/src/check-source.ts +95 -95
- package/packages/eslint-plugin-forge/src/load-artifacts.ts +24 -24
- package/packages/eslint-plugin-forge/src/rule-no-forge-guard-violation.ts +93 -93
- package/src/forge/_generated/actionSubscriptions.json +2 -2
- package/src/forge/_generated/actionSubscriptions.ts +3 -3
- package/src/forge/_generated/agentAdapterManifest.json +2 -2
- package/src/forge/_generated/agentAdapterManifest.ts +3 -3
- package/src/forge/_generated/agentContract.json +2 -2
- package/src/forge/_generated/agentContract.ts +6786 -2
- package/src/forge/_generated/agentQuickstart.md +1 -1
- package/src/forge/_generated/aiContext.ts +1 -1
- package/src/forge/_generated/aiModels.json +1 -1
- package/src/forge/_generated/aiModels.ts +1 -1
- package/src/forge/_generated/aiProviders.json +1 -1
- package/src/forge/_generated/aiProviders.ts +1 -1
- package/src/forge/_generated/aiRegistry.json +2 -2
- package/src/forge/_generated/aiRegistry.ts +3 -3
- package/src/forge/_generated/api.json +2 -2
- package/src/forge/_generated/api.ts +1 -1
- package/src/forge/_generated/appGraph.json +2 -2
- package/src/forge/_generated/appGraph.ts +1297 -1141
- package/src/forge/_generated/appMap.md +1 -1
- package/src/forge/_generated/artifactManifest.json +2 -2
- package/src/forge/_generated/artifactManifest.ts +2 -2
- package/src/forge/_generated/authClaims.json +1 -1
- package/src/forge/_generated/authClaims.ts +1 -1
- package/src/forge/_generated/authConfig.json +1 -1
- package/src/forge/_generated/authConfig.ts +1 -1
- package/src/forge/_generated/authContext.ts +1 -1
- package/src/forge/_generated/authRegistry.json +1 -1
- package/src/forge/_generated/authRegistry.ts +1 -1
- package/src/forge/_generated/buildInfo.json +2 -2
- package/src/forge/_generated/buildInfo.ts +4 -4
- package/src/forge/_generated/capabilityMap.json +2 -2
- package/src/forge/_generated/capabilityMap.md +1 -1
- package/src/forge/_generated/capabilityMap.ts +2 -2
- package/src/forge/_generated/client.ts +1 -1
- package/src/forge/_generated/clientApi.ts +1 -1
- package/src/forge/_generated/clientManifest.json +2 -2
- package/src/forge/_generated/clientManifest.ts +3 -3
- package/src/forge/_generated/clientTypes.ts +1 -1
- package/src/forge/_generated/configRegistry.json +1 -1
- package/src/forge/_generated/configRegistry.ts +1 -1
- package/src/forge/_generated/dataGraph.json +2 -2
- package/src/forge/_generated/dataGraph.ts +3 -3
- package/src/forge/_generated/db.json +1 -1
- package/src/forge/_generated/db.ts +1 -1
- package/src/forge/_generated/dbSecurityManifest.json +1 -1
- package/src/forge/_generated/dbSecurityManifest.ts +1 -1
- package/src/forge/_generated/dbSessionContext.json +1 -1
- package/src/forge/_generated/dbSessionContext.ts +1 -1
- package/src/forge/_generated/deployManifest.json +2 -2
- package/src/forge/_generated/deployManifest.ts +7 -7
- package/src/forge/_generated/devManifest.json +2 -2
- package/src/forge/_generated/devManifest.ts +3 -3
- package/src/forge/_generated/envSchema.json +1 -1
- package/src/forge/_generated/envSchema.ts +1 -1
- package/src/forge/_generated/frontendGraph.json +1 -1
- package/src/forge/_generated/frontendGraph.ts +1 -1
- package/src/forge/_generated/importGuards.json +2 -2
- package/src/forge/_generated/importGuards.ts +35 -1
- package/src/forge/_generated/index.ts +1 -1
- package/src/forge/_generated/liveProductionManifest.json +1 -1
- package/src/forge/_generated/liveProductionManifest.ts +1 -1
- package/src/forge/_generated/liveProtocol.json +1 -1
- package/src/forge/_generated/liveProtocol.ts +1 -1
- package/src/forge/_generated/liveQueryRegistry.json +2 -2
- package/src/forge/_generated/liveQueryRegistry.ts +3 -3
- package/src/forge/_generated/liveTransportConfig.json +1 -1
- package/src/forge/_generated/liveTransportConfig.ts +1 -1
- package/src/forge/_generated/makeRegistry.json +2 -2
- package/src/forge/_generated/makeRegistry.ts +2 -2
- package/src/forge/_generated/makeTemplates.json +1 -1
- package/src/forge/_generated/makeTemplates.ts +1 -1
- package/src/forge/_generated/mockMap.json +1 -1
- package/src/forge/_generated/mockMap.ts +1 -1
- package/src/forge/_generated/operationPlaybooks.md +7 -5
- package/src/forge/_generated/packageGraph.json +2 -2
- package/src/forge/_generated/packageGraph.ts +90964 -14284
- package/src/forge/_generated/packageUpgradeRegistry.json +2 -2
- package/src/forge/_generated/packageUpgradeRegistry.ts +2 -2
- package/src/forge/_generated/permissionMatrix.json +2 -2
- package/src/forge/_generated/permissionMatrix.ts +3 -3
- package/src/forge/_generated/policyRegistry.json +2 -2
- package/src/forge/_generated/policyRegistry.ts +3 -3
- package/src/forge/_generated/queryRegistry.json +2 -2
- package/src/forge/_generated/queryRegistry.ts +3 -3
- package/src/forge/_generated/react.d.ts +1 -1
- package/src/forge/_generated/react.ts +1 -1
- package/src/forge/_generated/reactManifest.json +2 -2
- package/src/forge/_generated/reactManifest.ts +3 -3
- package/src/forge/_generated/releaseManifest.json +2 -2
- package/src/forge/_generated/releaseManifest.ts +3 -3
- package/src/forge/_generated/rlsPolicies.json +1 -1
- package/src/forge/_generated/rlsPolicies.sql +1 -1
- package/src/forge/_generated/rlsPolicies.ts +1 -1
- package/src/forge/_generated/runtimeGraph.json +2 -2
- package/src/forge/_generated/runtimeGraph.ts +3 -3
- package/src/forge/_generated/runtimeMatrix.json +2 -2
- package/src/forge/_generated/runtimeMatrix.ts +106177 -7917
- package/src/forge/_generated/runtimeRegistry.ts +1 -1
- package/src/forge/_generated/runtimeRules.md +1 -1
- package/src/forge/_generated/secretRegistry.json +1 -1
- package/src/forge/_generated/secretRegistry.ts +1 -1
- package/src/forge/_generated/secretsContext.ts +1 -1
- package/src/forge/_generated/serverApi.ts +1 -1
- package/src/forge/_generated/sourceMapManifest.json +2 -2
- package/src/forge/_generated/sourceMapManifest.ts +2 -2
- package/src/forge/_generated/sqlPlan.json +1 -1
- package/src/forge/_generated/sqlPlan.ts +1 -1
- package/src/forge/_generated/subscriptionManifest.json +2 -2
- package/src/forge/_generated/subscriptionManifest.ts +3 -3
- package/src/forge/_generated/symbolicationManifest.json +2 -2
- package/src/forge/_generated/symbolicationManifest.ts +2 -2
- package/src/forge/_generated/telemetryRegistry.json +2 -2
- package/src/forge/_generated/telemetryRegistry.ts +3 -3
- package/src/forge/_generated/telemetrySinks.json +2 -2
- package/src/forge/_generated/telemetrySinks.ts +2 -2
- package/src/forge/_generated/tenantScope.json +2 -2
- package/src/forge/_generated/tenantScope.ts +3 -3
- package/src/forge/_generated/testGraph.json +2 -2
- package/src/forge/_generated/testGraph.ts +129 -75
- package/src/forge/_generated/testPlanRegistry.json +2 -2
- package/src/forge/_generated/testPlanRegistry.ts +2 -2
- package/src/forge/_generated/uiRoutes.json +1 -1
- package/src/forge/_generated/uiRoutes.ts +1 -1
- package/src/forge/_generated/uiScenarios.json +1 -1
- package/src/forge/_generated/uiScenarios.ts +1 -1
- package/src/forge/_generated/uiTestManifest.json +2 -2
- package/src/forge/_generated/uiTestManifest.ts +2 -2
- package/src/forge/_generated/workflowRegistry.json +2 -2
- package/src/forge/_generated/workflowRegistry.ts +3 -3
- package/src/forge/_generated/workflowSubscriptions.json +2 -2
- package/src/forge/_generated/workflowSubscriptions.ts +3 -3
- package/src/forge/cli/commands.ts +861 -861
- package/src/forge/cli/deps.ts +178 -11
- package/src/forge/cli/dev.ts +32 -5
- package/src/forge/cli/index.ts +7 -7
- package/src/forge/cli/main.ts +54 -54
- package/src/forge/cli/new.ts +29 -1
- package/src/forge/cli/output.ts +97 -97
- package/src/forge/cli/parse.ts +679 -673
- package/src/forge/cli/version.ts +1 -1
- package/src/forge/compiler/agent-contract/build.ts +28 -0
- package/src/forge/compiler/agent-contract/types.ts +16 -0
- package/src/forge/compiler/app-graph/build.ts +112 -112
- package/src/forge/compiler/app-graph/classify.ts +10 -10
- package/src/forge/compiler/app-graph/dup-symbol.ts +29 -29
- package/src/forge/compiler/app-graph/extract.ts +123 -123
- package/src/forge/compiler/app-graph/forge-apis.ts +29 -29
- package/src/forge/compiler/app-graph/index.ts +11 -11
- package/src/forge/compiler/app-graph/module-graph.ts +316 -316
- package/src/forge/compiler/app-graph/parser.ts +119 -119
- package/src/forge/compiler/app-graph/symbols.ts +48 -48
- package/src/forge/compiler/app-graph/tsconfig-hash.ts +62 -62
- package/src/forge/compiler/app-graph/types.ts +43 -43
- package/src/forge/compiler/app-graph/versions.ts +14 -14
- package/src/forge/compiler/cache/index.ts +17 -17
- package/src/forge/compiler/cache/key.ts +46 -46
- package/src/forge/compiler/cache/scheduler.ts +72 -72
- package/src/forge/compiler/cache/store.ts +78 -78
- package/src/forge/compiler/classifier/capabilities.ts +78 -78
- package/src/forge/compiler/classifier/classify.ts +113 -113
- package/src/forge/compiler/classifier/contexts.ts +188 -188
- package/src/forge/compiler/classifier/index.ts +18 -18
- package/src/forge/compiler/classifier/runtime-matrix.ts +45 -45
- package/src/forge/compiler/classifier/secrets.ts +41 -41
- package/src/forge/compiler/classifier/signals.ts +129 -129
- package/src/forge/compiler/diagnostics/codes.ts +125 -120
- package/src/forge/compiler/diagnostics/create.ts +87 -87
- package/src/forge/compiler/diagnostics/index.ts +41 -41
- package/src/forge/compiler/emitter/artifact-kind.ts +14 -14
- package/src/forge/compiler/emitter/barrel.ts +38 -38
- package/src/forge/compiler/emitter/constants.ts +7 -7
- package/src/forge/compiler/emitter/emit.ts +234 -237
- package/src/forge/compiler/emitter/index.ts +24 -24
- package/src/forge/compiler/emitter/lock.ts +61 -61
- package/src/forge/compiler/emitter/render.ts +73 -73
- package/src/forge/compiler/guards/artifacts.ts +96 -96
- package/src/forge/compiler/guards/check-import-guards.ts +106 -106
- package/src/forge/compiler/guards/index.ts +11 -11
- package/src/forge/compiler/guards/propagate-contexts.ts +57 -57
- package/src/forge/compiler/index.ts +17 -17
- package/src/forge/compiler/integration/add.ts +493 -493
- package/src/forge/compiler/integration/index.ts +17 -17
- package/src/forge/compiler/integration/plan.ts +279 -279
- package/src/forge/compiler/integration/render.ts +189 -189
- package/src/forge/compiler/integration/snapshot.ts +52 -52
- package/src/forge/compiler/orchestrator/discover.ts +214 -214
- package/src/forge/compiler/orchestrator/guards.ts +5 -5
- package/src/forge/compiler/orchestrator/index.ts +27 -27
- package/src/forge/compiler/orchestrator/manifest.ts +69 -69
- package/src/forge/compiler/orchestrator/orphans.ts +51 -51
- package/src/forge/compiler/orchestrator/plan.ts +804 -804
- package/src/forge/compiler/orchestrator/run.ts +178 -178
- package/src/forge/compiler/orchestrator/serialize.ts +859 -859
- package/src/forge/compiler/orchestrator/types.ts +23 -23
- package/src/forge/compiler/orchestrator/verify.ts +35 -35
- package/src/forge/compiler/package-graph/capabilities-stub.ts +33 -33
- package/src/forge/compiler/package-graph/checksum.ts +107 -97
- package/src/forge/compiler/package-graph/compiler.ts +444 -363
- package/src/forge/compiler/package-graph/constants.ts +4 -4
- package/src/forge/compiler/package-graph/exports-discovery.ts +91 -84
- package/src/forge/compiler/package-graph/extract-dts.ts +32 -32
- package/src/forge/compiler/package-graph/index.ts +24 -24
- package/src/forge/compiler/package-graph/jsdoc.ts +50 -50
- package/src/forge/compiler/package-graph/oracle.ts +326 -0
- package/src/forge/compiler/package-graph/read-file.ts +21 -21
- package/src/forge/compiler/package-graph/resolve.ts +131 -127
- package/src/forge/compiler/package-manager/adapter.ts +232 -232
- package/src/forge/compiler/package-manager/commands.ts +47 -47
- package/src/forge/compiler/package-manager/detect.ts +65 -65
- package/src/forge/compiler/package-manager/executor.ts +29 -29
- package/src/forge/compiler/package-manager/index.ts +22 -22
- package/src/forge/compiler/package-manager/parse-spec.ts +16 -16
- package/src/forge/compiler/package-manager/version.ts +20 -20
- package/src/forge/compiler/primitives/compare.ts +26 -26
- package/src/forge/compiler/primitives/hash.ts +42 -33
- package/src/forge/compiler/primitives/header.ts +43 -43
- package/src/forge/compiler/primitives/index.ts +45 -45
- package/src/forge/compiler/primitives/paths.ts +24 -24
- package/src/forge/compiler/primitives/serialize.ts +66 -66
- package/src/forge/compiler/primitives/sort.ts +87 -87
- package/src/forge/compiler/recipes/definitions.ts +269 -269
- package/src/forge/compiler/recipes/helpers.ts +37 -37
- package/src/forge/compiler/recipes/index.ts +21 -21
- package/src/forge/compiler/recipes/registry.ts +87 -87
- package/src/forge/compiler/sandbox/artifact-sanitize.ts +26 -26
- package/src/forge/compiler/sandbox/backends/child.ts +123 -123
- package/src/forge/compiler/sandbox/backends/docker.ts +173 -173
- package/src/forge/compiler/sandbox/index.ts +51 -51
- package/src/forge/compiler/sandbox/inspect.ts +143 -143
- package/src/forge/compiler/sandbox/inspector-entry.ts +115 -115
- package/src/forge/compiler/sandbox/limits.ts +31 -31
- package/src/forge/compiler/sandbox/scrub-env.ts +60 -60
- package/src/forge/compiler/sandbox/secret-scan.ts +54 -54
- package/src/forge/compiler/sandbox/serialize.ts +106 -106
- package/src/forge/compiler/sandbox/types.ts +7 -7
- package/src/forge/compiler/types/app-graph.ts +71 -71
- package/src/forge/compiler/types/capability.ts +29 -29
- package/src/forge/compiler/types/classification.ts +9 -9
- package/src/forge/compiler/types/cli.ts +85 -85
- package/src/forge/compiler/types/diagnostic.ts +2 -2
- package/src/forge/compiler/types/emit.ts +25 -25
- package/src/forge/compiler/types/import-guards.ts +19 -19
- package/src/forge/compiler/types/index.ts +98 -98
- package/src/forge/compiler/types/integration.ts +25 -25
- package/src/forge/compiler/types/json.ts +3 -3
- package/src/forge/compiler/types/lock.ts +37 -37
- package/src/forge/compiler/types/package-graph.ts +122 -77
- package/src/forge/compiler/types/runtime-matrix.ts +16 -16
- package/src/forge/compiler/types/runtime.ts +30 -30
- package/src/forge/compiler/types/sandbox.ts +24 -24
- package/src/forge/dev/server.ts +16 -2
- package/src/forge/refactor/index.ts +10 -2
- package/src/forge/refactor/runtime-rename.ts +598 -0
- package/src/forge/runtime/executor.ts +3 -2
- package/src/forge/runtime/live/live-query-runner.ts +2 -1
- package/src/forge/runtime/outbox/process.ts +2 -1
- package/src/forge/runtime/query/run-query.ts +2 -1
- package/src/forge/runtime/runner/run-entry.ts +2 -1
- package/src/forge/runtime/telemetry/sinks/posthog.ts +4 -5
- package/src/forge/runtime/telemetry/sinks/sentry.ts +4 -5
- package/src/forge/runtime/workflows/resolve-step.ts +2 -1
- package/src/forge/version.ts +3 -0
- package/templates/b2b-support-web/src/actions/captureTicketCreated.ts +7 -2
- package/templates/b2b-support-web/src/commands/closeTicket.ts +6 -1
- package/templates/b2b-support-web/src/commands/createTicket.ts +8 -2
- package/templates/b2b-support-web/src/queries/getTicket.ts +8 -1
- package/templates/b2b-support-web/web/components/CreateTicketForm.tsx +1 -2
- package/templates/b2b-support-web/web/components/PolicyDeniedDemo.tsx +1 -2
- package/templates/b2b-support-web/web/components/TicketList.tsx +1 -2
- package/templates/b2b-support-web/web/components/TraceDetails.tsx +1 -1
- package/templates/b2b-support-web/web/lib/forge.ts +1 -0
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
import type { AppGraph } from "../types/app-graph.ts";
|
|
2
|
-
import type { DataGraph } from "../types/data-graph.ts";
|
|
3
|
-
import type { PackageGraph } from "../types/package-graph.ts";
|
|
4
|
-
import type { RuntimeMatrix } from "../types/runtime-matrix.ts";
|
|
5
|
-
import type { ImportGuardsArtifact } from "../types/import-guards.ts";
|
|
6
|
-
import type { DevManifest } from "../types/dev-manifest.ts";
|
|
7
|
-
import type { ActionSubscriptions } from "../types/action-subscriptions.ts";
|
|
8
|
-
import type {
|
|
9
|
-
WorkflowRegistry,
|
|
10
|
-
WorkflowSubscriptions,
|
|
11
|
-
} from "../types/workflow-registry.ts";
|
|
12
|
-
import type {
|
|
13
|
-
TelemetryRegistry,
|
|
14
|
-
TelemetrySinks,
|
|
15
|
-
} from "../types/telemetry-registry.ts";
|
|
16
|
-
import type {
|
|
17
|
-
PermissionMatrix,
|
|
18
|
-
PolicyRegistry,
|
|
19
|
-
TenantScope,
|
|
20
|
-
} from "../types/policy-registry.ts";
|
|
21
|
-
import type { MockMapEntry, RuntimeGraph } from "../types/runtime-graph.ts";
|
|
22
|
-
import type { QueryRegistry } from "../types/query-registry.ts";
|
|
23
|
-
import type {
|
|
24
|
-
LiveQueryRegistry,
|
|
25
|
-
SubscriptionManifest,
|
|
26
|
-
} from "../types/live-query-registry.ts";
|
|
27
|
-
import type { ApiSurface } from "../api-surface/build.ts";
|
|
28
|
-
import {
|
|
29
|
-
serializeApiTs,
|
|
30
|
-
serializeClientApiTs,
|
|
31
|
-
serializeServerApiTs,
|
|
32
|
-
} from "../api-surface/build.ts";
|
|
33
|
-
import type { SqlPlan } from "../data-graph/sql/types.ts";
|
|
34
|
-
import {
|
|
35
|
-
serializeDbJson,
|
|
36
|
-
serializeDbTs,
|
|
37
|
-
serializeSqlPlanJson,
|
|
38
|
-
serializeSqlPlanTs,
|
|
39
|
-
} from "../data-graph/sql/serialize.ts";
|
|
40
|
-
import type {
|
|
41
|
-
DbSecurityManifest,
|
|
42
|
-
DbSessionContextArtifact,
|
|
43
|
-
RlsPoliciesArtifact,
|
|
44
|
-
} from "../data-graph/rls/types.ts";
|
|
45
|
-
import type { PackageUpgradeRegistry } from "../package-upgrades/types.ts";
|
|
46
|
-
import type {
|
|
47
|
-
ArtifactManifest,
|
|
48
|
-
BuildInfo,
|
|
49
|
-
DeployManifest,
|
|
50
|
-
ReleaseManifest,
|
|
51
|
-
SourceMapManifest,
|
|
52
|
-
SymbolicationManifest,
|
|
53
|
-
} from "../release/types.ts";
|
|
54
|
-
import type {
|
|
55
|
-
LiveProductionManifest,
|
|
56
|
-
LiveProtocolManifest,
|
|
57
|
-
LiveTransportConfig,
|
|
58
|
-
} from "../live-production/types.ts";
|
|
59
|
-
import type {
|
|
60
|
-
MakeRegistryArtifact,
|
|
61
|
-
MakeTemplateArtifact,
|
|
62
|
-
} from "../make-registry/build.ts";
|
|
63
|
-
import type { TestGraph, TestPlanRegistry } from "../types/test-graph.ts";
|
|
64
|
-
import {
|
|
65
|
-
serializeMakeRegistryJson as serializeMakeRegistryJsonArtifact,
|
|
66
|
-
serializeMakeRegistryTs as serializeMakeRegistryTsArtifact,
|
|
67
|
-
serializeMakeTemplatesJson as serializeMakeTemplatesJsonArtifact,
|
|
68
|
-
serializeMakeTemplatesTs as serializeMakeTemplatesTsArtifact,
|
|
69
|
-
} from "../make-registry/build.ts";
|
|
70
|
-
import type { ClassifiedPackage } from "../classifier/runtime-matrix.ts";
|
|
71
|
-
import { resolveByPackageName } from "../recipes/registry.ts";
|
|
72
|
-
import { GENERATED_DIR } from "../emitter/constants.ts";
|
|
73
|
-
import { serializeCanonical } from "../primitives/serialize.ts";
|
|
1
|
+
import type { AppGraph } from "../types/app-graph.ts";
|
|
2
|
+
import type { DataGraph } from "../types/data-graph.ts";
|
|
3
|
+
import type { PackageGraph } from "../types/package-graph.ts";
|
|
4
|
+
import type { RuntimeMatrix } from "../types/runtime-matrix.ts";
|
|
5
|
+
import type { ImportGuardsArtifact } from "../types/import-guards.ts";
|
|
6
|
+
import type { DevManifest } from "../types/dev-manifest.ts";
|
|
7
|
+
import type { ActionSubscriptions } from "../types/action-subscriptions.ts";
|
|
8
|
+
import type {
|
|
9
|
+
WorkflowRegistry,
|
|
10
|
+
WorkflowSubscriptions,
|
|
11
|
+
} from "../types/workflow-registry.ts";
|
|
12
|
+
import type {
|
|
13
|
+
TelemetryRegistry,
|
|
14
|
+
TelemetrySinks,
|
|
15
|
+
} from "../types/telemetry-registry.ts";
|
|
16
|
+
import type {
|
|
17
|
+
PermissionMatrix,
|
|
18
|
+
PolicyRegistry,
|
|
19
|
+
TenantScope,
|
|
20
|
+
} from "../types/policy-registry.ts";
|
|
21
|
+
import type { MockMapEntry, RuntimeGraph } from "../types/runtime-graph.ts";
|
|
22
|
+
import type { QueryRegistry } from "../types/query-registry.ts";
|
|
23
|
+
import type {
|
|
24
|
+
LiveQueryRegistry,
|
|
25
|
+
SubscriptionManifest,
|
|
26
|
+
} from "../types/live-query-registry.ts";
|
|
27
|
+
import type { ApiSurface } from "../api-surface/build.ts";
|
|
28
|
+
import {
|
|
29
|
+
serializeApiTs,
|
|
30
|
+
serializeClientApiTs,
|
|
31
|
+
serializeServerApiTs,
|
|
32
|
+
} from "../api-surface/build.ts";
|
|
33
|
+
import type { SqlPlan } from "../data-graph/sql/types.ts";
|
|
34
|
+
import {
|
|
35
|
+
serializeDbJson,
|
|
36
|
+
serializeDbTs,
|
|
37
|
+
serializeSqlPlanJson,
|
|
38
|
+
serializeSqlPlanTs,
|
|
39
|
+
} from "../data-graph/sql/serialize.ts";
|
|
40
|
+
import type {
|
|
41
|
+
DbSecurityManifest,
|
|
42
|
+
DbSessionContextArtifact,
|
|
43
|
+
RlsPoliciesArtifact,
|
|
44
|
+
} from "../data-graph/rls/types.ts";
|
|
45
|
+
import type { PackageUpgradeRegistry } from "../package-upgrades/types.ts";
|
|
46
|
+
import type {
|
|
47
|
+
ArtifactManifest,
|
|
48
|
+
BuildInfo,
|
|
49
|
+
DeployManifest,
|
|
50
|
+
ReleaseManifest,
|
|
51
|
+
SourceMapManifest,
|
|
52
|
+
SymbolicationManifest,
|
|
53
|
+
} from "../release/types.ts";
|
|
54
|
+
import type {
|
|
55
|
+
LiveProductionManifest,
|
|
56
|
+
LiveProtocolManifest,
|
|
57
|
+
LiveTransportConfig,
|
|
58
|
+
} from "../live-production/types.ts";
|
|
59
|
+
import type {
|
|
60
|
+
MakeRegistryArtifact,
|
|
61
|
+
MakeTemplateArtifact,
|
|
62
|
+
} from "../make-registry/build.ts";
|
|
63
|
+
import type { TestGraph, TestPlanRegistry } from "../types/test-graph.ts";
|
|
64
|
+
import {
|
|
65
|
+
serializeMakeRegistryJson as serializeMakeRegistryJsonArtifact,
|
|
66
|
+
serializeMakeRegistryTs as serializeMakeRegistryTsArtifact,
|
|
67
|
+
serializeMakeTemplatesJson as serializeMakeTemplatesJsonArtifact,
|
|
68
|
+
serializeMakeTemplatesTs as serializeMakeTemplatesTsArtifact,
|
|
69
|
+
} from "../make-registry/build.ts";
|
|
70
|
+
import type { ClassifiedPackage } from "../classifier/runtime-matrix.ts";
|
|
71
|
+
import { resolveByPackageName } from "../recipes/registry.ts";
|
|
72
|
+
import { GENERATED_DIR } from "../emitter/constants.ts";
|
|
73
|
+
import { serializeCanonical } from "../primitives/serialize.ts";
|
|
74
74
|
import { buildImportGuardsArtifact } from "../guards/artifacts.ts";
|
|
75
75
|
import type { AuthRegistryArtifact } from "../../runtime/auth/config.ts";
|
|
76
76
|
|
|
@@ -98,789 +98,789 @@ export function serializeAppGraphJson(graph: AppGraph): string {
|
|
|
98
98
|
};
|
|
99
99
|
return serializeCanonical(payload);
|
|
100
100
|
}
|
|
101
|
-
|
|
102
|
-
export function serializeAppGraphTs(graph: AppGraph): string {
|
|
103
|
-
const parsed: unknown = JSON.parse(serializeAppGraphJson(graph).trimEnd());
|
|
104
|
-
return `export const appGraph = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export function serializePackageGraphJson(graph: PackageGraph): string {
|
|
108
|
-
return serializeCanonical(graph);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export function serializePackageGraphTs(graph: PackageGraph): string {
|
|
112
|
-
const parsed: unknown = JSON.parse(serializePackageGraphJson(graph).trimEnd());
|
|
113
|
-
return `export const packageGraph = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export function serializeRuntimeMatrixJson(matrix: RuntimeMatrix): string {
|
|
117
|
-
return serializeCanonical(matrix);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
export function serializeRuntimeMatrixTs(matrix: RuntimeMatrix): string {
|
|
121
|
-
const parsed: unknown = JSON.parse(serializeRuntimeMatrixJson(matrix).trimEnd());
|
|
122
|
-
return `export const runtimeMatrix = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
export function serializeImportGuardsJson(
|
|
126
|
-
matrix: RuntimeMatrix,
|
|
127
|
-
moduleGraph?: AppGraph["moduleGraph"],
|
|
128
|
-
): string {
|
|
129
|
-
return serializeCanonical(buildImportGuardsArtifact(matrix, moduleGraph));
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
export function serializeImportGuardsTs(
|
|
133
|
-
matrix: RuntimeMatrix,
|
|
134
|
-
moduleGraph?: AppGraph["moduleGraph"],
|
|
135
|
-
): string {
|
|
136
|
-
const artifact = buildImportGuardsArtifact(matrix, moduleGraph);
|
|
137
|
-
return `export const importGuards = ${JSON.stringify(artifact, null, 2)} as const;\n`;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
export function serializeDataGraphJson(graph: DataGraph): string {
|
|
141
|
-
const payload = {
|
|
142
|
-
schemaVersion: graph.schemaVersion,
|
|
143
|
-
generatorVersion: graph.generatorVersion,
|
|
144
|
-
analyzerVersion: graph.analyzerVersion,
|
|
145
|
-
inputHash: graph.inputHash,
|
|
146
|
-
tables: graph.tables,
|
|
147
|
-
};
|
|
148
|
-
return serializeCanonical(payload);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export function serializeDataGraphTs(graph: DataGraph): string {
|
|
152
|
-
const parsed: unknown = JSON.parse(serializeDataGraphJson(graph).trimEnd());
|
|
153
|
-
return `export const dataGraph = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
export function serializeRuntimeGraphJson(graph: RuntimeGraph): string {
|
|
157
|
-
const payload = {
|
|
158
|
-
schemaVersion: graph.schemaVersion,
|
|
159
|
-
generatorVersion: graph.generatorVersion,
|
|
160
|
-
analyzerVersion: graph.analyzerVersion,
|
|
161
|
-
inputHash: graph.inputHash,
|
|
162
|
-
entries: graph.entries,
|
|
163
|
-
};
|
|
164
|
-
return serializeCanonical(payload);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
export function serializeRuntimeGraphTs(graph: RuntimeGraph): string {
|
|
168
|
-
const parsed: unknown = JSON.parse(serializeRuntimeGraphJson(graph).trimEnd());
|
|
169
|
-
return `export const runtimeGraph = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
export function serializeRuntimeRegistryTs(graph: RuntimeGraph): string {
|
|
173
|
-
const registry: Record<
|
|
174
|
-
string,
|
|
175
|
-
{ kind: "command" | "action"; file: string; moduleId: string }
|
|
176
|
-
> = {};
|
|
177
|
-
|
|
178
|
-
for (const entry of graph.entries) {
|
|
179
|
-
registry[entry.name] = {
|
|
180
|
-
kind: entry.kind,
|
|
181
|
-
file: entry.file,
|
|
182
|
-
moduleId: entry.moduleId,
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
return `export const runtimeRegistry = ${JSON.stringify(registry, null, 2)} as const;\n`;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
export function buildMockMapEntries(classified: ClassifiedPackage[]): MockMapEntry[] {
|
|
190
|
-
const entries: MockMapEntry[] = [];
|
|
191
|
-
const seen = new Set<string>();
|
|
192
|
-
|
|
193
|
-
for (const pkg of classified) {
|
|
194
|
-
const recipe = pkg.recipe ?? resolveByPackageName(pkg.api.name);
|
|
195
|
-
if (!recipe || recipe.testkits.length === 0) {
|
|
196
|
-
continue;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
const packageName = recipe.packages[0]?.packageName ?? recipe.alias;
|
|
200
|
-
if (seen.has(packageName)) {
|
|
201
|
-
continue;
|
|
202
|
-
}
|
|
203
|
-
seen.add(packageName);
|
|
204
|
-
|
|
205
|
-
const testkit = [...recipe.testkits].sort()[0];
|
|
206
|
-
if (!testkit) {
|
|
207
|
-
continue;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
entries.push({
|
|
211
|
-
packageName,
|
|
212
|
-
mockFile: `${GENERATED_DIR}/testkits/${testkit}`,
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
return entries.sort((a, b) => a.packageName.localeCompare(b.packageName));
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
export function serializeMockMapJson(entries: MockMapEntry[]): string {
|
|
220
|
-
return serializeCanonical({ entries });
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
export function serializeMockMapTs(entries: MockMapEntry[]): string {
|
|
224
|
-
const map: Record<string, string> = {};
|
|
225
|
-
for (const entry of entries) {
|
|
226
|
-
map[entry.packageName] = entry.mockFile;
|
|
227
|
-
}
|
|
228
|
-
return `export const mockMap = ${JSON.stringify(map, null, 2)} as const;\n`;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
export function serializeDevManifestJson(manifest: DevManifest): string {
|
|
232
|
-
const payload = {
|
|
233
|
-
schemaVersion: manifest.schemaVersion,
|
|
234
|
-
generatorVersion: manifest.generatorVersion,
|
|
235
|
-
analyzerVersion: manifest.analyzerVersion,
|
|
236
|
-
inputHash: manifest.inputHash,
|
|
237
|
-
routes: manifest.routes,
|
|
238
|
-
entries: manifest.entries,
|
|
239
|
-
workflows: manifest.workflows,
|
|
240
|
-
diagnostics: manifest.diagnostics,
|
|
241
|
-
};
|
|
242
|
-
return serializeCanonical(payload);
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
export function serializeDevManifestTs(manifest: DevManifest): string {
|
|
246
|
-
const parsed: unknown = JSON.parse(serializeDevManifestJson(manifest).trimEnd());
|
|
247
|
-
return `export const devManifest = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
export function serializeSqlPlanJsonExport(plan: SqlPlan): string {
|
|
251
|
-
return serializeSqlPlanJson(plan);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
export function serializeSqlPlanTsExport(plan: SqlPlan): string {
|
|
255
|
-
return serializeSqlPlanTs(plan);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
export function serializeDbJsonExport(plan: SqlPlan, tenantScope?: TenantScope): string {
|
|
259
|
-
return serializeDbJson(plan, tenantScope);
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
export function serializeDbTsExport(plan: SqlPlan, tenantScope?: TenantScope): string {
|
|
263
|
-
return serializeDbTs(plan, tenantScope);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
export function serializeRlsPoliciesSql(artifact: RlsPoliciesArtifact): string {
|
|
267
|
-
return artifact.sql;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
export function serializeRlsPoliciesJson(artifact: RlsPoliciesArtifact): string {
|
|
271
|
-
return serializeCanonical({
|
|
272
|
-
schemaVersion: artifact.schemaVersion,
|
|
273
|
-
tables: artifact.tables,
|
|
274
|
-
diagnostics: artifact.diagnostics,
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
export function serializeRlsPoliciesTs(artifact: RlsPoliciesArtifact): string {
|
|
279
|
-
const parsed: unknown = JSON.parse(serializeRlsPoliciesJson(artifact).trimEnd());
|
|
280
|
-
return `export const rlsPolicies = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
export function serializeDbSecurityManifestJson(manifest: DbSecurityManifest): string {
|
|
284
|
-
return serializeCanonical(manifest);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
export function serializeDbSecurityManifestTs(manifest: DbSecurityManifest): string {
|
|
288
|
-
const parsed: unknown = JSON.parse(
|
|
289
|
-
serializeDbSecurityManifestJson(manifest).trimEnd(),
|
|
290
|
-
);
|
|
291
|
-
return `export const dbSecurityManifest = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
export function serializeDbSessionContextJson(context: DbSessionContextArtifact): string {
|
|
295
|
-
return serializeCanonical(context);
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
export function serializeDbSessionContextTs(context: DbSessionContextArtifact): string {
|
|
299
|
-
const parsed: unknown = JSON.parse(serializeDbSessionContextJson(context).trimEnd());
|
|
300
|
-
return `export const dbSessionContext = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
export function serializePackageUpgradeRegistryJson(
|
|
304
|
-
registry: PackageUpgradeRegistry,
|
|
305
|
-
): string {
|
|
306
|
-
return serializeCanonical(registry);
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
export function serializePackageUpgradeRegistryTs(registry: PackageUpgradeRegistry): string {
|
|
310
|
-
const parsed: unknown = JSON.parse(
|
|
311
|
-
serializePackageUpgradeRegistryJson(registry).trimEnd(),
|
|
312
|
-
);
|
|
313
|
-
return `export const packageUpgradeRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
function tsConst(name: string, value: unknown): string {
|
|
317
|
-
return `export const ${name} = ${JSON.stringify(value, null, 2)} as const;\n`;
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
export function serializeReleaseManifestJson(manifest: ReleaseManifest): string {
|
|
321
|
-
return serializeCanonical(manifest);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
export function serializeReleaseManifestTs(manifest: ReleaseManifest): string {
|
|
325
|
-
return tsConst("releaseManifest", JSON.parse(serializeReleaseManifestJson(manifest)));
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
export function serializeDeployManifestJson(manifest: DeployManifest): string {
|
|
329
|
-
return serializeCanonical(manifest);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
export function serializeDeployManifestTs(manifest: DeployManifest): string {
|
|
333
|
-
return tsConst("deployManifest", JSON.parse(serializeDeployManifestJson(manifest)));
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
export function serializeArtifactManifestJson(manifest: ArtifactManifest): string {
|
|
337
|
-
return serializeCanonical(manifest);
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
export function serializeArtifactManifestTs(manifest: ArtifactManifest): string {
|
|
341
|
-
return tsConst("artifactManifest", JSON.parse(serializeArtifactManifestJson(manifest)));
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
export function serializeSourceMapManifestJson(manifest: SourceMapManifest): string {
|
|
345
|
-
return serializeCanonical(manifest);
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
export function serializeSourceMapManifestTs(manifest: SourceMapManifest): string {
|
|
349
|
-
return tsConst("sourceMapManifest", JSON.parse(serializeSourceMapManifestJson(manifest)));
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
export function serializeSymbolicationManifestJson(manifest: SymbolicationManifest): string {
|
|
353
|
-
return serializeCanonical(manifest);
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
export function serializeSymbolicationManifestTs(manifest: SymbolicationManifest): string {
|
|
357
|
-
return tsConst(
|
|
358
|
-
"symbolicationManifest",
|
|
359
|
-
JSON.parse(serializeSymbolicationManifestJson(manifest)),
|
|
360
|
-
);
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
export function serializeBuildInfoJson(info: BuildInfo): string {
|
|
364
|
-
return serializeCanonical(info);
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
export function serializeBuildInfoTs(info: BuildInfo): string {
|
|
368
|
-
return tsConst("buildInfo", JSON.parse(serializeBuildInfoJson(info)));
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
export function serializeLiveProductionManifestJson(
|
|
372
|
-
manifest: LiveProductionManifest,
|
|
373
|
-
): string {
|
|
374
|
-
return serializeCanonical(manifest);
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
export function serializeLiveProductionManifestTs(
|
|
378
|
-
manifest: LiveProductionManifest,
|
|
379
|
-
): string {
|
|
380
|
-
return tsConst(
|
|
381
|
-
"liveProductionManifest",
|
|
382
|
-
JSON.parse(serializeLiveProductionManifestJson(manifest)),
|
|
383
|
-
);
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
export function serializeLiveProtocolJson(manifest: LiveProtocolManifest): string {
|
|
387
|
-
return serializeCanonical(manifest);
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
export function serializeLiveProtocolTs(manifest: LiveProtocolManifest): string {
|
|
391
|
-
return tsConst("liveProtocol", JSON.parse(serializeLiveProtocolJson(manifest)));
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
export function serializeLiveTransportConfigJson(
|
|
395
|
-
config: LiveTransportConfig,
|
|
396
|
-
): string {
|
|
397
|
-
return serializeCanonical(config);
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
export function serializeLiveTransportConfigTs(config: LiveTransportConfig): string {
|
|
401
|
-
return tsConst(
|
|
402
|
-
"liveTransportConfig",
|
|
403
|
-
JSON.parse(serializeLiveTransportConfigJson(config)),
|
|
404
|
-
);
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
export function serializeMakeRegistryJson(registry: MakeRegistryArtifact): string {
|
|
408
|
-
return serializeMakeRegistryJsonArtifact(registry);
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
export function serializeMakeRegistryTs(registry: MakeRegistryArtifact): string {
|
|
412
|
-
return serializeMakeRegistryTsArtifact(registry);
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
export function serializeMakeTemplatesJson(templates: MakeTemplateArtifact): string {
|
|
416
|
-
return serializeMakeTemplatesJsonArtifact(templates);
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
export function serializeMakeTemplatesTs(templates: MakeTemplateArtifact): string {
|
|
420
|
-
return serializeMakeTemplatesTsArtifact(templates);
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
export function serializeActionSubscriptionsJson(
|
|
424
|
-
subscriptions: ActionSubscriptions,
|
|
425
|
-
): string {
|
|
426
|
-
const payload = {
|
|
427
|
-
schemaVersion: subscriptions.schemaVersion,
|
|
428
|
-
generatorVersion: subscriptions.generatorVersion,
|
|
429
|
-
analyzerVersion: subscriptions.analyzerVersion,
|
|
430
|
-
inputHash: subscriptions.inputHash,
|
|
431
|
-
subscriptions: subscriptions.subscriptions,
|
|
432
|
-
byEvent: subscriptions.byEvent,
|
|
433
|
-
diagnostics: subscriptions.diagnostics,
|
|
434
|
-
};
|
|
435
|
-
return serializeCanonical(payload);
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
export function serializeActionSubscriptionsTs(
|
|
439
|
-
subscriptions: ActionSubscriptions,
|
|
440
|
-
): string {
|
|
441
|
-
const parsed: unknown = JSON.parse(
|
|
442
|
-
serializeActionSubscriptionsJson(subscriptions).trimEnd(),
|
|
443
|
-
);
|
|
444
|
-
return `export const actionSubscriptions = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
export function serializeWorkflowRegistryJson(registry: WorkflowRegistry): string {
|
|
448
|
-
const payload = {
|
|
449
|
-
schemaVersion: registry.schemaVersion,
|
|
450
|
-
generatorVersion: registry.generatorVersion,
|
|
451
|
-
analyzerVersion: registry.analyzerVersion,
|
|
452
|
-
inputHash: registry.inputHash,
|
|
453
|
-
workflows: registry.workflows,
|
|
454
|
-
diagnostics: registry.diagnostics,
|
|
455
|
-
};
|
|
456
|
-
return serializeCanonical(payload);
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
export function serializeWorkflowRegistryTs(registry: WorkflowRegistry): string {
|
|
460
|
-
const parsed: unknown = JSON.parse(
|
|
461
|
-
serializeWorkflowRegistryJson(registry).trimEnd(),
|
|
462
|
-
);
|
|
463
|
-
return `export const workflowRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
export function serializeWorkflowSubscriptionsJson(
|
|
467
|
-
subscriptions: WorkflowSubscriptions,
|
|
468
|
-
): string {
|
|
469
|
-
const payload = {
|
|
470
|
-
schemaVersion: subscriptions.schemaVersion,
|
|
471
|
-
generatorVersion: subscriptions.generatorVersion,
|
|
472
|
-
analyzerVersion: subscriptions.analyzerVersion,
|
|
473
|
-
inputHash: subscriptions.inputHash,
|
|
474
|
-
subscriptions: subscriptions.subscriptions,
|
|
475
|
-
byEvent: subscriptions.byEvent,
|
|
476
|
-
diagnostics: subscriptions.diagnostics,
|
|
477
|
-
};
|
|
478
|
-
return serializeCanonical(payload);
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
export function serializeWorkflowSubscriptionsTs(
|
|
482
|
-
subscriptions: WorkflowSubscriptions,
|
|
483
|
-
): string {
|
|
484
|
-
const parsed: unknown = JSON.parse(
|
|
485
|
-
serializeWorkflowSubscriptionsJson(subscriptions).trimEnd(),
|
|
486
|
-
);
|
|
487
|
-
return `export const workflowSubscriptions = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
export function serializeTelemetryRegistryJson(registry: TelemetryRegistry): string {
|
|
491
|
-
const payload = {
|
|
492
|
-
schemaVersion: registry.schemaVersion,
|
|
493
|
-
generatorVersion: registry.generatorVersion,
|
|
494
|
-
analyzerVersion: registry.analyzerVersion,
|
|
495
|
-
inputHash: registry.inputHash,
|
|
496
|
-
events: registry.events,
|
|
497
|
-
diagnostics: registry.diagnostics,
|
|
498
|
-
};
|
|
499
|
-
return serializeCanonical(payload);
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
export function serializeTelemetryRegistryTs(registry: TelemetryRegistry): string {
|
|
503
|
-
const parsed: unknown = JSON.parse(
|
|
504
|
-
serializeTelemetryRegistryJson(registry).trimEnd(),
|
|
505
|
-
);
|
|
506
|
-
return `export const telemetryRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
export function serializeTelemetrySinksJson(sinks: TelemetrySinks): string {
|
|
510
|
-
return serializeCanonical(sinks);
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
export function serializeTelemetrySinksTs(sinks: TelemetrySinks): string {
|
|
514
|
-
const parsed: unknown = JSON.parse(serializeTelemetrySinksJson(sinks).trimEnd());
|
|
515
|
-
return `export const telemetrySinks = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
export function serializePolicyRegistryJson(registry: PolicyRegistry): string {
|
|
519
|
-
const payload = {
|
|
520
|
-
schemaVersion: registry.schemaVersion,
|
|
521
|
-
generatorVersion: registry.generatorVersion,
|
|
522
|
-
analyzerVersion: registry.analyzerVersion,
|
|
523
|
-
inputHash: registry.inputHash,
|
|
524
|
-
policies: registry.policies,
|
|
525
|
-
commandAuth: registry.commandAuth,
|
|
526
|
-
queryAuth: registry.queryAuth,
|
|
527
|
-
diagnostics: registry.diagnostics,
|
|
528
|
-
};
|
|
529
|
-
return serializeCanonical(payload);
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
export function serializePolicyRegistryTs(registry: PolicyRegistry): string {
|
|
533
|
-
const parsed: unknown = JSON.parse(serializePolicyRegistryJson(registry).trimEnd());
|
|
534
|
-
return `export const policyRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
export function serializePermissionMatrixJson(matrix: PermissionMatrix): string {
|
|
538
|
-
const payload = {
|
|
539
|
-
schemaVersion: matrix.schemaVersion,
|
|
540
|
-
generatorVersion: matrix.generatorVersion,
|
|
541
|
-
inputHash: matrix.inputHash,
|
|
542
|
-
entries: matrix.entries,
|
|
543
|
-
};
|
|
544
|
-
return serializeCanonical(payload);
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
export function serializePermissionMatrixTs(matrix: PermissionMatrix): string {
|
|
548
|
-
const parsed: unknown = JSON.parse(serializePermissionMatrixJson(matrix).trimEnd());
|
|
549
|
-
return `export const permissionMatrix = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
export function serializeTenantScopeJson(scope: TenantScope): string {
|
|
553
|
-
const payload = {
|
|
554
|
-
schemaVersion: scope.schemaVersion,
|
|
555
|
-
generatorVersion: scope.generatorVersion,
|
|
556
|
-
inputHash: scope.inputHash,
|
|
557
|
-
tables: scope.tables,
|
|
558
|
-
diagnostics: scope.diagnostics,
|
|
559
|
-
};
|
|
560
|
-
return serializeCanonical(payload);
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
export function serializeTenantScopeTs(scope: TenantScope): string {
|
|
564
|
-
const parsed: unknown = JSON.parse(serializeTenantScopeJson(scope).trimEnd());
|
|
565
|
-
return `export const tenantScope = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
export function serializeAuthRegistryJson(registry: AuthRegistryArtifact): string {
|
|
569
|
-
return serializeCanonical(registry);
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
export function serializeAuthRegistryTs(registry: AuthRegistryArtifact): string {
|
|
573
|
-
const parsed: unknown = JSON.parse(serializeAuthRegistryJson(registry).trimEnd());
|
|
574
|
-
return `export const authRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
export function serializeAuthConfigJson(registry: AuthRegistryArtifact): string {
|
|
578
|
-
return serializeCanonical({
|
|
579
|
-
schemaVersion: registry.schemaVersion,
|
|
580
|
-
modeEnv: "FORGE_AUTH_MODE",
|
|
581
|
-
defaultMode: registry.defaultMode,
|
|
582
|
-
modes: registry.modes,
|
|
583
|
-
issuerEnv: registry.issuerEnv,
|
|
584
|
-
audienceEnv: registry.audienceEnv,
|
|
585
|
-
jwksUriEnv: registry.jwksUriEnv,
|
|
586
|
-
algorithmsEnv: registry.algorithmsEnv,
|
|
587
|
-
requiresTenant: registry.requiresTenant,
|
|
588
|
-
});
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
export function serializeAuthConfigTs(registry: AuthRegistryArtifact): string {
|
|
592
|
-
const parsed: unknown = JSON.parse(serializeAuthConfigJson(registry).trimEnd());
|
|
593
|
-
return `export const authConfig = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
594
|
-
}
|
|
595
|
-
|
|
596
|
-
export function serializeAuthClaimsJson(registry: AuthRegistryArtifact): string {
|
|
597
|
-
return serializeCanonical({
|
|
598
|
-
schemaVersion: registry.schemaVersion,
|
|
599
|
-
claims: registry.claims,
|
|
600
|
-
});
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
export function serializeAuthClaimsTs(registry: AuthRegistryArtifact): string {
|
|
604
|
-
const parsed: unknown = JSON.parse(serializeAuthClaimsJson(registry).trimEnd());
|
|
605
|
-
return `export const authClaims = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
export function serializeAuthContextTs(): string {
|
|
609
|
-
return `export type AuthContext =
|
|
610
|
-
| {
|
|
611
|
-
kind: "user";
|
|
612
|
-
userId: string;
|
|
613
|
-
tenantId?: string;
|
|
614
|
-
role?: string;
|
|
615
|
-
roles?: string[];
|
|
616
|
-
permissions?: string[];
|
|
617
|
-
email?: string;
|
|
618
|
-
name?: string;
|
|
619
|
-
token?: {
|
|
620
|
-
issuer: string;
|
|
621
|
-
audience: string | string[];
|
|
622
|
-
subject: string;
|
|
623
|
-
expiresAt?: number;
|
|
624
|
-
issuedAt?: number;
|
|
625
|
-
authProvider: string;
|
|
626
|
-
};
|
|
627
|
-
claims?: Record<string, unknown>;
|
|
628
|
-
}
|
|
629
|
-
| { kind: "system"; tenantId?: string; triggeredBy?: AuthContext }
|
|
630
|
-
| { kind: "anonymous" };
|
|
631
|
-
`;
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
export function serializeSecretsContextTs(): string {
|
|
635
|
-
return `export interface SecretsContext {
|
|
636
|
-
get(name: string): string;
|
|
637
|
-
optional(name: string): string | undefined;
|
|
638
|
-
has(name: string): boolean;
|
|
639
|
-
}
|
|
640
|
-
|
|
641
|
-
export interface ConfigContext {
|
|
642
|
-
get(name: string): string;
|
|
643
|
-
optional(name: string): string | undefined;
|
|
644
|
-
}
|
|
645
|
-
`;
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
export function serializeSecretRegistryJson(registry: import("../types/secret-registry.ts").SecretRegistry): string {
|
|
649
|
-
return serializeCanonical({ secrets: registry.secrets });
|
|
650
|
-
}
|
|
651
|
-
|
|
652
|
-
export function serializeSecretRegistryTs(registry: import("../types/secret-registry.ts").SecretRegistry): string {
|
|
653
|
-
const parsed: unknown = JSON.parse(serializeSecretRegistryJson(registry).trimEnd());
|
|
654
|
-
return `export const secretRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
export function serializeEnvSchemaJson(schema: import("../types/secret-registry.ts").EnvSchema): string {
|
|
658
|
-
return serializeCanonical({ variables: schema.variables });
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
export function serializeEnvSchemaTs(schema: import("../types/secret-registry.ts").EnvSchema): string {
|
|
662
|
-
const parsed: unknown = JSON.parse(serializeEnvSchemaJson(schema).trimEnd());
|
|
663
|
-
return `export const envSchema = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
export function serializeConfigRegistryJson(registry: import("../types/secret-registry.ts").ConfigRegistry): string {
|
|
667
|
-
return serializeCanonical({ configs: registry.configs });
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
export function serializeConfigRegistryTs(registry: import("../types/secret-registry.ts").ConfigRegistry): string {
|
|
671
|
-
const parsed: unknown = JSON.parse(serializeConfigRegistryJson(registry).trimEnd());
|
|
672
|
-
return `export const configRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
export function serializeAiRegistryJson(registry: import("../types/ai-registry.ts").AiRegistry): string {
|
|
676
|
-
const payload = {
|
|
677
|
-
schemaVersion: registry.schemaVersion,
|
|
678
|
-
generatorVersion: registry.generatorVersion,
|
|
679
|
-
analyzerVersion: registry.analyzerVersion,
|
|
680
|
-
inputHash: registry.inputHash,
|
|
681
|
-
providers: registry.providers,
|
|
682
|
-
generations: registry.generations,
|
|
683
|
-
diagnostics: registry.diagnostics,
|
|
684
|
-
};
|
|
685
|
-
return serializeCanonical(payload);
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
export function serializeAiRegistryTs(registry: import("../types/ai-registry.ts").AiRegistry): string {
|
|
689
|
-
const parsed: unknown = JSON.parse(serializeAiRegistryJson(registry).trimEnd());
|
|
690
|
-
return `export const aiRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
export function serializeAiProvidersJson(registry: import("../types/ai-registry.ts").AiRegistry): string {
|
|
694
|
-
return serializeCanonical({ providers: registry.providers });
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
export function serializeAiProvidersTs(registry: import("../types/ai-registry.ts").AiRegistry): string {
|
|
698
|
-
const parsed: unknown = JSON.parse(serializeAiProvidersJson(registry).trimEnd());
|
|
699
|
-
return `export const aiProviders = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
export function serializeAiModelsJson(models: import("../types/ai-registry.ts").AiModelDefinition[]): string {
|
|
703
|
-
return serializeCanonical({ models });
|
|
704
|
-
}
|
|
705
|
-
|
|
706
|
-
export function serializeAiModelsTs(models: import("../types/ai-registry.ts").AiModelDefinition[]): string {
|
|
707
|
-
const parsed: unknown = JSON.parse(serializeAiModelsJson(models).trimEnd());
|
|
708
|
-
return `export const aiModels = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
709
|
-
}
|
|
710
|
-
|
|
711
|
-
export function serializeAiContextTs(): string {
|
|
712
|
-
return `export type ForgeAiProvider = "openai" | "anthropic" | "gateway";
|
|
713
|
-
|
|
714
|
-
export type ForgeFlexibleSchema<T> = unknown & {
|
|
715
|
-
readonly __forgeStructuredOutput?: T;
|
|
716
|
-
};
|
|
717
|
-
|
|
718
|
-
export interface ForgeAiUsage {
|
|
719
|
-
promptTokens: number;
|
|
720
|
-
completionTokens: number;
|
|
721
|
-
totalTokens: number;
|
|
722
|
-
}
|
|
723
|
-
|
|
724
|
-
export interface ForgeGenerateTextInput {
|
|
725
|
-
provider: ForgeAiProvider;
|
|
726
|
-
model: string;
|
|
727
|
-
prompt: string;
|
|
728
|
-
system?: string;
|
|
729
|
-
purpose?: string;
|
|
730
|
-
temperature?: number;
|
|
731
|
-
maxTokens?: number;
|
|
732
|
-
}
|
|
733
|
-
|
|
734
|
-
export interface ForgeGenerateTextResult {
|
|
735
|
-
text: string;
|
|
736
|
-
provider: ForgeAiProvider;
|
|
737
|
-
model: string;
|
|
738
|
-
purpose?: string;
|
|
739
|
-
usage: ForgeAiUsage;
|
|
740
|
-
latencyMs: number;
|
|
741
|
-
estimatedCostUsd?: number;
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
export interface ForgeStreamTextInput extends ForgeGenerateTextInput {}
|
|
745
|
-
|
|
746
|
-
export interface ForgeStreamTextResult {
|
|
747
|
-
textStream: AsyncIterable<string>;
|
|
748
|
-
text: Promise<string>;
|
|
749
|
-
provider: ForgeAiProvider;
|
|
750
|
-
model: string;
|
|
751
|
-
purpose?: string;
|
|
752
|
-
usage: Promise<ForgeAiUsage>;
|
|
753
|
-
latencyMs: number;
|
|
754
|
-
}
|
|
755
|
-
|
|
756
|
-
export interface ForgeGenerateStructuredInput<T> {
|
|
757
|
-
provider: ForgeAiProvider;
|
|
758
|
-
model: string;
|
|
759
|
-
prompt: string;
|
|
760
|
-
system?: string;
|
|
761
|
-
purpose?: string;
|
|
762
|
-
schema: ForgeFlexibleSchema<T>;
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
export interface AiContext {
|
|
766
|
-
generateText(input: ForgeGenerateTextInput): Promise<ForgeGenerateTextResult>;
|
|
767
|
-
streamText(input: ForgeStreamTextInput): Promise<ForgeStreamTextResult>;
|
|
768
|
-
generateStructured<T>(input: ForgeGenerateStructuredInput<T>): Promise<T>;
|
|
769
|
-
}
|
|
770
|
-
`;
|
|
771
|
-
}
|
|
772
|
-
|
|
773
|
-
export function serializeQueryRegistryJson(registry: QueryRegistry): string {
|
|
774
|
-
const payload = {
|
|
775
|
-
schemaVersion: registry.schemaVersion,
|
|
776
|
-
generatorVersion: registry.generatorVersion,
|
|
777
|
-
analyzerVersion: registry.analyzerVersion,
|
|
778
|
-
inputHash: registry.inputHash,
|
|
779
|
-
queries: registry.queries,
|
|
780
|
-
diagnostics: registry.diagnostics,
|
|
781
|
-
};
|
|
782
|
-
return serializeCanonical(payload);
|
|
783
|
-
}
|
|
784
|
-
|
|
785
|
-
export function serializeQueryRegistryTs(registry: QueryRegistry): string {
|
|
786
|
-
const parsed: unknown = JSON.parse(serializeQueryRegistryJson(registry).trimEnd());
|
|
787
|
-
return `export const queryRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
788
|
-
}
|
|
789
|
-
|
|
790
|
-
export function serializeLiveQueryRegistryJson(registry: LiveQueryRegistry): string {
|
|
791
|
-
const payload = {
|
|
792
|
-
schemaVersion: registry.schemaVersion,
|
|
793
|
-
generatorVersion: registry.generatorVersion,
|
|
794
|
-
analyzerVersion: registry.analyzerVersion,
|
|
795
|
-
inputHash: registry.inputHash,
|
|
796
|
-
liveQueries: registry.liveQueries,
|
|
797
|
-
diagnostics: registry.diagnostics,
|
|
798
|
-
};
|
|
799
|
-
return serializeCanonical(payload);
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
export function serializeLiveQueryRegistryTs(registry: LiveQueryRegistry): string {
|
|
803
|
-
const parsed: unknown = JSON.parse(
|
|
804
|
-
serializeLiveQueryRegistryJson(registry).trimEnd(),
|
|
805
|
-
);
|
|
806
|
-
return `export const liveQueryRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
807
|
-
}
|
|
808
|
-
|
|
809
|
-
export function serializeSubscriptionManifestJson(
|
|
810
|
-
manifest: SubscriptionManifest,
|
|
811
|
-
): string {
|
|
812
|
-
return serializeCanonical(manifest);
|
|
813
|
-
}
|
|
814
|
-
|
|
815
|
-
export function serializeSubscriptionManifestTs(
|
|
816
|
-
manifest: SubscriptionManifest,
|
|
817
|
-
): string {
|
|
818
|
-
const parsed: unknown = JSON.parse(
|
|
819
|
-
serializeSubscriptionManifestJson(manifest).trimEnd(),
|
|
820
|
-
);
|
|
821
|
-
return `export const subscriptionManifest = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
822
|
-
}
|
|
823
|
-
|
|
824
|
-
export function serializeApiJson(surface: ApiSurface): string {
|
|
825
|
-
return serializeCanonical({
|
|
826
|
-
schemaVersion: surface.schemaVersion,
|
|
827
|
-
generatorVersion: surface.generatorVersion,
|
|
828
|
-
inputHash: surface.inputHash,
|
|
829
|
-
queries: surface.queries,
|
|
830
|
-
commands: surface.commands,
|
|
831
|
-
liveQueries: surface.liveQueries,
|
|
832
|
-
actions: surface.actions,
|
|
833
|
-
workflows: surface.workflows,
|
|
834
|
-
});
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
export function serializeApiTsExport(surface: ApiSurface): string {
|
|
838
|
-
return serializeApiTs(surface);
|
|
839
|
-
}
|
|
840
|
-
|
|
841
|
-
export function serializeServerApiTsExport(surface: ApiSurface): string {
|
|
842
|
-
return serializeServerApiTs(surface);
|
|
843
|
-
}
|
|
844
|
-
|
|
845
|
-
export function serializeClientApiTsExport(surface: ApiSurface): string {
|
|
846
|
-
return serializeClientApiTs(surface);
|
|
847
|
-
}
|
|
848
|
-
|
|
849
|
-
export function serializeClientManifestJson(
|
|
850
|
-
manifest: import("../client-sdk/build-manifest.ts").ClientManifest,
|
|
851
|
-
): string {
|
|
852
|
-
return serializeCanonical(manifest);
|
|
853
|
-
}
|
|
854
|
-
|
|
855
|
-
export function serializeClientManifestTs(
|
|
856
|
-
manifest: import("../client-sdk/build-manifest.ts").ClientManifest,
|
|
857
|
-
): string {
|
|
858
|
-
const parsed: unknown = JSON.parse(serializeClientManifestJson(manifest).trimEnd());
|
|
859
|
-
return `export const clientManifest = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
860
|
-
}
|
|
861
|
-
|
|
862
|
-
export function serializeReactManifestJson(
|
|
863
|
-
manifest: import("../client-sdk/build-manifest.ts").ReactManifest,
|
|
864
|
-
): string {
|
|
865
|
-
return serializeCanonical(manifest);
|
|
866
|
-
}
|
|
867
|
-
|
|
868
|
-
export function serializeTestGraphJson(graph: TestGraph): string {
|
|
869
|
-
return serializeCanonical(graph);
|
|
870
|
-
}
|
|
871
|
-
|
|
872
|
-
export function serializeTestGraphTs(graph: TestGraph): string {
|
|
873
|
-
const parsed: unknown = JSON.parse(serializeTestGraphJson(graph).trimEnd());
|
|
874
|
-
return `export const testGraph = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
875
|
-
}
|
|
876
|
-
|
|
877
|
-
export function serializeTestPlanRegistryJson(registry: TestPlanRegistry): string {
|
|
878
|
-
return serializeCanonical(registry);
|
|
879
|
-
}
|
|
880
|
-
|
|
881
|
-
export function serializeTestPlanRegistryTs(registry: TestPlanRegistry): string {
|
|
882
|
-
const parsed: unknown = JSON.parse(serializeTestPlanRegistryJson(registry).trimEnd());
|
|
883
|
-
return `export const testPlanRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
884
|
-
}
|
|
885
|
-
|
|
886
|
-
export type { ImportGuardsArtifact };
|
|
101
|
+
|
|
102
|
+
export function serializeAppGraphTs(graph: AppGraph): string {
|
|
103
|
+
const parsed: unknown = JSON.parse(serializeAppGraphJson(graph).trimEnd());
|
|
104
|
+
return `export const appGraph = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function serializePackageGraphJson(graph: PackageGraph): string {
|
|
108
|
+
return serializeCanonical(graph);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function serializePackageGraphTs(graph: PackageGraph): string {
|
|
112
|
+
const parsed: unknown = JSON.parse(serializePackageGraphJson(graph).trimEnd());
|
|
113
|
+
return `export const packageGraph = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function serializeRuntimeMatrixJson(matrix: RuntimeMatrix): string {
|
|
117
|
+
return serializeCanonical(matrix);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function serializeRuntimeMatrixTs(matrix: RuntimeMatrix): string {
|
|
121
|
+
const parsed: unknown = JSON.parse(serializeRuntimeMatrixJson(matrix).trimEnd());
|
|
122
|
+
return `export const runtimeMatrix = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function serializeImportGuardsJson(
|
|
126
|
+
matrix: RuntimeMatrix,
|
|
127
|
+
moduleGraph?: AppGraph["moduleGraph"],
|
|
128
|
+
): string {
|
|
129
|
+
return serializeCanonical(buildImportGuardsArtifact(matrix, moduleGraph));
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export function serializeImportGuardsTs(
|
|
133
|
+
matrix: RuntimeMatrix,
|
|
134
|
+
moduleGraph?: AppGraph["moduleGraph"],
|
|
135
|
+
): string {
|
|
136
|
+
const artifact = buildImportGuardsArtifact(matrix, moduleGraph);
|
|
137
|
+
return `export const importGuards = ${JSON.stringify(artifact, null, 2)} as const;\n`;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export function serializeDataGraphJson(graph: DataGraph): string {
|
|
141
|
+
const payload = {
|
|
142
|
+
schemaVersion: graph.schemaVersion,
|
|
143
|
+
generatorVersion: graph.generatorVersion,
|
|
144
|
+
analyzerVersion: graph.analyzerVersion,
|
|
145
|
+
inputHash: graph.inputHash,
|
|
146
|
+
tables: graph.tables,
|
|
147
|
+
};
|
|
148
|
+
return serializeCanonical(payload);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export function serializeDataGraphTs(graph: DataGraph): string {
|
|
152
|
+
const parsed: unknown = JSON.parse(serializeDataGraphJson(graph).trimEnd());
|
|
153
|
+
return `export const dataGraph = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export function serializeRuntimeGraphJson(graph: RuntimeGraph): string {
|
|
157
|
+
const payload = {
|
|
158
|
+
schemaVersion: graph.schemaVersion,
|
|
159
|
+
generatorVersion: graph.generatorVersion,
|
|
160
|
+
analyzerVersion: graph.analyzerVersion,
|
|
161
|
+
inputHash: graph.inputHash,
|
|
162
|
+
entries: graph.entries,
|
|
163
|
+
};
|
|
164
|
+
return serializeCanonical(payload);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export function serializeRuntimeGraphTs(graph: RuntimeGraph): string {
|
|
168
|
+
const parsed: unknown = JSON.parse(serializeRuntimeGraphJson(graph).trimEnd());
|
|
169
|
+
return `export const runtimeGraph = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export function serializeRuntimeRegistryTs(graph: RuntimeGraph): string {
|
|
173
|
+
const registry: Record<
|
|
174
|
+
string,
|
|
175
|
+
{ kind: "command" | "action"; file: string; moduleId: string }
|
|
176
|
+
> = {};
|
|
177
|
+
|
|
178
|
+
for (const entry of graph.entries) {
|
|
179
|
+
registry[entry.name] = {
|
|
180
|
+
kind: entry.kind,
|
|
181
|
+
file: entry.file,
|
|
182
|
+
moduleId: entry.moduleId,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return `export const runtimeRegistry = ${JSON.stringify(registry, null, 2)} as const;\n`;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export function buildMockMapEntries(classified: ClassifiedPackage[]): MockMapEntry[] {
|
|
190
|
+
const entries: MockMapEntry[] = [];
|
|
191
|
+
const seen = new Set<string>();
|
|
192
|
+
|
|
193
|
+
for (const pkg of classified) {
|
|
194
|
+
const recipe = pkg.recipe ?? resolveByPackageName(pkg.api.name);
|
|
195
|
+
if (!recipe || recipe.testkits.length === 0) {
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const packageName = recipe.packages[0]?.packageName ?? recipe.alias;
|
|
200
|
+
if (seen.has(packageName)) {
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
seen.add(packageName);
|
|
204
|
+
|
|
205
|
+
const testkit = [...recipe.testkits].sort()[0];
|
|
206
|
+
if (!testkit) {
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
entries.push({
|
|
211
|
+
packageName,
|
|
212
|
+
mockFile: `${GENERATED_DIR}/testkits/${testkit}`,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return entries.sort((a, b) => a.packageName.localeCompare(b.packageName));
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export function serializeMockMapJson(entries: MockMapEntry[]): string {
|
|
220
|
+
return serializeCanonical({ entries });
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export function serializeMockMapTs(entries: MockMapEntry[]): string {
|
|
224
|
+
const map: Record<string, string> = {};
|
|
225
|
+
for (const entry of entries) {
|
|
226
|
+
map[entry.packageName] = entry.mockFile;
|
|
227
|
+
}
|
|
228
|
+
return `export const mockMap = ${JSON.stringify(map, null, 2)} as const;\n`;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
export function serializeDevManifestJson(manifest: DevManifest): string {
|
|
232
|
+
const payload = {
|
|
233
|
+
schemaVersion: manifest.schemaVersion,
|
|
234
|
+
generatorVersion: manifest.generatorVersion,
|
|
235
|
+
analyzerVersion: manifest.analyzerVersion,
|
|
236
|
+
inputHash: manifest.inputHash,
|
|
237
|
+
routes: manifest.routes,
|
|
238
|
+
entries: manifest.entries,
|
|
239
|
+
workflows: manifest.workflows,
|
|
240
|
+
diagnostics: manifest.diagnostics,
|
|
241
|
+
};
|
|
242
|
+
return serializeCanonical(payload);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export function serializeDevManifestTs(manifest: DevManifest): string {
|
|
246
|
+
const parsed: unknown = JSON.parse(serializeDevManifestJson(manifest).trimEnd());
|
|
247
|
+
return `export const devManifest = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export function serializeSqlPlanJsonExport(plan: SqlPlan): string {
|
|
251
|
+
return serializeSqlPlanJson(plan);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export function serializeSqlPlanTsExport(plan: SqlPlan): string {
|
|
255
|
+
return serializeSqlPlanTs(plan);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export function serializeDbJsonExport(plan: SqlPlan, tenantScope?: TenantScope): string {
|
|
259
|
+
return serializeDbJson(plan, tenantScope);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export function serializeDbTsExport(plan: SqlPlan, tenantScope?: TenantScope): string {
|
|
263
|
+
return serializeDbTs(plan, tenantScope);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export function serializeRlsPoliciesSql(artifact: RlsPoliciesArtifact): string {
|
|
267
|
+
return artifact.sql;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export function serializeRlsPoliciesJson(artifact: RlsPoliciesArtifact): string {
|
|
271
|
+
return serializeCanonical({
|
|
272
|
+
schemaVersion: artifact.schemaVersion,
|
|
273
|
+
tables: artifact.tables,
|
|
274
|
+
diagnostics: artifact.diagnostics,
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
export function serializeRlsPoliciesTs(artifact: RlsPoliciesArtifact): string {
|
|
279
|
+
const parsed: unknown = JSON.parse(serializeRlsPoliciesJson(artifact).trimEnd());
|
|
280
|
+
return `export const rlsPolicies = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
export function serializeDbSecurityManifestJson(manifest: DbSecurityManifest): string {
|
|
284
|
+
return serializeCanonical(manifest);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
export function serializeDbSecurityManifestTs(manifest: DbSecurityManifest): string {
|
|
288
|
+
const parsed: unknown = JSON.parse(
|
|
289
|
+
serializeDbSecurityManifestJson(manifest).trimEnd(),
|
|
290
|
+
);
|
|
291
|
+
return `export const dbSecurityManifest = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export function serializeDbSessionContextJson(context: DbSessionContextArtifact): string {
|
|
295
|
+
return serializeCanonical(context);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
export function serializeDbSessionContextTs(context: DbSessionContextArtifact): string {
|
|
299
|
+
const parsed: unknown = JSON.parse(serializeDbSessionContextJson(context).trimEnd());
|
|
300
|
+
return `export const dbSessionContext = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
export function serializePackageUpgradeRegistryJson(
|
|
304
|
+
registry: PackageUpgradeRegistry,
|
|
305
|
+
): string {
|
|
306
|
+
return serializeCanonical(registry);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
export function serializePackageUpgradeRegistryTs(registry: PackageUpgradeRegistry): string {
|
|
310
|
+
const parsed: unknown = JSON.parse(
|
|
311
|
+
serializePackageUpgradeRegistryJson(registry).trimEnd(),
|
|
312
|
+
);
|
|
313
|
+
return `export const packageUpgradeRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
function tsConst(name: string, value: unknown): string {
|
|
317
|
+
return `export const ${name} = ${JSON.stringify(value, null, 2)} as const;\n`;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
export function serializeReleaseManifestJson(manifest: ReleaseManifest): string {
|
|
321
|
+
return serializeCanonical(manifest);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export function serializeReleaseManifestTs(manifest: ReleaseManifest): string {
|
|
325
|
+
return tsConst("releaseManifest", JSON.parse(serializeReleaseManifestJson(manifest)));
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export function serializeDeployManifestJson(manifest: DeployManifest): string {
|
|
329
|
+
return serializeCanonical(manifest);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export function serializeDeployManifestTs(manifest: DeployManifest): string {
|
|
333
|
+
return tsConst("deployManifest", JSON.parse(serializeDeployManifestJson(manifest)));
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export function serializeArtifactManifestJson(manifest: ArtifactManifest): string {
|
|
337
|
+
return serializeCanonical(manifest);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
export function serializeArtifactManifestTs(manifest: ArtifactManifest): string {
|
|
341
|
+
return tsConst("artifactManifest", JSON.parse(serializeArtifactManifestJson(manifest)));
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
export function serializeSourceMapManifestJson(manifest: SourceMapManifest): string {
|
|
345
|
+
return serializeCanonical(manifest);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
export function serializeSourceMapManifestTs(manifest: SourceMapManifest): string {
|
|
349
|
+
return tsConst("sourceMapManifest", JSON.parse(serializeSourceMapManifestJson(manifest)));
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
export function serializeSymbolicationManifestJson(manifest: SymbolicationManifest): string {
|
|
353
|
+
return serializeCanonical(manifest);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
export function serializeSymbolicationManifestTs(manifest: SymbolicationManifest): string {
|
|
357
|
+
return tsConst(
|
|
358
|
+
"symbolicationManifest",
|
|
359
|
+
JSON.parse(serializeSymbolicationManifestJson(manifest)),
|
|
360
|
+
);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
export function serializeBuildInfoJson(info: BuildInfo): string {
|
|
364
|
+
return serializeCanonical(info);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
export function serializeBuildInfoTs(info: BuildInfo): string {
|
|
368
|
+
return tsConst("buildInfo", JSON.parse(serializeBuildInfoJson(info)));
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
export function serializeLiveProductionManifestJson(
|
|
372
|
+
manifest: LiveProductionManifest,
|
|
373
|
+
): string {
|
|
374
|
+
return serializeCanonical(manifest);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
export function serializeLiveProductionManifestTs(
|
|
378
|
+
manifest: LiveProductionManifest,
|
|
379
|
+
): string {
|
|
380
|
+
return tsConst(
|
|
381
|
+
"liveProductionManifest",
|
|
382
|
+
JSON.parse(serializeLiveProductionManifestJson(manifest)),
|
|
383
|
+
);
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
export function serializeLiveProtocolJson(manifest: LiveProtocolManifest): string {
|
|
387
|
+
return serializeCanonical(manifest);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
export function serializeLiveProtocolTs(manifest: LiveProtocolManifest): string {
|
|
391
|
+
return tsConst("liveProtocol", JSON.parse(serializeLiveProtocolJson(manifest)));
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
export function serializeLiveTransportConfigJson(
|
|
395
|
+
config: LiveTransportConfig,
|
|
396
|
+
): string {
|
|
397
|
+
return serializeCanonical(config);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
export function serializeLiveTransportConfigTs(config: LiveTransportConfig): string {
|
|
401
|
+
return tsConst(
|
|
402
|
+
"liveTransportConfig",
|
|
403
|
+
JSON.parse(serializeLiveTransportConfigJson(config)),
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
export function serializeMakeRegistryJson(registry: MakeRegistryArtifact): string {
|
|
408
|
+
return serializeMakeRegistryJsonArtifact(registry);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
export function serializeMakeRegistryTs(registry: MakeRegistryArtifact): string {
|
|
412
|
+
return serializeMakeRegistryTsArtifact(registry);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
export function serializeMakeTemplatesJson(templates: MakeTemplateArtifact): string {
|
|
416
|
+
return serializeMakeTemplatesJsonArtifact(templates);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
export function serializeMakeTemplatesTs(templates: MakeTemplateArtifact): string {
|
|
420
|
+
return serializeMakeTemplatesTsArtifact(templates);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
export function serializeActionSubscriptionsJson(
|
|
424
|
+
subscriptions: ActionSubscriptions,
|
|
425
|
+
): string {
|
|
426
|
+
const payload = {
|
|
427
|
+
schemaVersion: subscriptions.schemaVersion,
|
|
428
|
+
generatorVersion: subscriptions.generatorVersion,
|
|
429
|
+
analyzerVersion: subscriptions.analyzerVersion,
|
|
430
|
+
inputHash: subscriptions.inputHash,
|
|
431
|
+
subscriptions: subscriptions.subscriptions,
|
|
432
|
+
byEvent: subscriptions.byEvent,
|
|
433
|
+
diagnostics: subscriptions.diagnostics,
|
|
434
|
+
};
|
|
435
|
+
return serializeCanonical(payload);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
export function serializeActionSubscriptionsTs(
|
|
439
|
+
subscriptions: ActionSubscriptions,
|
|
440
|
+
): string {
|
|
441
|
+
const parsed: unknown = JSON.parse(
|
|
442
|
+
serializeActionSubscriptionsJson(subscriptions).trimEnd(),
|
|
443
|
+
);
|
|
444
|
+
return `export const actionSubscriptions = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
export function serializeWorkflowRegistryJson(registry: WorkflowRegistry): string {
|
|
448
|
+
const payload = {
|
|
449
|
+
schemaVersion: registry.schemaVersion,
|
|
450
|
+
generatorVersion: registry.generatorVersion,
|
|
451
|
+
analyzerVersion: registry.analyzerVersion,
|
|
452
|
+
inputHash: registry.inputHash,
|
|
453
|
+
workflows: registry.workflows,
|
|
454
|
+
diagnostics: registry.diagnostics,
|
|
455
|
+
};
|
|
456
|
+
return serializeCanonical(payload);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
export function serializeWorkflowRegistryTs(registry: WorkflowRegistry): string {
|
|
460
|
+
const parsed: unknown = JSON.parse(
|
|
461
|
+
serializeWorkflowRegistryJson(registry).trimEnd(),
|
|
462
|
+
);
|
|
463
|
+
return `export const workflowRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
export function serializeWorkflowSubscriptionsJson(
|
|
467
|
+
subscriptions: WorkflowSubscriptions,
|
|
468
|
+
): string {
|
|
469
|
+
const payload = {
|
|
470
|
+
schemaVersion: subscriptions.schemaVersion,
|
|
471
|
+
generatorVersion: subscriptions.generatorVersion,
|
|
472
|
+
analyzerVersion: subscriptions.analyzerVersion,
|
|
473
|
+
inputHash: subscriptions.inputHash,
|
|
474
|
+
subscriptions: subscriptions.subscriptions,
|
|
475
|
+
byEvent: subscriptions.byEvent,
|
|
476
|
+
diagnostics: subscriptions.diagnostics,
|
|
477
|
+
};
|
|
478
|
+
return serializeCanonical(payload);
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
export function serializeWorkflowSubscriptionsTs(
|
|
482
|
+
subscriptions: WorkflowSubscriptions,
|
|
483
|
+
): string {
|
|
484
|
+
const parsed: unknown = JSON.parse(
|
|
485
|
+
serializeWorkflowSubscriptionsJson(subscriptions).trimEnd(),
|
|
486
|
+
);
|
|
487
|
+
return `export const workflowSubscriptions = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
export function serializeTelemetryRegistryJson(registry: TelemetryRegistry): string {
|
|
491
|
+
const payload = {
|
|
492
|
+
schemaVersion: registry.schemaVersion,
|
|
493
|
+
generatorVersion: registry.generatorVersion,
|
|
494
|
+
analyzerVersion: registry.analyzerVersion,
|
|
495
|
+
inputHash: registry.inputHash,
|
|
496
|
+
events: registry.events,
|
|
497
|
+
diagnostics: registry.diagnostics,
|
|
498
|
+
};
|
|
499
|
+
return serializeCanonical(payload);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
export function serializeTelemetryRegistryTs(registry: TelemetryRegistry): string {
|
|
503
|
+
const parsed: unknown = JSON.parse(
|
|
504
|
+
serializeTelemetryRegistryJson(registry).trimEnd(),
|
|
505
|
+
);
|
|
506
|
+
return `export const telemetryRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
export function serializeTelemetrySinksJson(sinks: TelemetrySinks): string {
|
|
510
|
+
return serializeCanonical(sinks);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
export function serializeTelemetrySinksTs(sinks: TelemetrySinks): string {
|
|
514
|
+
const parsed: unknown = JSON.parse(serializeTelemetrySinksJson(sinks).trimEnd());
|
|
515
|
+
return `export const telemetrySinks = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
export function serializePolicyRegistryJson(registry: PolicyRegistry): string {
|
|
519
|
+
const payload = {
|
|
520
|
+
schemaVersion: registry.schemaVersion,
|
|
521
|
+
generatorVersion: registry.generatorVersion,
|
|
522
|
+
analyzerVersion: registry.analyzerVersion,
|
|
523
|
+
inputHash: registry.inputHash,
|
|
524
|
+
policies: registry.policies,
|
|
525
|
+
commandAuth: registry.commandAuth,
|
|
526
|
+
queryAuth: registry.queryAuth,
|
|
527
|
+
diagnostics: registry.diagnostics,
|
|
528
|
+
};
|
|
529
|
+
return serializeCanonical(payload);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
export function serializePolicyRegistryTs(registry: PolicyRegistry): string {
|
|
533
|
+
const parsed: unknown = JSON.parse(serializePolicyRegistryJson(registry).trimEnd());
|
|
534
|
+
return `export const policyRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
export function serializePermissionMatrixJson(matrix: PermissionMatrix): string {
|
|
538
|
+
const payload = {
|
|
539
|
+
schemaVersion: matrix.schemaVersion,
|
|
540
|
+
generatorVersion: matrix.generatorVersion,
|
|
541
|
+
inputHash: matrix.inputHash,
|
|
542
|
+
entries: matrix.entries,
|
|
543
|
+
};
|
|
544
|
+
return serializeCanonical(payload);
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
export function serializePermissionMatrixTs(matrix: PermissionMatrix): string {
|
|
548
|
+
const parsed: unknown = JSON.parse(serializePermissionMatrixJson(matrix).trimEnd());
|
|
549
|
+
return `export const permissionMatrix = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
export function serializeTenantScopeJson(scope: TenantScope): string {
|
|
553
|
+
const payload = {
|
|
554
|
+
schemaVersion: scope.schemaVersion,
|
|
555
|
+
generatorVersion: scope.generatorVersion,
|
|
556
|
+
inputHash: scope.inputHash,
|
|
557
|
+
tables: scope.tables,
|
|
558
|
+
diagnostics: scope.diagnostics,
|
|
559
|
+
};
|
|
560
|
+
return serializeCanonical(payload);
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
export function serializeTenantScopeTs(scope: TenantScope): string {
|
|
564
|
+
const parsed: unknown = JSON.parse(serializeTenantScopeJson(scope).trimEnd());
|
|
565
|
+
return `export const tenantScope = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
export function serializeAuthRegistryJson(registry: AuthRegistryArtifact): string {
|
|
569
|
+
return serializeCanonical(registry);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
export function serializeAuthRegistryTs(registry: AuthRegistryArtifact): string {
|
|
573
|
+
const parsed: unknown = JSON.parse(serializeAuthRegistryJson(registry).trimEnd());
|
|
574
|
+
return `export const authRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
export function serializeAuthConfigJson(registry: AuthRegistryArtifact): string {
|
|
578
|
+
return serializeCanonical({
|
|
579
|
+
schemaVersion: registry.schemaVersion,
|
|
580
|
+
modeEnv: "FORGE_AUTH_MODE",
|
|
581
|
+
defaultMode: registry.defaultMode,
|
|
582
|
+
modes: registry.modes,
|
|
583
|
+
issuerEnv: registry.issuerEnv,
|
|
584
|
+
audienceEnv: registry.audienceEnv,
|
|
585
|
+
jwksUriEnv: registry.jwksUriEnv,
|
|
586
|
+
algorithmsEnv: registry.algorithmsEnv,
|
|
587
|
+
requiresTenant: registry.requiresTenant,
|
|
588
|
+
});
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
export function serializeAuthConfigTs(registry: AuthRegistryArtifact): string {
|
|
592
|
+
const parsed: unknown = JSON.parse(serializeAuthConfigJson(registry).trimEnd());
|
|
593
|
+
return `export const authConfig = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
export function serializeAuthClaimsJson(registry: AuthRegistryArtifact): string {
|
|
597
|
+
return serializeCanonical({
|
|
598
|
+
schemaVersion: registry.schemaVersion,
|
|
599
|
+
claims: registry.claims,
|
|
600
|
+
});
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
export function serializeAuthClaimsTs(registry: AuthRegistryArtifact): string {
|
|
604
|
+
const parsed: unknown = JSON.parse(serializeAuthClaimsJson(registry).trimEnd());
|
|
605
|
+
return `export const authClaims = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
export function serializeAuthContextTs(): string {
|
|
609
|
+
return `export type AuthContext =
|
|
610
|
+
| {
|
|
611
|
+
kind: "user";
|
|
612
|
+
userId: string;
|
|
613
|
+
tenantId?: string;
|
|
614
|
+
role?: string;
|
|
615
|
+
roles?: string[];
|
|
616
|
+
permissions?: string[];
|
|
617
|
+
email?: string;
|
|
618
|
+
name?: string;
|
|
619
|
+
token?: {
|
|
620
|
+
issuer: string;
|
|
621
|
+
audience: string | string[];
|
|
622
|
+
subject: string;
|
|
623
|
+
expiresAt?: number;
|
|
624
|
+
issuedAt?: number;
|
|
625
|
+
authProvider: string;
|
|
626
|
+
};
|
|
627
|
+
claims?: Record<string, unknown>;
|
|
628
|
+
}
|
|
629
|
+
| { kind: "system"; tenantId?: string; triggeredBy?: AuthContext }
|
|
630
|
+
| { kind: "anonymous" };
|
|
631
|
+
`;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
export function serializeSecretsContextTs(): string {
|
|
635
|
+
return `export interface SecretsContext {
|
|
636
|
+
get(name: string): string;
|
|
637
|
+
optional(name: string): string | undefined;
|
|
638
|
+
has(name: string): boolean;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
export interface ConfigContext {
|
|
642
|
+
get(name: string): string;
|
|
643
|
+
optional(name: string): string | undefined;
|
|
644
|
+
}
|
|
645
|
+
`;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
export function serializeSecretRegistryJson(registry: import("../types/secret-registry.ts").SecretRegistry): string {
|
|
649
|
+
return serializeCanonical({ secrets: registry.secrets });
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
export function serializeSecretRegistryTs(registry: import("../types/secret-registry.ts").SecretRegistry): string {
|
|
653
|
+
const parsed: unknown = JSON.parse(serializeSecretRegistryJson(registry).trimEnd());
|
|
654
|
+
return `export const secretRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
export function serializeEnvSchemaJson(schema: import("../types/secret-registry.ts").EnvSchema): string {
|
|
658
|
+
return serializeCanonical({ variables: schema.variables });
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
export function serializeEnvSchemaTs(schema: import("../types/secret-registry.ts").EnvSchema): string {
|
|
662
|
+
const parsed: unknown = JSON.parse(serializeEnvSchemaJson(schema).trimEnd());
|
|
663
|
+
return `export const envSchema = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
export function serializeConfigRegistryJson(registry: import("../types/secret-registry.ts").ConfigRegistry): string {
|
|
667
|
+
return serializeCanonical({ configs: registry.configs });
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
export function serializeConfigRegistryTs(registry: import("../types/secret-registry.ts").ConfigRegistry): string {
|
|
671
|
+
const parsed: unknown = JSON.parse(serializeConfigRegistryJson(registry).trimEnd());
|
|
672
|
+
return `export const configRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
export function serializeAiRegistryJson(registry: import("../types/ai-registry.ts").AiRegistry): string {
|
|
676
|
+
const payload = {
|
|
677
|
+
schemaVersion: registry.schemaVersion,
|
|
678
|
+
generatorVersion: registry.generatorVersion,
|
|
679
|
+
analyzerVersion: registry.analyzerVersion,
|
|
680
|
+
inputHash: registry.inputHash,
|
|
681
|
+
providers: registry.providers,
|
|
682
|
+
generations: registry.generations,
|
|
683
|
+
diagnostics: registry.diagnostics,
|
|
684
|
+
};
|
|
685
|
+
return serializeCanonical(payload);
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
export function serializeAiRegistryTs(registry: import("../types/ai-registry.ts").AiRegistry): string {
|
|
689
|
+
const parsed: unknown = JSON.parse(serializeAiRegistryJson(registry).trimEnd());
|
|
690
|
+
return `export const aiRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
export function serializeAiProvidersJson(registry: import("../types/ai-registry.ts").AiRegistry): string {
|
|
694
|
+
return serializeCanonical({ providers: registry.providers });
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
export function serializeAiProvidersTs(registry: import("../types/ai-registry.ts").AiRegistry): string {
|
|
698
|
+
const parsed: unknown = JSON.parse(serializeAiProvidersJson(registry).trimEnd());
|
|
699
|
+
return `export const aiProviders = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
export function serializeAiModelsJson(models: import("../types/ai-registry.ts").AiModelDefinition[]): string {
|
|
703
|
+
return serializeCanonical({ models });
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
export function serializeAiModelsTs(models: import("../types/ai-registry.ts").AiModelDefinition[]): string {
|
|
707
|
+
const parsed: unknown = JSON.parse(serializeAiModelsJson(models).trimEnd());
|
|
708
|
+
return `export const aiModels = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
export function serializeAiContextTs(): string {
|
|
712
|
+
return `export type ForgeAiProvider = "openai" | "anthropic" | "gateway";
|
|
713
|
+
|
|
714
|
+
export type ForgeFlexibleSchema<T> = unknown & {
|
|
715
|
+
readonly __forgeStructuredOutput?: T;
|
|
716
|
+
};
|
|
717
|
+
|
|
718
|
+
export interface ForgeAiUsage {
|
|
719
|
+
promptTokens: number;
|
|
720
|
+
completionTokens: number;
|
|
721
|
+
totalTokens: number;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
export interface ForgeGenerateTextInput {
|
|
725
|
+
provider: ForgeAiProvider;
|
|
726
|
+
model: string;
|
|
727
|
+
prompt: string;
|
|
728
|
+
system?: string;
|
|
729
|
+
purpose?: string;
|
|
730
|
+
temperature?: number;
|
|
731
|
+
maxTokens?: number;
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
export interface ForgeGenerateTextResult {
|
|
735
|
+
text: string;
|
|
736
|
+
provider: ForgeAiProvider;
|
|
737
|
+
model: string;
|
|
738
|
+
purpose?: string;
|
|
739
|
+
usage: ForgeAiUsage;
|
|
740
|
+
latencyMs: number;
|
|
741
|
+
estimatedCostUsd?: number;
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
export interface ForgeStreamTextInput extends ForgeGenerateTextInput {}
|
|
745
|
+
|
|
746
|
+
export interface ForgeStreamTextResult {
|
|
747
|
+
textStream: AsyncIterable<string>;
|
|
748
|
+
text: Promise<string>;
|
|
749
|
+
provider: ForgeAiProvider;
|
|
750
|
+
model: string;
|
|
751
|
+
purpose?: string;
|
|
752
|
+
usage: Promise<ForgeAiUsage>;
|
|
753
|
+
latencyMs: number;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
export interface ForgeGenerateStructuredInput<T> {
|
|
757
|
+
provider: ForgeAiProvider;
|
|
758
|
+
model: string;
|
|
759
|
+
prompt: string;
|
|
760
|
+
system?: string;
|
|
761
|
+
purpose?: string;
|
|
762
|
+
schema: ForgeFlexibleSchema<T>;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
export interface AiContext {
|
|
766
|
+
generateText(input: ForgeGenerateTextInput): Promise<ForgeGenerateTextResult>;
|
|
767
|
+
streamText(input: ForgeStreamTextInput): Promise<ForgeStreamTextResult>;
|
|
768
|
+
generateStructured<T>(input: ForgeGenerateStructuredInput<T>): Promise<T>;
|
|
769
|
+
}
|
|
770
|
+
`;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
export function serializeQueryRegistryJson(registry: QueryRegistry): string {
|
|
774
|
+
const payload = {
|
|
775
|
+
schemaVersion: registry.schemaVersion,
|
|
776
|
+
generatorVersion: registry.generatorVersion,
|
|
777
|
+
analyzerVersion: registry.analyzerVersion,
|
|
778
|
+
inputHash: registry.inputHash,
|
|
779
|
+
queries: registry.queries,
|
|
780
|
+
diagnostics: registry.diagnostics,
|
|
781
|
+
};
|
|
782
|
+
return serializeCanonical(payload);
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
export function serializeQueryRegistryTs(registry: QueryRegistry): string {
|
|
786
|
+
const parsed: unknown = JSON.parse(serializeQueryRegistryJson(registry).trimEnd());
|
|
787
|
+
return `export const queryRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
export function serializeLiveQueryRegistryJson(registry: LiveQueryRegistry): string {
|
|
791
|
+
const payload = {
|
|
792
|
+
schemaVersion: registry.schemaVersion,
|
|
793
|
+
generatorVersion: registry.generatorVersion,
|
|
794
|
+
analyzerVersion: registry.analyzerVersion,
|
|
795
|
+
inputHash: registry.inputHash,
|
|
796
|
+
liveQueries: registry.liveQueries,
|
|
797
|
+
diagnostics: registry.diagnostics,
|
|
798
|
+
};
|
|
799
|
+
return serializeCanonical(payload);
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
export function serializeLiveQueryRegistryTs(registry: LiveQueryRegistry): string {
|
|
803
|
+
const parsed: unknown = JSON.parse(
|
|
804
|
+
serializeLiveQueryRegistryJson(registry).trimEnd(),
|
|
805
|
+
);
|
|
806
|
+
return `export const liveQueryRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
export function serializeSubscriptionManifestJson(
|
|
810
|
+
manifest: SubscriptionManifest,
|
|
811
|
+
): string {
|
|
812
|
+
return serializeCanonical(manifest);
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
export function serializeSubscriptionManifestTs(
|
|
816
|
+
manifest: SubscriptionManifest,
|
|
817
|
+
): string {
|
|
818
|
+
const parsed: unknown = JSON.parse(
|
|
819
|
+
serializeSubscriptionManifestJson(manifest).trimEnd(),
|
|
820
|
+
);
|
|
821
|
+
return `export const subscriptionManifest = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
export function serializeApiJson(surface: ApiSurface): string {
|
|
825
|
+
return serializeCanonical({
|
|
826
|
+
schemaVersion: surface.schemaVersion,
|
|
827
|
+
generatorVersion: surface.generatorVersion,
|
|
828
|
+
inputHash: surface.inputHash,
|
|
829
|
+
queries: surface.queries,
|
|
830
|
+
commands: surface.commands,
|
|
831
|
+
liveQueries: surface.liveQueries,
|
|
832
|
+
actions: surface.actions,
|
|
833
|
+
workflows: surface.workflows,
|
|
834
|
+
});
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
export function serializeApiTsExport(surface: ApiSurface): string {
|
|
838
|
+
return serializeApiTs(surface);
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
export function serializeServerApiTsExport(surface: ApiSurface): string {
|
|
842
|
+
return serializeServerApiTs(surface);
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
export function serializeClientApiTsExport(surface: ApiSurface): string {
|
|
846
|
+
return serializeClientApiTs(surface);
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
export function serializeClientManifestJson(
|
|
850
|
+
manifest: import("../client-sdk/build-manifest.ts").ClientManifest,
|
|
851
|
+
): string {
|
|
852
|
+
return serializeCanonical(manifest);
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
export function serializeClientManifestTs(
|
|
856
|
+
manifest: import("../client-sdk/build-manifest.ts").ClientManifest,
|
|
857
|
+
): string {
|
|
858
|
+
const parsed: unknown = JSON.parse(serializeClientManifestJson(manifest).trimEnd());
|
|
859
|
+
return `export const clientManifest = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
export function serializeReactManifestJson(
|
|
863
|
+
manifest: import("../client-sdk/build-manifest.ts").ReactManifest,
|
|
864
|
+
): string {
|
|
865
|
+
return serializeCanonical(manifest);
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
export function serializeTestGraphJson(graph: TestGraph): string {
|
|
869
|
+
return serializeCanonical(graph);
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
export function serializeTestGraphTs(graph: TestGraph): string {
|
|
873
|
+
const parsed: unknown = JSON.parse(serializeTestGraphJson(graph).trimEnd());
|
|
874
|
+
return `export const testGraph = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
export function serializeTestPlanRegistryJson(registry: TestPlanRegistry): string {
|
|
878
|
+
return serializeCanonical(registry);
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
export function serializeTestPlanRegistryTs(registry: TestPlanRegistry): string {
|
|
882
|
+
const parsed: unknown = JSON.parse(serializeTestPlanRegistryJson(registry).trimEnd());
|
|
883
|
+
return `export const testPlanRegistry = ${JSON.stringify(parsed, null, 2)} as const;\n`;
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
export type { ImportGuardsArtifact };
|