primitive-admin 1.2.0-alpha.0 → 1.2.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +108 -136
- package/assets/skill/skills/primitive-platform/SKILL.md +37 -4
- package/dist/bin/primitive.js +30 -35
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/agent-sessions.d.ts +133 -0
- package/dist/src/commands/agent-sessions.js +792 -0
- package/dist/src/commands/agent-sessions.js.map +1 -0
- package/dist/src/commands/analytics.js +0 -148
- package/dist/src/commands/analytics.js.map +1 -1
- package/dist/src/commands/apps-children.d.ts +54 -0
- package/dist/src/commands/apps-children.js +631 -0
- package/dist/src/commands/apps-children.js.map +1 -0
- package/dist/src/commands/apps.d.ts +6 -0
- package/dist/src/commands/apps.js +131 -9
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/auth-sessions.d.ts +3 -3
- package/dist/src/commands/auth-sessions.js +117 -23
- package/dist/src/commands/auth-sessions.js.map +1 -1
- package/dist/src/commands/auth.js +460 -36
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/collections.js +316 -256
- package/dist/src/commands/collections.js.map +1 -1
- package/dist/src/commands/config.d.ts +1 -1
- package/dist/src/commands/config.js +60 -28
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/connections.js +12 -17
- package/dist/src/commands/connections.js.map +1 -1
- package/dist/src/commands/database-type-configs.js +2 -76
- package/dist/src/commands/database-type-configs.js.map +1 -1
- package/dist/src/commands/databases.d.ts +9 -0
- package/dist/src/commands/databases.js +228 -566
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/db3-types.d.ts +15 -0
- package/dist/src/commands/db3-types.js +157 -0
- package/dist/src/commands/db3-types.js.map +1 -0
- package/dist/src/commands/db3.d.ts +12 -0
- package/dist/src/commands/db3.js +1052 -0
- package/dist/src/commands/db3.js.map +1 -0
- package/dist/src/commands/documents.d.ts +121 -2
- package/dist/src/commands/documents.js +1601 -1251
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/env.d.ts +9 -1
- package/dist/src/commands/env.js +164 -49
- package/dist/src/commands/env.js.map +1 -1
- package/dist/src/commands/function-trigger-commands.d.ts +28 -0
- package/dist/src/commands/function-trigger-commands.js +341 -0
- package/dist/src/commands/function-trigger-commands.js.map +1 -0
- package/dist/src/commands/functions.js +297 -24
- package/dist/src/commands/functions.js.map +1 -1
- package/dist/src/commands/groups.js +150 -49
- package/dist/src/commands/groups.js.map +1 -1
- package/dist/src/commands/guides.js +5 -5
- package/dist/src/commands/init.d.ts +7 -0
- package/dist/src/commands/init.js +23 -5
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/integrations.js +14 -8
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/metadata-category-configs.d.ts +2 -2
- package/dist/src/commands/metadata-category-configs.js +2 -2
- package/dist/src/commands/prompts.d.ts +7 -0
- package/dist/src/commands/prompts.js +48 -5
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/scripts.d.ts +9 -17
- package/dist/src/commands/scripts.js +24 -479
- package/dist/src/commands/scripts.js.map +1 -1
- package/dist/src/commands/sessions.js +3 -8
- package/dist/src/commands/sessions.js.map +1 -1
- package/dist/src/commands/sync-app-settings.d.ts +36 -8
- package/dist/src/commands/sync-app-settings.js +109 -23
- package/dist/src/commands/sync-app-settings.js.map +1 -1
- package/dist/src/commands/sync.d.ts +436 -613
- package/dist/src/commands/sync.js +2604 -5977
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.js +4 -9
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.js +77 -2
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/commands/workflows.d.ts +5 -83
- package/dist/src/commands/workflows.js +57 -2282
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/aggregate-output.d.ts +25 -0
- package/dist/src/lib/aggregate-output.js +53 -0
- package/dist/src/lib/aggregate-output.js.map +1 -0
- package/dist/src/lib/api-client.d.ts +681 -581
- package/dist/src/lib/api-client.js +880 -851
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +47 -1
- package/dist/src/lib/app-settings-descriptor.js +114 -10
- package/dist/src/lib/app-settings-descriptor.js.map +1 -1
- package/dist/src/lib/auth-fixtures.d.ts +44 -0
- package/dist/src/lib/auth-fixtures.js +61 -0
- package/dist/src/lib/auth-fixtures.js.map +1 -0
- package/dist/src/lib/auth-flow.d.ts +41 -1
- package/dist/src/lib/auth-flow.js +70 -16
- package/dist/src/lib/auth-flow.js.map +1 -1
- package/dist/src/lib/block-layout.d.ts +12 -23
- package/dist/src/lib/block-layout.js +26 -92
- package/dist/src/lib/block-layout.js.map +1 -1
- package/dist/src/lib/block-selector.d.ts +2 -2
- package/dist/src/lib/block-selector.js +2 -2
- package/dist/src/lib/child-apps-local.d.ts +164 -0
- package/dist/src/lib/child-apps-local.js +258 -0
- package/dist/src/lib/child-apps-local.js.map +1 -0
- package/dist/src/lib/ci-session-request.d.ts +22 -0
- package/dist/src/lib/ci-session-request.js +51 -0
- package/dist/src/lib/ci-session-request.js.map +1 -0
- package/dist/src/lib/codegen-shared/generatedFiles.d.ts +10 -8
- package/dist/src/lib/codegen-shared/generatedFiles.js +21 -15
- package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -1
- package/dist/src/lib/codegen-shared/prettierStable.d.ts +1 -1
- package/dist/src/lib/codegen-shared/prettierStable.js +1 -1
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +2 -2
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +2 -2
- package/dist/src/lib/collection-export.d.ts +76 -15
- package/dist/src/lib/collection-export.js +116 -23
- package/dist/src/lib/collection-export.js.map +1 -1
- package/dist/src/lib/collection-principal.d.ts +22 -0
- package/dist/src/lib/collection-principal.js +35 -0
- package/dist/src/lib/collection-principal.js.map +1 -0
- package/dist/src/lib/config-object-descriptor.d.ts +3 -22
- package/dist/src/lib/config-object-descriptor.js +56 -291
- package/dist/src/lib/config-object-descriptor.js.map +1 -1
- package/dist/src/lib/config-payload.js +2 -3
- package/dist/src/lib/config-payload.js.map +1 -1
- package/dist/src/lib/config-surface.d.ts +5 -7
- package/dist/src/lib/config-surface.js +18 -40
- package/dist/src/lib/config-surface.js.map +1 -1
- package/dist/src/lib/connections-list.d.ts +10 -0
- package/dist/src/lib/connections-list.js +18 -0
- package/dist/src/lib/connections-list.js.map +1 -0
- package/dist/src/lib/credentials-home.d.ts +58 -0
- package/dist/src/lib/credentials-home.js +204 -0
- package/dist/src/lib/credentials-home.js.map +1 -0
- package/dist/src/lib/credentials-lock.d.ts +88 -0
- package/dist/src/lib/credentials-lock.js +302 -0
- package/dist/src/lib/credentials-lock.js.map +1 -0
- package/dist/src/lib/credentials-store.d.ts +179 -24
- package/dist/src/lib/credentials-store.js +712 -77
- package/dist/src/lib/credentials-store.js.map +1 -1
- package/dist/src/lib/csv.d.ts +8 -9
- package/dist/src/lib/csv.js +3 -4
- package/dist/src/lib/csv.js.map +1 -1
- package/dist/src/lib/custodian.d.ts +8 -0
- package/dist/src/lib/custodian.js +18 -0
- package/dist/src/lib/custodian.js.map +1 -0
- package/dist/src/lib/db-codegen/dbGenerator.js +5 -16
- package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -1
- package/dist/src/lib/db-codegen/dbNaming.d.ts +5 -13
- package/dist/src/lib/db-codegen/dbNaming.js +5 -17
- package/dist/src/lib/db-codegen/dbNaming.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTemplates.d.ts +7 -56
- package/dist/src/lib/db-codegen/dbTemplates.js +25 -125
- package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTsTypes.d.ts +2 -2
- package/dist/src/lib/db-codegen/dbTsTypes.js +2 -2
- package/dist/src/lib/db-codegen/dbTypeIR.d.ts +67 -2
- package/dist/src/lib/db-codegen/dbTypeIR.js +13 -2
- package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -1
- package/dist/src/lib/db3-export.d.ts +231 -0
- package/dist/src/lib/db3-export.js +510 -0
- package/dist/src/lib/db3-export.js.map +1 -0
- package/dist/src/lib/db3-index-output.d.ts +27 -0
- package/dist/src/lib/db3-index-output.js +49 -0
- package/dist/src/lib/db3-index-output.js.map +1 -0
- package/dist/src/lib/document-export-lookups.d.ts +31 -0
- package/dist/src/lib/document-export-lookups.js +53 -0
- package/dist/src/lib/document-export-lookups.js.map +1 -0
- package/dist/src/lib/document-export-permissions.d.ts +7 -5
- package/dist/src/lib/document-export-permissions.js +7 -5
- package/dist/src/lib/document-export-permissions.js.map +1 -1
- package/dist/src/lib/document-export-record-log.d.ts +57 -0
- package/dist/src/lib/document-export-record-log.js +215 -0
- package/dist/src/lib/document-export-record-log.js.map +1 -0
- package/dist/src/lib/document-ingest-artifact.d.ts +26 -2
- package/dist/src/lib/document-ingest-artifact.js +42 -8
- package/dist/src/lib/document-ingest-artifact.js.map +1 -1
- package/dist/src/lib/document-ingest-format2.d.ts +36 -0
- package/dist/src/lib/document-ingest-format2.js +78 -0
- package/dist/src/lib/document-ingest-format2.js.map +1 -0
- package/dist/src/lib/document-ingest-input.d.ts +9 -0
- package/dist/src/lib/document-ingest-input.js +28 -1
- package/dist/src/lib/document-ingest-input.js.map +1 -1
- package/dist/src/lib/document-ingest-rows.d.ts +16 -0
- package/dist/src/lib/document-ingest-rows.js +17 -0
- package/dist/src/lib/document-ingest-rows.js.map +1 -1
- package/dist/src/lib/document-ingest.d.ts +33 -1
- package/dist/src/lib/document-ingest.js +49 -0
- package/dist/src/lib/document-ingest.js.map +1 -1
- package/dist/src/lib/document-schema-rows.d.ts +42 -0
- package/dist/src/lib/document-schema-rows.js +53 -0
- package/dist/src/lib/document-schema-rows.js.map +1 -0
- package/dist/src/lib/env-resolver-core.d.ts +70 -2
- package/dist/src/lib/env-resolver-core.js +137 -20
- package/dist/src/lib/env-resolver-core.js.map +1 -1
- package/dist/src/lib/env-resolver.d.ts +14 -2
- package/dist/src/lib/env-resolver.js +32 -10
- package/dist/src/lib/env-resolver.js.map +1 -1
- package/dist/src/lib/function-authorize-check.d.ts +142 -0
- package/dist/src/lib/function-authorize-check.js +310 -0
- package/dist/src/lib/function-authorize-check.js.map +1 -0
- package/dist/src/lib/function-authorize-view.d.ts +15 -0
- package/dist/src/lib/function-authorize-view.js +50 -0
- package/dist/src/lib/function-authorize-view.js.map +1 -0
- package/dist/src/lib/function-bundle.d.ts +38 -18
- package/dist/src/lib/function-bundle.js +96 -35
- package/dist/src/lib/function-bundle.js.map +1 -1
- package/dist/src/lib/function-collect.d.ts +75 -12
- package/dist/src/lib/function-collect.js +427 -12
- package/dist/src/lib/function-collect.js.map +1 -1
- package/dist/src/lib/function-db-types.d.ts +29 -0
- package/dist/src/lib/function-db-types.js +117 -7
- package/dist/src/lib/function-db-types.js.map +1 -1
- package/dist/src/lib/function-document-types.d.ts +5 -3
- package/dist/src/lib/function-document-types.js +10 -14
- package/dist/src/lib/function-document-types.js.map +1 -1
- package/dist/src/lib/function-lint.d.ts +34 -0
- package/dist/src/lib/function-lint.js +112 -0
- package/dist/src/lib/function-lint.js.map +1 -0
- package/dist/src/lib/function-log-row.js +21 -2
- package/dist/src/lib/function-log-row.js.map +1 -1
- package/dist/src/lib/function-run.d.ts +16 -21
- package/dist/src/lib/function-run.js +37 -30
- package/dist/src/lib/function-run.js.map +1 -1
- package/dist/src/lib/function-schema-codegen.d.ts +1 -1
- package/dist/src/lib/function-schema-codegen.js +5 -5
- package/dist/src/lib/function-schema-codegen.js.map +1 -1
- package/dist/src/lib/function-source-roots.d.ts +67 -0
- package/dist/src/lib/function-source-roots.js +148 -0
- package/dist/src/lib/function-source-roots.js.map +1 -0
- package/dist/src/lib/function-sync.d.ts +108 -22
- package/dist/src/lib/function-sync.js +127 -39
- package/dist/src/lib/function-sync.js.map +1 -1
- package/dist/src/lib/function-trigger-listing.d.ts +11 -6
- package/dist/src/lib/function-trigger-listing.js +32 -11
- package/dist/src/lib/function-trigger-listing.js.map +1 -1
- package/dist/src/lib/function-typecheck.d.ts +37 -2
- package/dist/src/lib/function-typecheck.js +210 -28
- package/dist/src/lib/function-typecheck.js.map +1 -1
- package/dist/src/lib/function-versions.d.ts +2 -0
- package/dist/src/lib/function-versions.js +1 -0
- package/dist/src/lib/function-versions.js.map +1 -1
- package/dist/src/lib/generated-allowlist.js +0 -20
- package/dist/src/lib/generated-allowlist.js.map +1 -1
- package/dist/src/lib/generated-config-surfaces.d.ts +703 -201
- package/dist/src/lib/generated-config-surfaces.js +2335 -2033
- package/dist/src/lib/generated-config-surfaces.js.map +1 -1
- package/dist/src/lib/generated-sdk-types.d.ts +1 -1
- package/dist/src/lib/generated-sdk-types.js +1 -1
- package/dist/src/lib/generated-sdk-types.js.map +1 -1
- package/dist/src/lib/init-adopt.js +12 -3
- package/dist/src/lib/init-adopt.js.map +1 -1
- package/dist/src/lib/init-login-note.d.ts +13 -0
- package/dist/src/lib/init-login-note.js +22 -0
- package/dist/src/lib/init-login-note.js.map +1 -0
- package/dist/src/lib/json-value.d.ts +6 -0
- package/dist/src/lib/json-value.js +13 -0
- package/dist/src/lib/json-value.js.map +1 -0
- package/dist/src/lib/load-routes.d.ts +33 -0
- package/dist/src/lib/load-routes.js +35 -0
- package/dist/src/lib/load-routes.js.map +1 -0
- package/dist/src/lib/local-state.d.ts +38 -7
- package/dist/src/lib/local-state.js +172 -49
- package/dist/src/lib/local-state.js.map +1 -1
- package/dist/src/lib/local-test-cases.d.ts +5 -2
- package/dist/src/lib/local-test-cases.js +7 -4
- package/dist/src/lib/local-test-cases.js.map +1 -1
- package/dist/src/lib/log-inspection.d.ts +42 -4
- package/dist/src/lib/log-inspection.js +37 -5
- package/dist/src/lib/log-inspection.js.map +1 -1
- package/dist/src/lib/login-exchange-check.d.ts +18 -0
- package/dist/src/lib/login-exchange-check.js +27 -0
- package/dist/src/lib/login-exchange-check.js.map +1 -0
- package/dist/src/lib/login-scope-lines.d.ts +25 -0
- package/dist/src/lib/login-scope-lines.js +45 -0
- package/dist/src/lib/login-scope-lines.js.map +1 -0
- package/dist/src/lib/logout-admin-session.d.ts +2 -1
- package/dist/src/lib/logout-admin-session.js +7 -1
- package/dist/src/lib/logout-admin-session.js.map +1 -1
- package/dist/src/lib/object-status-filter.d.ts +9 -1
- package/dist/src/lib/object-status-filter.js +9 -1
- package/dist/src/lib/object-status-filter.js.map +1 -1
- package/dist/src/lib/output.js +2 -0
- package/dist/src/lib/output.js.map +1 -1
- package/dist/src/lib/paginate.d.ts +0 -5
- package/dist/src/lib/paginate.js +0 -5
- package/dist/src/lib/paginate.js.map +1 -1
- package/dist/src/lib/pin-refusal-hint.d.ts +12 -0
- package/dist/src/lib/pin-refusal-hint.js +35 -0
- package/dist/src/lib/pin-refusal-hint.js.map +1 -0
- package/dist/src/lib/primitive-env-plugin.d.ts +99 -0
- package/dist/src/lib/primitive-env-plugin.js +408 -0
- package/dist/src/lib/primitive-env-plugin.js.map +1 -0
- package/dist/src/lib/project-config.d.ts +7 -0
- package/dist/src/lib/project-config.js +22 -1
- package/dist/src/lib/project-config.js.map +1 -1
- package/dist/src/lib/project-login-apps.d.ts +8 -0
- package/dist/src/lib/project-login-apps.js +27 -0
- package/dist/src/lib/project-login-apps.js.map +1 -0
- package/dist/src/lib/prompt-schema-codegen.d.ts +10 -3
- package/dist/src/lib/prompt-schema-codegen.js +52 -11
- package/dist/src/lib/prompt-schema-codegen.js.map +1 -1
- package/dist/src/lib/pull-write.d.ts +31 -0
- package/dist/src/lib/pull-write.js +49 -0
- package/dist/src/lib/pull-write.js.map +1 -0
- package/dist/src/lib/push-failure-report.d.ts +45 -0
- package/dist/src/lib/push-failure-report.js +57 -0
- package/dist/src/lib/push-failure-report.js.map +1 -0
- package/dist/src/lib/records-verbs.d.ts +69 -0
- package/dist/src/lib/records-verbs.js +40 -0
- package/dist/src/lib/records-verbs.js.map +1 -0
- package/dist/src/lib/refresh-admin-credentials.d.ts +7 -0
- package/dist/src/lib/refresh-admin-credentials.js +16 -4
- package/dist/src/lib/refresh-admin-credentials.js.map +1 -1
- package/dist/src/lib/root-import-decision.d.ts +65 -0
- package/dist/src/lib/root-import-decision.js +109 -0
- package/dist/src/lib/root-import-decision.js.map +1 -0
- package/dist/src/lib/run-status.d.ts +1 -1
- package/dist/src/lib/run-status.generated.d.ts +2 -2
- package/dist/src/lib/run-status.generated.js +3 -1
- package/dist/src/lib/run-status.generated.js.map +1 -1
- package/dist/src/lib/run-status.js +1 -1
- package/dist/src/lib/schema-codegen/generated-schema-descriptor.d.ts +129 -0
- package/dist/src/lib/schema-codegen/generated-schema-descriptor.js +269 -0
- package/dist/src/lib/schema-codegen/generated-schema-descriptor.js.map +1 -0
- package/dist/src/lib/schema-codegen/naming.d.ts +35 -0
- package/dist/src/lib/schema-codegen/naming.js +83 -0
- package/dist/src/lib/schema-codegen/naming.js.map +1 -0
- package/dist/src/lib/schema-codegen/schemaToTs.d.ts +82 -0
- package/dist/src/lib/schema-codegen/schemaToTs.js +305 -0
- package/dist/src/lib/schema-codegen/schemaToTs.js.map +1 -0
- package/dist/src/lib/scope-request.d.ts +84 -0
- package/dist/src/lib/scope-request.js +235 -0
- package/dist/src/lib/scope-request.js.map +1 -0
- package/dist/src/lib/session-id.d.ts +9 -0
- package/dist/src/lib/session-id.js +28 -0
- package/dist/src/lib/session-id.js.map +1 -0
- package/dist/src/lib/snapshot-build-rows.d.ts +21 -0
- package/dist/src/lib/snapshot-build-rows.js +22 -0
- package/dist/src/lib/snapshot-build-rows.js.map +1 -1
- package/dist/src/lib/snapshot-build.js +8 -3
- package/dist/src/lib/snapshot-build.js.map +1 -1
- package/dist/src/lib/snapshots.d.ts +17 -1
- package/dist/src/lib/snapshots.js +50 -2
- package/dist/src/lib/snapshots.js.map +1 -1
- package/dist/src/lib/swift-codegen/agentGenerator.d.ts +6 -2
- package/dist/src/lib/swift-codegen/agentGenerator.js +57 -5
- package/dist/src/lib/swift-codegen/agentGenerator.js.map +1 -1
- package/dist/src/lib/swift-codegen/banners.d.ts +34 -7
- package/dist/src/lib/swift-codegen/banners.js +37 -7
- package/dist/src/lib/swift-codegen/banners.js.map +1 -1
- package/dist/src/lib/swift-codegen/dbGenerator.d.ts +4 -3
- package/dist/src/lib/swift-codegen/dbGenerator.js +14 -117
- package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -1
- package/dist/src/lib/swift-codegen/functionGenerator.d.ts +3 -3
- package/dist/src/lib/swift-codegen/functionGenerator.js +23 -18
- package/dist/src/lib/swift-codegen/functionGenerator.js.map +1 -1
- package/dist/src/lib/swift-codegen/generator.d.ts +5 -5
- package/dist/src/lib/swift-codegen/generator.js +35 -40
- package/dist/src/lib/swift-codegen/generator.js.map +1 -1
- package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +3 -3
- package/dist/src/lib/swift-codegen/schemaToSwift.js +4 -4
- package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -1
- package/dist/src/lib/swift-codegen/swiftKeys.d.ts +19 -0
- package/dist/src/lib/swift-codegen/swiftKeys.js +31 -0
- package/dist/src/lib/swift-codegen/swiftKeys.js.map +1 -0
- package/dist/src/lib/sync-paths.d.ts +35 -0
- package/dist/src/lib/sync-paths.js +57 -5
- package/dist/src/lib/sync-paths.js.map +1 -1
- package/dist/src/lib/sync-resource-types.d.ts +26 -26
- package/dist/src/lib/sync-resource-types.js +61 -189
- package/dist/src/lib/sync-resource-types.js.map +1 -1
- package/dist/src/lib/sync-selectors.d.ts +5 -1
- package/dist/src/lib/sync-selectors.js +23 -13
- package/dist/src/lib/sync-selectors.js.map +1 -1
- package/dist/src/lib/test-case-file-names.d.ts +3 -5
- package/dist/src/lib/test-case-file-names.js +3 -5
- package/dist/src/lib/test-case-file-names.js.map +1 -1
- package/dist/src/lib/toml-database-config.d.ts +15 -75
- package/dist/src/lib/toml-database-config.js +17 -306
- package/dist/src/lib/toml-database-config.js.map +1 -1
- package/dist/src/lib/transient-retry.d.ts +43 -0
- package/dist/src/lib/transient-retry.js +94 -0
- package/dist/src/lib/transient-retry.js.map +1 -0
- package/dist/src/lib/vars-override.d.ts +105 -0
- package/dist/src/lib/vars-override.js +143 -0
- package/dist/src/lib/vars-override.js.map +1 -0
- package/dist/src/lib/webhook-capture.d.ts +43 -0
- package/dist/src/lib/webhook-capture.js +91 -0
- package/dist/src/lib/webhook-capture.js.map +1 -0
- package/dist/src/lib/webhook-deliver.d.ts +18 -20
- package/dist/src/lib/webhook-deliver.js +34 -89
- package/dist/src/lib/webhook-deliver.js.map +1 -1
- package/dist/src/lib/webhook-test-run.d.ts +32 -0
- package/dist/src/lib/webhook-test-run.js +108 -0
- package/dist/src/lib/webhook-test-run.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generator.d.ts +7 -7
- package/dist/src/lib/workflow-codegen/generator.js +16 -23
- package/dist/src/lib/workflow-codegen/generator.js.map +1 -1
- package/dist/src/lib/workflow-codegen/invokerIR.d.ts +6 -12
- package/dist/src/lib/workflow-codegen/invokerIR.js +4 -5
- package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -1
- package/dist/src/lib/workflow-toml-validator.d.ts +2 -0
- package/dist/src/lib/workflow-toml-validator.js +28 -1
- package/dist/src/lib/workflow-toml-validator.js.map +1 -1
- package/dist/src/types/index.d.ts +30 -37
- package/dist/src/validators.d.ts +7 -55
- package/dist/src/validators.js +7 -53
- package/dist/src/validators.js.map +1 -1
- package/dist/src/vite.d.ts +17 -0
- package/dist/src/vite.js +18 -0
- package/dist/src/vite.js.map +1 -0
- package/package.json +20 -12
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Child apps on this machine (#4119): the local half of `apps children` and
|
|
3
|
+
* of attaching a child with `env use <slug>`.
|
|
4
|
+
*
|
|
5
|
+
* A child app is a machine-local environment (#4117): an entry in
|
|
6
|
+
* `.primitive/local.json` naming the child's app and server and, as `tree`,
|
|
7
|
+
* the committed environment whose `primitive/<tree>/` it shares — its parent.
|
|
8
|
+
* This module owns everything the verbs do to this machine around the server
|
|
9
|
+
* calls: finding the parent of the current environment, registering a child
|
|
10
|
+
* (baseline, entry), finding entries whose child is gone, and removing a
|
|
11
|
+
* deleted child's local state. A child has no login of its own: it uses its
|
|
12
|
+
* parent's (#4511, `credentials-store.ts`).
|
|
13
|
+
*
|
|
14
|
+
* Local state is always related to a server child by APP ID, never by name. A
|
|
15
|
+
* local name is unique per checkout, while a slug is unique per parent, so an
|
|
16
|
+
* entry named `feature-x` may hold another parent's `feature-x`.
|
|
17
|
+
*/
|
|
18
|
+
import { execFileSync } from "child_process";
|
|
19
|
+
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "fs";
|
|
20
|
+
import { dirname, join } from "path";
|
|
21
|
+
import { PROJECT_TREE_DIR, projectRootForConfigPath, readCoreProjectConfig, readLocalState, } from "./env-resolver-core.js";
|
|
22
|
+
import { getProjectConfig, requireCurrentEnvironment, } from "./env-resolver.js";
|
|
23
|
+
import { removeLocalEnvironment, writeLocalEnvironment } from "./local-state.js";
|
|
24
|
+
import { removeCredentialsSlotInProject } from "./credentials-store.js";
|
|
25
|
+
import { localBackupsRootFor, localSyncStatePathFor, syncStateReadPath, } from "./sync-paths.js";
|
|
26
|
+
import { varsOverrideFileName } from "./vars-override.js";
|
|
27
|
+
import { authFixturesPathFor } from "./auth-fixtures.js";
|
|
28
|
+
const trimSlash = (url) => url.replace(/\/+$/, "");
|
|
29
|
+
/**
|
|
30
|
+
* The parent of the current environment: the committed environment named by
|
|
31
|
+
* its `tree`. For a committed environment that is itself; with a child
|
|
32
|
+
* selected it is the child's parent, so a verb acts on the parent and a create
|
|
33
|
+
* makes a sibling.
|
|
34
|
+
*
|
|
35
|
+
* Refuses a machine-local environment whose server differs from its parent's:
|
|
36
|
+
* the verbs use the current environment's login against the parent, and a
|
|
37
|
+
* login for one server says nothing about another.
|
|
38
|
+
*/
|
|
39
|
+
export function resolveParentEnvironment() {
|
|
40
|
+
const current = requireCurrentEnvironment();
|
|
41
|
+
const project = getProjectConfig();
|
|
42
|
+
const parent = project.environments[current.tree];
|
|
43
|
+
if (current.local && trimSlash(current.config.apiUrl) !== trimSlash(parent.apiUrl)) {
|
|
44
|
+
throw new Error(`The machine-local environment "${current.name}" is on ${current.config.apiUrl}, but its parent environment "${current.tree}" is on ${parent.apiUrl}. ` +
|
|
45
|
+
`Child apps live on their parent's server: run 'primitive env use ${current.tree}' and retry, or fix the "${current.name}" entry in .primitive/local.json.`);
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
current,
|
|
49
|
+
parentName: current.tree,
|
|
50
|
+
parentApiUrl: trimSlash(parent.apiUrl),
|
|
51
|
+
parentAppId: parent.appId,
|
|
52
|
+
projectRoot: current.projectRoot,
|
|
53
|
+
configPath: current.projectConfigPath,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Every child of the parent, read from its children listing at the route's
|
|
58
|
+
* largest page. A parent has at most 50 children, so this is one request; a
|
|
59
|
+
* failure propagates, because a listing that could not be read says nothing
|
|
60
|
+
* about which children exist.
|
|
61
|
+
*/
|
|
62
|
+
export async function drainChildren(client, parentAppId) {
|
|
63
|
+
const children = [];
|
|
64
|
+
let cursor;
|
|
65
|
+
for (;;) {
|
|
66
|
+
const page = await client.listAppChildren(parentAppId, { limit: 100, cursor });
|
|
67
|
+
children.push(...page.items);
|
|
68
|
+
if (!page.hasMore || !page.nextCursor)
|
|
69
|
+
return children;
|
|
70
|
+
cursor = page.nextCursor;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** The child with slug `slug` in a drained listing. */
|
|
74
|
+
export function findChildBySlug(children, slug) {
|
|
75
|
+
return children.find((child) => child.childSlug === slug);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* This machine's machine-local environments, read strictly: a file the
|
|
79
|
+
* resolver would refuse is an error here too, because a verb that cannot see
|
|
80
|
+
* the entries cannot tell which of them a server child belongs to.
|
|
81
|
+
*/
|
|
82
|
+
export function readLocalEnvironmentRefs(configPath) {
|
|
83
|
+
const environments = readLocalState(configPath, readCoreProjectConfig(configPath)).environments;
|
|
84
|
+
return Object.entries(environments).map(([name, entry]) => ({ name, entry }));
|
|
85
|
+
}
|
|
86
|
+
/** The machine-local entries whose `tree` is the parent environment. */
|
|
87
|
+
export function localEntriesOfParent(configPath, parentName) {
|
|
88
|
+
return readLocalEnvironmentRefs(configPath).filter((ref) => ref.entry.tree === parentName);
|
|
89
|
+
}
|
|
90
|
+
/** The machine-local entries holding the app `appId`, whatever they are named. */
|
|
91
|
+
export function localEntriesForApp(configPath, appId) {
|
|
92
|
+
return readLocalEnvironmentRefs(configPath).filter((ref) => ref.entry.appId === appId);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The entries of the parent whose app is not among its children: children
|
|
96
|
+
* deleted elsewhere, or by the sweep. Entries of other trees belong to other
|
|
97
|
+
* parents and are never reported against this one.
|
|
98
|
+
*/
|
|
99
|
+
export function findStaleLocalEntries(entries, parentName, children) {
|
|
100
|
+
const live = new Set(children.map((child) => child.appId));
|
|
101
|
+
return entries.filter((ref) => ref.entry.tree === parentName && !live.has(ref.entry.appId));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Seeds the child's own baseline (`localSyncStatePathFor`), so its
|
|
105
|
+
* first push is a cross-app push from the parent: the bytes of the parent
|
|
106
|
+
* environment's committed baseline, or — when the tree has none — the empty
|
|
107
|
+
* state stamped with the parent's app id. Any file already at that path is
|
|
108
|
+
* replaced.
|
|
109
|
+
*/
|
|
110
|
+
export function seedChildBaseline(projectRoot, tree, name, parentAppId, parentApiUrl) {
|
|
111
|
+
const path = localSyncStatePathFor(projectRoot, name);
|
|
112
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
113
|
+
const committed = syncStateReadPath(join(projectRoot, PROJECT_TREE_DIR, tree));
|
|
114
|
+
if (existsSync(committed)) {
|
|
115
|
+
writeFileSync(path, readFileSync(committed));
|
|
116
|
+
return { path, source: "committed" };
|
|
117
|
+
}
|
|
118
|
+
const empty = {
|
|
119
|
+
appId: parentAppId,
|
|
120
|
+
serverUrl: parentApiUrl,
|
|
121
|
+
lastSyncedAt: new Date().toISOString(),
|
|
122
|
+
entities: {},
|
|
123
|
+
};
|
|
124
|
+
writeFileSync(path, JSON.stringify(empty, null, 2) + "\n");
|
|
125
|
+
return { path, source: "empty" };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* A child exists on the server but could not be registered on this machine.
|
|
129
|
+
* `appId` names the child so the caller can say how to finish the job.
|
|
130
|
+
*/
|
|
131
|
+
export class ChildRegistrationError extends Error {
|
|
132
|
+
appId;
|
|
133
|
+
constructor(message, appId) {
|
|
134
|
+
super(message);
|
|
135
|
+
this.appId = appId;
|
|
136
|
+
this.name = "ChildRegistrationError";
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Registers a child as the machine-local environment `name`: its baseline
|
|
141
|
+
* (seeded as {@link seedChildBaseline} does), then the `.primitive/local.json`
|
|
142
|
+
* entry, which is the commit point. No credentials slot is written: the child
|
|
143
|
+
* uses its parent's login. When the entry cannot be written the baseline is
|
|
144
|
+
* removed, so no half-registered child is left, and a
|
|
145
|
+
* {@link ChildRegistrationError} naming the app id is thrown.
|
|
146
|
+
*/
|
|
147
|
+
export function registerChildEnvironment(input) {
|
|
148
|
+
const projectRoot = projectRootForConfigPath(input.configPath);
|
|
149
|
+
let baselinePath = null;
|
|
150
|
+
try {
|
|
151
|
+
const seeded = seedChildBaseline(projectRoot, input.tree, input.name, input.parentAppId, input.apiUrl);
|
|
152
|
+
baselinePath = seeded.path;
|
|
153
|
+
writeLocalEnvironment(input.configPath, input.name, {
|
|
154
|
+
apiUrl: input.apiUrl,
|
|
155
|
+
appId: input.appId,
|
|
156
|
+
...(input.appName !== undefined ? { appName: input.appName } : {}),
|
|
157
|
+
tree: input.tree,
|
|
158
|
+
});
|
|
159
|
+
return { baselineSource: seeded.source };
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
if (baselinePath)
|
|
163
|
+
rmSync(baselinePath, { force: true });
|
|
164
|
+
throw new ChildRegistrationError(`Could not register child app ${input.appId} as the machine-local environment "${input.name}": ${err?.message || String(err)}`, input.appId);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Removes this machine's state for the app `appId`: for every machine-local
|
|
169
|
+
* entry holding it, any credentials slot it kept from before children used
|
|
170
|
+
* their parent's login, its baseline, its backups, its vars
|
|
171
|
+
* override file in its tree, its auth fixture file (#4732) and last the entry (clearing a selection naming
|
|
172
|
+
* it). The entry goes last because it
|
|
173
|
+
* is what identifies the rest: when an earlier removal fails the entry stays
|
|
174
|
+
* and the record carries `failure`, so a rerun can finish the job. Entries
|
|
175
|
+
* holding other apps are untouched whatever they are named. Returns one record
|
|
176
|
+
* per entry holding the app.
|
|
177
|
+
*/
|
|
178
|
+
export function removeLocalStateForApp(configPath, appId) {
|
|
179
|
+
const projectRoot = projectRootForConfigPath(configPath);
|
|
180
|
+
const selected = readLocalState(configPath).selectedEnvironment;
|
|
181
|
+
return localEntriesForApp(configPath, appId).map(({ name, entry }) => {
|
|
182
|
+
const baseline = localSyncStatePathFor(projectRoot, name);
|
|
183
|
+
const backups = localBackupsRootFor(projectRoot, name);
|
|
184
|
+
const override = join(projectRoot, PROJECT_TREE_DIR, entry.tree, varsOverrideFileName(name));
|
|
185
|
+
const fixtures = authFixturesPathFor({ name, tree: entry.tree, local: true, projectRoot });
|
|
186
|
+
const record = {
|
|
187
|
+
name,
|
|
188
|
+
tree: entry.tree,
|
|
189
|
+
entryRemoved: false,
|
|
190
|
+
selectionCleared: false,
|
|
191
|
+
loginRemoved: false,
|
|
192
|
+
baselineRemoved: false,
|
|
193
|
+
backupsRemoved: false,
|
|
194
|
+
overrideRemoved: false,
|
|
195
|
+
fixturesRemoved: false,
|
|
196
|
+
};
|
|
197
|
+
let step = "login";
|
|
198
|
+
try {
|
|
199
|
+
record.loginRemoved = removeCredentialsSlotInProject(projectRoot, name);
|
|
200
|
+
step = "baseline";
|
|
201
|
+
record.baselineRemoved = existsSync(baseline);
|
|
202
|
+
rmSync(baseline, { force: true });
|
|
203
|
+
step = "backups";
|
|
204
|
+
record.backupsRemoved = existsSync(backups);
|
|
205
|
+
rmSync(backups, { recursive: true, force: true });
|
|
206
|
+
step = "vars override";
|
|
207
|
+
record.overrideRemoved = existsSync(override);
|
|
208
|
+
rmSync(override, { force: true });
|
|
209
|
+
step = "auth fixtures";
|
|
210
|
+
record.fixturesRemoved = existsSync(fixtures);
|
|
211
|
+
rmSync(fixtures, { force: true });
|
|
212
|
+
step = "entry";
|
|
213
|
+
record.entryRemoved = removeLocalEnvironment(configPath, name);
|
|
214
|
+
record.selectionCleared = record.entryRemoved && selected === name;
|
|
215
|
+
}
|
|
216
|
+
catch (err) {
|
|
217
|
+
if (step === "baseline")
|
|
218
|
+
record.baselineRemoved = false;
|
|
219
|
+
if (step === "backups")
|
|
220
|
+
record.backupsRemoved = false;
|
|
221
|
+
if (step === "vars override")
|
|
222
|
+
record.overrideRemoved = false;
|
|
223
|
+
if (step === "auth fixtures")
|
|
224
|
+
record.fixturesRemoved = false;
|
|
225
|
+
record.failure = `could not remove its ${step}: ${err?.message || String(err)}`;
|
|
226
|
+
}
|
|
227
|
+
return record;
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
function gitOutput(root, args) {
|
|
231
|
+
try {
|
|
232
|
+
return execFileSync("git", args, {
|
|
233
|
+
cwd: root,
|
|
234
|
+
encoding: "utf-8",
|
|
235
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
236
|
+
}).trim();
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/** Whether `root` is inside a git work tree. */
|
|
243
|
+
export function isGitRepository(root) {
|
|
244
|
+
return gitOutput(root, ["rev-parse", "--is-inside-work-tree"]) === "true";
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* The branch checked out at `root`, or null on a detached HEAD or outside a
|
|
248
|
+
* repository. A branch with no commits yet is still named.
|
|
249
|
+
*/
|
|
250
|
+
export function currentGitBranch(root) {
|
|
251
|
+
const branch = gitOutput(root, ["symbolic-ref", "--short", "-q", "HEAD"]);
|
|
252
|
+
return branch ? branch : null;
|
|
253
|
+
}
|
|
254
|
+
/** Whether `branch` is a local branch of the repository at `root`. */
|
|
255
|
+
export function gitBranchExists(root, branch) {
|
|
256
|
+
return gitOutput(root, ["show-ref", "--verify", "--quiet", `refs/heads/${branch}`]) !== null;
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=child-apps-local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-apps-local.js","sourceRoot":"","sources":["../../../src/lib/child-apps-local.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The first step of `primitive auth sessions create` (#3890): prove to the
|
|
3
|
+
* server that this is an original CLI login by presenting its refresh token
|
|
4
|
+
* at `POST /admin/api/cli/ci-request`, which only a live `cli` or
|
|
5
|
+
* `bootstrap` login holds. The answer is a 5-minute proof the CI-session
|
|
6
|
+
* request to `oauth-cli` must carry.
|
|
7
|
+
*
|
|
8
|
+
* The refresh token travels in the body, to the server that issued it, as a
|
|
9
|
+
* refresh sends it. Like `refresh-admin-credentials.ts` this calls the
|
|
10
|
+
* server directly and prints nothing; the command reports the outcome.
|
|
11
|
+
*/
|
|
12
|
+
export type CiProofResult = {
|
|
13
|
+
ok: true;
|
|
14
|
+
proof: string;
|
|
15
|
+
expiresAt?: string;
|
|
16
|
+
} | {
|
|
17
|
+
ok: false;
|
|
18
|
+
message: string;
|
|
19
|
+
code?: string;
|
|
20
|
+
};
|
|
21
|
+
/** Ask `serverUrl` for a CI request proof for the login `refreshToken` belongs to. */
|
|
22
|
+
export declare function requestCiProof(serverUrl: string, refreshToken: string, partition?: string): Promise<CiProofResult>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The first step of `primitive auth sessions create` (#3890): prove to the
|
|
3
|
+
* server that this is an original CLI login by presenting its refresh token
|
|
4
|
+
* at `POST /admin/api/cli/ci-request`, which only a live `cli` or
|
|
5
|
+
* `bootstrap` login holds. The answer is a 5-minute proof the CI-session
|
|
6
|
+
* request to `oauth-cli` must carry.
|
|
7
|
+
*
|
|
8
|
+
* The refresh token travels in the body, to the server that issued it, as a
|
|
9
|
+
* refresh sends it. Like `refresh-admin-credentials.ts` this calls the
|
|
10
|
+
* server directly and prints nothing; the command reports the outcome.
|
|
11
|
+
*/
|
|
12
|
+
import { fetchWithTLS } from "./fetch.js";
|
|
13
|
+
/** Ask `serverUrl` for a CI request proof for the login `refreshToken` belongs to. */
|
|
14
|
+
export async function requestCiProof(serverUrl, refreshToken, partition) {
|
|
15
|
+
const headers = { "Content-Type": "application/json" };
|
|
16
|
+
if (partition)
|
|
17
|
+
headers["X-Global-Admin-App-Id"] = partition;
|
|
18
|
+
let response;
|
|
19
|
+
try {
|
|
20
|
+
response = await fetchWithTLS(`${serverUrl}/admin/api/cli/ci-request`, {
|
|
21
|
+
method: "POST",
|
|
22
|
+
headers,
|
|
23
|
+
body: JSON.stringify({ refreshToken }),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
return {
|
|
28
|
+
ok: false,
|
|
29
|
+
message: `Could not reach ${serverUrl}: ${err?.message || String(err)}`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const text = await response.text();
|
|
33
|
+
let body = null;
|
|
34
|
+
try {
|
|
35
|
+
body = text ? JSON.parse(text) : null;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Not JSON: reported by status below.
|
|
39
|
+
}
|
|
40
|
+
if (response.ok && typeof body?.proof === "string") {
|
|
41
|
+
return { ok: true, proof: body.proof, expiresAt: body.expiresAt };
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
ok: false,
|
|
45
|
+
message: (typeof body?.error === "string" && body.error) ||
|
|
46
|
+
(typeof body?.message === "string" && body.message) ||
|
|
47
|
+
`The server refused the CI session request (${response.status}).`,
|
|
48
|
+
...(typeof body?.code === "string" ? { code: body.code } : {}),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=ci-session-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-session-request.js","sourceRoot":"","sources":["../../../src/lib/ci-session-request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM1C,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,YAAoB,EACpB,SAAkB;IAElB,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/E,IAAI,SAAS;QAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAC;IAC5D,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,SAAS,2BAA2B,EAAE;YACrE,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,mBAAmB,SAAS,KAAK,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;SACxE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,IAAI,GAAQ,IAAI,CAAC;IACrB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IACD,IAAI,QAAQ,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACpE,CAAC;IACD,OAAO;QACL,EAAE,EAAE,KAAK;QACT,OAAO,EACL,CAAC,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC;YAC/C,CAAC,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC;YACnD,8CAA8C,QAAQ,CAAC,MAAM,IAAI;QACnE,GAAG,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Shared write / `--check` / stale-cleanup machinery for the CLI codegen
|
|
3
3
|
* commands (issue #1442, sponsor decision #6).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* of `*.generated.ts` files and then either write them to disk or, under
|
|
5
|
+
* The codegen commands (`workflows codegen` #1442, `functions codegen`) render a
|
|
6
|
+
* set of `*.generated.ts` files and then either write them to disk or, under
|
|
7
7
|
* `--check`, compare the would-be output byte-for-byte against what's on disk.
|
|
8
8
|
* The write/compare/cleanup half is identical between them, so it lives here
|
|
9
9
|
* rather than being cloned into each generator.
|
|
@@ -18,7 +18,10 @@ export interface GeneratedFileMismatch {
|
|
|
18
18
|
reason: GeneratedFileMismatchReason;
|
|
19
19
|
}
|
|
20
20
|
export interface WriteOrCheckResult {
|
|
21
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Every file this run generates (or would generate under `--check`),
|
|
23
|
+
* including ones left untouched because their content already matched.
|
|
24
|
+
*/
|
|
22
25
|
writtenFiles: string[];
|
|
23
26
|
/** Stale `*.generated.ts` files deleted (empty under `--check`). */
|
|
24
27
|
deletedFiles: string[];
|
|
@@ -45,11 +48,10 @@ export interface WriteOrCheckOptions {
|
|
|
45
48
|
fullOwnership: boolean;
|
|
46
49
|
/**
|
|
47
50
|
* Suffix identifying generator-owned files (for orphan cleanup / stale
|
|
48
|
-
* detection). Defaults to `.generated.ts`.
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* reaches the other generator's files.
|
|
51
|
+
* detection). Defaults to `.generated.ts`. Each TS codegen writes one
|
|
52
|
+
* `<name>.generated.ts` file per entity into its OWN default output dir
|
|
53
|
+
* (`workflows/generated/` for `workflows codegen`), so suffix-based
|
|
54
|
+
* ownership never reaches another generator's files.
|
|
53
55
|
*/
|
|
54
56
|
generatedSuffix?: string;
|
|
55
57
|
/**
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Shared write / `--check` / stale-cleanup machinery for the CLI codegen
|
|
3
3
|
* commands (issue #1442, sponsor decision #6).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* of `*.generated.ts` files and then either write them to disk or, under
|
|
5
|
+
* The codegen commands (`workflows codegen` #1442, `functions codegen`) render a
|
|
6
|
+
* set of `*.generated.ts` files and then either write them to disk or, under
|
|
7
7
|
* `--check`, compare the would-be output byte-for-byte against what's on disk.
|
|
8
8
|
* The write/compare/cleanup half is identical between them, so it lives here
|
|
9
9
|
* rather than being cloned into each generator.
|
|
@@ -38,9 +38,15 @@ export async function writeOrCheckGeneratedFiles(options) {
|
|
|
38
38
|
}
|
|
39
39
|
await fsp.mkdir(outAbs, { recursive: true });
|
|
40
40
|
const deletedFiles = await cleanupGeneratedOutputs(outAbs, options.filesToWrite, options.fullOwnership, suffix, options.ownershipBanner);
|
|
41
|
+
// A file whose bytes already match is left alone, so its mtime survives and
|
|
42
|
+
// a build that runs codegen every time recompiles nothing (issue #4113). A
|
|
43
|
+
// file that cannot be read is written as before.
|
|
41
44
|
const writtenFiles = [];
|
|
42
45
|
for (const [filePath, content] of options.filesToWrite) {
|
|
43
|
-
await
|
|
46
|
+
const current = await readIfExists(filePath).catch(() => null);
|
|
47
|
+
if (current !== content) {
|
|
48
|
+
await fsp.writeFile(filePath, content, "utf-8");
|
|
49
|
+
}
|
|
44
50
|
writtenFiles.push(filePath);
|
|
45
51
|
}
|
|
46
52
|
writtenFiles.sort();
|
|
@@ -86,18 +92,7 @@ async function assertNoForeignBannerCollision(filesToWrite, foreignBanners, onCo
|
|
|
86
92
|
async function runCheck(outAbs, filesToWrite, fullOwnership, suffix, ownershipBanner) {
|
|
87
93
|
const mismatches = [];
|
|
88
94
|
for (const [filePath, expected] of filesToWrite) {
|
|
89
|
-
|
|
90
|
-
try {
|
|
91
|
-
actual = await fsp.readFile(filePath, "utf-8");
|
|
92
|
-
}
|
|
93
|
-
catch (err) {
|
|
94
|
-
if (err && err.code === "ENOENT") {
|
|
95
|
-
actual = null;
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
throw err;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
95
|
+
const actual = await readIfExists(filePath);
|
|
101
96
|
if (actual === null) {
|
|
102
97
|
mismatches.push({ filePath, reason: "missing" });
|
|
103
98
|
}
|
|
@@ -177,6 +172,17 @@ async function listOwnedGeneratedFiles(outDir, suffix, ownershipBanner) {
|
|
|
177
172
|
}
|
|
178
173
|
return owned;
|
|
179
174
|
}
|
|
175
|
+
/** A file's content, or null when it does not exist; other read errors throw. */
|
|
176
|
+
async function readIfExists(filePath) {
|
|
177
|
+
try {
|
|
178
|
+
return await fsp.readFile(filePath, "utf-8");
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
if (err && err.code === "ENOENT")
|
|
182
|
+
return null;
|
|
183
|
+
throw err;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
180
186
|
async function dirExists(dir) {
|
|
181
187
|
try {
|
|
182
188
|
const stat = await fsp.stat(dir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generatedFiles.js","sourceRoot":"","sources":["../../../../src/lib/codegen-shared/generatedFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"generatedFiles.js","sourceRoot":"","sources":["../../../../src/lib/codegen-shared/generatedFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,IAAI,CAAC;AAyFrC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAEjD,8DAA8D;AAC9D,SAAS,UAAU,CACjB,MAA8C;IAE9C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA4B;IAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,IAAI,wBAAwB,CAAC;IAEnE,2EAA2E;IAC3E,+EAA+E;IAC/E,uBAAuB;IACvB,MAAM,8BAA8B,CAClC,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,uBAAuB,EAC/B,OAAO,CAAC,wBAAwB,CACjC,CAAC;IAEF,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,MAAM,QAAQ,CACnB,MAAM,EACN,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,aAAa,EACrB,MAAM,EACN,OAAO,CAAC,eAAe,CACxB,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAChD,MAAM,EACN,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,aAAa,EACrB,MAAM,EACN,OAAO,CAAC,eAAe,CACxB,CAAC;IAEF,4EAA4E;IAC5E,2EAA2E;IAC3E,iDAAiD;IACjD,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IACD,YAAY,CAAC,IAAI,EAAE,CAAC;IACpB,YAAY,CAAC,IAAI,EAAE,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,8BAA8B,CAC3C,YAAiC,EACjC,cAAoC,EACpC,WAA4D;IAE5D,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC3D,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjC,SAAS,CAAC,qCAAqC;YACjD,CAAC;YACD,uEAAuE;YACvE,wEAAwE;YACxE,qEAAqE;YACrE,iEAAiE;YACjE,cAAc;YACd,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,WAAW;gBACf,CAAC,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;gBAC1C,CAAC,CAAC,IAAI,KAAK,CACP,gCAAgC,QAAQ,0BAA0B;oBAChE,gCAAgC,aAAa,CAAC,IAAI,EAAE,WAAW;oBAC/D,8CAA8C,CACjD,CAAC;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,MAAc,EACd,YAAiC,EACjC,aAAsB,EACtB,MAAc,EACd,eAA4C;IAE5C,MAAM,UAAU,GAA4B,EAAE,CAAC;IAE/C,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,yEAAyE;IACzE,wCAAwC;IACxC,IAAI,aAAa,IAAI,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAC9E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAC7C,YAAY,EAAE,EAAE;QAChB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,MAAc,EACd,YAAiC,EACjC,aAAsB,EACtB,MAAc,EACd,eAA4C;IAE5C,2EAA2E;IAC3E,0EAA0E;IAC1E,kEAAkE;IAClE,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,CAAC;IAE9B,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,uBAAuB,CACpC,MAAc,EACd,MAAc,EACd,eAA4C;IAE5C,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAS;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,uEAAuE;YACvE,uEAAuE;YACvE,oEAAoE;YACpE,IAAI,QAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAAE,SAAS;QACvE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iFAAiF;AACjF,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC9C,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `prettier --write` over a freshly generated file must leave it byte-for-byte
|
|
8
8
|
* unchanged.
|
|
9
9
|
*
|
|
10
|
-
* Why it matters: `
|
|
10
|
+
* Why it matters: `workflows codegen --check` / `functions codegen --check`
|
|
11
11
|
* compare the emission to what is on disk BYTE-FOR-BYTE
|
|
12
12
|
* (`codegen-shared/generatedFiles.ts`). A consumer whose pipeline runs codegen,
|
|
13
13
|
* then `prettier --write`, then `--check` in CI (the common shape) fails the
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `prettier --write` over a freshly generated file must leave it byte-for-byte
|
|
8
8
|
* unchanged.
|
|
9
9
|
*
|
|
10
|
-
* Why it matters: `
|
|
10
|
+
* Why it matters: `workflows codegen --check` / `functions codegen --check`
|
|
11
11
|
* compare the emission to what is on disk BYTE-FOR-BYTE
|
|
12
12
|
* (`codegen-shared/generatedFiles.ts`). A consumer whose pipeline runs codegen,
|
|
13
13
|
* then `prettier --write`, then `--check` in CI (the common shape) fails the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared source-directory resolution for the CLI codegen commands
|
|
3
|
-
* (`workflows codegen` #1442,
|
|
4
|
-
*
|
|
3
|
+
* (`workflows codegen` #1442 and, until #3189 retired it, `databases codegen`
|
|
4
|
+
* #814; issue #1510).
|
|
5
5
|
*
|
|
6
6
|
* Each of them reads a set of `*.toml` schemas out of one synced sub-directory
|
|
7
7
|
* (`workflows/`, `database-type-configs/`) and renders `*.generated.ts` beside
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared source-directory resolution for the CLI codegen commands
|
|
3
|
-
* (`workflows codegen` #1442,
|
|
4
|
-
*
|
|
3
|
+
* (`workflows codegen` #1442 and, until #3189 retired it, `databases codegen`
|
|
4
|
+
* #814; issue #1510).
|
|
5
5
|
*
|
|
6
6
|
* Each of them reads a set of `*.toml` schemas out of one synced sub-directory
|
|
7
7
|
* (`workflows/`, `database-type-configs/`) and renders `*.generated.ts` beside
|