primitive-admin 1.2.0-alpha.1 → 1.2.0-alpha.11
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 +105 -134
- 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 +11 -12
- 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 +221 -457
- 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/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 +360 -610
- package/dist/src/commands/sync.js +3151 -6697
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.js +3 -3
- 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 -551
- package/dist/src/lib/api-client.js +880 -814
- 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 -290
- 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 -203
- package/dist/src/lib/generated-config-surfaces.js +2270 -2014
- 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,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The sentence an `APP_NOT_PINNED` refusal gains when the refused app is one
|
|
3
|
+
* of the project's environments on the refused server (#4512): a login there
|
|
4
|
+
* pins every environment of the project on that server, so an environment
|
|
5
|
+
* added after the login, or one on an app the login does not cover, names
|
|
6
|
+
* the login that does.
|
|
7
|
+
*
|
|
8
|
+
* Pure: the refusal, the refused request's server and the committed
|
|
9
|
+
* environments are arguments.
|
|
10
|
+
*/
|
|
11
|
+
import { normalizeServerUrl } from "./channel.js";
|
|
12
|
+
/**
|
|
13
|
+
* The hint for a refusal, or null: only for `APP_NOT_PINNED` with reason
|
|
14
|
+
* `app` whose `appId` a committed environment on `serverUrl` names, the first
|
|
15
|
+
* such environment in config order.
|
|
16
|
+
*/
|
|
17
|
+
export function pinRefusalHint(refusal, serverUrl, environments) {
|
|
18
|
+
if (refusal.code !== "APP_NOT_PINNED" || !environments)
|
|
19
|
+
return null;
|
|
20
|
+
const details = refusal.details;
|
|
21
|
+
if (!details || typeof details !== "object" || Array.isArray(details))
|
|
22
|
+
return null;
|
|
23
|
+
const { reason, appId } = details;
|
|
24
|
+
if (reason !== "app" || typeof appId !== "string")
|
|
25
|
+
return null;
|
|
26
|
+
const server = normalizeServerUrl(serverUrl);
|
|
27
|
+
if (!server)
|
|
28
|
+
return null;
|
|
29
|
+
const env = Object.entries(environments).find(([, e]) => e.appId === appId && normalizeServerUrl(e.apiUrl) === server);
|
|
30
|
+
if (!env)
|
|
31
|
+
return null;
|
|
32
|
+
const name = env[0];
|
|
33
|
+
return `Your login does not cover the "${name}" environment's app. Run \`primitive -e ${name} login\` to sign in to every environment of this project on ${server}.`;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=pin-refusal-hint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pin-refusal-hint.js","sourceRoot":"","sources":["../../../src/lib/pin-refusal-hint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,OAA6C,EAC7C,SAAiB,EACjB,YAAsE;IAEtE,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IACpE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACnF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAkC,CAAC;IAC7D,IAAI,MAAM,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM,CACxE,CAAC;IACF,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,kCAAkC,IAAI,2CAA2C,IAAI,+DAA+D,MAAM,GAAG,CAAC;AACvK,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `primitiveEnv()` — Primitive environment configuration for a Vite app (#2873).
|
|
3
|
+
*
|
|
4
|
+
* A scaffolded app used to type its backend URL and app ID twice: once in
|
|
5
|
+
* `primitive/config.json` (which every `primitive` command reads) and again in
|
|
6
|
+
* `.env` / `.env.production`. This plugin removes the second copy. It resolves
|
|
7
|
+
* the selected Primitive environment at config time and `define`s the keys the
|
|
8
|
+
* app already reads:
|
|
9
|
+
*
|
|
10
|
+
* VITE_APP_ID VITE_API_URL VITE_WS_URL VITE_APP_NAME VITE_PRIMITIVE_ENV
|
|
11
|
+
*
|
|
12
|
+
* `src/config/envConfig.ts` is untouched — it keeps reading
|
|
13
|
+
* `import.meta.env.*`. The `.env` files shrink to app behavior
|
|
14
|
+
* (`VITE_OAUTH_REDIRECT_URI`, `VITE_ENABLE_AUTH_PROXY`, `VITE_LOG_LEVEL`).
|
|
15
|
+
*
|
|
16
|
+
* ── which environment ─────────────────────────────────────────────────────
|
|
17
|
+
* `--primitive-env` / `PRIMITIVE_ENV` → `primitive env use` (the per-machine
|
|
18
|
+
* selection in `.primitive/local.json`) → the committed `defaultEnvironment` →
|
|
19
|
+
* the sole environment. That order lives in ONE place: the CLI's resolver
|
|
20
|
+
* core, which this plugin imports directly — so the plugin a build runs and
|
|
21
|
+
* the `primitive` binary its scripts run are one installed package version.
|
|
22
|
+
* It ships as `primitive-admin/vite` (#4924); `primitive-app` still carries a
|
|
23
|
+
* generated copy of the core for its own copy of this plugin until phase 6 of
|
|
24
|
+
* the template fold-in (#4920) retires both.
|
|
25
|
+
*
|
|
26
|
+
* ── pairing a mode with an environment ────────────────────────────────────
|
|
27
|
+
* The vite mode and the Primitive environment are independent axes. An app
|
|
28
|
+
* whose `.env.<mode>` carries backend-coupled values can pin the combination
|
|
29
|
+
* by declaring `VITE_EXPECTED_PRIMITIVE_ENV` in that file; a run that resolves
|
|
30
|
+
* a different environment stops here, at config time — which covers `vite
|
|
31
|
+
* dev`, `vite build`, the deploy's build, and the headless vitest suite alike.
|
|
32
|
+
* Absent declaration: the axes stay fully independent.
|
|
33
|
+
*
|
|
34
|
+
* ── the escape hatch ──────────────────────────────────────────────────────
|
|
35
|
+
* An explicit `VITE_*` identity key in a `.env` file or the process
|
|
36
|
+
* environment still wins, with a warning naming it. That keeps pure-env CI
|
|
37
|
+
* builds and legacy scaffolds working — which is also why this plugin, not
|
|
38
|
+
* `vite.config.ts`, owns the resolution: an eager top-level `resolvePrimitiveEnv()`
|
|
39
|
+
* in the config file would throw before the escape hatch could apply.
|
|
40
|
+
*/
|
|
41
|
+
import type { Plugin } from "vite";
|
|
42
|
+
import { PrimitiveEnvError, type ResolvedPrimitiveEnv } from "./env-resolver-core.js";
|
|
43
|
+
export { PrimitiveEnvError };
|
|
44
|
+
export type { ResolvedPrimitiveEnv };
|
|
45
|
+
export interface ResolvePrimitiveEnvOptions {
|
|
46
|
+
/** Project root to resolve from. Defaults to `process.cwd()`. */
|
|
47
|
+
root?: string;
|
|
48
|
+
/** Environment variables to read. Defaults to `process.env`. */
|
|
49
|
+
env?: Record<string, string | undefined>;
|
|
50
|
+
/** An explicit environment name (e.g. from `--primitive-env`). */
|
|
51
|
+
primitiveEnv?: string | null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Resolves the Primitive environment for a project. A thin wrapper over the
|
|
55
|
+
* CLI's resolver core so callers outside this plugin (scripts, tests) get the
|
|
56
|
+
* same answer the plugin does.
|
|
57
|
+
*/
|
|
58
|
+
export declare function resolvePrimitiveEnv(options?: ResolvePrimitiveEnvOptions): ResolvedPrimitiveEnv;
|
|
59
|
+
export interface PrimitiveEnvOptions {
|
|
60
|
+
/**
|
|
61
|
+
* Override the environment to build against. Normally left unset — the
|
|
62
|
+
* selection comes from `primitive env use` or `PRIMITIVE_ENV`.
|
|
63
|
+
*/
|
|
64
|
+
primitiveEnv?: string;
|
|
65
|
+
/** Print the resolved tuple. Defaults to true. */
|
|
66
|
+
logResolved?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface PrimitiveEnvPlugin extends Plugin {
|
|
69
|
+
/**
|
|
70
|
+
* The app name after resolution and any `.env` override — what the dev-tools
|
|
71
|
+
* label should show. Undefined until the `config` hook has run, and when
|
|
72
|
+
* neither the environment nor a `VITE_APP_NAME` supplies one.
|
|
73
|
+
*/
|
|
74
|
+
appName(): string | undefined;
|
|
75
|
+
/** The resolved environment, or null when the escape hatch applied. */
|
|
76
|
+
resolved(): ResolvedPrimitiveEnv | null;
|
|
77
|
+
}
|
|
78
|
+
export declare function primitiveEnv(options?: PrimitiveEnvOptions): PrimitiveEnvPlugin;
|
|
79
|
+
/**
|
|
80
|
+
* The `.env` files Vite would load for this mode, in Vite's own precedence
|
|
81
|
+
* order, restricted to the keys this plugin cares about.
|
|
82
|
+
*
|
|
83
|
+
* Deliberately not Vite's `loadEnv`: `vite` is not a runtime dependency of
|
|
84
|
+
* this package, and reaching for it from a consumer's install layout is the
|
|
85
|
+
* kind of resolution that works on one package manager and not the next. The
|
|
86
|
+
* reader below is the same one `cf-deploy` uses for its strict check, so the
|
|
87
|
+
* build and the deploy can never disagree about what a `.env` file says.
|
|
88
|
+
*/
|
|
89
|
+
export declare function loadDotEnv(mode: string, root: string): Record<string, string>;
|
|
90
|
+
/**
|
|
91
|
+
* Parses one `.env` file. Missing file → no keys.
|
|
92
|
+
*
|
|
93
|
+
* Quoting follows what Vite's own loader does, because a value read
|
|
94
|
+
* differently here than there is exactly the kind of disagreement this plugin
|
|
95
|
+
* exists to remove: a quoted value ends at its closing quote — a `#` inside it
|
|
96
|
+
* is content, and anything after it on the line is a comment — while an
|
|
97
|
+
* unquoted value ends at the first inline comment.
|
|
98
|
+
*/
|
|
99
|
+
export declare function parseDotEnvFile(path: string): Record<string, string>;
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `primitiveEnv()` — Primitive environment configuration for a Vite app (#2873).
|
|
3
|
+
*
|
|
4
|
+
* A scaffolded app used to type its backend URL and app ID twice: once in
|
|
5
|
+
* `primitive/config.json` (which every `primitive` command reads) and again in
|
|
6
|
+
* `.env` / `.env.production`. This plugin removes the second copy. It resolves
|
|
7
|
+
* the selected Primitive environment at config time and `define`s the keys the
|
|
8
|
+
* app already reads:
|
|
9
|
+
*
|
|
10
|
+
* VITE_APP_ID VITE_API_URL VITE_WS_URL VITE_APP_NAME VITE_PRIMITIVE_ENV
|
|
11
|
+
*
|
|
12
|
+
* `src/config/envConfig.ts` is untouched — it keeps reading
|
|
13
|
+
* `import.meta.env.*`. The `.env` files shrink to app behavior
|
|
14
|
+
* (`VITE_OAUTH_REDIRECT_URI`, `VITE_ENABLE_AUTH_PROXY`, `VITE_LOG_LEVEL`).
|
|
15
|
+
*
|
|
16
|
+
* ── which environment ─────────────────────────────────────────────────────
|
|
17
|
+
* `--primitive-env` / `PRIMITIVE_ENV` → `primitive env use` (the per-machine
|
|
18
|
+
* selection in `.primitive/local.json`) → the committed `defaultEnvironment` →
|
|
19
|
+
* the sole environment. That order lives in ONE place: the CLI's resolver
|
|
20
|
+
* core, which this plugin imports directly — so the plugin a build runs and
|
|
21
|
+
* the `primitive` binary its scripts run are one installed package version.
|
|
22
|
+
* It ships as `primitive-admin/vite` (#4924); `primitive-app` still carries a
|
|
23
|
+
* generated copy of the core for its own copy of this plugin until phase 6 of
|
|
24
|
+
* the template fold-in (#4920) retires both.
|
|
25
|
+
*
|
|
26
|
+
* ── pairing a mode with an environment ────────────────────────────────────
|
|
27
|
+
* The vite mode and the Primitive environment are independent axes. An app
|
|
28
|
+
* whose `.env.<mode>` carries backend-coupled values can pin the combination
|
|
29
|
+
* by declaring `VITE_EXPECTED_PRIMITIVE_ENV` in that file; a run that resolves
|
|
30
|
+
* a different environment stops here, at config time — which covers `vite
|
|
31
|
+
* dev`, `vite build`, the deploy's build, and the headless vitest suite alike.
|
|
32
|
+
* Absent declaration: the axes stay fully independent.
|
|
33
|
+
*
|
|
34
|
+
* ── the escape hatch ──────────────────────────────────────────────────────
|
|
35
|
+
* An explicit `VITE_*` identity key in a `.env` file or the process
|
|
36
|
+
* environment still wins, with a warning naming it. That keeps pure-env CI
|
|
37
|
+
* builds and legacy scaffolds working — which is also why this plugin, not
|
|
38
|
+
* `vite.config.ts`, owns the resolution: an eager top-level `resolvePrimitiveEnv()`
|
|
39
|
+
* in the config file would throw before the escape hatch could apply.
|
|
40
|
+
*/
|
|
41
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
42
|
+
import { join, resolve } from "node:path";
|
|
43
|
+
import { PrimitiveEnvError, resolvePrimitiveEnv as resolveCore, } from "./env-resolver-core.js";
|
|
44
|
+
export { PrimitiveEnvError };
|
|
45
|
+
/** The keys the plugin owns. An explicit value for any of them wins. */
|
|
46
|
+
const IDENTITY_KEYS = [
|
|
47
|
+
"VITE_APP_ID",
|
|
48
|
+
"VITE_API_URL",
|
|
49
|
+
"VITE_WS_URL",
|
|
50
|
+
"VITE_APP_NAME",
|
|
51
|
+
];
|
|
52
|
+
/**
|
|
53
|
+
* The opt-in pairing declaration: which Primitive environment a vite mode is
|
|
54
|
+
* meant to build and test against.
|
|
55
|
+
*
|
|
56
|
+
* The two axes are independent by design — a production front end against the
|
|
57
|
+
* alpha backend is a real combination. But an app whose `.env.<mode>` carries
|
|
58
|
+
* backend-coupled values (per-environment resource IDs) has combinations that
|
|
59
|
+
* are simply wrong, and nothing used to say so: `PRIMITIVE_ENV=dev pnpm test
|
|
60
|
+
* --mode alpha` ran a live headless suite against the wrong app in silence
|
|
61
|
+
* (#2931). A mode that names its environment here gets that run stopped.
|
|
62
|
+
*/
|
|
63
|
+
const EXPECTED_ENV_KEY = "VITE_EXPECTED_PRIMITIVE_ENV";
|
|
64
|
+
/**
|
|
65
|
+
* Values this plugin put into `process.env` itself, so a later resolution (a
|
|
66
|
+
* dev-server restart, vitest merging configs) does not mistake its own work
|
|
67
|
+
* for a user override and warn about it.
|
|
68
|
+
*/
|
|
69
|
+
const selfPublished = new Map();
|
|
70
|
+
/**
|
|
71
|
+
* Publishes a resolved value into `process.env`.
|
|
72
|
+
*
|
|
73
|
+
* `define` alone is not enough: Vite materializes `import.meta.env` from the
|
|
74
|
+
* env it loads AFTER the config hooks run, and vitest builds the same object
|
|
75
|
+
* for the node environment rather than applying `import.meta.env.*` define
|
|
76
|
+
* replacements. A prefixed `process.env` entry is the one channel both honor,
|
|
77
|
+
* which is what makes `pnpm test` see the same identity as `pnpm build`.
|
|
78
|
+
*/
|
|
79
|
+
function publish(key, value) {
|
|
80
|
+
const ambient = process.env[key];
|
|
81
|
+
if (ambient !== undefined &&
|
|
82
|
+
ambient !== "" &&
|
|
83
|
+
selfPublished.get(key) !== ambient) {
|
|
84
|
+
return; // A real override — leave it alone.
|
|
85
|
+
}
|
|
86
|
+
process.env[key] = value;
|
|
87
|
+
selfPublished.set(key, value);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Resolves the Primitive environment for a project. A thin wrapper over the
|
|
91
|
+
* CLI's resolver core so callers outside this plugin (scripts, tests) get the
|
|
92
|
+
* same answer the plugin does.
|
|
93
|
+
*/
|
|
94
|
+
export function resolvePrimitiveEnv(options = {}) {
|
|
95
|
+
return resolveCore({
|
|
96
|
+
cwd: options.root,
|
|
97
|
+
env: options.env,
|
|
98
|
+
explicitEnvName: options.primitiveEnv ?? null,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function formatTuple(resolved, effective, overrides) {
|
|
102
|
+
const mark = (key) => overrides.includes(key) ? " (overridden)" : "";
|
|
103
|
+
const lines = [
|
|
104
|
+
`[primitive-env] Primitive environment: ${resolved.name} (selected: ${resolved.source})`,
|
|
105
|
+
`[primitive-env] apiUrl: ${effective.apiUrl}${mark("VITE_API_URL")}`,
|
|
106
|
+
`[primitive-env] wsUrl: ${effective.wsUrl}${mark("VITE_WS_URL")}`,
|
|
107
|
+
`[primitive-env] appId: ${effective.appId ?? "(unset)"}${mark("VITE_APP_ID")}`,
|
|
108
|
+
`[primitive-env] appName: ${effective.appName ?? "(unset)"}${mark("VITE_APP_NAME")}`,
|
|
109
|
+
`[primitive-env] config: ${resolved.configPath}`,
|
|
110
|
+
];
|
|
111
|
+
if (overrides.length > 0) {
|
|
112
|
+
lines.push(`[primitive-env] overridden by the environment: ${overrides.join(", ")}`);
|
|
113
|
+
}
|
|
114
|
+
return lines.join("\n");
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The directory Vite loads `.env` files from: `envDir` when the app sets one
|
|
118
|
+
* (relative paths resolve against the root, as Vite does), the root otherwise.
|
|
119
|
+
* `envDir: false` means Vite loads no env files at all — there is nothing to
|
|
120
|
+
* declare a pairing in.
|
|
121
|
+
*/
|
|
122
|
+
function envFileDir(config, root) {
|
|
123
|
+
const envDir = config?.envDir;
|
|
124
|
+
if (envDir === false)
|
|
125
|
+
return null;
|
|
126
|
+
if (typeof envDir === "string" && envDir !== "")
|
|
127
|
+
return resolve(root, envDir);
|
|
128
|
+
return root;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* The pairing declared for this mode, or null when there is none.
|
|
132
|
+
*
|
|
133
|
+
* A non-empty value in the process environment wins, as it does for every
|
|
134
|
+
* other key here — which is also how you state a cross-wired run on purpose:
|
|
135
|
+
* `VITE_EXPECTED_PRIMITIVE_ENV=dev PRIMITIVE_ENV=dev pnpm test --mode alpha`.
|
|
136
|
+
* Below that, Vite's own file precedence, highest first: the first file that
|
|
137
|
+
* mentions the key decides, so an empty value in `.env.<mode>` cancels a
|
|
138
|
+
* declaration inherited from the base `.env`.
|
|
139
|
+
*/
|
|
140
|
+
function findPairing(mode, envDir) {
|
|
141
|
+
const ambient = process.env[EXPECTED_ENV_KEY];
|
|
142
|
+
if (ambient !== undefined && ambient !== "") {
|
|
143
|
+
return { value: ambient, where: "the process environment" };
|
|
144
|
+
}
|
|
145
|
+
if (envDir === null)
|
|
146
|
+
return null;
|
|
147
|
+
for (const file of [
|
|
148
|
+
`.env.${mode}.local`,
|
|
149
|
+
`.env.${mode}`,
|
|
150
|
+
".env.local",
|
|
151
|
+
".env",
|
|
152
|
+
]) {
|
|
153
|
+
const value = parseDotEnvFile(join(envDir, file))[EXPECTED_ENV_KEY];
|
|
154
|
+
if (value !== undefined)
|
|
155
|
+
return { value, where: file };
|
|
156
|
+
}
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
function pairingMismatchMessage(mode, declaration, current) {
|
|
160
|
+
const resolvedLabel = current.local
|
|
161
|
+
? `"${current.name}" (machine-local, tree "${current.tree}")`
|
|
162
|
+
: `"${current.name}"`;
|
|
163
|
+
return [
|
|
164
|
+
`[primitive-env] Wrong pair: vite mode "${mode}" is declared to run against ` +
|
|
165
|
+
`Primitive environment "${declaration.value}", but ${resolvedLabel} resolved.`,
|
|
166
|
+
`[primitive-env] expected: ${declaration.value} (${EXPECTED_ENV_KEY} in ${declaration.where}; ` +
|
|
167
|
+
`a machine-local environment whose tree is ${declaration.value} also pairs)`,
|
|
168
|
+
`[primitive-env] resolved: ${current.name} (selected: ${current.source}` +
|
|
169
|
+
`${current.local ? `; machine-local, tree ${current.tree}` : ""})`,
|
|
170
|
+
`[primitive-env] config: ${current.configPath}`,
|
|
171
|
+
"",
|
|
172
|
+
`Run the pair you meant — PRIMITIVE_ENV=${declaration.value} <command> --mode ${mode}, ` +
|
|
173
|
+
`or 'primitive env use ${declaration.value}' — or change/remove ${EXPECTED_ENV_KEY} ` +
|
|
174
|
+
`in ${declaration.where}.`,
|
|
175
|
+
"",
|
|
176
|
+
`A mode declares this when its .env.${mode} carries values coupled to one backend, ` +
|
|
177
|
+
"so continuing would run this environment's identity with another's configuration.",
|
|
178
|
+
].join("\n");
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Stops the run when the mode's declaration names another environment. A
|
|
182
|
+
* machine-local environment (a child app) pairs with the mode that declares
|
|
183
|
+
* its tree, since it shares that tree's configuration.
|
|
184
|
+
*/
|
|
185
|
+
function assertPairing(mode, envDir, current) {
|
|
186
|
+
const declaration = findPairing(mode, envDir);
|
|
187
|
+
if (declaration &&
|
|
188
|
+
declaration.value !== "" &&
|
|
189
|
+
declaration.value !== current.name &&
|
|
190
|
+
!(current.local && declaration.value === current.tree)) {
|
|
191
|
+
throw new Error(pairingMismatchMessage(mode, declaration, current));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
export function primitiveEnv(options = {}) {
|
|
195
|
+
let resolved = null;
|
|
196
|
+
let effective = null;
|
|
197
|
+
let effectiveAppName;
|
|
198
|
+
let overriddenKeys = [];
|
|
199
|
+
let isServe = false;
|
|
200
|
+
/**
|
|
201
|
+
* What the pairing check below already looked at, so `configResolved` can
|
|
202
|
+
* tell whether Vite ended up loading `.env` files from somewhere else. Null
|
|
203
|
+
* when there was nothing to check (the identity hatch, or no config at all).
|
|
204
|
+
*/
|
|
205
|
+
let pairingChecked = null;
|
|
206
|
+
const plugin = {
|
|
207
|
+
name: "primitive-env",
|
|
208
|
+
// Run before other plugins can read `import.meta.env`.
|
|
209
|
+
enforce: "pre",
|
|
210
|
+
config(config, configEnv) {
|
|
211
|
+
isServe = configEnv?.command === "serve";
|
|
212
|
+
pairingChecked = null;
|
|
213
|
+
const root = config?.root ?? process.cwd();
|
|
214
|
+
const mode = configEnv?.mode ?? "development";
|
|
215
|
+
// Anything already set — in a `.env` file for this mode, or in the
|
|
216
|
+
// process environment — is an explicit choice we do not overwrite.
|
|
217
|
+
const fileEnv = loadDotEnv(mode, root);
|
|
218
|
+
const explicit = {};
|
|
219
|
+
for (const key of IDENTITY_KEYS) {
|
|
220
|
+
const ambient = process.env[key];
|
|
221
|
+
// Skip what a previous resolution in this process published.
|
|
222
|
+
const value = ambient !== undefined && selfPublished.get(key) !== ambient
|
|
223
|
+
? ambient
|
|
224
|
+
: fileEnv[key];
|
|
225
|
+
if (value !== undefined && value !== "")
|
|
226
|
+
explicit[key] = value;
|
|
227
|
+
}
|
|
228
|
+
let current;
|
|
229
|
+
try {
|
|
230
|
+
// Every environment names exactly one app, and the config is the only
|
|
231
|
+
// place that can say which (#3152). A `VITE_APP_ID` in the environment
|
|
232
|
+
// OVERRIDES the app the config names; it never supplies one the config
|
|
233
|
+
// left out — that would be the second source of app identity this
|
|
234
|
+
// project removed. The one escape below is a checkout with no config
|
|
235
|
+
// at all, where there is nothing to be a second source to.
|
|
236
|
+
current = resolveCore({
|
|
237
|
+
cwd: root,
|
|
238
|
+
explicitEnvName: options.primitiveEnv ?? null,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
if (err instanceof PrimitiveEnvError &&
|
|
243
|
+
err.kind === "missing-config" &&
|
|
244
|
+
explicit.VITE_APP_ID &&
|
|
245
|
+
explicit.VITE_API_URL) {
|
|
246
|
+
// Pure-env build (CI, or a legacy scaffold): nothing to resolve, and
|
|
247
|
+
// nothing missing. Say so rather than failing or silently no-opping.
|
|
248
|
+
console.warn("[primitive-env] No primitive/config.json found; using VITE_APP_ID / VITE_API_URL " +
|
|
249
|
+
"from the environment. Run 'primitive init' to make the project the source of truth.");
|
|
250
|
+
effectiveAppName = explicit.VITE_APP_NAME;
|
|
251
|
+
return {};
|
|
252
|
+
}
|
|
253
|
+
throw err;
|
|
254
|
+
}
|
|
255
|
+
// Before anything is defined or published: does this run pair the mode
|
|
256
|
+
// with the environment the app says it should? Skipped only for a
|
|
257
|
+
// complete pure-env identity — the same both-keys condition the
|
|
258
|
+
// missing-config path above uses. Overriding just one key leaves the
|
|
259
|
+
// other half coming from the resolved environment, which is the
|
|
260
|
+
// cross-wire itself rather than an escape from it.
|
|
261
|
+
if (!(explicit.VITE_APP_ID && explicit.VITE_API_URL)) {
|
|
262
|
+
const dir = envFileDir(config, root);
|
|
263
|
+
assertPairing(mode, dir, current);
|
|
264
|
+
pairingChecked = { root, mode, dir };
|
|
265
|
+
}
|
|
266
|
+
resolved = current;
|
|
267
|
+
effectiveAppName = explicit.VITE_APP_NAME ?? current.appName;
|
|
268
|
+
const values = {
|
|
269
|
+
VITE_APP_ID: current.appId,
|
|
270
|
+
VITE_API_URL: current.apiUrl,
|
|
271
|
+
VITE_WS_URL: current.wsUrl,
|
|
272
|
+
VITE_APP_NAME: current.appName,
|
|
273
|
+
};
|
|
274
|
+
const define = {
|
|
275
|
+
"import.meta.env.VITE_PRIMITIVE_ENV": JSON.stringify(current.name),
|
|
276
|
+
};
|
|
277
|
+
const overridden = [];
|
|
278
|
+
for (const key of IDENTITY_KEYS) {
|
|
279
|
+
if (explicit[key] !== undefined) {
|
|
280
|
+
overridden.push(key);
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
const value = values[key];
|
|
284
|
+
if (value !== undefined) {
|
|
285
|
+
define[`import.meta.env.${key}`] = JSON.stringify(value);
|
|
286
|
+
publish(key, value);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
publish("VITE_PRIMITIVE_ENV", current.name);
|
|
290
|
+
overriddenKeys = overridden;
|
|
291
|
+
// What the app will actually use — an override wins, so it is what both
|
|
292
|
+
// the banner below and the browser console line have to report.
|
|
293
|
+
effective = {
|
|
294
|
+
apiUrl: explicit.VITE_API_URL ?? current.apiUrl,
|
|
295
|
+
wsUrl: explicit.VITE_WS_URL ?? current.wsUrl,
|
|
296
|
+
appId: explicit.VITE_APP_ID ?? current.appId,
|
|
297
|
+
appName: effectiveAppName,
|
|
298
|
+
};
|
|
299
|
+
if (options.logResolved !== false) {
|
|
300
|
+
console.log(formatTuple(current, effective, overridden));
|
|
301
|
+
}
|
|
302
|
+
if (overridden.length > 0) {
|
|
303
|
+
console.warn(`[primitive-env] Overridden by an explicit value in .env or the shell: ${overridden.join(", ")}. Remove it to use primitive/config.json (deploys reject these outright).`);
|
|
304
|
+
}
|
|
305
|
+
return { define };
|
|
306
|
+
},
|
|
307
|
+
/**
|
|
308
|
+
* The same question again, against the answer Vite settled on.
|
|
309
|
+
*
|
|
310
|
+
* `config` hooks run `enforce: "pre"` first and Vite merges what every
|
|
311
|
+
* plugin returns before it resolves `envDir` and loads the `.env` files —
|
|
312
|
+
* so a plugin ordered after this one can move the directory the
|
|
313
|
+
* declaration lives in, and the check above would have read the wrong
|
|
314
|
+
* place (silently finding nothing, which is the failure mode this whole
|
|
315
|
+
* guard exists to remove). Re-reading here costs one `existsSync` per
|
|
316
|
+
* file when nothing moved.
|
|
317
|
+
*/
|
|
318
|
+
configResolved(config) {
|
|
319
|
+
if (!pairingChecked || !resolved)
|
|
320
|
+
return;
|
|
321
|
+
const dir = envFileDir(config, pairingChecked.root);
|
|
322
|
+
const mode = config?.mode ?? pairingChecked.mode;
|
|
323
|
+
if (dir === pairingChecked.dir && mode === pairingChecked.mode)
|
|
324
|
+
return;
|
|
325
|
+
assertPairing(mode, dir, resolved);
|
|
326
|
+
pairingChecked = { root: pairingChecked.root, mode, dir };
|
|
327
|
+
},
|
|
328
|
+
// Dev builds surface the pair at runtime too, so a browser tab can never
|
|
329
|
+
// leave you guessing which backend it is talking to. These are the values
|
|
330
|
+
// the app is really using, overrides included — a line reporting the
|
|
331
|
+
// config's values while the app talked to something else would be worse
|
|
332
|
+
// than no line at all.
|
|
333
|
+
transformIndexHtml() {
|
|
334
|
+
if (!isServe || !resolved || !effective)
|
|
335
|
+
return [];
|
|
336
|
+
const message = `%c[primitive] env=${resolved.name} api=${effective.apiUrl} ` +
|
|
337
|
+
`app=${effective.appId ?? "(unset)"} (${resolved.configPath})` +
|
|
338
|
+
(overriddenKeys.length > 0
|
|
339
|
+
? ` overridden: ${overriddenKeys.join(", ")}`
|
|
340
|
+
: "");
|
|
341
|
+
return [
|
|
342
|
+
{
|
|
343
|
+
tag: "script",
|
|
344
|
+
injectTo: "head",
|
|
345
|
+
children: `console.info(${JSON.stringify(message)}, "color:#888");`,
|
|
346
|
+
},
|
|
347
|
+
];
|
|
348
|
+
},
|
|
349
|
+
appName() {
|
|
350
|
+
return effectiveAppName;
|
|
351
|
+
},
|
|
352
|
+
resolved() {
|
|
353
|
+
return resolved;
|
|
354
|
+
},
|
|
355
|
+
};
|
|
356
|
+
return plugin;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* The `.env` files Vite would load for this mode, in Vite's own precedence
|
|
360
|
+
* order, restricted to the keys this plugin cares about.
|
|
361
|
+
*
|
|
362
|
+
* Deliberately not Vite's `loadEnv`: `vite` is not a runtime dependency of
|
|
363
|
+
* this package, and reaching for it from a consumer's install layout is the
|
|
364
|
+
* kind of resolution that works on one package manager and not the next. The
|
|
365
|
+
* reader below is the same one `cf-deploy` uses for its strict check, so the
|
|
366
|
+
* build and the deploy can never disagree about what a `.env` file says.
|
|
367
|
+
*/
|
|
368
|
+
export function loadDotEnv(mode, root) {
|
|
369
|
+
const files = [".env", ".env.local", `.env.${mode}`, `.env.${mode}.local`];
|
|
370
|
+
const out = {};
|
|
371
|
+
for (const file of files) {
|
|
372
|
+
Object.assign(out, parseDotEnvFile(join(root, file)));
|
|
373
|
+
}
|
|
374
|
+
return out;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Parses one `.env` file. Missing file → no keys.
|
|
378
|
+
*
|
|
379
|
+
* Quoting follows what Vite's own loader does, because a value read
|
|
380
|
+
* differently here than there is exactly the kind of disagreement this plugin
|
|
381
|
+
* exists to remove: a quoted value ends at its closing quote — a `#` inside it
|
|
382
|
+
* is content, and anything after it on the line is a comment — while an
|
|
383
|
+
* unquoted value ends at the first inline comment.
|
|
384
|
+
*/
|
|
385
|
+
export function parseDotEnvFile(path) {
|
|
386
|
+
if (!existsSync(path))
|
|
387
|
+
return {};
|
|
388
|
+
const out = {};
|
|
389
|
+
for (const line of readFileSync(path, "utf-8").split(/\r?\n/)) {
|
|
390
|
+
const trimmed = line.trim();
|
|
391
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
392
|
+
continue;
|
|
393
|
+
const match = trimmed.match(/^(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/);
|
|
394
|
+
if (!match)
|
|
395
|
+
continue;
|
|
396
|
+
const value = match[2].trim();
|
|
397
|
+
const quote = value[0];
|
|
398
|
+
const close = quote === '"' || quote === "'" || quote === "`"
|
|
399
|
+
? value.indexOf(quote, 1)
|
|
400
|
+
: -1;
|
|
401
|
+
out[match[1]] =
|
|
402
|
+
close === -1
|
|
403
|
+
? value.replace(/\s+#.*$/, "").trim()
|
|
404
|
+
: value.slice(1, close);
|
|
405
|
+
}
|
|
406
|
+
return out;
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=primitive-env-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-env-plugin.js","sourceRoot":"","sources":["../../../src/lib/primitive-env-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,13 @@ export interface ProjectConfig {
|
|
|
65
65
|
* PRIMITIVE_ENV is unset.
|
|
66
66
|
*/
|
|
67
67
|
defaultEnvironment?: string;
|
|
68
|
+
/**
|
|
69
|
+
* Directories outside the config tree that server function code may import
|
|
70
|
+
* from, relative to the project root (#4502). Their files are bundled and
|
|
71
|
+
* typechecked at push and never stored with the function. `..` may climb as
|
|
72
|
+
* far as the git repository root around the project.
|
|
73
|
+
*/
|
|
74
|
+
functionSources?: string[];
|
|
68
75
|
/**
|
|
69
76
|
* Named environments keyed by short name (e.g. "dev", "prod", "staging").
|
|
70
77
|
*/
|
|
@@ -20,6 +20,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
|
20
20
|
import { dirname } from "path";
|
|
21
21
|
import { detectInstall, installCommand, upgradeCommand, PRIMITIVE_CLI_PACKAGE, } from "./package-manager.js";
|
|
22
22
|
import { findPrimitiveConfigPath, missingAppIdMessage, projectRootForConfigPath, PROJECT_CONFIG_DISPLAY_NAME, } from "./env-resolver-core.js";
|
|
23
|
+
import { FunctionSourcesShapeError, validateFunctionSourcesShape, } from "./function-source-roots.js";
|
|
23
24
|
import { normalizeIosAppId, validateIosAppId } from "./ios-app-id.js";
|
|
24
25
|
import { validateServerUrl } from "./server-url.js";
|
|
25
26
|
import { normalizeWebUrl, validateWebUrl } from "./web-url.js";
|
|
@@ -192,7 +193,27 @@ export function validateProjectConfig(raw, sourcePath) {
|
|
|
192
193
|
}
|
|
193
194
|
defaultEnvironment = obj.defaultEnvironment || undefined;
|
|
194
195
|
}
|
|
195
|
-
|
|
196
|
+
// Shape only; whether each directory exists and stays inside the
|
|
197
|
+
// repository is a fact about the disk, answered at push (#4502).
|
|
198
|
+
let functionSources;
|
|
199
|
+
if (obj.functionSources !== undefined) {
|
|
200
|
+
try {
|
|
201
|
+
functionSources = validateFunctionSourcesShape(obj.functionSources);
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
if (!(err instanceof FunctionSourcesShapeError))
|
|
205
|
+
throw err;
|
|
206
|
+
throw new ProjectConfigError(`${err.message} (in ${PROJECT_CONFIG_DISPLAY_NAME})`, sourcePath);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// The key is carried only when declared, so a file without it saves byte
|
|
210
|
+
// for byte as it loaded.
|
|
211
|
+
return {
|
|
212
|
+
version,
|
|
213
|
+
defaultEnvironment,
|
|
214
|
+
...(functionSources !== undefined ? { functionSources } : {}),
|
|
215
|
+
environments,
|
|
216
|
+
};
|
|
196
217
|
}
|
|
197
218
|
/**
|
|
198
219
|
* Loads and validates the project config from a specific file path.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../../src/lib/project-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAiB,MAAM,MAAM,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D;;;;GAIG;AACH,SAAS,iBAAiB;IACxB,OAAO,CACL,cAAc,CAAC,aAAa,EAAE,EAAE,qBAAqB,EAAE,QAAQ,CAAC;QAChE,cAAc,CAAC,qBAAqB,CAAC,CACtC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC;;;;;GAKG;AACH,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../../src/lib/project-config.ts"],"names":[],"mappings":"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"}
|