@hexclave/shared 1.0.40 → 1.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin-interface-Y9EZqwD6.d.ts +379 -0
- package/dist/admin-interface-Y9EZqwD6.d.ts.map +1 -0
- package/dist/admin-metrics-bsOkw4YQ.d.ts +807 -0
- package/dist/admin-metrics-bsOkw4YQ.d.ts.map +1 -0
- package/dist/ai/image-limits.d.ts.map +1 -1
- package/dist/ai/image-limits.js +6 -7
- package/dist/ai/image-limits.js.map +1 -1
- package/dist/ai/llms/llms.d.ts.map +1 -1
- package/dist/ai/llms/llms.js +2 -4
- package/dist/ai/llms/llms.js.map +1 -1
- package/dist/ai/unified-prompts/reminders.js +3 -6
- package/dist/ai/unified-prompts/reminders.js.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +3 -5
- package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.js +3 -6
- package/dist/ai/unified-prompts/skill-site-prompt-parts/brain.js.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.js +3 -6
- package/dist/ai/unified-prompts/skill-site-prompt-parts/cli-help.js.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.js +3 -6
- package/dist/ai/unified-prompts/skill-site-prompt-parts/config-docs.js.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js +3 -6
- package/dist/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js +3 -6
- package/dist/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.js +5 -6
- package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-index.js.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-json.generated.js +1 -2
- package/dist/ai/unified-prompts/skill-site-prompt-parts/docs-json.generated.js.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js +3 -6
- package/dist/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js +3 -6
- package/dist/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt.js +2 -4
- package/dist/ai/unified-prompts/skill-site-prompt.js.map +1 -1
- package/dist/analytics-IjkAsefy.d.ts +14 -0
- package/dist/analytics-IjkAsefy.d.ts.map +1 -0
- package/dist/apps/apps-config.d.ts.map +1 -1
- package/dist/apps/apps-config.js +2 -3
- package/dist/apps/apps-config.js.map +1 -1
- package/dist/apps/apps-ui.d.ts +1 -2
- package/dist/apps/apps-ui.d.ts.map +1 -1
- package/dist/apps/apps-ui.js +4 -5
- package/dist/apps/apps-ui.js.map +1 -1
- package/dist/client-interface-iIw4nU5k.d.ts +447 -0
- package/dist/client-interface-iIw4nU5k.d.ts.map +1 -0
- package/dist/config/db-sync-mappings.js +2 -3
- package/dist/config/db-sync-mappings.js.map +1 -1
- package/dist/config/format.d.ts +2 -61
- package/dist/config/format.js +2 -192
- package/dist/config/format.js.map +1 -1
- package/dist/config/migrate-catalogs-to-product-lines.d.ts.map +1 -1
- package/dist/config/migrate-catalogs-to-product-lines.js +2 -196
- package/dist/config/migrate-catalogs-to-product-lines.js.map +1 -1
- package/dist/config/schema-fuzzer.test.js +18 -172
- package/dist/config/schema-fuzzer.test.js.map +1 -1
- package/dist/config/schema.d.ts +2 -2328
- package/dist/config/schema.js +6 -351
- package/dist/config/schema.js.map +1 -1
- package/dist/config-authoring.d.ts +1 -1
- package/dist/config-authoring.d.ts.map +1 -1
- package/dist/config-authoring.js +2 -3
- package/dist/config-authoring.js.map +1 -1
- package/dist/config-authoring.test.js +1 -3
- package/dist/config-authoring.test.js.map +1 -1
- package/dist/config-eval.d.ts.map +1 -1
- package/dist/config-eval.js +4 -46
- package/dist/config-eval.js.map +1 -1
- package/dist/config-rendering.d.ts.map +1 -1
- package/dist/config-rendering.js +2 -48
- package/dist/config-rendering.js.map +1 -1
- package/dist/connected-accounts-D5CKe50A.d.ts +67 -0
- package/dist/connected-accounts-D5CKe50A.d.ts.map +1 -0
- package/dist/contact-channels-DW8yQxlc.d.ts +180 -0
- package/dist/contact-channels-DW8yQxlc.d.ts.map +1 -0
- package/dist/country-codes-CRWDroBE.d.ts +11 -0
- package/dist/country-codes-CRWDroBE.d.ts.map +1 -0
- package/dist/crud-CqmEW9s6.d.ts +98 -0
- package/dist/crud-CqmEW9s6.d.ts.map +1 -0
- package/dist/crud.d.ts +2 -98
- package/dist/crud.js +3 -71
- package/dist/crud.js.map +1 -1
- package/dist/currency-constants-Cq_q8twn.d.ts +45 -0
- package/dist/currency-constants-Cq_q8twn.d.ts.map +1 -0
- package/dist/current-user-BBoN3hsn.d.ts +284 -0
- package/dist/current-user-BBoN3hsn.d.ts.map +1 -0
- package/dist/dates-B6ne9iOR.d.ts +23 -0
- package/dist/dates-B6ne9iOR.d.ts.map +1 -0
- package/dist/email-outbox-B1wmVPRG.d.ts +1464 -0
- package/dist/{interface/crud/email-outbox.d.ts.map → email-outbox-B1wmVPRG.d.ts.map} +1 -1
- package/dist/emails-Ba4yEaCS.d.ts +40 -0
- package/dist/emails-Ba4yEaCS.d.ts.map +1 -0
- package/dist/errors-Cl-RUyed.d.ts +238 -0
- package/dist/errors-Cl-RUyed.d.ts.map +1 -0
- package/dist/esm/ai/image-limits.d.ts.map +1 -1
- package/dist/esm/ai/image-limits.js +5 -5
- package/dist/esm/ai/image-limits.js.map +1 -1
- package/dist/esm/ai/llms/llms.d.ts +1 -1
- package/dist/esm/ai/llms/llms.d.ts.map +1 -1
- package/dist/esm/ai/llms/llms.js +1 -2
- package/dist/esm/ai/llms/llms.js.map +1 -1
- package/dist/esm/ai/unified-prompts/reminders.js +1 -2
- package/dist/esm/ai/unified-prompts/reminders.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +26 -28
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.js +1 -2
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/brain.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.js +1 -2
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/cli-help.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.js +1 -2
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/config-docs.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js +1 -2
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/custom-components-instructions.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js +1 -2
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/dashboard-instructions.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.d.ts.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.js +2 -3
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-index.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-json.generated.js +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/docs-json.generated.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js +1 -2
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/openapi-specs.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js +1 -2
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/sdk-interface-source.js.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt.js +1 -2
- package/dist/esm/ai/unified-prompts/skill-site-prompt.js.map +1 -1
- package/dist/esm/apps/apps-config.d.ts.map +1 -1
- package/dist/esm/apps/apps-config.js +1 -1
- package/dist/esm/apps/apps-config.js.map +1 -1
- package/dist/esm/apps/apps-ui.d.ts +2 -3
- package/dist/esm/apps/apps-ui.d.ts.map +1 -1
- package/dist/esm/apps/apps-ui.js +2 -3
- package/dist/esm/apps/apps-ui.js.map +1 -1
- package/dist/esm/config/db-sync-mappings.js +1 -1
- package/dist/esm/config/db-sync-mappings.js.map +1 -1
- package/dist/esm/config/format.d.ts +1 -1
- package/dist/esm/config/format.d.ts.map +1 -1
- package/dist/esm/config/format.js +1 -190
- package/dist/esm/config/format.js.map +1 -1
- package/dist/esm/config/migrate-catalogs-to-product-lines.d.ts.map +1 -1
- package/dist/esm/config/migrate-catalogs-to-product-lines.js +1 -194
- package/dist/esm/config/migrate-catalogs-to-product-lines.js.map +1 -1
- package/dist/esm/config/schema-fuzzer.test.js +20 -173
- package/dist/esm/config/schema-fuzzer.test.js.map +1 -1
- package/dist/esm/config/schema.d.ts +81 -82
- package/dist/esm/config/schema.d.ts.map +1 -1
- package/dist/esm/config/schema.js +2 -347
- package/dist/esm/config/schema.js.map +1 -1
- package/dist/esm/config-authoring.d.ts +1 -1
- package/dist/esm/config-authoring.d.ts.map +1 -1
- package/dist/esm/config-authoring.js +1 -1
- package/dist/esm/config-authoring.js.map +1 -1
- package/dist/esm/config-authoring.test.js +2 -3
- package/dist/esm/config-authoring.test.js.map +1 -1
- package/dist/esm/config-eval.d.ts +1 -1
- package/dist/esm/config-eval.d.ts.map +1 -1
- package/dist/esm/config-eval.js +1 -43
- package/dist/esm/config-eval.js.map +1 -1
- package/dist/esm/config-rendering.d.ts.map +1 -1
- package/dist/esm/config-rendering.js +1 -46
- package/dist/esm/config-rendering.js.map +1 -1
- package/dist/esm/crud.d.ts +1 -1
- package/dist/esm/crud.d.ts.map +1 -1
- package/dist/esm/crud.js +2 -69
- package/dist/esm/crud.js.map +1 -1
- package/dist/esm/helpers/emails.js +1 -2
- package/dist/esm/helpers/emails.js.map +1 -1
- package/dist/esm/helpers/init-prompt.d.ts.map +1 -1
- package/dist/esm/helpers/init-prompt.js +1 -2
- package/dist/esm/helpers/init-prompt.js.map +1 -1
- package/dist/esm/helpers/password.d.ts +1 -1
- package/dist/esm/helpers/password.d.ts.map +1 -1
- package/dist/esm/helpers/password.js +1 -2
- package/dist/esm/helpers/password.js.map +1 -1
- package/dist/esm/helpers/production-mode.d.ts +1 -1
- package/dist/esm/helpers/production-mode.d.ts.map +1 -1
- package/dist/esm/helpers/production-mode.js +1 -2
- package/dist/esm/helpers/production-mode.js.map +1 -1
- package/dist/esm/helpers/support-sla.d.ts.map +1 -1
- package/dist/esm/helpers/support-sla.js +1 -1
- package/dist/esm/helpers/support-sla.js.map +1 -1
- package/dist/esm/helpers/support-sla.test.js +2 -3
- package/dist/esm/helpers/support-sla.test.js.map +1 -1
- package/dist/esm/helpers/vault/client-side.d.ts.map +1 -1
- package/dist/esm/helpers/vault/client-side.js +1 -20
- package/dist/esm/helpers/vault/client-side.js.map +1 -1
- package/dist/esm/helpers/vault/server-side.js +1 -2
- package/dist/esm/helpers/vault/server-side.js.map +1 -1
- package/dist/esm/hooks/use-async-callback.d.ts.map +1 -1
- package/dist/esm/hooks/use-async-callback.js +1 -2
- package/dist/esm/hooks/use-async-callback.js.map +1 -1
- package/dist/esm/hooks/use-async-external-store.d.ts +1 -1
- package/dist/esm/hooks/use-async-external-store.d.ts.map +1 -1
- package/dist/esm/hooks/use-async-external-store.js +1 -2
- package/dist/esm/hooks/use-async-external-store.js.map +1 -1
- package/dist/esm/hooks/use-hash.js +1 -2
- package/dist/esm/hooks/use-hash.js.map +1 -1
- package/dist/esm/hooks/use-hover.d.ts.map +1 -1
- package/dist/esm/hooks/use-hover.js +1 -2
- package/dist/esm/hooks/use-hover.js.map +1 -1
- package/dist/esm/hooks/use-strict-memo.d.ts.map +1 -1
- package/dist/esm/hooks/use-strict-memo.js +1 -70
- package/dist/esm/hooks/use-strict-memo.js.map +1 -1
- package/dist/esm/index.d.ts +4 -4
- package/dist/esm/index.js +1 -2
- package/dist/esm/interface/admin-interface.d.ts +19 -19
- package/dist/esm/interface/admin-interface.d.ts.map +1 -1
- package/dist/esm/interface/admin-interface.js +2 -3
- package/dist/esm/interface/admin-interface.js.map +1 -1
- package/dist/esm/interface/admin-metrics.d.ts +2 -2
- package/dist/esm/interface/admin-metrics.d.ts.map +1 -1
- package/dist/esm/interface/admin-metrics.js +1 -2
- package/dist/esm/interface/admin-metrics.js.map +1 -1
- package/dist/esm/interface/client-interface.d.ts +22 -22
- package/dist/esm/interface/client-interface.d.ts.map +1 -1
- package/dist/esm/interface/client-interface.js +32 -16
- package/dist/esm/interface/client-interface.js.map +1 -1
- package/dist/esm/interface/client-interface.test.js +84 -13
- package/dist/esm/interface/client-interface.test.js.map +1 -1
- package/dist/esm/interface/conversations.d.ts +11 -11
- package/dist/esm/interface/conversations.d.ts.map +1 -1
- package/dist/esm/interface/conversations.js +1 -2
- package/dist/esm/interface/conversations.js.map +1 -1
- package/dist/esm/interface/crud/analytics.d.ts.map +1 -1
- package/dist/esm/interface/crud/analytics.js +1 -1
- package/dist/esm/interface/crud/connected-accounts.d.ts +15 -17
- package/dist/esm/interface/crud/connected-accounts.d.ts.map +1 -1
- package/dist/esm/interface/crud/connected-accounts.js +1 -2
- package/dist/esm/interface/crud/connected-accounts.js.map +1 -1
- package/dist/esm/interface/crud/contact-channels.d.ts +24 -26
- package/dist/esm/interface/crud/contact-channels.d.ts.map +1 -1
- package/dist/esm/interface/crud/contact-channels.js +1 -2
- package/dist/esm/interface/crud/contact-channels.js.map +1 -1
- package/dist/esm/interface/crud/current-user.d.ts +11 -13
- package/dist/esm/interface/crud/current-user.d.ts.map +1 -1
- package/dist/esm/interface/crud/current-user.js +25 -29
- package/dist/esm/interface/crud/current-user.js.map +1 -1
- package/dist/esm/interface/crud/email-outbox.d.ts +10 -12
- package/dist/esm/interface/crud/email-outbox.d.ts.map +1 -1
- package/dist/esm/interface/crud/email-outbox.js +1 -2
- package/dist/esm/interface/crud/email-outbox.js.map +1 -1
- package/dist/esm/interface/crud/email-templates.d.ts +16 -18
- package/dist/esm/interface/crud/email-templates.d.ts.map +1 -1
- package/dist/esm/interface/crud/email-templates.js +1 -2
- package/dist/esm/interface/crud/email-templates.js.map +1 -1
- package/dist/esm/interface/crud/emails.d.ts +6 -8
- package/dist/esm/interface/crud/emails.d.ts.map +1 -1
- package/dist/esm/interface/crud/emails.js +1 -2
- package/dist/esm/interface/crud/emails.js.map +1 -1
- package/dist/esm/interface/crud/internal-api-keys.d.ts +16 -18
- package/dist/esm/interface/crud/internal-api-keys.d.ts.map +1 -1
- package/dist/esm/interface/crud/internal-api-keys.js +1 -2
- package/dist/esm/interface/crud/internal-api-keys.js.map +1 -1
- package/dist/esm/interface/crud/invoices.d.ts.map +1 -1
- package/dist/esm/interface/crud/invoices.js +1 -2
- package/dist/esm/interface/crud/invoices.js.map +1 -1
- package/dist/esm/interface/crud/items.d.ts +6 -8
- package/dist/esm/interface/crud/items.d.ts.map +1 -1
- package/dist/esm/interface/crud/items.js +12 -16
- package/dist/esm/interface/crud/items.js.map +1 -1
- package/dist/esm/interface/crud/notification-preferences.d.ts +6 -8
- package/dist/esm/interface/crud/notification-preferences.d.ts.map +1 -1
- package/dist/esm/interface/crud/notification-preferences.js +8 -12
- package/dist/esm/interface/crud/notification-preferences.js.map +1 -1
- package/dist/esm/interface/crud/oauth-providers.d.ts +24 -26
- package/dist/esm/interface/crud/oauth-providers.d.ts.map +1 -1
- package/dist/esm/interface/crud/oauth-providers.js +1 -2
- package/dist/esm/interface/crud/oauth-providers.js.map +1 -1
- package/dist/esm/interface/crud/products.d.ts +16 -17
- package/dist/esm/interface/crud/products.d.ts.map +1 -1
- package/dist/esm/interface/crud/products.js +3 -2
- package/dist/esm/interface/crud/products.js.map +1 -1
- package/dist/esm/interface/crud/project-api-keys.d.ts +3 -4
- package/dist/esm/interface/crud/project-api-keys.d.ts.map +1 -1
- package/dist/esm/interface/crud/project-api-keys.js +1 -2
- package/dist/esm/interface/crud/project-api-keys.js.map +1 -1
- package/dist/esm/interface/crud/project-permissions.d.ts +29 -31
- package/dist/esm/interface/crud/project-permissions.d.ts.map +1 -1
- package/dist/esm/interface/crud/project-permissions.js +1 -2
- package/dist/esm/interface/crud/project-permissions.js.map +1 -1
- package/dist/esm/interface/crud/projects.d.ts +28 -30
- package/dist/esm/interface/crud/projects.d.ts.map +1 -1
- package/dist/esm/interface/crud/projects.js +3 -2
- package/dist/esm/interface/crud/projects.js.map +1 -1
- package/dist/esm/interface/crud/session-replays.d.ts.map +1 -1
- package/dist/esm/interface/crud/session-replays.js +1 -1
- package/dist/esm/interface/crud/sessions.d.ts +15 -17
- package/dist/esm/interface/crud/sessions.d.ts.map +1 -1
- package/dist/esm/interface/crud/sessions.js +1 -2
- package/dist/esm/interface/crud/sessions.js.map +1 -1
- package/dist/esm/interface/crud/sign-up-rules.d.ts.map +1 -1
- package/dist/esm/interface/crud/sign-up-rules.js +1 -1
- package/dist/esm/interface/crud/svix-token.d.ts +8 -10
- package/dist/esm/interface/crud/svix-token.d.ts.map +1 -1
- package/dist/esm/interface/crud/svix-token.js +1 -2
- package/dist/esm/interface/crud/svix-token.js.map +1 -1
- package/dist/esm/interface/crud/team-invitation-details.d.ts +6 -8
- package/dist/esm/interface/crud/team-invitation-details.d.ts.map +1 -1
- package/dist/esm/interface/crud/team-invitation-details.js +1 -2
- package/dist/esm/interface/crud/team-invitation-details.js.map +1 -1
- package/dist/esm/interface/crud/team-invitation.d.ts +7 -9
- package/dist/esm/interface/crud/team-invitation.d.ts.map +1 -1
- package/dist/esm/interface/crud/team-invitation.js +1 -2
- package/dist/esm/interface/crud/team-invitation.js.map +1 -1
- package/dist/esm/interface/crud/team-member-profiles.d.ts +14 -16
- package/dist/esm/interface/crud/team-member-profiles.d.ts.map +1 -1
- package/dist/esm/interface/crud/team-member-profiles.js +1 -2
- package/dist/esm/interface/crud/team-member-profiles.js.map +1 -1
- package/dist/esm/interface/crud/team-memberships.d.ts +14 -16
- package/dist/esm/interface/crud/team-memberships.d.ts.map +1 -1
- package/dist/esm/interface/crud/team-memberships.js +1 -2
- package/dist/esm/interface/crud/team-memberships.js.map +1 -1
- package/dist/esm/interface/crud/team-permissions.d.ts +29 -31
- package/dist/esm/interface/crud/team-permissions.d.ts.map +1 -1
- package/dist/esm/interface/crud/team-permissions.js +1 -2
- package/dist/esm/interface/crud/team-permissions.js.map +1 -1
- package/dist/esm/interface/crud/teams.d.ts +36 -38
- package/dist/esm/interface/crud/teams.d.ts.map +1 -1
- package/dist/esm/interface/crud/teams.js +2 -4
- package/dist/esm/interface/crud/teams.js.map +1 -1
- package/dist/esm/interface/crud/transactions.d.ts +12 -14
- package/dist/esm/interface/crud/transactions.d.ts.map +1 -1
- package/dist/esm/interface/crud/transactions.js +7 -13
- package/dist/esm/interface/crud/transactions.js.map +1 -1
- package/dist/esm/interface/crud/users.d.ts +5 -6
- package/dist/esm/interface/crud/users.d.ts.map +1 -1
- package/dist/esm/interface/crud/users.js +9 -5
- package/dist/esm/interface/crud/users.js.map +1 -1
- package/dist/esm/interface/handler-urls.d.ts +1 -1
- package/dist/esm/interface/handler-urls.d.ts.map +1 -1
- package/dist/esm/interface/handler-urls.js +1 -2
- package/dist/esm/interface/page-component-versions.d.ts +1 -1
- package/dist/esm/interface/page-component-versions.d.ts.map +1 -1
- package/dist/esm/interface/page-component-versions.js +1 -2
- package/dist/esm/interface/page-component-versions.js.map +1 -1
- package/dist/esm/interface/plan-usage.d.ts +1 -1
- package/dist/esm/interface/plan-usage.d.ts.map +1 -1
- package/dist/esm/interface/plan-usage.js +1 -2
- package/dist/esm/interface/plan-usage.js.map +1 -1
- package/dist/esm/interface/server-interface.d.ts +19 -19
- package/dist/esm/interface/server-interface.d.ts.map +1 -1
- package/dist/esm/interface/server-interface.js +2 -3
- package/dist/esm/interface/server-interface.js.map +1 -1
- package/dist/esm/interface/webhooks.d.ts.map +1 -1
- package/dist/esm/interface/webhooks.js +1 -2
- package/dist/esm/interface/webhooks.js.map +1 -1
- package/dist/esm/known-errors.d.ts +2 -2
- package/dist/esm/known-errors.d.ts.map +1 -1
- package/dist/esm/known-errors.js +10 -21
- package/dist/esm/known-errors.js.map +1 -1
- package/dist/esm/payments/payment-methods.d.ts.map +1 -1
- package/dist/esm/payments/payment-methods.js +1 -1
- package/dist/esm/payments/payment-methods.js.map +1 -1
- package/dist/esm/payments/stripe-limits.d.ts.map +1 -1
- package/dist/esm/payments/stripe-limits.js +1 -1
- package/dist/esm/payments/stripe-limits.js.map +1 -1
- package/dist/esm/plans.d.ts.map +1 -1
- package/dist/esm/plans.js +1 -1
- package/dist/esm/plans.js.map +1 -1
- package/dist/esm/schema-fields.d.ts +3 -3
- package/dist/esm/schema-fields.d.ts.map +1 -1
- package/dist/esm/schema-fields.js +3 -64
- package/dist/esm/schema-fields.js.map +1 -1
- package/dist/esm/sessions.d.ts +1 -1
- package/dist/esm/sessions.d.ts.map +1 -1
- package/dist/esm/sessions.js +1 -2
- package/dist/esm/sessions.js.map +1 -1
- package/dist/esm/sessions.test.js +2 -3
- package/dist/esm/sessions.test.js.map +1 -1
- package/dist/esm/utils/analytics-clickmap-overlay.d.ts.map +1 -1
- package/dist/esm/utils/analytics-clickmap-overlay.js +1 -1
- package/dist/esm/utils/api-keys.d.ts.map +1 -1
- package/dist/esm/utils/api-keys.js +1 -2
- package/dist/esm/utils/api-keys.js.map +1 -1
- package/dist/esm/utils/arrays.d.ts.map +1 -1
- package/dist/esm/utils/arrays.js +1 -470
- package/dist/esm/utils/arrays.js.map +1 -1
- package/dist/esm/utils/auth-methods.d.ts.map +1 -1
- package/dist/esm/utils/auth-methods.js +1 -1
- package/dist/esm/utils/auth-methods.js.map +1 -1
- package/dist/esm/utils/base64.d.ts.map +1 -1
- package/dist/esm/utils/base64.js +1 -10
- package/dist/esm/utils/base64.js.map +1 -1
- package/dist/esm/utils/booleans.d.ts.map +1 -1
- package/dist/esm/utils/booleans.js +1 -25
- package/dist/esm/utils/booleans.js.map +1 -1
- package/dist/esm/utils/browser-compat.d.ts.map +1 -1
- package/dist/esm/utils/browser-compat.js +1 -1
- package/dist/esm/utils/browser-compat.js.map +1 -1
- package/dist/esm/utils/bytes.d.ts.map +1 -1
- package/dist/esm/utils/bytes.js +3 -198
- package/dist/esm/utils/bytes.js.map +1 -1
- package/dist/esm/utils/caches.d.ts +1 -1
- package/dist/esm/utils/caches.d.ts.map +1 -1
- package/dist/esm/utils/caches.js +1 -27
- package/dist/esm/utils/caches.js.map +1 -1
- package/dist/esm/utils/cel-fields.d.ts.map +1 -1
- package/dist/esm/utils/cel-fields.js +1 -2
- package/dist/esm/utils/cel-fields.js.map +1 -1
- package/dist/esm/utils/cloud-hosts.d.ts.map +1 -1
- package/dist/esm/utils/cloud-hosts.js +1 -27
- package/dist/esm/utils/cloud-hosts.js.map +1 -1
- package/dist/esm/utils/compile-time.d.ts.map +1 -1
- package/dist/esm/utils/compile-time.js +1 -1
- package/dist/esm/utils/compile-time.js.map +1 -1
- package/dist/esm/utils/country-codes.d.ts.map +1 -1
- package/dist/esm/utils/country-codes.js +1 -16
- package/dist/esm/utils/country-codes.js.map +1 -1
- package/dist/esm/utils/crypto.d.ts.map +1 -1
- package/dist/esm/utils/crypto.js +3 -113
- package/dist/esm/utils/crypto.js.map +1 -1
- package/dist/esm/utils/currencies.d.ts +1 -1
- package/dist/esm/utils/currencies.d.ts.map +1 -1
- package/dist/esm/utils/currencies.js +2 -37
- package/dist/esm/utils/currencies.js.map +1 -1
- package/dist/esm/utils/currency-constants.d.ts.map +1 -1
- package/dist/esm/utils/currency-constants.js +1 -1
- package/dist/esm/utils/currency-constants.js.map +1 -1
- package/dist/esm/utils/dates.d.ts.map +1 -1
- package/dist/esm/utils/dates.js +1 -44
- package/dist/esm/utils/dates.js.map +1 -1
- package/dist/esm/utils/dev-env-state-path.d.ts.map +1 -1
- package/dist/esm/utils/dev-env-state-path.js +1 -2
- package/dist/esm/utils/dev-env-state-path.js.map +1 -1
- package/dist/esm/utils/dev-tool.d.ts.map +1 -1
- package/dist/esm/utils/dev-tool.js +1 -1
- package/dist/esm/utils/dom.d.ts.map +1 -1
- package/dist/esm/utils/dom.js +1 -1
- package/dist/esm/utils/dom.js.map +1 -1
- package/dist/esm/utils/elements-chain.d.ts.map +1 -1
- package/dist/esm/utils/elements-chain.js +5 -50
- package/dist/esm/utils/elements-chain.js.map +1 -1
- package/dist/esm/utils/env.d.ts.map +1 -1
- package/dist/esm/utils/env.js +1 -2
- package/dist/esm/utils/env.js.map +1 -1
- package/dist/esm/utils/env.test.js +2 -3
- package/dist/esm/utils/env.test.js.map +1 -1
- package/dist/esm/utils/errors.d.ts +1 -1
- package/dist/esm/utils/errors.d.ts.map +1 -1
- package/dist/esm/utils/errors.js +1 -2
- package/dist/esm/utils/errors.js.map +1 -1
- package/dist/esm/utils/esbuild.d.ts +1 -1
- package/dist/esm/utils/esbuild.d.ts.map +1 -1
- package/dist/esm/utils/esbuild.js +2 -3
- package/dist/esm/utils/esbuild.js.map +1 -1
- package/dist/esm/utils/featurebase.d.ts.map +1 -1
- package/dist/esm/utils/featurebase.js +1 -2
- package/dist/esm/utils/featurebase.js.map +1 -1
- package/dist/esm/utils/fs.d.ts.map +1 -1
- package/dist/esm/utils/fs.js +1 -2
- package/dist/esm/utils/fs.js.map +1 -1
- package/dist/esm/utils/functions.d.ts.map +1 -1
- package/dist/esm/utils/functions.js +1 -24
- package/dist/esm/utils/functions.js.map +1 -1
- package/dist/esm/utils/geo.d.ts.map +1 -1
- package/dist/esm/utils/geo.js +1 -2
- package/dist/esm/utils/geo.js.map +1 -1
- package/dist/esm/utils/globals.d.ts.map +1 -1
- package/dist/esm/utils/globals.js +1 -1
- package/dist/esm/utils/globals.js.map +1 -1
- package/dist/esm/utils/hashes.d.ts.map +1 -1
- package/dist/esm/utils/hashes.js +1 -2
- package/dist/esm/utils/hashes.js.map +1 -1
- package/dist/esm/utils/html.d.ts.map +1 -1
- package/dist/esm/utils/html.js +1 -19
- package/dist/esm/utils/html.js.map +1 -1
- package/dist/esm/utils/http.d.ts.map +1 -1
- package/dist/esm/utils/http.js +1 -19
- package/dist/esm/utils/http.js.map +1 -1
- package/dist/esm/utils/ips.d.ts.map +1 -1
- package/dist/esm/utils/ips.js +1 -25
- package/dist/esm/utils/ips.js.map +1 -1
- package/dist/esm/utils/json.d.ts +1 -1
- package/dist/esm/utils/json.d.ts.map +1 -1
- package/dist/esm/utils/json.js +1 -155
- package/dist/esm/utils/json.js.map +1 -1
- package/dist/esm/utils/jsx-editable-transpiler.d.ts.map +1 -1
- package/dist/esm/utils/jsx-editable-transpiler.js +1 -2
- package/dist/esm/utils/jsx-editable-transpiler.js.map +1 -1
- package/dist/esm/utils/jsx-editable-transpiler.test.js +2 -3
- package/dist/esm/utils/jsx-editable-transpiler.test.js.map +1 -1
- package/dist/esm/utils/jwt.d.ts.map +1 -1
- package/dist/esm/utils/jwt.js +1 -2
- package/dist/esm/utils/jwt.js.map +1 -1
- package/dist/esm/utils/locks.d.ts.map +1 -1
- package/dist/esm/utils/locks.js +1 -2
- package/dist/esm/utils/locks.js.map +1 -1
- package/dist/esm/utils/maps.d.ts.map +1 -1
- package/dist/esm/utils/maps.js +1 -111
- package/dist/esm/utils/maps.js.map +1 -1
- package/dist/esm/utils/math.d.ts.map +1 -1
- package/dist/esm/utils/math.js +1 -11
- package/dist/esm/utils/math.js.map +1 -1
- package/dist/esm/utils/monkey-patch.d.ts.map +1 -1
- package/dist/esm/utils/monkey-patch.js +2 -3
- package/dist/esm/utils/monkey-patch.js.map +1 -1
- package/dist/esm/utils/node-http.js +1 -2
- package/dist/esm/utils/node-http.js.map +1 -1
- package/dist/esm/utils/numbers.d.ts.map +1 -1
- package/dist/esm/utils/numbers.js +1 -45
- package/dist/esm/utils/numbers.js.map +1 -1
- package/dist/esm/utils/oauth.d.ts.map +1 -1
- package/dist/esm/utils/oauth.js +1 -1
- package/dist/esm/utils/oauth.js.map +1 -1
- package/dist/esm/utils/objects.d.ts.map +1 -1
- package/dist/esm/utils/objects.js +1 -622
- package/dist/esm/utils/objects.js.map +1 -1
- package/dist/esm/utils/paginated-lists.d.ts.map +1 -1
- package/dist/esm/utils/paginated-lists.js +1 -2
- package/dist/esm/utils/paginated-lists.js.map +1 -1
- package/dist/esm/utils/paginated-lists.test.js +2 -3
- package/dist/esm/utils/paginated-lists.test.js.map +1 -1
- package/dist/esm/utils/passkey.d.ts +1 -1
- package/dist/esm/utils/passkey.js +1 -1
- package/dist/esm/utils/promises.d.ts +1 -1
- package/dist/esm/utils/promises.d.ts.map +1 -1
- package/dist/esm/utils/promises.js +2 -161
- package/dist/esm/utils/promises.js.map +1 -1
- package/dist/esm/utils/proxies.d.ts.map +1 -1
- package/dist/esm/utils/proxies.js +1 -37
- package/dist/esm/utils/proxies.js.map +1 -1
- package/dist/esm/utils/react.d.ts.map +1 -1
- package/dist/esm/utils/react.js +1 -41
- package/dist/esm/utils/react.js.map +1 -1
- package/dist/esm/utils/redirect-urls.d.ts.map +1 -1
- package/dist/esm/utils/redirect-urls.js +2 -92
- package/dist/esm/utils/redirect-urls.js.map +1 -1
- package/dist/esm/utils/regex.js +1 -1
- package/dist/esm/utils/regex.js.map +1 -1
- package/dist/esm/utils/results.d.ts.map +1 -1
- package/dist/esm/utils/results.js +1 -213
- package/dist/esm/utils/results.js.map +1 -1
- package/dist/esm/utils/sentry.js +1 -1
- package/dist/esm/utils/sentry.js.map +1 -1
- package/dist/esm/utils/stores.d.ts +3 -3
- package/dist/esm/utils/stores.d.ts.map +1 -1
- package/dist/esm/utils/stores.js +1 -2
- package/dist/esm/utils/stores.js.map +1 -1
- package/dist/esm/utils/strings.d.ts.map +1 -1
- package/dist/esm/utils/strings.js +1 -251
- package/dist/esm/utils/strings.js.map +1 -1
- package/dist/esm/utils/strings.nicify.test.js +2 -3
- package/dist/esm/utils/strings.nicify.test.js.map +1 -1
- package/dist/esm/utils/telemetry.d.ts.map +1 -1
- package/dist/esm/utils/telemetry.js +1 -2
- package/dist/esm/utils/telemetry.js.map +1 -1
- package/dist/esm/utils/turnstile-browser.d.ts +1 -1
- package/dist/esm/utils/turnstile-browser.d.ts.map +1 -1
- package/dist/esm/utils/turnstile-browser.js +1 -2
- package/dist/esm/utils/turnstile-browser.js.map +1 -1
- package/dist/esm/utils/turnstile-flow.d.ts +1 -1
- package/dist/esm/utils/turnstile-flow.d.ts.map +1 -1
- package/dist/esm/utils/turnstile-flow.js +1 -2
- package/dist/esm/utils/turnstile-flow.js.map +1 -1
- package/dist/esm/utils/turnstile-flow.test.js +2 -3
- package/dist/esm/utils/turnstile-flow.test.js.map +1 -1
- package/dist/esm/utils/turnstile.d.ts.map +1 -1
- package/dist/esm/utils/turnstile.js +1 -1
- package/dist/esm/utils/turnstile.js.map +1 -1
- package/dist/esm/utils/typed-arrays.js +1 -2
- package/dist/esm/utils/typed-arrays.js.map +1 -1
- package/dist/esm/utils/types.d.ts +1 -1
- package/dist/esm/utils/types.d.ts.map +1 -1
- package/dist/esm/utils/types.js +1 -1
- package/dist/esm/utils/types.js.map +1 -1
- package/dist/esm/utils/unicode.d.ts.map +1 -1
- package/dist/esm/utils/unicode.js +1 -13
- package/dist/esm/utils/unicode.js.map +1 -1
- package/dist/esm/utils/urls.d.ts.map +1 -1
- package/dist/esm/utils/urls.js +1 -151
- package/dist/esm/utils/urls.js.map +1 -1
- package/dist/esm/utils/uuids.d.ts.map +1 -1
- package/dist/esm/utils/uuids.js +2 -26
- package/dist/esm/utils/uuids.js.map +1 -1
- package/dist/format-4JG1MGv5.d.ts +61 -0
- package/dist/format-4JG1MGv5.d.ts.map +1 -0
- package/dist/handler-urls-BHt3v8Ai.d.ts +70 -0
- package/dist/handler-urls-BHt3v8Ai.d.ts.map +1 -0
- package/dist/helpers/emails.js +2 -4
- package/dist/helpers/emails.js.map +1 -1
- package/dist/helpers/init-prompt.d.ts.map +1 -1
- package/dist/helpers/init-prompt.js +2 -4
- package/dist/helpers/init-prompt.js.map +1 -1
- package/dist/helpers/password.d.ts +1 -1
- package/dist/helpers/password.d.ts.map +1 -1
- package/dist/helpers/password.js +2 -4
- package/dist/helpers/password.js.map +1 -1
- package/dist/helpers/production-mode.d.ts +1 -1
- package/dist/helpers/production-mode.d.ts.map +1 -1
- package/dist/helpers/production-mode.js +2 -4
- package/dist/helpers/production-mode.js.map +1 -1
- package/dist/helpers/support-sla.d.ts.map +1 -1
- package/dist/helpers/support-sla.js +2 -3
- package/dist/helpers/support-sla.js.map +1 -1
- package/dist/helpers/support-sla.test.js +1 -3
- package/dist/helpers/support-sla.test.js.map +1 -1
- package/dist/helpers/vault/client-side.d.ts.map +1 -1
- package/dist/helpers/vault/client-side.js +2 -22
- package/dist/helpers/vault/client-side.js.map +1 -1
- package/dist/helpers/vault/server-side.js +2 -4
- package/dist/helpers/vault/server-side.js.map +1 -1
- package/dist/hooks/use-async-callback.d.ts.map +1 -1
- package/dist/hooks/use-async-callback.js +4 -5
- package/dist/hooks/use-async-callback.js.map +1 -1
- package/dist/hooks/use-async-external-store.d.ts +1 -1
- package/dist/hooks/use-async-external-store.d.ts.map +1 -1
- package/dist/hooks/use-async-external-store.js +2 -4
- package/dist/hooks/use-async-external-store.js.map +1 -1
- package/dist/hooks/use-hash.js +2 -4
- package/dist/hooks/use-hash.js.map +1 -1
- package/dist/hooks/use-hover.d.ts.map +1 -1
- package/dist/hooks/use-hover.js +2 -4
- package/dist/hooks/use-hover.js.map +1 -1
- package/dist/hooks/use-strict-memo.d.ts.map +1 -1
- package/dist/hooks/use-strict-memo.js +2 -72
- package/dist/hooks/use-strict-memo.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +27 -29
- package/dist/interface/admin-interface.d.ts +3 -379
- package/dist/interface/admin-interface.js +3 -5
- package/dist/interface/admin-interface.js.map +1 -1
- package/dist/interface/admin-metrics.d.ts +2 -807
- package/dist/interface/admin-metrics.js +2 -4
- package/dist/interface/admin-metrics.js.map +1 -1
- package/dist/interface/client-interface.d.ts +2 -447
- package/dist/interface/client-interface.js +33 -18
- package/dist/interface/client-interface.js.map +1 -1
- package/dist/interface/client-interface.test.js +83 -13
- package/dist/interface/client-interface.test.js.map +1 -1
- package/dist/interface/conversations.d.ts +11 -11
- package/dist/interface/conversations.d.ts.map +1 -1
- package/dist/interface/conversations.js +2 -4
- package/dist/interface/conversations.js.map +1 -1
- package/dist/interface/crud/analytics.d.ts +2 -14
- package/dist/interface/crud/connected-accounts.d.ts +2 -68
- package/dist/interface/crud/connected-accounts.js +2 -4
- package/dist/interface/crud/connected-accounts.js.map +1 -1
- package/dist/interface/crud/contact-channels.d.ts +2 -181
- package/dist/interface/crud/contact-channels.js +2 -4
- package/dist/interface/crud/contact-channels.js.map +1 -1
- package/dist/interface/crud/current-user.d.ts +2 -285
- package/dist/interface/crud/current-user.js +2 -4
- package/dist/interface/crud/current-user.js.map +1 -1
- package/dist/interface/crud/email-outbox.d.ts +2 -1465
- package/dist/interface/crud/email-outbox.js +4 -5
- package/dist/interface/crud/email-outbox.js.map +1 -1
- package/dist/interface/crud/email-templates.d.ts +15 -16
- package/dist/interface/crud/email-templates.d.ts.map +1 -1
- package/dist/interface/crud/email-templates.js +2 -4
- package/dist/interface/crud/email-templates.js.map +1 -1
- package/dist/interface/crud/emails.d.ts +2 -41
- package/dist/interface/crud/emails.js +4 -5
- package/dist/interface/crud/emails.js.map +1 -1
- package/dist/interface/crud/internal-api-keys.d.ts +2 -140
- package/dist/interface/crud/internal-api-keys.js +2 -4
- package/dist/interface/crud/internal-api-keys.js.map +1 -1
- package/dist/interface/crud/invoices.d.ts +2 -43
- package/dist/interface/crud/invoices.js +2 -4
- package/dist/interface/crud/invoices.js.map +1 -1
- package/dist/interface/crud/items.d.ts +2 -30
- package/dist/interface/crud/items.js +2 -4
- package/dist/interface/crud/items.js.map +1 -1
- package/dist/interface/crud/notification-preferences.d.ts +2 -38
- package/dist/interface/crud/notification-preferences.js +2 -4
- package/dist/interface/crud/notification-preferences.js.map +1 -1
- package/dist/interface/crud/oauth-providers.d.ts +2 -186
- package/dist/interface/crud/oauth-providers.js +2 -4
- package/dist/interface/crud/oauth-providers.js.map +1 -1
- package/dist/interface/crud/products.d.ts +2 -182
- package/dist/interface/crud/products.js +4 -4
- package/dist/interface/crud/products.js.map +1 -1
- package/dist/interface/crud/project-api-keys.d.ts +2 -203
- package/dist/interface/crud/project-api-keys.js +2 -4
- package/dist/interface/crud/project-api-keys.js.map +1 -1
- package/dist/interface/crud/project-permissions.d.ts +2 -161
- package/dist/interface/crud/project-permissions.js +4 -5
- package/dist/interface/crud/project-permissions.js.map +1 -1
- package/dist/interface/crud/projects.d.ts +2 -901
- package/dist/interface/crud/projects.js +6 -5
- package/dist/interface/crud/projects.js.map +1 -1
- package/dist/interface/crud/session-replays.d.ts +2 -83
- package/dist/interface/crud/sessions.d.ts +2 -150
- package/dist/interface/crud/sessions.js +2 -4
- package/dist/interface/crud/sessions.js.map +1 -1
- package/dist/interface/crud/sign-up-rules.d.ts.map +1 -1
- package/dist/interface/crud/svix-token.d.ts +2 -31
- package/dist/interface/crud/svix-token.js +2 -4
- package/dist/interface/crud/svix-token.js.map +1 -1
- package/dist/interface/crud/team-invitation-details.d.ts +5 -6
- package/dist/interface/crud/team-invitation-details.d.ts.map +1 -1
- package/dist/interface/crud/team-invitation-details.js +4 -5
- package/dist/interface/crud/team-invitation-details.js.map +1 -1
- package/dist/interface/crud/team-invitation.d.ts +2 -54
- package/dist/interface/crud/team-invitation.js +4 -5
- package/dist/interface/crud/team-invitation.js.map +1 -1
- package/dist/interface/crud/team-member-profiles.d.ts +2 -286
- package/dist/interface/crud/team-member-profiles.js +4 -5
- package/dist/interface/crud/team-member-profiles.js.map +1 -1
- package/dist/interface/crud/team-memberships.d.ts +2 -75
- package/dist/interface/crud/team-memberships.js +2 -4
- package/dist/interface/crud/team-memberships.js.map +1 -1
- package/dist/interface/crud/team-permissions.d.ts +2 -169
- package/dist/interface/crud/team-permissions.js +4 -5
- package/dist/interface/crud/team-permissions.js.map +1 -1
- package/dist/interface/crud/teams.d.ts +2 -299
- package/dist/interface/crud/teams.js +5 -7
- package/dist/interface/crud/teams.js.map +1 -1
- package/dist/interface/crud/transactions.d.ts +2 -183
- package/dist/interface/crud/transactions.js +2 -4
- package/dist/interface/crud/transactions.js.map +1 -1
- package/dist/interface/crud/users.d.ts +2 -653
- package/dist/interface/crud/users.js +12 -8
- package/dist/interface/crud/users.js.map +1 -1
- package/dist/interface/handler-urls.d.ts +2 -51
- package/dist/interface/handler-urls.js +12 -14
- package/dist/interface/page-component-versions.d.ts +2 -25
- package/dist/interface/page-component-versions.js +2 -4
- package/dist/interface/page-component-versions.js.map +1 -1
- package/dist/interface/plan-usage.d.ts +2 -57
- package/dist/interface/plan-usage.js +2 -4
- package/dist/interface/plan-usage.js.map +1 -1
- package/dist/interface/server-interface.d.ts +2 -257
- package/dist/interface/server-interface.js +3 -5
- package/dist/interface/server-interface.js.map +1 -1
- package/dist/interface/webhooks.d.ts +2 -326
- package/dist/interface/webhooks.js +2 -4
- package/dist/interface/webhooks.js.map +1 -1
- package/dist/internal-api-keys-D8IYDodH.d.ts +139 -0
- package/dist/internal-api-keys-D8IYDodH.d.ts.map +1 -0
- package/dist/invoices-CHo9YKbI.d.ts +43 -0
- package/dist/invoices-CHo9YKbI.d.ts.map +1 -0
- package/dist/items-DlLSlVUD.d.ts +29 -0
- package/dist/items-DlLSlVUD.d.ts.map +1 -0
- package/dist/json-a1QIXu5z.d.ts +15 -0
- package/dist/json-a1QIXu5z.d.ts.map +1 -0
- package/dist/known-errors-Bm4a61wL.d.ts +575 -0
- package/dist/known-errors-Bm4a61wL.d.ts.map +1 -0
- package/dist/known-errors.d.ts +2 -575
- package/dist/known-errors.js +11 -23
- package/dist/known-errors.js.map +1 -1
- package/dist/notification-preferences-Bmzr_EOY.d.ts +37 -0
- package/dist/notification-preferences-Bmzr_EOY.d.ts.map +1 -0
- package/dist/oauth-providers-BMkKSSlA.d.ts +185 -0
- package/dist/oauth-providers-BMkKSSlA.d.ts.map +1 -0
- package/dist/objects-DkCkeBWE.d.ts +59 -0
- package/dist/objects-DkCkeBWE.d.ts.map +1 -0
- package/dist/passkey-CKg87UH-.d.ts +2 -0
- package/dist/payments/payment-methods.d.ts.map +1 -1
- package/dist/payments/payment-methods.js +2 -3
- package/dist/payments/payment-methods.js.map +1 -1
- package/dist/payments/stripe-limits.d.ts.map +1 -1
- package/dist/payments/stripe-limits.js +2 -3
- package/dist/payments/stripe-limits.js.map +1 -1
- package/dist/plan-usage-DfDoj5K4.d.ts +57 -0
- package/dist/plan-usage-DfDoj5K4.d.ts.map +1 -0
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +2 -3
- package/dist/plans.js.map +1 -1
- package/dist/products-Bs74ld-v.d.ts +182 -0
- package/dist/products-Bs74ld-v.d.ts.map +1 -0
- package/dist/project-api-keys--7V5X_UW.d.ts +203 -0
- package/dist/project-api-keys--7V5X_UW.d.ts.map +1 -0
- package/dist/project-permissions-kdi675F-.d.ts +160 -0
- package/dist/project-permissions-kdi675F-.d.ts.map +1 -0
- package/dist/projects-CFTNXRfG.d.ts +900 -0
- package/dist/projects-CFTNXRfG.d.ts.map +1 -0
- package/dist/results-DP3BzoL6.d.ts +70 -0
- package/dist/results-DP3BzoL6.d.ts.map +1 -0
- package/dist/{chunk-BE-pF4vm.js → rolldown-runtime-D6vf50IK.js} +12 -18
- package/dist/schema-CJwkGkdf.d.ts +2328 -0
- package/dist/schema-CJwkGkdf.d.ts.map +1 -0
- package/dist/schema-fields-DqGQ4kF7.d.ts +517 -0
- package/dist/schema-fields-DqGQ4kF7.d.ts.map +1 -0
- package/dist/schema-fields.d.ts +3 -518
- package/dist/schema-fields.js +21 -82
- package/dist/schema-fields.js.map +1 -1
- package/dist/server-interface-CgpxsLT_.d.ts +257 -0
- package/dist/server-interface-CgpxsLT_.d.ts.map +1 -0
- package/dist/session-replays-CXqhDpZq.d.ts +83 -0
- package/dist/session-replays-CXqhDpZq.d.ts.map +1 -0
- package/dist/sessions-B7Ko2Ldr.d.ts +149 -0
- package/dist/sessions-B7Ko2Ldr.d.ts.map +1 -0
- package/dist/sessions-d8qtvBUB.d.ts +175 -0
- package/dist/sessions-d8qtvBUB.d.ts.map +1 -0
- package/dist/sessions.d.ts +2 -175
- package/dist/sessions.js +4 -5
- package/dist/sessions.js.map +1 -1
- package/dist/sessions.test.js +1 -3
- package/dist/sessions.test.js.map +1 -1
- package/dist/strings-DWgkUybS.d.ts +76 -0
- package/dist/strings-DWgkUybS.d.ts.map +1 -0
- package/dist/svix-token-BsMrLGvy.d.ts +30 -0
- package/dist/svix-token-BsMrLGvy.d.ts.map +1 -0
- package/dist/team-invitation-Cyqt9oWw.d.ts +53 -0
- package/dist/team-invitation-Cyqt9oWw.d.ts.map +1 -0
- package/dist/team-member-profiles-BoDEqx-0.d.ts +285 -0
- package/dist/team-member-profiles-BoDEqx-0.d.ts.map +1 -0
- package/dist/team-memberships-DZHk2A5b.d.ts +74 -0
- package/dist/team-memberships-DZHk2A5b.d.ts.map +1 -0
- package/dist/team-permissions-DqOpaOWh.d.ts +168 -0
- package/dist/team-permissions-DqOpaOWh.d.ts.map +1 -0
- package/dist/teams-CQMcBnjM.d.ts +298 -0
- package/dist/teams-CQMcBnjM.d.ts.map +1 -0
- package/dist/transactions-DhnbvGH5.d.ts +182 -0
- package/dist/transactions-DhnbvGH5.d.ts.map +1 -0
- package/dist/types-DfTcxNtM.d.ts +77 -0
- package/dist/types-DfTcxNtM.d.ts.map +1 -0
- package/dist/users-DHNRwoSz.d.ts +653 -0
- package/dist/users-DHNRwoSz.d.ts.map +1 -0
- package/dist/utils/analytics-clickmap-overlay.d.ts.map +1 -1
- package/dist/utils/analytics-clickmap-overlay.js +2 -3
- package/dist/utils/analytics-clickmap-overlay.js.map +1 -1
- package/dist/utils/api-keys.d.ts.map +1 -1
- package/dist/utils/api-keys.js +4 -5
- package/dist/utils/api-keys.js.map +1 -1
- package/dist/utils/arrays.d.ts.map +1 -1
- package/dist/utils/arrays.js +2 -472
- package/dist/utils/arrays.js.map +1 -1
- package/dist/utils/auth-methods.d.ts.map +1 -1
- package/dist/utils/auth-methods.js +2 -3
- package/dist/utils/auth-methods.js.map +1 -1
- package/dist/utils/base64.d.ts.map +1 -1
- package/dist/utils/base64.js +2 -12
- package/dist/utils/base64.js.map +1 -1
- package/dist/utils/booleans.d.ts.map +1 -1
- package/dist/utils/booleans.js +2 -27
- package/dist/utils/booleans.js.map +1 -1
- package/dist/utils/browser-compat.d.ts.map +1 -1
- package/dist/utils/browser-compat.js +2 -3
- package/dist/utils/browser-compat.js.map +1 -1
- package/dist/utils/bytes.d.ts.map +1 -1
- package/dist/utils/bytes.js +4 -200
- package/dist/utils/bytes.js.map +1 -1
- package/dist/utils/caches.d.ts.map +1 -1
- package/dist/utils/caches.js +2 -29
- package/dist/utils/caches.js.map +1 -1
- package/dist/utils/cel-fields.d.ts.map +1 -1
- package/dist/utils/cel-fields.js +2 -4
- package/dist/utils/cel-fields.js.map +1 -1
- package/dist/utils/cloud-hosts.d.ts.map +1 -1
- package/dist/utils/cloud-hosts.js +2 -29
- package/dist/utils/cloud-hosts.js.map +1 -1
- package/dist/utils/compile-time.d.ts.map +1 -1
- package/dist/utils/compile-time.js +2 -3
- package/dist/utils/compile-time.js.map +1 -1
- package/dist/utils/country-codes.d.ts +2 -11
- package/dist/utils/country-codes.js +2 -18
- package/dist/utils/country-codes.js.map +1 -1
- package/dist/utils/crypto.d.ts.map +1 -1
- package/dist/utils/crypto.js +4 -115
- package/dist/utils/crypto.js.map +1 -1
- package/dist/utils/currencies.d.ts +1 -1
- package/dist/utils/currencies.d.ts.map +1 -1
- package/dist/utils/currencies.js +3 -39
- package/dist/utils/currencies.js.map +1 -1
- package/dist/utils/currency-constants.d.ts +2 -45
- package/dist/utils/currency-constants.js +2 -3
- package/dist/utils/currency-constants.js.map +1 -1
- package/dist/utils/dates.d.ts +2 -23
- package/dist/utils/dates.js +2 -46
- package/dist/utils/dates.js.map +1 -1
- package/dist/utils/dev-env-state-path.d.ts.map +1 -1
- package/dist/utils/dev-env-state-path.js +2 -4
- package/dist/utils/dev-env-state-path.js.map +1 -1
- package/dist/utils/dev-tool.d.ts.map +1 -1
- package/dist/utils/dev-tool.js +2 -3
- package/dist/utils/dev-tool.js.map +1 -1
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/dom.js +2 -3
- package/dist/utils/dom.js.map +1 -1
- package/dist/utils/elements-chain.d.ts.map +1 -1
- package/dist/utils/elements-chain.js +6 -52
- package/dist/utils/elements-chain.js.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +2 -4
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/env.test.js +1 -3
- package/dist/utils/env.test.js.map +1 -1
- package/dist/utils/errors.d.ts +2 -238
- package/dist/utils/errors.js +2 -4
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/esbuild.d.ts +1 -1
- package/dist/utils/esbuild.d.ts.map +1 -1
- package/dist/utils/esbuild.js +5 -6
- package/dist/utils/esbuild.js.map +1 -1
- package/dist/utils/featurebase.d.ts.map +1 -1
- package/dist/utils/featurebase.js +2 -4
- package/dist/utils/featurebase.js.map +1 -1
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +5 -6
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/functions.d.ts.map +1 -1
- package/dist/utils/functions.js +2 -26
- package/dist/utils/functions.js.map +1 -1
- package/dist/utils/geo.d.ts.map +1 -1
- package/dist/utils/geo.js +2 -4
- package/dist/utils/geo.js.map +1 -1
- package/dist/utils/globals.d.ts.map +1 -1
- package/dist/utils/globals.js +2 -3
- package/dist/utils/globals.js.map +1 -1
- package/dist/utils/hashes.d.ts.map +1 -1
- package/dist/utils/hashes.js +4 -5
- package/dist/utils/hashes.js.map +1 -1
- package/dist/utils/html.d.ts.map +1 -1
- package/dist/utils/html.js +2 -21
- package/dist/utils/html.js.map +1 -1
- package/dist/utils/http.d.ts.map +1 -1
- package/dist/utils/http.js +2 -21
- package/dist/utils/http.js.map +1 -1
- package/dist/utils/ips.d.ts.map +1 -1
- package/dist/utils/ips.js +4 -28
- package/dist/utils/ips.js.map +1 -1
- package/dist/utils/json.d.ts +2 -15
- package/dist/utils/json.js +2 -157
- package/dist/utils/json.js.map +1 -1
- package/dist/utils/jsx-editable-transpiler.d.ts.map +1 -1
- package/dist/utils/jsx-editable-transpiler.js +7 -8
- package/dist/utils/jsx-editable-transpiler.js.map +1 -1
- package/dist/utils/jsx-editable-transpiler.test.js +1 -3
- package/dist/utils/jsx-editable-transpiler.test.js.map +1 -1
- package/dist/utils/jwt.d.ts.map +1 -1
- package/dist/utils/jwt.js +6 -7
- package/dist/utils/jwt.js.map +1 -1
- package/dist/utils/locks.d.ts.map +1 -1
- package/dist/utils/locks.js +2 -4
- package/dist/utils/locks.js.map +1 -1
- package/dist/utils/maps.d.ts.map +1 -1
- package/dist/utils/maps.js +2 -113
- package/dist/utils/maps.js.map +1 -1
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +2 -13
- package/dist/utils/math.js.map +1 -1
- package/dist/utils/monkey-patch.d.ts.map +1 -1
- package/dist/utils/monkey-patch.js +3 -5
- package/dist/utils/monkey-patch.js.map +1 -1
- package/dist/utils/node-http.js +2 -4
- package/dist/utils/node-http.js.map +1 -1
- package/dist/utils/numbers.d.ts.map +1 -1
- package/dist/utils/numbers.js +2 -47
- package/dist/utils/numbers.js.map +1 -1
- package/dist/utils/oauth.d.ts.map +1 -1
- package/dist/utils/oauth.js +2 -3
- package/dist/utils/oauth.js.map +1 -1
- package/dist/utils/objects.d.ts +2 -59
- package/dist/utils/objects.js +2 -624
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/paginated-lists.d.ts.map +1 -1
- package/dist/utils/paginated-lists.js +2 -4
- package/dist/utils/paginated-lists.js.map +1 -1
- package/dist/utils/paginated-lists.test.js +1 -3
- package/dist/utils/paginated-lists.test.js.map +1 -1
- package/dist/utils/passkey.d.ts +2 -2
- package/dist/utils/promises.d.ts +1 -1
- package/dist/utils/promises.d.ts.map +1 -1
- package/dist/utils/promises.js +3 -163
- package/dist/utils/promises.js.map +1 -1
- package/dist/utils/proxies.d.ts.map +1 -1
- package/dist/utils/proxies.js +2 -39
- package/dist/utils/proxies.js.map +1 -1
- package/dist/utils/react.d.ts.map +1 -1
- package/dist/utils/react.js +4 -44
- package/dist/utils/react.js.map +1 -1
- package/dist/utils/redirect-urls.d.ts.map +1 -1
- package/dist/utils/redirect-urls.js +3 -94
- package/dist/utils/redirect-urls.js.map +1 -1
- package/dist/utils/regex.js +2 -3
- package/dist/utils/regex.js.map +1 -1
- package/dist/utils/results.d.ts +2 -70
- package/dist/utils/results.js +2 -215
- package/dist/utils/results.js.map +1 -1
- package/dist/utils/sentry.js +2 -3
- package/dist/utils/sentry.js.map +1 -1
- package/dist/utils/stores.d.ts +1 -1
- package/dist/utils/stores.d.ts.map +1 -1
- package/dist/utils/stores.js +2 -4
- package/dist/utils/stores.js.map +1 -1
- package/dist/utils/strings.d.ts +2 -76
- package/dist/utils/strings.js +2 -253
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/strings.nicify.test.js +1 -3
- package/dist/utils/strings.nicify.test.js.map +1 -1
- package/dist/utils/telemetry.d.ts.map +1 -1
- package/dist/utils/telemetry.js +2 -4
- package/dist/utils/telemetry.js.map +1 -1
- package/dist/utils/turnstile-browser.d.ts.map +1 -1
- package/dist/utils/turnstile-browser.js +2 -4
- package/dist/utils/turnstile-browser.js.map +1 -1
- package/dist/utils/turnstile-flow.d.ts.map +1 -1
- package/dist/utils/turnstile-flow.js +2 -4
- package/dist/utils/turnstile-flow.js.map +1 -1
- package/dist/utils/turnstile-flow.test.js +1 -3
- package/dist/utils/turnstile-flow.test.js.map +1 -1
- package/dist/utils/turnstile.d.ts.map +1 -1
- package/dist/utils/turnstile.js +2 -3
- package/dist/utils/turnstile.js.map +1 -1
- package/dist/utils/typed-arrays.js +2 -4
- package/dist/utils/typed-arrays.js.map +1 -1
- package/dist/utils/types.d.ts +2 -77
- package/dist/utils/types.js +2 -3
- package/dist/utils/types.js.map +1 -1
- package/dist/utils/unicode.d.ts.map +1 -1
- package/dist/utils/unicode.js +2 -15
- package/dist/utils/unicode.js.map +1 -1
- package/dist/utils/urls.d.ts.map +1 -1
- package/dist/utils/urls.js +2 -153
- package/dist/utils/urls.js.map +1 -1
- package/dist/utils/uuids.d.ts.map +1 -1
- package/dist/utils/uuids.js +3 -28
- package/dist/utils/uuids.js.map +1 -1
- package/dist/webhooks-8Ts1Clcb.d.ts +326 -0
- package/dist/webhooks-8Ts1Clcb.d.ts.map +1 -0
- package/package.json +2 -8
- package/src/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.ts +1 -0
- package/src/interface/client-interface.test.ts +77 -12
- package/src/interface/client-interface.ts +9 -9
- package/dist/config/format.d.ts.map +0 -1
- package/dist/config/schema.d.ts.map +0 -1
- package/dist/crud.d.ts.map +0 -1
- package/dist/interface/admin-interface.d.ts.map +0 -1
- package/dist/interface/admin-metrics.d.ts.map +0 -1
- package/dist/interface/client-interface.d.ts.map +0 -1
- package/dist/interface/crud/analytics.d.ts.map +0 -1
- package/dist/interface/crud/connected-accounts.d.ts.map +0 -1
- package/dist/interface/crud/contact-channels.d.ts.map +0 -1
- package/dist/interface/crud/current-user.d.ts.map +0 -1
- package/dist/interface/crud/emails.d.ts.map +0 -1
- package/dist/interface/crud/internal-api-keys.d.ts.map +0 -1
- package/dist/interface/crud/invoices.d.ts.map +0 -1
- package/dist/interface/crud/items.d.ts.map +0 -1
- package/dist/interface/crud/notification-preferences.d.ts.map +0 -1
- package/dist/interface/crud/oauth-providers.d.ts.map +0 -1
- package/dist/interface/crud/products.d.ts.map +0 -1
- package/dist/interface/crud/project-api-keys.d.ts.map +0 -1
- package/dist/interface/crud/project-permissions.d.ts.map +0 -1
- package/dist/interface/crud/projects.d.ts.map +0 -1
- package/dist/interface/crud/session-replays.d.ts.map +0 -1
- package/dist/interface/crud/sessions.d.ts.map +0 -1
- package/dist/interface/crud/svix-token.d.ts.map +0 -1
- package/dist/interface/crud/team-invitation.d.ts.map +0 -1
- package/dist/interface/crud/team-member-profiles.d.ts.map +0 -1
- package/dist/interface/crud/team-memberships.d.ts.map +0 -1
- package/dist/interface/crud/team-permissions.d.ts.map +0 -1
- package/dist/interface/crud/teams.d.ts.map +0 -1
- package/dist/interface/crud/transactions.d.ts.map +0 -1
- package/dist/interface/crud/users.d.ts.map +0 -1
- package/dist/interface/handler-urls.d.ts.map +0 -1
- package/dist/interface/page-component-versions.d.ts.map +0 -1
- package/dist/interface/plan-usage.d.ts.map +0 -1
- package/dist/interface/server-interface.d.ts.map +0 -1
- package/dist/interface/webhooks.d.ts.map +0 -1
- package/dist/known-errors.d.ts.map +0 -1
- package/dist/schema-fields.d.ts.map +0 -1
- package/dist/sessions.d.ts.map +0 -1
- package/dist/utils/country-codes.d.ts.map +0 -1
- package/dist/utils/currency-constants.d.ts.map +0 -1
- package/dist/utils/dates.d.ts.map +0 -1
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/json.d.ts.map +0 -1
- package/dist/utils/objects.d.ts.map +0 -1
- package/dist/utils/results.d.ts.map +0 -1
- package/dist/utils/strings.d.ts.map +0 -1
- package/dist/utils/types.d.ts.map +0 -1
package/dist/config/format.d.ts
CHANGED
|
@@ -1,61 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
//#region src/config/format.d.ts
|
|
4
|
-
type ConfigValue = string | number | boolean | null | ConfigValue[] | Config;
|
|
5
|
-
type Config = {
|
|
6
|
-
[keyOrDotNotation: string]: ConfigValue | undefined;
|
|
7
|
-
};
|
|
8
|
-
type NormalizedConfigValue = string | number | boolean | NormalizedConfig | NormalizedConfigValue[];
|
|
9
|
-
type NormalizedConfig = {
|
|
10
|
-
[key: string]: NormalizedConfigValue | undefined;
|
|
11
|
-
};
|
|
12
|
-
type _NormalizesTo<N> = N extends readonly any[] ? { [K in keyof N]: _NormalizesTo<N[K]> } : N extends object ? (Config & { [K in OptionalKeys<N>]?: _NormalizesTo<N[K]> | null } & { [K in RequiredKeys<N>]: undefined extends N[K] ? _NormalizesTo<N[K]> | null : _NormalizesTo<N[K]> } & { [K in `${string}.${string}`]: ConfigValue }) : N;
|
|
13
|
-
type NormalizesTo<N extends NormalizedConfig> = _NormalizesTo<N>;
|
|
14
|
-
/**
|
|
15
|
-
* Note that a config can both be valid and not normalizable.
|
|
16
|
-
*/
|
|
17
|
-
declare function isValidConfig(c: unknown): c is Config;
|
|
18
|
-
declare function getInvalidConfigReason(c: unknown, options?: {
|
|
19
|
-
configName?: string;
|
|
20
|
-
}): string | undefined;
|
|
21
|
-
declare function assertValidConfig(c: unknown): void;
|
|
22
|
-
declare function override(c1: Config, ...configs: Config[]): Config;
|
|
23
|
-
/**
|
|
24
|
-
* Removes keys from a config override, using the same nested key logic as the `override` function.
|
|
25
|
-
* Resetting key "a.b" also resets "a.b.c" (and any other descendants).
|
|
26
|
-
* Handles both flat dot-notation keys and nested object keys.
|
|
27
|
-
*/
|
|
28
|
-
declare function removeKeysFromConfig(config: Config, keysToRemove: string[]): Config;
|
|
29
|
-
type NormalizeOptions = {
|
|
30
|
-
/**
|
|
31
|
-
* What to do if a dot notation is used on a value that is not an object.
|
|
32
|
-
*
|
|
33
|
-
* - "throw" (default): Throw an error.
|
|
34
|
-
* - "ignore": Ignore the dot notation field.
|
|
35
|
-
*/
|
|
36
|
-
onDotIntoNonObject?: "throw" | "ignore";
|
|
37
|
-
/**
|
|
38
|
-
* What to do if a dot notation is used on a value that is null.
|
|
39
|
-
*
|
|
40
|
-
* - "like-non-object" (default): Treat it like a non-object. See `onDotIntoNonObject`.
|
|
41
|
-
* - "throw": Throw an error.
|
|
42
|
-
* - "ignore": Ignore the dot notation field.
|
|
43
|
-
* - "empty-object": Set the value to an empty object.
|
|
44
|
-
*/
|
|
45
|
-
onDotIntoNull?: "like-non-object" | "throw" | "ignore" | "empty-object";
|
|
46
|
-
/**
|
|
47
|
-
* If provided, keys that are silently dropped during normalization (when a dot-notation key
|
|
48
|
-
* references a parent that doesn't exist or is not an object and the behavior is "ignore")
|
|
49
|
-
* will be pushed to this array.
|
|
50
|
-
*/
|
|
51
|
-
droppedKeys?: string[];
|
|
52
|
-
};
|
|
53
|
-
declare class NormalizationError extends Error {
|
|
54
|
-
constructor(...args: ConstructorParameters<typeof Error>);
|
|
55
|
-
}
|
|
56
|
-
declare function isNormalized(c: Config): c is NormalizedConfig;
|
|
57
|
-
declare function assertNormalized(c: Config): asserts c is NormalizedConfig;
|
|
58
|
-
declare function normalize(c: Config, options?: NormalizeOptions): NormalizedConfig;
|
|
59
|
-
//#endregion
|
|
60
|
-
export { Config, ConfigValue, NormalizationError, NormalizedConfig, NormalizedConfigValue, NormalizesTo, _NormalizesTo, assertNormalized, assertValidConfig, getInvalidConfigReason, isNormalized, isValidConfig, normalize, override, removeKeysFromConfig };
|
|
61
|
-
//# sourceMappingURL=format.d.ts.map
|
|
1
|
+
import { a as NormalizedConfigValue, c as assertNormalized, d as isNormalized, f as isValidConfig, h as removeKeysFromConfig, i as NormalizedConfig, l as assertValidConfig, m as override, n as ConfigValue, o as NormalizesTo, p as normalize, r as NormalizationError, s as _NormalizesTo, t as Config, u as getInvalidConfigReason } from "../format-4JG1MGv5.js";
|
|
2
|
+
export { Config, ConfigValue, NormalizationError, NormalizedConfig, NormalizedConfigValue, NormalizesTo, _NormalizesTo, assertNormalized, assertValidConfig, getInvalidConfigReason, isNormalized, isValidConfig, normalize, override, removeKeysFromConfig };
|
package/dist/config/format.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
const require_chunk = require('../chunk-BE-pF4vm.js');
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
2
|
let ___utils_errors_js = require("../utils/errors.js");
|
|
4
3
|
let ___utils_objects_js = require("../utils/objects.js");
|
|
5
|
-
|
|
6
4
|
//#region src/config/format.ts
|
|
7
5
|
/**
|
|
8
6
|
* Note that a config can both be valid and not normalizable.
|
|
@@ -79,137 +77,6 @@ function removeKeysFromConfig(config, keysToRemove) {
|
|
|
79
77
|
}
|
|
80
78
|
return result;
|
|
81
79
|
}
|
|
82
|
-
(void 0)?.test("removeKeysFromConfig(...)", ({ expect }) => {
|
|
83
|
-
expect(removeKeysFromConfig({
|
|
84
|
-
a: 1,
|
|
85
|
-
b: 2
|
|
86
|
-
}, ["a"])).toEqual({ b: 2 });
|
|
87
|
-
expect(removeKeysFromConfig({
|
|
88
|
-
"a.b": 1,
|
|
89
|
-
"a.c": 2,
|
|
90
|
-
d: 3
|
|
91
|
-
}, ["a.b"])).toEqual({
|
|
92
|
-
"a.c": 2,
|
|
93
|
-
d: 3
|
|
94
|
-
});
|
|
95
|
-
expect(removeKeysFromConfig({
|
|
96
|
-
"a.b": 1,
|
|
97
|
-
"a.b.c": 2,
|
|
98
|
-
"a.d": 3
|
|
99
|
-
}, ["a.b"])).toEqual({ "a.d": 3 });
|
|
100
|
-
expect(removeKeysFromConfig({
|
|
101
|
-
"a.b": 1,
|
|
102
|
-
"a.c": 2,
|
|
103
|
-
"a.d": 3
|
|
104
|
-
}, ["a"])).toEqual({});
|
|
105
|
-
expect(removeKeysFromConfig({
|
|
106
|
-
"teams.allowClientTeamCreation": true,
|
|
107
|
-
"teams.createPersonalTeamOnSignUp": true
|
|
108
|
-
}, ["teams"])).toEqual({});
|
|
109
|
-
expect(removeKeysFromConfig({ teams: {
|
|
110
|
-
allowClientTeamCreation: true,
|
|
111
|
-
createPersonalTeamOnSignUp: true
|
|
112
|
-
} }, ["teams.allowClientTeamCreation"])).toEqual({ teams: { createPersonalTeamOnSignUp: true } });
|
|
113
|
-
expect(removeKeysFromConfig({ teams: { allowClientTeamCreation: true } }, ["teams.allowClientTeamCreation"])).toEqual({});
|
|
114
|
-
expect(removeKeysFromConfig({ teams: {
|
|
115
|
-
allowClientTeamCreation: true,
|
|
116
|
-
createPersonalTeamOnSignUp: true
|
|
117
|
-
} }, ["teams"])).toEqual({});
|
|
118
|
-
expect(removeKeysFromConfig({ a: { b: {
|
|
119
|
-
c: 1,
|
|
120
|
-
d: 2
|
|
121
|
-
} } }, ["a.b.c"])).toEqual({ a: { b: { d: 2 } } });
|
|
122
|
-
expect(removeKeysFromConfig({
|
|
123
|
-
"teams.allowClientTeamCreation": true,
|
|
124
|
-
teams: { createPersonalTeamOnSignUp: true }
|
|
125
|
-
}, ["teams.allowClientTeamCreation"])).toEqual({ teams: { createPersonalTeamOnSignUp: true } });
|
|
126
|
-
expect(removeKeysFromConfig({
|
|
127
|
-
"teams.allowClientTeamCreation": true,
|
|
128
|
-
teams: { createPersonalTeamOnSignUp: true }
|
|
129
|
-
}, ["teams"])).toEqual({});
|
|
130
|
-
expect(removeKeysFromConfig({ teams: { "a.b": 1 } }, ["teams.a.b"])).toEqual({});
|
|
131
|
-
expect(removeKeysFromConfig({ teams: { "a.b.c": 1 } }, ["teams.a.b"])).toEqual({});
|
|
132
|
-
expect(removeKeysFromConfig({
|
|
133
|
-
a: 1,
|
|
134
|
-
b: 2
|
|
135
|
-
}, [])).toEqual({
|
|
136
|
-
a: 1,
|
|
137
|
-
b: 2
|
|
138
|
-
});
|
|
139
|
-
expect(removeKeysFromConfig({
|
|
140
|
-
a: 1,
|
|
141
|
-
b: 2
|
|
142
|
-
}, ["c"])).toEqual({
|
|
143
|
-
a: 1,
|
|
144
|
-
b: 2
|
|
145
|
-
});
|
|
146
|
-
expect(removeKeysFromConfig({
|
|
147
|
-
a: 1,
|
|
148
|
-
b: 2
|
|
149
|
-
}, ["a.b"])).toEqual({
|
|
150
|
-
a: 1,
|
|
151
|
-
b: 2
|
|
152
|
-
});
|
|
153
|
-
expect(removeKeysFromConfig({
|
|
154
|
-
"a.b": 1,
|
|
155
|
-
"c.d": 2,
|
|
156
|
-
"e.f": 3
|
|
157
|
-
}, ["a.b", "e.f"])).toEqual({ "c.d": 2 });
|
|
158
|
-
expect(removeKeysFromConfig({
|
|
159
|
-
a: { b: 1 },
|
|
160
|
-
c: { d: 2 }
|
|
161
|
-
}, ["a.b", "c.d"])).toEqual({});
|
|
162
|
-
expect(removeKeysFromConfig({ a: "string" }, ["a.b"])).toEqual({ a: "string" });
|
|
163
|
-
expect(removeKeysFromConfig({ a: 123 }, ["a.b"])).toEqual({ a: 123 });
|
|
164
|
-
expect(removeKeysFromConfig({ a: null }, ["a.b"])).toEqual({ a: null });
|
|
165
|
-
expect(removeKeysFromConfig({ a: [
|
|
166
|
-
1,
|
|
167
|
-
2,
|
|
168
|
-
3
|
|
169
|
-
] }, ["a.0"])).toEqual({ a: [
|
|
170
|
-
1,
|
|
171
|
-
2,
|
|
172
|
-
3
|
|
173
|
-
] });
|
|
174
|
-
});
|
|
175
|
-
(void 0)?.test("override(...)", ({ expect }) => {
|
|
176
|
-
expect(override({
|
|
177
|
-
a: 1,
|
|
178
|
-
b: 2,
|
|
179
|
-
"c.d": 3,
|
|
180
|
-
"c.e.f": 4,
|
|
181
|
-
"c.g": 5,
|
|
182
|
-
h: [
|
|
183
|
-
6,
|
|
184
|
-
{ i: 7 },
|
|
185
|
-
8
|
|
186
|
-
],
|
|
187
|
-
k: 123,
|
|
188
|
-
l: void 0
|
|
189
|
-
}, {
|
|
190
|
-
a: 9,
|
|
191
|
-
"c.d": 10,
|
|
192
|
-
"c.e": null,
|
|
193
|
-
"h.0": 11,
|
|
194
|
-
"h.1": { j: 12 },
|
|
195
|
-
k: void 0
|
|
196
|
-
})).toEqual({
|
|
197
|
-
a: 9,
|
|
198
|
-
b: 2,
|
|
199
|
-
"c.d": 10,
|
|
200
|
-
"c.e": null,
|
|
201
|
-
"c.g": 5,
|
|
202
|
-
h: [
|
|
203
|
-
6,
|
|
204
|
-
{ i: 7 },
|
|
205
|
-
8
|
|
206
|
-
],
|
|
207
|
-
"h.0": 11,
|
|
208
|
-
"h.1": { j: 12 },
|
|
209
|
-
k: 123,
|
|
210
|
-
l: void 0
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
80
|
var NormalizationError = class extends Error {
|
|
214
81
|
constructor(...args) {
|
|
215
82
|
super(...args);
|
|
@@ -276,64 +143,6 @@ function setNormalizedValue(result, key, value, options) {
|
|
|
276
143
|
if ((0, ___utils_objects_js.hasAndNotUndefined)(result, key)) (0, ___utils_objects_js.deleteKey)(result, key);
|
|
277
144
|
} else (0, ___utils_objects_js.set)(result, key, normalizeValue(value, options));
|
|
278
145
|
}
|
|
279
|
-
(void 0)?.test("normalize(...)", ({ expect }) => {
|
|
280
|
-
expect(normalize({
|
|
281
|
-
a: 9,
|
|
282
|
-
b: 2,
|
|
283
|
-
c: {},
|
|
284
|
-
"c.d": 10,
|
|
285
|
-
"c.e": null,
|
|
286
|
-
"c.g": 5,
|
|
287
|
-
h: [
|
|
288
|
-
6,
|
|
289
|
-
{ i: 7 },
|
|
290
|
-
8
|
|
291
|
-
],
|
|
292
|
-
"h.0": 11,
|
|
293
|
-
"h.1": { j: 12 },
|
|
294
|
-
k: { l: {} },
|
|
295
|
-
"k.l.m": 13,
|
|
296
|
-
n: void 0
|
|
297
|
-
}, { onDotIntoNonObject: "ignore" })).toEqual({
|
|
298
|
-
a: 9,
|
|
299
|
-
b: 2,
|
|
300
|
-
c: {
|
|
301
|
-
d: 10,
|
|
302
|
-
g: 5
|
|
303
|
-
},
|
|
304
|
-
h: [
|
|
305
|
-
11,
|
|
306
|
-
{ j: 12 },
|
|
307
|
-
8
|
|
308
|
-
],
|
|
309
|
-
k: { l: { m: 13 } }
|
|
310
|
-
});
|
|
311
|
-
expect(() => normalize({ "b.c": 2 }, { onDotIntoNonObject: "throw" })).toThrow(`Tried to use dot notation to access "b.c", but "b" doesn't exist on the object (or is null)`);
|
|
312
|
-
expect(() => normalize({
|
|
313
|
-
b: null,
|
|
314
|
-
"b.c": 2
|
|
315
|
-
}, { onDotIntoNonObject: "throw" })).toThrow(`Tried to use dot notation to access "b.c", but "b" doesn't exist on the object (or is null)`);
|
|
316
|
-
expect(normalize({ "b.c": 2 }, { onDotIntoNonObject: "ignore" })).toEqual({});
|
|
317
|
-
expect(normalize({
|
|
318
|
-
"auth.allowSignUp": false,
|
|
319
|
-
"apps.installed.payments.enabled": false
|
|
320
|
-
}, {
|
|
321
|
-
onDotIntoNonObject: "ignore",
|
|
322
|
-
onDotIntoNull: "empty-object"
|
|
323
|
-
})).toEqual({
|
|
324
|
-
auth: { allowSignUp: false },
|
|
325
|
-
apps: { installed: { payments: { enabled: false } } }
|
|
326
|
-
});
|
|
327
|
-
expect(() => normalize({
|
|
328
|
-
b: 1,
|
|
329
|
-
"b.c": 2
|
|
330
|
-
}, { onDotIntoNonObject: "throw" })).toThrow(`Tried to use dot notation to access "b.c", but "b" is not an object`);
|
|
331
|
-
expect(normalize({
|
|
332
|
-
b: 1,
|
|
333
|
-
"b.c": 2
|
|
334
|
-
}, { onDotIntoNonObject: "ignore" })).toEqual({ b: 1 });
|
|
335
|
-
});
|
|
336
|
-
|
|
337
146
|
//#endregion
|
|
338
147
|
exports.NormalizationError = NormalizationError;
|
|
339
148
|
exports.assertNormalized = assertNormalized;
|
|
@@ -344,4 +153,5 @@ exports.isValidConfig = isValidConfig;
|
|
|
344
153
|
exports.normalize = normalize;
|
|
345
154
|
exports.override = override;
|
|
346
155
|
exports.removeKeysFromConfig = removeKeysFromConfig;
|
|
156
|
+
|
|
347
157
|
//# sourceMappingURL=format.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","names":[],"sources":["../../src/config/format.ts"],"sourcesContent":["// Format spec lives in the eng-handbook (random-thoughts/config-json-format.md).\n// (Previously linked to a public repo that doesn't exist — internal handbook only.)\n\nimport { HexclaveAssertionError, throwErr } from \"../utils/errors\";\nimport { deleteKey, filterUndefined, get, hasAndNotUndefined, set } from \"../utils/objects\";\nimport { OptionalKeys, RequiredKeys } from \"../utils/types\";\n\n\nexport type ConfigValue = string | number | boolean | null | ConfigValue[] | Config;\nexport type Config = {\n [keyOrDotNotation: string]: ConfigValue | undefined, // must support undefined for optional values\n};\n\nexport type NormalizedConfigValue = string | number | boolean | NormalizedConfig | NormalizedConfigValue[];\nexport type NormalizedConfig = {\n [key: string]: NormalizedConfigValue | undefined, // must support undefined for optional values\n};\n\nexport type _NormalizesTo<N> = N extends readonly any[]\n ? { [K in keyof N]: _NormalizesTo<N[K]> }\n : N extends object ? (\n & Config\n & { [K in OptionalKeys<N>]?: _NormalizesTo<N[K]> | null }\n & { [K in RequiredKeys<N>]: undefined extends N[K] ? _NormalizesTo<N[K]> | null : _NormalizesTo<N[K]> }\n & { [K in `${string}.${string}`]: ConfigValue }\n ) : N;\nexport type NormalizesTo<N extends NormalizedConfig> = _NormalizesTo<N>;\n\n/**\n * Note that a config can both be valid and not normalizable.\n */\nexport function isValidConfig(c: unknown): c is Config {\n return getInvalidConfigReason(c) === undefined;\n}\n\nexport function getInvalidConfigReason(c: unknown, options: { configName?: string } = {}): string | undefined {\n const configName = options.configName ?? 'config';\n if (c === null || typeof c !== 'object') return `${configName} must be a non-null object`;\n for (const [key, value] of Object.entries(c)) {\n if (value === undefined) continue;\n if (typeof key !== 'string') return `${configName} must have only string keys (found: ${typeof key})`;\n if (!key.match(/^[a-zA-Z0-9_:$][a-zA-Z_:$0-9\\-]*(?:\\.[a-zA-Z0-9_:$][a-zA-Z_:$0-9\\-]*)*$/)) return `All keys of ${configName} must consist of only alphanumeric characters, dots, underscores, colons, dollar signs, or hyphens and start with a character other than a hyphen (found: ${key})`;\n\n const entryName = `${configName}.${key}`;\n const reason = getInvalidConfigValueReason(value, { valueName: entryName });\n if (reason) return reason;\n }\n return undefined;\n}\n\nfunction getInvalidConfigValueReason(value: unknown, options: { valueName?: string } = {}): string | undefined {\n const valueName = options.valueName ?? 'value';\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean': {\n break;\n }\n case 'object': {\n if (value === null) {\n break;\n } else if (Array.isArray(value)) {\n for (const [index, v] of value.entries()) {\n const elementValueName = `${valueName}[${index}]`;\n if (v === null) return `${elementValueName} is null; tuple elements cannot be null`;\n const reason = getInvalidConfigValueReason(v, { valueName: elementValueName });\n if (reason) return reason;\n }\n } else {\n const reason = getInvalidConfigReason(value, { configName: valueName });\n if (reason) return reason;\n }\n break;\n }\n default: {\n return `${valueName} has an invalid value type ${typeof value} (value: ${value})`;\n }\n }\n return undefined;\n}\n\nexport function assertValidConfig(c: unknown) {\n const reason = getInvalidConfigReason(c);\n if (reason) throw new HexclaveAssertionError(`Invalid config: ${reason}`, { c });\n}\n\nexport function override(c1: Config, ...configs: Config[]) {\n if (configs.length === 0) return c1;\n if (configs.length > 1) return override(override(c1, configs[0]), ...configs.slice(1));\n const c2 = configs[0];\n\n assertValidConfig(c1);\n assertValidConfig(c2);\n\n let result = c1;\n for (const key of Object.keys(filterUndefined(c2))) {\n result = Object.fromEntries(\n Object.entries(result).filter(([k]) => k !== key && !k.startsWith(key + '.'))\n );\n }\n\n return {\n ...result,\n ...filterUndefined(c2),\n };\n}\n\n/**\n * Removes keys from a config override, using the same nested key logic as the `override` function.\n * Resetting key \"a.b\" also resets \"a.b.c\" (and any other descendants).\n * Handles both flat dot-notation keys and nested object keys.\n */\nexport function removeKeysFromConfig(config: Config, keysToRemove: string[]): Config {\n if (keysToRemove.length === 0) return config;\n\n const result: Config = {};\n for (const [key, value] of Object.entries(config)) {\n if (value === undefined) continue;\n\n // Check if this flat key matches or is a child of any key to remove (same logic as override)\n const shouldRemove = keysToRemove.some(k => key === k || key.startsWith(k + '.'));\n if (shouldRemove) continue;\n\n // Check if any key to remove is a descendant of this key (meaning it's nested inside this value)\n const childKeysToRemove = keysToRemove\n .filter(k => k.startsWith(key + '.'))\n .map(k => k.slice(key.length + 1));\n\n if (childKeysToRemove.length > 0 && typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const cleaned = removeKeysFromConfig(value as Config, childKeysToRemove);\n if (Object.keys(cleaned).length > 0) {\n result[key] = cleaned;\n }\n } else {\n result[key] = value;\n }\n }\n return result;\n}\n\nimport.meta.vitest?.test(\"removeKeysFromConfig(...)\", ({ expect }) => {\n // Basic flat key removal\n expect(removeKeysFromConfig({ a: 1, b: 2 }, [\"a\"])).toEqual({ b: 2 });\n expect(removeKeysFromConfig({ \"a.b\": 1, \"a.c\": 2, d: 3 }, [\"a.b\"])).toEqual({ \"a.c\": 2, d: 3 });\n\n // Removing a parent removes children (flat keys)\n expect(removeKeysFromConfig({ \"a.b\": 1, \"a.b.c\": 2, \"a.d\": 3 }, [\"a.b\"])).toEqual({ \"a.d\": 3 });\n expect(removeKeysFromConfig({ \"a.b\": 1, \"a.c\": 2, \"a.d\": 3 }, [\"a\"])).toEqual({});\n expect(removeKeysFromConfig({ \"teams.allowClientTeamCreation\": true, \"teams.createPersonalTeamOnSignUp\": true }, [\"teams\"])).toEqual({});\n\n // Nested object key removal\n expect(removeKeysFromConfig({ teams: { allowClientTeamCreation: true, createPersonalTeamOnSignUp: true } }, [\"teams.allowClientTeamCreation\"])).toEqual({ teams: { createPersonalTeamOnSignUp: true } });\n expect(removeKeysFromConfig({ teams: { allowClientTeamCreation: true } }, [\"teams.allowClientTeamCreation\"])).toEqual({});\n expect(removeKeysFromConfig({ teams: { allowClientTeamCreation: true, createPersonalTeamOnSignUp: true } }, [\"teams\"])).toEqual({});\n expect(removeKeysFromConfig({ a: { b: { c: 1, d: 2 } } }, [\"a.b.c\"])).toEqual({ a: { b: { d: 2 } } });\n\n // Mixed flat and nested\n expect(removeKeysFromConfig({ \"teams.allowClientTeamCreation\": true, teams: { createPersonalTeamOnSignUp: true } }, [\"teams.allowClientTeamCreation\"])).toEqual({ teams: { createPersonalTeamOnSignUp: true } });\n expect(removeKeysFromConfig({ \"teams.allowClientTeamCreation\": true, teams: { createPersonalTeamOnSignUp: true } }, [\"teams\"])).toEqual({});\n\n // Nested with dot-notation inner keys\n expect(removeKeysFromConfig({ teams: { \"a.b\": 1 } }, [\"teams.a.b\"])).toEqual({});\n expect(removeKeysFromConfig({ teams: { \"a.b.c\": 1 } }, [\"teams.a.b\"])).toEqual({});\n\n // No keys to remove\n expect(removeKeysFromConfig({ a: 1, b: 2 }, [])).toEqual({ a: 1, b: 2 });\n\n // Key not present (no-op)\n expect(removeKeysFromConfig({ a: 1, b: 2 }, [\"c\"])).toEqual({ a: 1, b: 2 });\n expect(removeKeysFromConfig({ a: 1, b: 2 }, [\"a.b\"])).toEqual({ a: 1, b: 2 });\n\n // Multiple keys to remove\n expect(removeKeysFromConfig({ \"a.b\": 1, \"c.d\": 2, \"e.f\": 3 }, [\"a.b\", \"e.f\"])).toEqual({ \"c.d\": 2 });\n expect(removeKeysFromConfig({ a: { b: 1 }, c: { d: 2 } }, [\"a.b\", \"c.d\"])).toEqual({});\n\n // Removing non-object values with nested key path (no-op for non-objects)\n expect(removeKeysFromConfig({ a: \"string\" }, [\"a.b\"])).toEqual({ a: \"string\" });\n expect(removeKeysFromConfig({ a: 123 }, [\"a.b\"])).toEqual({ a: 123 });\n expect(removeKeysFromConfig({ a: null }, [\"a.b\"])).toEqual({ a: null });\n\n // Array values are preserved (not recursed into)\n expect(removeKeysFromConfig({ a: [1, 2, 3] }, [\"a.0\"])).toEqual({ a: [1, 2, 3] });\n});\n\nimport.meta.vitest?.test(\"override(...)\", ({ expect }) => {\n expect(\n override(\n {\n a: 1,\n b: 2,\n \"c.d\": 3,\n \"c.e.f\": 4,\n \"c.g\": 5,\n h: [6, { i: 7 }, 8],\n k: 123,\n l: undefined,\n },\n {\n a: 9,\n \"c.d\": 10,\n \"c.e\": null,\n \"h.0\": 11,\n \"h.1\": {\n j: 12,\n },\n k: undefined,\n },\n )\n ).toEqual({\n a: 9,\n b: 2,\n \"c.d\": 10,\n \"c.e\": null,\n \"c.g\": 5,\n h: [6, { i: 7 }, 8],\n \"h.0\": 11,\n \"h.1\": {\n j: 12,\n },\n k: 123,\n l: undefined,\n });\n});\n\ntype NormalizeOptions = {\n /**\n * What to do if a dot notation is used on a value that is not an object.\n *\n * - \"throw\" (default): Throw an error.\n * - \"ignore\": Ignore the dot notation field.\n */\n onDotIntoNonObject?: \"throw\" | \"ignore\",\n /**\n * What to do if a dot notation is used on a value that is null.\n *\n * - \"like-non-object\" (default): Treat it like a non-object. See `onDotIntoNonObject`.\n * - \"throw\": Throw an error.\n * - \"ignore\": Ignore the dot notation field.\n * - \"empty-object\": Set the value to an empty object.\n */\n onDotIntoNull?: \"like-non-object\" | \"throw\" | \"ignore\" | \"empty-object\",\n /**\n * If provided, keys that are silently dropped during normalization (when a dot-notation key\n * references a parent that doesn't exist or is not an object and the behavior is \"ignore\")\n * will be pushed to this array.\n */\n droppedKeys?: string[],\n}\n\nexport class NormalizationError extends Error {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args);\n }\n}\nNormalizationError.prototype.name = \"NormalizationError\";\n\nexport function isNormalized(c: Config): c is NormalizedConfig {\n assertValidConfig(c);\n for (const [key, value] of Object.entries(c)) {\n if (value === undefined) continue;\n if (key.includes('.')) return false;\n if (value === null) return false;\n }\n return true;\n}\n\nexport function assertNormalized(c: Config): asserts c is NormalizedConfig {\n assertValidConfig(c);\n if (!isNormalized(c)) throw new HexclaveAssertionError(`Config is not normalized: ${JSON.stringify(c)}`);\n}\n\nexport function normalize(c: Config, options: NormalizeOptions = {}): NormalizedConfig {\n assertValidConfig(c);\n const onDotIntoNonObject = options.onDotIntoNonObject ?? \"throw\";\n const onDotIntoNull = options.onDotIntoNull ?? \"like-non-object\";\n\n const countDots = (s: string) => s.match(/\\./g)?.length ?? 0;\n const result: NormalizedConfig = {};\n const keysByDepth = Object.keys(c).sort((a, b) => countDots(a) - countDots(b));\n\n outer: for (const key of keysByDepth) {\n const keySegmentsWithoutLast = key.split('.');\n const last = keySegmentsWithoutLast.pop() ?? throwErr('split returns empty array?');\n const value = get(c, key);\n if (value === undefined) continue;\n\n let current: NormalizedConfig = result;\n for (const keySegment of keySegmentsWithoutLast) {\n if (!hasAndNotUndefined(current, keySegment)) {\n switch (onDotIntoNull === \"like-non-object\" ? onDotIntoNonObject : onDotIntoNull) {\n case \"throw\": {\n throw new NormalizationError(`Tried to use dot notation to access ${JSON.stringify(key)}, but ${JSON.stringify(keySegment)} doesn't exist on the object (or is null).`);\n }\n case \"ignore\": {\n options.droppedKeys?.push(key);\n continue outer;\n }\n case \"empty-object\": {\n set(current, keySegment, {});\n break;\n }\n }\n }\n const value = get(current, keySegment);\n if (typeof value !== 'object') {\n switch (onDotIntoNonObject) {\n case \"throw\": {\n throw new NormalizationError(`Tried to use dot notation to access ${JSON.stringify(key)}, but ${JSON.stringify(keySegment)} is not an object.`);\n }\n case \"ignore\": {\n options.droppedKeys?.push(key);\n continue outer;\n }\n }\n }\n current = value as NormalizedConfig;\n }\n setNormalizedValue(current, last, value, options);\n }\n return result;\n}\n\nfunction normalizeValue(value: ConfigValue, options: NormalizeOptions): NormalizedConfigValue {\n if (value === null) throw new NormalizationError(\"Tried to normalize a null value\");\n if (Array.isArray(value)) return value.map(v => normalizeValue(v, options));\n if (typeof value === 'object') return normalize(value, options);\n return value;\n}\n\nfunction setNormalizedValue(result: NormalizedConfig, key: string, value: ConfigValue, options: NormalizeOptions) {\n if (value === null) {\n if (hasAndNotUndefined(result, key)) {\n deleteKey(result, key);\n }\n } else {\n set(result, key, normalizeValue(value, options));\n }\n}\n\nimport.meta.vitest?.test(\"normalize(...)\", ({ expect }) => {\n expect(normalize({\n a: 9,\n b: 2,\n c: {},\n \"c.d\": 10,\n \"c.e\": null,\n \"c.g\": 5,\n h: [6, { i: 7 }, 8],\n \"h.0\": 11,\n \"h.1\": {\n j: 12,\n },\n k: { l: {} },\n \"k.l.m\": 13,\n n: undefined,\n }, { onDotIntoNonObject: \"ignore\" })).toEqual({\n a: 9,\n b: 2,\n c: {\n d: 10,\n g: 5,\n },\n h: [11, { j: 12 }, 8],\n k: { l: { m: 13 } },\n });\n\n // dotting into null\n expect(() => normalize({\n \"b.c\": 2,\n }, { onDotIntoNonObject: \"throw\" })).toThrow(`Tried to use dot notation to access \"b.c\", but \"b\" doesn't exist on the object (or is null)`);\n expect(() => normalize({\n b: null,\n \"b.c\": 2,\n }, { onDotIntoNonObject: \"throw\" })).toThrow(`Tried to use dot notation to access \"b.c\", but \"b\" doesn't exist on the object (or is null)`);\n expect(normalize({\n \"b.c\": 2,\n }, { onDotIntoNonObject: \"ignore\" })).toEqual({});\n expect(normalize({\n \"auth.allowSignUp\": false,\n \"apps.installed.payments.enabled\": false,\n }, {\n onDotIntoNonObject: \"ignore\",\n onDotIntoNull: \"empty-object\",\n })).toEqual({\n auth: {\n allowSignUp: false,\n },\n apps: {\n installed: {\n payments: {\n enabled: false,\n },\n },\n },\n });\n\n // dotting into non-object\n expect(() => normalize({\n b: 1,\n \"b.c\": 2,\n }, { onDotIntoNonObject: \"throw\" })).toThrow(`Tried to use dot notation to access \"b.c\", but \"b\" is not an object`);\n expect(normalize({\n b: 1,\n \"b.c\": 2,\n }, { onDotIntoNonObject: \"ignore\" })).toEqual({ b: 1 });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"format.js","names":["HexclaveAssertionError"],"sources":["../../src/config/format.ts"],"sourcesContent":["// Format spec lives in the eng-handbook (random-thoughts/config-json-format.md).\n// (Previously linked to a public repo that doesn't exist — internal handbook only.)\n\nimport { HexclaveAssertionError, throwErr } from \"../utils/errors\";\nimport { deleteKey, filterUndefined, get, hasAndNotUndefined, set } from \"../utils/objects\";\nimport { OptionalKeys, RequiredKeys } from \"../utils/types\";\n\n\nexport type ConfigValue = string | number | boolean | null | ConfigValue[] | Config;\nexport type Config = {\n [keyOrDotNotation: string]: ConfigValue | undefined, // must support undefined for optional values\n};\n\nexport type NormalizedConfigValue = string | number | boolean | NormalizedConfig | NormalizedConfigValue[];\nexport type NormalizedConfig = {\n [key: string]: NormalizedConfigValue | undefined, // must support undefined for optional values\n};\n\nexport type _NormalizesTo<N> = N extends readonly any[]\n ? { [K in keyof N]: _NormalizesTo<N[K]> }\n : N extends object ? (\n & Config\n & { [K in OptionalKeys<N>]?: _NormalizesTo<N[K]> | null }\n & { [K in RequiredKeys<N>]: undefined extends N[K] ? _NormalizesTo<N[K]> | null : _NormalizesTo<N[K]> }\n & { [K in `${string}.${string}`]: ConfigValue }\n ) : N;\nexport type NormalizesTo<N extends NormalizedConfig> = _NormalizesTo<N>;\n\n/**\n * Note that a config can both be valid and not normalizable.\n */\nexport function isValidConfig(c: unknown): c is Config {\n return getInvalidConfigReason(c) === undefined;\n}\n\nexport function getInvalidConfigReason(c: unknown, options: { configName?: string } = {}): string | undefined {\n const configName = options.configName ?? 'config';\n if (c === null || typeof c !== 'object') return `${configName} must be a non-null object`;\n for (const [key, value] of Object.entries(c)) {\n if (value === undefined) continue;\n if (typeof key !== 'string') return `${configName} must have only string keys (found: ${typeof key})`;\n if (!key.match(/^[a-zA-Z0-9_:$][a-zA-Z_:$0-9\\-]*(?:\\.[a-zA-Z0-9_:$][a-zA-Z_:$0-9\\-]*)*$/)) return `All keys of ${configName} must consist of only alphanumeric characters, dots, underscores, colons, dollar signs, or hyphens and start with a character other than a hyphen (found: ${key})`;\n\n const entryName = `${configName}.${key}`;\n const reason = getInvalidConfigValueReason(value, { valueName: entryName });\n if (reason) return reason;\n }\n return undefined;\n}\n\nfunction getInvalidConfigValueReason(value: unknown, options: { valueName?: string } = {}): string | undefined {\n const valueName = options.valueName ?? 'value';\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean': {\n break;\n }\n case 'object': {\n if (value === null) {\n break;\n } else if (Array.isArray(value)) {\n for (const [index, v] of value.entries()) {\n const elementValueName = `${valueName}[${index}]`;\n if (v === null) return `${elementValueName} is null; tuple elements cannot be null`;\n const reason = getInvalidConfigValueReason(v, { valueName: elementValueName });\n if (reason) return reason;\n }\n } else {\n const reason = getInvalidConfigReason(value, { configName: valueName });\n if (reason) return reason;\n }\n break;\n }\n default: {\n return `${valueName} has an invalid value type ${typeof value} (value: ${value})`;\n }\n }\n return undefined;\n}\n\nexport function assertValidConfig(c: unknown) {\n const reason = getInvalidConfigReason(c);\n if (reason) throw new HexclaveAssertionError(`Invalid config: ${reason}`, { c });\n}\n\nexport function override(c1: Config, ...configs: Config[]) {\n if (configs.length === 0) return c1;\n if (configs.length > 1) return override(override(c1, configs[0]), ...configs.slice(1));\n const c2 = configs[0];\n\n assertValidConfig(c1);\n assertValidConfig(c2);\n\n let result = c1;\n for (const key of Object.keys(filterUndefined(c2))) {\n result = Object.fromEntries(\n Object.entries(result).filter(([k]) => k !== key && !k.startsWith(key + '.'))\n );\n }\n\n return {\n ...result,\n ...filterUndefined(c2),\n };\n}\n\n/**\n * Removes keys from a config override, using the same nested key logic as the `override` function.\n * Resetting key \"a.b\" also resets \"a.b.c\" (and any other descendants).\n * Handles both flat dot-notation keys and nested object keys.\n */\nexport function removeKeysFromConfig(config: Config, keysToRemove: string[]): Config {\n if (keysToRemove.length === 0) return config;\n\n const result: Config = {};\n for (const [key, value] of Object.entries(config)) {\n if (value === undefined) continue;\n\n // Check if this flat key matches or is a child of any key to remove (same logic as override)\n const shouldRemove = keysToRemove.some(k => key === k || key.startsWith(k + '.'));\n if (shouldRemove) continue;\n\n // Check if any key to remove is a descendant of this key (meaning it's nested inside this value)\n const childKeysToRemove = keysToRemove\n .filter(k => k.startsWith(key + '.'))\n .map(k => k.slice(key.length + 1));\n\n if (childKeysToRemove.length > 0 && typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const cleaned = removeKeysFromConfig(value as Config, childKeysToRemove);\n if (Object.keys(cleaned).length > 0) {\n result[key] = cleaned;\n }\n } else {\n result[key] = value;\n }\n }\n return result;\n}\n\nimport.meta.vitest?.test(\"removeKeysFromConfig(...)\", ({ expect }) => {\n // Basic flat key removal\n expect(removeKeysFromConfig({ a: 1, b: 2 }, [\"a\"])).toEqual({ b: 2 });\n expect(removeKeysFromConfig({ \"a.b\": 1, \"a.c\": 2, d: 3 }, [\"a.b\"])).toEqual({ \"a.c\": 2, d: 3 });\n\n // Removing a parent removes children (flat keys)\n expect(removeKeysFromConfig({ \"a.b\": 1, \"a.b.c\": 2, \"a.d\": 3 }, [\"a.b\"])).toEqual({ \"a.d\": 3 });\n expect(removeKeysFromConfig({ \"a.b\": 1, \"a.c\": 2, \"a.d\": 3 }, [\"a\"])).toEqual({});\n expect(removeKeysFromConfig({ \"teams.allowClientTeamCreation\": true, \"teams.createPersonalTeamOnSignUp\": true }, [\"teams\"])).toEqual({});\n\n // Nested object key removal\n expect(removeKeysFromConfig({ teams: { allowClientTeamCreation: true, createPersonalTeamOnSignUp: true } }, [\"teams.allowClientTeamCreation\"])).toEqual({ teams: { createPersonalTeamOnSignUp: true } });\n expect(removeKeysFromConfig({ teams: { allowClientTeamCreation: true } }, [\"teams.allowClientTeamCreation\"])).toEqual({});\n expect(removeKeysFromConfig({ teams: { allowClientTeamCreation: true, createPersonalTeamOnSignUp: true } }, [\"teams\"])).toEqual({});\n expect(removeKeysFromConfig({ a: { b: { c: 1, d: 2 } } }, [\"a.b.c\"])).toEqual({ a: { b: { d: 2 } } });\n\n // Mixed flat and nested\n expect(removeKeysFromConfig({ \"teams.allowClientTeamCreation\": true, teams: { createPersonalTeamOnSignUp: true } }, [\"teams.allowClientTeamCreation\"])).toEqual({ teams: { createPersonalTeamOnSignUp: true } });\n expect(removeKeysFromConfig({ \"teams.allowClientTeamCreation\": true, teams: { createPersonalTeamOnSignUp: true } }, [\"teams\"])).toEqual({});\n\n // Nested with dot-notation inner keys\n expect(removeKeysFromConfig({ teams: { \"a.b\": 1 } }, [\"teams.a.b\"])).toEqual({});\n expect(removeKeysFromConfig({ teams: { \"a.b.c\": 1 } }, [\"teams.a.b\"])).toEqual({});\n\n // No keys to remove\n expect(removeKeysFromConfig({ a: 1, b: 2 }, [])).toEqual({ a: 1, b: 2 });\n\n // Key not present (no-op)\n expect(removeKeysFromConfig({ a: 1, b: 2 }, [\"c\"])).toEqual({ a: 1, b: 2 });\n expect(removeKeysFromConfig({ a: 1, b: 2 }, [\"a.b\"])).toEqual({ a: 1, b: 2 });\n\n // Multiple keys to remove\n expect(removeKeysFromConfig({ \"a.b\": 1, \"c.d\": 2, \"e.f\": 3 }, [\"a.b\", \"e.f\"])).toEqual({ \"c.d\": 2 });\n expect(removeKeysFromConfig({ a: { b: 1 }, c: { d: 2 } }, [\"a.b\", \"c.d\"])).toEqual({});\n\n // Removing non-object values with nested key path (no-op for non-objects)\n expect(removeKeysFromConfig({ a: \"string\" }, [\"a.b\"])).toEqual({ a: \"string\" });\n expect(removeKeysFromConfig({ a: 123 }, [\"a.b\"])).toEqual({ a: 123 });\n expect(removeKeysFromConfig({ a: null }, [\"a.b\"])).toEqual({ a: null });\n\n // Array values are preserved (not recursed into)\n expect(removeKeysFromConfig({ a: [1, 2, 3] }, [\"a.0\"])).toEqual({ a: [1, 2, 3] });\n});\n\nimport.meta.vitest?.test(\"override(...)\", ({ expect }) => {\n expect(\n override(\n {\n a: 1,\n b: 2,\n \"c.d\": 3,\n \"c.e.f\": 4,\n \"c.g\": 5,\n h: [6, { i: 7 }, 8],\n k: 123,\n l: undefined,\n },\n {\n a: 9,\n \"c.d\": 10,\n \"c.e\": null,\n \"h.0\": 11,\n \"h.1\": {\n j: 12,\n },\n k: undefined,\n },\n )\n ).toEqual({\n a: 9,\n b: 2,\n \"c.d\": 10,\n \"c.e\": null,\n \"c.g\": 5,\n h: [6, { i: 7 }, 8],\n \"h.0\": 11,\n \"h.1\": {\n j: 12,\n },\n k: 123,\n l: undefined,\n });\n});\n\ntype NormalizeOptions = {\n /**\n * What to do if a dot notation is used on a value that is not an object.\n *\n * - \"throw\" (default): Throw an error.\n * - \"ignore\": Ignore the dot notation field.\n */\n onDotIntoNonObject?: \"throw\" | \"ignore\",\n /**\n * What to do if a dot notation is used on a value that is null.\n *\n * - \"like-non-object\" (default): Treat it like a non-object. See `onDotIntoNonObject`.\n * - \"throw\": Throw an error.\n * - \"ignore\": Ignore the dot notation field.\n * - \"empty-object\": Set the value to an empty object.\n */\n onDotIntoNull?: \"like-non-object\" | \"throw\" | \"ignore\" | \"empty-object\",\n /**\n * If provided, keys that are silently dropped during normalization (when a dot-notation key\n * references a parent that doesn't exist or is not an object and the behavior is \"ignore\")\n * will be pushed to this array.\n */\n droppedKeys?: string[],\n}\n\nexport class NormalizationError extends Error {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args);\n }\n}\nNormalizationError.prototype.name = \"NormalizationError\";\n\nexport function isNormalized(c: Config): c is NormalizedConfig {\n assertValidConfig(c);\n for (const [key, value] of Object.entries(c)) {\n if (value === undefined) continue;\n if (key.includes('.')) return false;\n if (value === null) return false;\n }\n return true;\n}\n\nexport function assertNormalized(c: Config): asserts c is NormalizedConfig {\n assertValidConfig(c);\n if (!isNormalized(c)) throw new HexclaveAssertionError(`Config is not normalized: ${JSON.stringify(c)}`);\n}\n\nexport function normalize(c: Config, options: NormalizeOptions = {}): NormalizedConfig {\n assertValidConfig(c);\n const onDotIntoNonObject = options.onDotIntoNonObject ?? \"throw\";\n const onDotIntoNull = options.onDotIntoNull ?? \"like-non-object\";\n\n const countDots = (s: string) => s.match(/\\./g)?.length ?? 0;\n const result: NormalizedConfig = {};\n const keysByDepth = Object.keys(c).sort((a, b) => countDots(a) - countDots(b));\n\n outer: for (const key of keysByDepth) {\n const keySegmentsWithoutLast = key.split('.');\n const last = keySegmentsWithoutLast.pop() ?? throwErr('split returns empty array?');\n const value = get(c, key);\n if (value === undefined) continue;\n\n let current: NormalizedConfig = result;\n for (const keySegment of keySegmentsWithoutLast) {\n if (!hasAndNotUndefined(current, keySegment)) {\n switch (onDotIntoNull === \"like-non-object\" ? onDotIntoNonObject : onDotIntoNull) {\n case \"throw\": {\n throw new NormalizationError(`Tried to use dot notation to access ${JSON.stringify(key)}, but ${JSON.stringify(keySegment)} doesn't exist on the object (or is null).`);\n }\n case \"ignore\": {\n options.droppedKeys?.push(key);\n continue outer;\n }\n case \"empty-object\": {\n set(current, keySegment, {});\n break;\n }\n }\n }\n const value = get(current, keySegment);\n if (typeof value !== 'object') {\n switch (onDotIntoNonObject) {\n case \"throw\": {\n throw new NormalizationError(`Tried to use dot notation to access ${JSON.stringify(key)}, but ${JSON.stringify(keySegment)} is not an object.`);\n }\n case \"ignore\": {\n options.droppedKeys?.push(key);\n continue outer;\n }\n }\n }\n current = value as NormalizedConfig;\n }\n setNormalizedValue(current, last, value, options);\n }\n return result;\n}\n\nfunction normalizeValue(value: ConfigValue, options: NormalizeOptions): NormalizedConfigValue {\n if (value === null) throw new NormalizationError(\"Tried to normalize a null value\");\n if (Array.isArray(value)) return value.map(v => normalizeValue(v, options));\n if (typeof value === 'object') return normalize(value, options);\n return value;\n}\n\nfunction setNormalizedValue(result: NormalizedConfig, key: string, value: ConfigValue, options: NormalizeOptions) {\n if (value === null) {\n if (hasAndNotUndefined(result, key)) {\n deleteKey(result, key);\n }\n } else {\n set(result, key, normalizeValue(value, options));\n }\n}\n\nimport.meta.vitest?.test(\"normalize(...)\", ({ expect }) => {\n expect(normalize({\n a: 9,\n b: 2,\n c: {},\n \"c.d\": 10,\n \"c.e\": null,\n \"c.g\": 5,\n h: [6, { i: 7 }, 8],\n \"h.0\": 11,\n \"h.1\": {\n j: 12,\n },\n k: { l: {} },\n \"k.l.m\": 13,\n n: undefined,\n }, { onDotIntoNonObject: \"ignore\" })).toEqual({\n a: 9,\n b: 2,\n c: {\n d: 10,\n g: 5,\n },\n h: [11, { j: 12 }, 8],\n k: { l: { m: 13 } },\n });\n\n // dotting into null\n expect(() => normalize({\n \"b.c\": 2,\n }, { onDotIntoNonObject: \"throw\" })).toThrow(`Tried to use dot notation to access \"b.c\", but \"b\" doesn't exist on the object (or is null)`);\n expect(() => normalize({\n b: null,\n \"b.c\": 2,\n }, { onDotIntoNonObject: \"throw\" })).toThrow(`Tried to use dot notation to access \"b.c\", but \"b\" doesn't exist on the object (or is null)`);\n expect(normalize({\n \"b.c\": 2,\n }, { onDotIntoNonObject: \"ignore\" })).toEqual({});\n expect(normalize({\n \"auth.allowSignUp\": false,\n \"apps.installed.payments.enabled\": false,\n }, {\n onDotIntoNonObject: \"ignore\",\n onDotIntoNull: \"empty-object\",\n })).toEqual({\n auth: {\n allowSignUp: false,\n },\n apps: {\n installed: {\n payments: {\n enabled: false,\n },\n },\n },\n });\n\n // dotting into non-object\n expect(() => normalize({\n b: 1,\n \"b.c\": 2,\n }, { onDotIntoNonObject: \"throw\" })).toThrow(`Tried to use dot notation to access \"b.c\", but \"b\" is not an object`);\n expect(normalize({\n b: 1,\n \"b.c\": 2,\n }, { onDotIntoNonObject: \"ignore\" })).toEqual({ b: 1 });\n});\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-catalogs-to-product-lines.d.ts","names":[],"sources":["../../src/config/migrate-catalogs-to-product-lines.ts"],"mappings":";;AAwCA;;;;;;;;iBAAgB,6BAAA,CAA8B,GAAA,EAAK,MAAA,gBAAsB,
|
|
1
|
+
{"version":3,"file":"migrate-catalogs-to-product-lines.d.ts","names":[],"sources":["../../src/config/migrate-catalogs-to-product-lines.ts"],"mappings":";;AAwCA;;;;;;;;iBAAgB,6BAAA,CAA8B,GAAA,EAAK,MAAA,gBAAsB,MAAM"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
const require_chunk = require('../chunk-BE-pF4vm.js');
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
2
|
let ___utils_errors_js = require("../utils/errors.js");
|
|
4
3
|
let ___utils_objects_js = require("../utils/objects.js");
|
|
5
|
-
|
|
6
4
|
//#region src/config/migrate-catalogs-to-product-lines.ts
|
|
7
5
|
/**
|
|
8
6
|
* Renames properties in an object based on a path condition.
|
|
@@ -181,199 +179,7 @@ function addCustomerTypeToCatalog(obj, catalogId, customerType) {
|
|
|
181
179
|
}
|
|
182
180
|
return res;
|
|
183
181
|
}
|
|
184
|
-
(void 0)?.test("migrateCatalogsToProductLines - basic migrations", ({ expect }) => {
|
|
185
|
-
expect(migrateCatalogsToProductLines({ payments: {
|
|
186
|
-
catalogs: { myCatalog: { displayName: "My Catalog" } },
|
|
187
|
-
products: { myProduct: {
|
|
188
|
-
catalogId: "myCatalog",
|
|
189
|
-
customerType: "user",
|
|
190
|
-
prices: {}
|
|
191
|
-
} }
|
|
192
|
-
} })).toEqual({ payments: {
|
|
193
|
-
productLines: { myCatalog: {
|
|
194
|
-
displayName: "My Catalog",
|
|
195
|
-
customerType: "user"
|
|
196
|
-
} },
|
|
197
|
-
products: { myProduct: {
|
|
198
|
-
productLineId: "myCatalog",
|
|
199
|
-
customerType: "user",
|
|
200
|
-
prices: {}
|
|
201
|
-
} }
|
|
202
|
-
} });
|
|
203
|
-
expect(migrateCatalogsToProductLines({
|
|
204
|
-
"payments.catalogs.myCatalog": { displayName: "My Catalog" },
|
|
205
|
-
"payments.products.myProduct.catalogId": "myCatalog",
|
|
206
|
-
"payments.products.myProduct.customerType": "user"
|
|
207
|
-
})).toEqual({
|
|
208
|
-
"payments.productLines.myCatalog": {
|
|
209
|
-
displayName: "My Catalog",
|
|
210
|
-
customerType: "user"
|
|
211
|
-
},
|
|
212
|
-
"payments.products.myProduct.productLineId": "myCatalog",
|
|
213
|
-
"payments.products.myProduct.customerType": "user"
|
|
214
|
-
});
|
|
215
|
-
expect(migrateCatalogsToProductLines({
|
|
216
|
-
payments: { catalogs: { myCatalog: { displayName: "My Catalog" } } },
|
|
217
|
-
"payments.products.myProduct": {
|
|
218
|
-
catalogId: "myCatalog",
|
|
219
|
-
customerType: "user"
|
|
220
|
-
}
|
|
221
|
-
})).toEqual({
|
|
222
|
-
payments: { productLines: { myCatalog: {
|
|
223
|
-
displayName: "My Catalog",
|
|
224
|
-
customerType: "user"
|
|
225
|
-
} } },
|
|
226
|
-
"payments.products.myProduct": {
|
|
227
|
-
productLineId: "myCatalog",
|
|
228
|
-
customerType: "user"
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
(void 0)?.test("migrateCatalogsToProductLines - does not overwrite existing customerType", ({ expect }) => {
|
|
233
|
-
expect(migrateCatalogsToProductLines({ payments: {
|
|
234
|
-
catalogs: { myCatalog: {
|
|
235
|
-
displayName: "My Catalog",
|
|
236
|
-
customerType: "team"
|
|
237
|
-
} },
|
|
238
|
-
products: { myProduct: {
|
|
239
|
-
catalogId: "myCatalog",
|
|
240
|
-
customerType: "user",
|
|
241
|
-
prices: {}
|
|
242
|
-
} }
|
|
243
|
-
} })).toEqual({ payments: {
|
|
244
|
-
productLines: { myCatalog: {
|
|
245
|
-
displayName: "My Catalog",
|
|
246
|
-
customerType: "team"
|
|
247
|
-
} },
|
|
248
|
-
products: { myProduct: {
|
|
249
|
-
productLineId: "myCatalog",
|
|
250
|
-
customerType: "user",
|
|
251
|
-
prices: {}
|
|
252
|
-
} }
|
|
253
|
-
} });
|
|
254
|
-
});
|
|
255
|
-
(void 0)?.test("migrateCatalogsToProductLines - multiple catalogs and products", ({ expect }) => {
|
|
256
|
-
expect(migrateCatalogsToProductLines({ payments: {
|
|
257
|
-
catalogs: {
|
|
258
|
-
userPlans: { displayName: "User Plans" },
|
|
259
|
-
teamPlans: { displayName: "Team Plans" }
|
|
260
|
-
},
|
|
261
|
-
products: {
|
|
262
|
-
userBasic: {
|
|
263
|
-
catalogId: "userPlans",
|
|
264
|
-
customerType: "user",
|
|
265
|
-
prices: {}
|
|
266
|
-
},
|
|
267
|
-
userPro: {
|
|
268
|
-
catalogId: "userPlans",
|
|
269
|
-
customerType: "user",
|
|
270
|
-
prices: {}
|
|
271
|
-
},
|
|
272
|
-
teamBasic: {
|
|
273
|
-
catalogId: "teamPlans",
|
|
274
|
-
customerType: "team",
|
|
275
|
-
prices: {}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
} })).toEqual({ payments: {
|
|
279
|
-
productLines: {
|
|
280
|
-
userPlans: {
|
|
281
|
-
displayName: "User Plans",
|
|
282
|
-
customerType: "user"
|
|
283
|
-
},
|
|
284
|
-
teamPlans: {
|
|
285
|
-
displayName: "Team Plans",
|
|
286
|
-
customerType: "team"
|
|
287
|
-
}
|
|
288
|
-
},
|
|
289
|
-
products: {
|
|
290
|
-
userBasic: {
|
|
291
|
-
productLineId: "userPlans",
|
|
292
|
-
customerType: "user",
|
|
293
|
-
prices: {}
|
|
294
|
-
},
|
|
295
|
-
userPro: {
|
|
296
|
-
productLineId: "userPlans",
|
|
297
|
-
customerType: "user",
|
|
298
|
-
prices: {}
|
|
299
|
-
},
|
|
300
|
-
teamBasic: {
|
|
301
|
-
productLineId: "teamPlans",
|
|
302
|
-
customerType: "team",
|
|
303
|
-
prices: {}
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
} });
|
|
307
|
-
});
|
|
308
|
-
(void 0)?.test("migrateCatalogsToProductLines - catalog without products is removed", ({ expect }) => {
|
|
309
|
-
expect(migrateCatalogsToProductLines({ payments: {
|
|
310
|
-
catalogs: { emptyCatalog: { displayName: "Empty" } },
|
|
311
|
-
products: {}
|
|
312
|
-
} })).toEqual({ payments: {
|
|
313
|
-
productLines: {},
|
|
314
|
-
products: {}
|
|
315
|
-
} });
|
|
316
|
-
});
|
|
317
|
-
(void 0)?.test("migrateCatalogsToProductLines - products without catalogId", ({ expect }) => {
|
|
318
|
-
expect(migrateCatalogsToProductLines({ payments: {
|
|
319
|
-
catalogs: { myCatalog: { displayName: "My Catalog" } },
|
|
320
|
-
products: { standalone: {
|
|
321
|
-
customerType: "user",
|
|
322
|
-
prices: {}
|
|
323
|
-
} }
|
|
324
|
-
} })).toEqual({ payments: {
|
|
325
|
-
productLines: {},
|
|
326
|
-
products: { standalone: {
|
|
327
|
-
customerType: "user",
|
|
328
|
-
prices: {}
|
|
329
|
-
} }
|
|
330
|
-
} });
|
|
331
|
-
});
|
|
332
|
-
(void 0)?.test("migrateCatalogsToProductLines - deeply nested flat format", ({ expect }) => {
|
|
333
|
-
expect(migrateCatalogsToProductLines({
|
|
334
|
-
"payments.catalogs.myCatalog.displayName": "My Catalog",
|
|
335
|
-
"payments.products.myProduct.catalogId": "myCatalog",
|
|
336
|
-
"payments.products.myProduct.customerType": "user",
|
|
337
|
-
"payments.products.myProduct.prices": {}
|
|
338
|
-
})).toEqual({
|
|
339
|
-
"payments.productLines.myCatalog.displayName": "My Catalog",
|
|
340
|
-
"payments.productLines.myCatalog.customerType": "user",
|
|
341
|
-
"payments.products.myProduct.productLineId": "myCatalog",
|
|
342
|
-
"payments.products.myProduct.customerType": "user",
|
|
343
|
-
"payments.products.myProduct.prices": {}
|
|
344
|
-
});
|
|
345
|
-
});
|
|
346
|
-
(void 0)?.test("migrateCatalogsToProductLines - no catalogs", ({ expect }) => {
|
|
347
|
-
expect(migrateCatalogsToProductLines({ payments: { products: { myProduct: {
|
|
348
|
-
catalogId: "someCatalog",
|
|
349
|
-
customerType: "user"
|
|
350
|
-
} } } })).toEqual({ payments: { products: { myProduct: {
|
|
351
|
-
productLineId: "someCatalog",
|
|
352
|
-
customerType: "user"
|
|
353
|
-
} } } });
|
|
354
|
-
});
|
|
355
|
-
(void 0)?.test("migrateCatalogsToProductLines - already migrated (productLines)", ({ expect }) => {
|
|
356
|
-
expect(migrateCatalogsToProductLines({ payments: {
|
|
357
|
-
productLines: { myLine: {
|
|
358
|
-
displayName: "My Line",
|
|
359
|
-
customerType: "team"
|
|
360
|
-
} },
|
|
361
|
-
products: { myProduct: {
|
|
362
|
-
productLineId: "myLine",
|
|
363
|
-
customerType: "team"
|
|
364
|
-
} }
|
|
365
|
-
} })).toEqual({ payments: {
|
|
366
|
-
productLines: { myLine: {
|
|
367
|
-
displayName: "My Line",
|
|
368
|
-
customerType: "team"
|
|
369
|
-
} },
|
|
370
|
-
products: { myProduct: {
|
|
371
|
-
productLineId: "myLine",
|
|
372
|
-
customerType: "team"
|
|
373
|
-
} }
|
|
374
|
-
} });
|
|
375
|
-
});
|
|
376
|
-
|
|
377
182
|
//#endregion
|
|
378
183
|
exports.migrateCatalogsToProductLines = migrateCatalogsToProductLines;
|
|
184
|
+
|
|
379
185
|
//# sourceMappingURL=migrate-catalogs-to-product-lines.js.map
|