@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
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
import { InternalSession } from "./sessions.js";
|
|
3
|
-
|
|
4
3
|
//#region src/sessions.test.ts
|
|
5
4
|
/**
|
|
6
5
|
* Builds a decodable (unsigned) access-token JWT with a valid payload. `refreshTokenId` controls the
|
|
@@ -172,7 +171,7 @@ describe("InternalSession#updateAccessToken", () => {
|
|
|
172
171
|
expect(currentToken(session)).toBe(initial);
|
|
173
172
|
});
|
|
174
173
|
});
|
|
175
|
-
|
|
176
174
|
//#endregion
|
|
177
|
-
export {
|
|
175
|
+
export {};
|
|
176
|
+
|
|
178
177
|
//# sourceMappingURL=sessions.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.test.js","names":[],"sources":["../../src/sessions.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { InternalSession } from \"./sessions\";\n\n/**\n * Builds a decodable (unsigned) access-token JWT with a valid payload. `refreshTokenId` controls the\n * `refresh_token_id` claim (the session identifier); `iatOffsetSeconds` lets two tokens for the same session\n * differ as strings while sharing a `refresh_token_id`.\n */\nfunction createAccessTokenString(refreshTokenId: string, options?: { iatOffsetSeconds?: number, sub?: string }): string {\n const encode = (value: unknown) => Buffer.from(JSON.stringify(value)).toString(\"base64url\");\n const nowSeconds = Math.floor(Date.now() / 1000) + (options?.iatOffsetSeconds ?? 0);\n return [\n encode({ alg: \"none\", typ: \"JWT\" }),\n encode({\n sub: options?.sub ?? \"user-id\",\n exp: nowSeconds + 60,\n iat: nowSeconds,\n iss: \"https://api.example.test\",\n aud: \"project-id\",\n project_id: \"project-id\",\n branch_id: \"main\",\n refresh_token_id: refreshTokenId,\n role: \"authenticated\",\n name: null,\n email: null,\n email_verified: false,\n selected_team_id: null,\n signed_up_at: nowSeconds,\n is_anonymous: false,\n is_restricted: false,\n restricted_reason: null,\n requires_totp_mfa: false,\n }),\n \"\",\n ].join(\".\");\n}\n\nfunction createAccessOnlySession(accessToken: string): InternalSession {\n return new InternalSession({\n refreshAccessTokenCallback: async () => null,\n refreshToken: null,\n accessToken,\n });\n}\n\nconst currentToken = (session: InternalSession) => session.getAccessTokenIfNotExpiredYet(20_000, null)?.token;\n\ndescribe(\"InternalSession.calculateSessionKey\", () => {\n it(\"keys by the refresh token when one is present (ignoring any access token)\", () => {\n expect(InternalSession.calculateSessionKey({ refreshToken: \"rt-abc\" })).toBe(\"refresh-rt-abc\");\n expect(InternalSession.calculateSessionKey({ refreshToken: \"rt-abc\", accessToken: createAccessTokenString(\"rtid-1\") }))\n .toBe(\"refresh-rt-abc\");\n });\n\n it(\"returns not-logged-in when neither token is present\", () => {\n expect(InternalSession.calculateSessionKey({ refreshToken: null })).toBe(\"not-logged-in\");\n expect(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: null })).toBe(\"not-logged-in\");\n });\n\n it(\"keys an access-only session by its refresh_token_id\", () => {\n expect(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: createAccessTokenString(\"rtid-1\") }))\n .toBe(\"access-session-rtid-1\");\n });\n\n it(\"is stable across re-minted access tokens for the same session (the regression this fixes)\", () => {\n const first = createAccessTokenString(\"rtid-1\", { iatOffsetSeconds: 0 });\n const second = createAccessTokenString(\"rtid-1\", { iatOffsetSeconds: 1 });\n expect(second).not.toBe(first);\n expect(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: second }))\n .toBe(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: first }));\n });\n\n it(\"distinguishes access-only sessions with different refresh_token_ids\", () => {\n expect(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: createAccessTokenString(\"rtid-1\") }))\n .not.toBe(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: createAccessTokenString(\"rtid-2\") }));\n });\n\n it(\"falls back to the raw token when the access token can't be decoded\", () => {\n expect(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: \"not-a-jwt\" })).toBe(\"access-not-a-jwt\");\n });\n});\n\ndescribe(\"InternalSession#updateAccessToken\", () => {\n it(\"installs a fresh token for the same access-only session in place\", () => {\n const initial = createAccessTokenString(\"rtid-1\", { iatOffsetSeconds: 0 });\n const refreshed = createAccessTokenString(\"rtid-1\", { iatOffsetSeconds: 1 });\n const session = createAccessOnlySession(initial);\n\n session.updateAccessToken({ accessToken: refreshed, refreshToken: null });\n expect(currentToken(session)).toBe(refreshed);\n // identity is unchanged — same session key, same object\n expect(session.sessionKey).toBe(\"access-session-rtid-1\");\n });\n\n it(\"rejects a token pair belonging to a different access-only session\", () => {\n const initial = createAccessTokenString(\"rtid-1\");\n const foreign = createAccessTokenString(\"rtid-2\", { sub: \"other-user\" });\n const session = createAccessOnlySession(initial);\n\n session.updateAccessToken({ accessToken: foreign, refreshToken: null });\n expect(currentToken(session)).toBe(initial);\n });\n\n it(\"is a no-op for an unchanged, null, or undecodable token\", () => {\n const initial = createAccessTokenString(\"rtid-1\");\n const session = createAccessOnlySession(initial);\n\n session.updateAccessToken({ accessToken: initial, refreshToken: null });\n session.updateAccessToken({ accessToken: null, refreshToken: null });\n session.updateAccessToken({ accessToken: \"not-a-jwt\", refreshToken: null });\n expect(currentToken(session)).toBe(initial);\n });\n\n it(\"never revives an invalidated session\", () => {\n const session = createAccessOnlySession(createAccessTokenString(\"rtid-1\"));\n session.markInvalid();\n\n session.updateAccessToken({ accessToken: createAccessTokenString(\"rtid-1\", { iatOffsetSeconds: 1 }), refreshToken: null });\n expect(session.isKnownToBeInvalid()).toBe(true);\n expect(currentToken(session)).toBeUndefined();\n });\n\n it(\"updates a refresh-token-backed session's access token in place when the refresh token matches\", () => {\n const session = new InternalSession({\n refreshAccessTokenCallback: async () => null,\n refreshToken: \"rt-abc\",\n accessToken: createAccessTokenString(\"rtid-1\"),\n });\n const refreshed = createAccessTokenString(\"rtid-2\", { iatOffsetSeconds: 1 });\n\n session.updateAccessToken({ accessToken: refreshed, refreshToken: \"rt-abc\" });\n expect(currentToken(session)).toBe(refreshed);\n expect(session.sessionKey).toBe(\"refresh-rt-abc\");\n });\n\n it(\"rejects a token pair carrying a different refresh token for a refresh-backed session\", () => {\n const initial = createAccessTokenString(\"rtid-1\");\n const session = new InternalSession({\n refreshAccessTokenCallback: async () => null,\n refreshToken: \"rt-abc\",\n accessToken: initial,\n });\n\n session.updateAccessToken({ accessToken: createAccessTokenString(\"rtid-2\"), refreshToken: \"rt-other\" });\n expect(currentToken(session)).toBe(initial);\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sessions.test.js","names":[],"sources":["../../src/sessions.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { InternalSession } from \"./sessions\";\n\n/**\n * Builds a decodable (unsigned) access-token JWT with a valid payload. `refreshTokenId` controls the\n * `refresh_token_id` claim (the session identifier); `iatOffsetSeconds` lets two tokens for the same session\n * differ as strings while sharing a `refresh_token_id`.\n */\nfunction createAccessTokenString(refreshTokenId: string, options?: { iatOffsetSeconds?: number, sub?: string }): string {\n const encode = (value: unknown) => Buffer.from(JSON.stringify(value)).toString(\"base64url\");\n const nowSeconds = Math.floor(Date.now() / 1000) + (options?.iatOffsetSeconds ?? 0);\n return [\n encode({ alg: \"none\", typ: \"JWT\" }),\n encode({\n sub: options?.sub ?? \"user-id\",\n exp: nowSeconds + 60,\n iat: nowSeconds,\n iss: \"https://api.example.test\",\n aud: \"project-id\",\n project_id: \"project-id\",\n branch_id: \"main\",\n refresh_token_id: refreshTokenId,\n role: \"authenticated\",\n name: null,\n email: null,\n email_verified: false,\n selected_team_id: null,\n signed_up_at: nowSeconds,\n is_anonymous: false,\n is_restricted: false,\n restricted_reason: null,\n requires_totp_mfa: false,\n }),\n \"\",\n ].join(\".\");\n}\n\nfunction createAccessOnlySession(accessToken: string): InternalSession {\n return new InternalSession({\n refreshAccessTokenCallback: async () => null,\n refreshToken: null,\n accessToken,\n });\n}\n\nconst currentToken = (session: InternalSession) => session.getAccessTokenIfNotExpiredYet(20_000, null)?.token;\n\ndescribe(\"InternalSession.calculateSessionKey\", () => {\n it(\"keys by the refresh token when one is present (ignoring any access token)\", () => {\n expect(InternalSession.calculateSessionKey({ refreshToken: \"rt-abc\" })).toBe(\"refresh-rt-abc\");\n expect(InternalSession.calculateSessionKey({ refreshToken: \"rt-abc\", accessToken: createAccessTokenString(\"rtid-1\") }))\n .toBe(\"refresh-rt-abc\");\n });\n\n it(\"returns not-logged-in when neither token is present\", () => {\n expect(InternalSession.calculateSessionKey({ refreshToken: null })).toBe(\"not-logged-in\");\n expect(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: null })).toBe(\"not-logged-in\");\n });\n\n it(\"keys an access-only session by its refresh_token_id\", () => {\n expect(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: createAccessTokenString(\"rtid-1\") }))\n .toBe(\"access-session-rtid-1\");\n });\n\n it(\"is stable across re-minted access tokens for the same session (the regression this fixes)\", () => {\n const first = createAccessTokenString(\"rtid-1\", { iatOffsetSeconds: 0 });\n const second = createAccessTokenString(\"rtid-1\", { iatOffsetSeconds: 1 });\n expect(second).not.toBe(first);\n expect(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: second }))\n .toBe(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: first }));\n });\n\n it(\"distinguishes access-only sessions with different refresh_token_ids\", () => {\n expect(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: createAccessTokenString(\"rtid-1\") }))\n .not.toBe(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: createAccessTokenString(\"rtid-2\") }));\n });\n\n it(\"falls back to the raw token when the access token can't be decoded\", () => {\n expect(InternalSession.calculateSessionKey({ refreshToken: null, accessToken: \"not-a-jwt\" })).toBe(\"access-not-a-jwt\");\n });\n});\n\ndescribe(\"InternalSession#updateAccessToken\", () => {\n it(\"installs a fresh token for the same access-only session in place\", () => {\n const initial = createAccessTokenString(\"rtid-1\", { iatOffsetSeconds: 0 });\n const refreshed = createAccessTokenString(\"rtid-1\", { iatOffsetSeconds: 1 });\n const session = createAccessOnlySession(initial);\n\n session.updateAccessToken({ accessToken: refreshed, refreshToken: null });\n expect(currentToken(session)).toBe(refreshed);\n // identity is unchanged — same session key, same object\n expect(session.sessionKey).toBe(\"access-session-rtid-1\");\n });\n\n it(\"rejects a token pair belonging to a different access-only session\", () => {\n const initial = createAccessTokenString(\"rtid-1\");\n const foreign = createAccessTokenString(\"rtid-2\", { sub: \"other-user\" });\n const session = createAccessOnlySession(initial);\n\n session.updateAccessToken({ accessToken: foreign, refreshToken: null });\n expect(currentToken(session)).toBe(initial);\n });\n\n it(\"is a no-op for an unchanged, null, or undecodable token\", () => {\n const initial = createAccessTokenString(\"rtid-1\");\n const session = createAccessOnlySession(initial);\n\n session.updateAccessToken({ accessToken: initial, refreshToken: null });\n session.updateAccessToken({ accessToken: null, refreshToken: null });\n session.updateAccessToken({ accessToken: \"not-a-jwt\", refreshToken: null });\n expect(currentToken(session)).toBe(initial);\n });\n\n it(\"never revives an invalidated session\", () => {\n const session = createAccessOnlySession(createAccessTokenString(\"rtid-1\"));\n session.markInvalid();\n\n session.updateAccessToken({ accessToken: createAccessTokenString(\"rtid-1\", { iatOffsetSeconds: 1 }), refreshToken: null });\n expect(session.isKnownToBeInvalid()).toBe(true);\n expect(currentToken(session)).toBeUndefined();\n });\n\n it(\"updates a refresh-token-backed session's access token in place when the refresh token matches\", () => {\n const session = new InternalSession({\n refreshAccessTokenCallback: async () => null,\n refreshToken: \"rt-abc\",\n accessToken: createAccessTokenString(\"rtid-1\"),\n });\n const refreshed = createAccessTokenString(\"rtid-2\", { iatOffsetSeconds: 1 });\n\n session.updateAccessToken({ accessToken: refreshed, refreshToken: \"rt-abc\" });\n expect(currentToken(session)).toBe(refreshed);\n expect(session.sessionKey).toBe(\"refresh-rt-abc\");\n });\n\n it(\"rejects a token pair carrying a different refresh token for a refresh-backed session\", () => {\n const initial = createAccessTokenString(\"rtid-1\");\n const session = new InternalSession({\n refreshAccessTokenCallback: async () => null,\n refreshToken: \"rt-abc\",\n accessToken: initial,\n });\n\n session.updateAccessToken({ accessToken: createAccessTokenString(\"rtid-2\"), refreshToken: \"rt-other\" });\n expect(currentToken(session)).toBe(initial);\n });\n});\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-clickmap-overlay.d.ts","names":[],"sources":["../../../src/utils/analytics-clickmap-overlay.tsx"],"mappings":";;AAYA
|
|
1
|
+
{"version":3,"file":"analytics-clickmap-overlay.d.ts","names":[],"sources":["../../../src/utils/analytics-clickmap-overlay.tsx"],"mappings":";;AAYA;;;;AAA+C;AAC/C;;;;AAAgD;cADnC,kCAAA;AAAA,cACA,mCAAA;AAAA,cACA,oCAAA"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
const CLICKMAP_OVERLAY_TOKEN_STORAGE_KEY = "hexclave-clickmap-token";
|
|
14
14
|
const CLICKMAP_OVERLAY_RESUME_STORAGE_KEY = "hexclave-clickmap-resume";
|
|
15
15
|
const CLICKMAP_OVERLAY_TOKEN_UPDATED_EVENT = "hexclave:clickmap-token-updated";
|
|
16
|
-
|
|
17
16
|
//#endregion
|
|
18
17
|
export { CLICKMAP_OVERLAY_RESUME_STORAGE_KEY, CLICKMAP_OVERLAY_TOKEN_STORAGE_KEY, CLICKMAP_OVERLAY_TOKEN_UPDATED_EVENT };
|
|
18
|
+
|
|
19
19
|
//# sourceMappingURL=analytics-clickmap-overlay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-keys.d.ts","names":[],"sources":["../../../src/utils/api-keys.tsx"],"mappings":";;;;;;;;;;;KA6BK,aAAA;EACH,EAAA;EACA,MAAA;EACA,QAAA;EACA,cAAA;EACA,MAAA;EACA,QAAA;EACA,IAAA;AAAA;AAAA,iBAwDc,QAAA,CAAS,
|
|
1
|
+
{"version":3,"file":"api-keys.d.ts","names":[],"sources":["../../../src/utils/api-keys.tsx"],"mappings":";;;;;;;;;;;KA6BK,aAAA;EACH,EAAA;EACA,MAAA;EACA,QAAA;EACA,cAAA;EACA,MAAA;EACA,QAAA;EACA,IAAA;AAAA;AAAA,iBAwDc,QAAA,CAAS,MAAc;AAAA,iBAIvB,mBAAA,CAAoB,OAAA,EAAS,IAAI,CAAC,aAAA;AAAA,iBAOlC,kBAAA,CAAmB,MAAA,WAAiB,aAAa"}
|
|
@@ -2,7 +2,6 @@ import crc32 from "crc/crc32";
|
|
|
2
2
|
import { getBase32CharacterFromIndex } from "./bytes.js";
|
|
3
3
|
import { generateSecureRandomString } from "./crypto.js";
|
|
4
4
|
import { HexclaveAssertionError } from "./errors.js";
|
|
5
|
-
|
|
6
5
|
//#region src/utils/api-keys.tsx
|
|
7
6
|
const STACK_AUTH_MARKER = "574ck4u7h";
|
|
8
7
|
const API_KEY_LENGTHS = {
|
|
@@ -71,7 +70,7 @@ function parseProjectApiKey(secret) {
|
|
|
71
70
|
type
|
|
72
71
|
};
|
|
73
72
|
}
|
|
74
|
-
|
|
75
73
|
//#endregion
|
|
76
74
|
export { createProjectApiKey, isApiKey, parseProjectApiKey };
|
|
75
|
+
|
|
77
76
|
//# sourceMappingURL=api-keys.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-keys.js","names":[],"sources":["../../../src/utils/api-keys.tsx"],"sourcesContent":["import crc32 from 'crc/crc32';\nimport { getBase32CharacterFromIndex } from \"./bytes\";\nimport { generateSecureRandomString } from \"./crypto\";\nimport { HexclaveAssertionError } from \"./errors\";\n\n\nconst STACK_AUTH_MARKER = \"574ck4u7h\";\n\n// API key part lengths\nconst API_KEY_LENGTHS = {\n SECRET_PART: 45,\n ID_PART: 32,\n TYPE_PART: 4,\n SCANNER: 1,\n MARKER: 9,\n CHECKSUM: 8,\n} as const;\n\n/**\n * An api key has the following format:\n * <prefix_without_underscores>_<secret_part_45_chars><id_part_32_chars><type_user_or_team_4_chars><scanner_and_marker_10_chars><checksum_8_chars>\n *\n * The scanner and marker is a base32 character that is used to determine if the api key is a public or private key\n * and if it is a cloud or self-hosted key.\n *\n * The checksum is a crc32 checksum of the api key encoded in hex.\n *\n */\n\ntype ProjectApiKey = {\n id: string,\n prefix: string,\n isPublic: boolean,\n isCloudVersion: boolean,\n secret: string,\n checksum: string,\n type: \"user\" | \"team\",\n}\n\n\nfunction createChecksumSync(checksummablePart: string): string {\n const data = new TextEncoder().encode(checksummablePart);\n const calculated_checksum = crc32(data.buffer);\n return calculated_checksum.toString(16).padStart(8, \"0\");\n}\n\nfunction createApiKeyParts(options: Pick<ProjectApiKey, \"id\" | \"isPublic\" | \"isCloudVersion\" | \"type\">) {\n const { id, isPublic, isCloudVersion, type } = options;\n const prefix = isPublic ? \"pk\" : \"sk\";\n const scannerFlag = (isCloudVersion ? 0 : 1) + (isPublic ? 2 : 0) + (/* version */ 0);\n\n const secretPart = generateSecureRandomString();\n const idPart = id.replace(/-/g, \"\");\n const scannerAndMarker = getBase32CharacterFromIndex(scannerFlag).toLowerCase() + STACK_AUTH_MARKER;\n const checksummablePart = `${prefix}_${secretPart}${idPart}${type}${scannerAndMarker}`;\n\n return { checksummablePart, idPart, prefix, scannerAndMarker, type };\n}\n\n\nfunction parseApiKeyParts(secret: string) {\n const regex = new RegExp(\n `^([a-zA-Z0-9_]+)_` + // prefix\n `([a-zA-Z0-9_]{${API_KEY_LENGTHS.SECRET_PART}})` + // secretPart\n `([a-zA-Z0-9_]{${API_KEY_LENGTHS.ID_PART}})` + // idPart\n `([a-zA-Z0-9_]{${API_KEY_LENGTHS.TYPE_PART}})` + // type\n `([a-zA-Z0-9_]{${API_KEY_LENGTHS.SCANNER}})` + // scanner\n `(${STACK_AUTH_MARKER})` + // marker\n `([a-zA-Z0-9_]{${API_KEY_LENGTHS.CHECKSUM}})$` // checksum\n );\n\n const match = secret.match(regex);\n if (!match) {\n throw new HexclaveAssertionError(\"Invalid API key format\");\n }\n\n const [, prefix, secretPart, idPart, type, scannerFlag, marker, checksum] = match;\n\n const isCloudVersion = parseInt(scannerFlag, 32) % 2 === 0;\n const isPublic = (parseInt(scannerFlag, 32) & 2) !== 0;\n\n const checksummablePart = `${prefix}_${secretPart}${idPart}${type}${scannerFlag}${marker}`;\n const restored_id = idPart.replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/, \"$1-$2-$3-$4-$5\");\n\n if (![\"user\", \"team\"].includes(type)) {\n throw new HexclaveAssertionError(\"Invalid type\");\n }\n\n return { checksummablePart, checksum, id: restored_id, isCloudVersion, isPublic, prefix, type: type as \"user\" | \"team\" };\n}\n\n\nexport function isApiKey(secret: string): boolean {\n return secret.includes(\"_\") && secret.includes(STACK_AUTH_MARKER);\n}\n\nexport function createProjectApiKey(options: Pick<ProjectApiKey, \"id\" | \"isPublic\" | \"isCloudVersion\" | \"type\">): string {\n const { checksummablePart } = createApiKeyParts(options);\n const checksum = createChecksumSync(checksummablePart);\n return `${checksummablePart}${checksum}`;\n}\n\n\nexport function parseProjectApiKey(secret: string): ProjectApiKey {\n const { checksummablePart, checksum, id, isCloudVersion, isPublic, prefix, type } = parseApiKeyParts(secret);\n const calculated_checksum = createChecksumSync(checksummablePart);\n\n if (calculated_checksum !== checksum) {\n throw new HexclaveAssertionError(\"Checksum mismatch\");\n }\n\n return {\n id,\n prefix,\n isPublic,\n isCloudVersion,\n secret,\n checksum,\n type,\n };\n}\n\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"api-keys.js","names":[],"sources":["../../../src/utils/api-keys.tsx"],"sourcesContent":["import crc32 from 'crc/crc32';\nimport { getBase32CharacterFromIndex } from \"./bytes\";\nimport { generateSecureRandomString } from \"./crypto\";\nimport { HexclaveAssertionError } from \"./errors\";\n\n\nconst STACK_AUTH_MARKER = \"574ck4u7h\";\n\n// API key part lengths\nconst API_KEY_LENGTHS = {\n SECRET_PART: 45,\n ID_PART: 32,\n TYPE_PART: 4,\n SCANNER: 1,\n MARKER: 9,\n CHECKSUM: 8,\n} as const;\n\n/**\n * An api key has the following format:\n * <prefix_without_underscores>_<secret_part_45_chars><id_part_32_chars><type_user_or_team_4_chars><scanner_and_marker_10_chars><checksum_8_chars>\n *\n * The scanner and marker is a base32 character that is used to determine if the api key is a public or private key\n * and if it is a cloud or self-hosted key.\n *\n * The checksum is a crc32 checksum of the api key encoded in hex.\n *\n */\n\ntype ProjectApiKey = {\n id: string,\n prefix: string,\n isPublic: boolean,\n isCloudVersion: boolean,\n secret: string,\n checksum: string,\n type: \"user\" | \"team\",\n}\n\n\nfunction createChecksumSync(checksummablePart: string): string {\n const data = new TextEncoder().encode(checksummablePart);\n const calculated_checksum = crc32(data.buffer);\n return calculated_checksum.toString(16).padStart(8, \"0\");\n}\n\nfunction createApiKeyParts(options: Pick<ProjectApiKey, \"id\" | \"isPublic\" | \"isCloudVersion\" | \"type\">) {\n const { id, isPublic, isCloudVersion, type } = options;\n const prefix = isPublic ? \"pk\" : \"sk\";\n const scannerFlag = (isCloudVersion ? 0 : 1) + (isPublic ? 2 : 0) + (/* version */ 0);\n\n const secretPart = generateSecureRandomString();\n const idPart = id.replace(/-/g, \"\");\n const scannerAndMarker = getBase32CharacterFromIndex(scannerFlag).toLowerCase() + STACK_AUTH_MARKER;\n const checksummablePart = `${prefix}_${secretPart}${idPart}${type}${scannerAndMarker}`;\n\n return { checksummablePart, idPart, prefix, scannerAndMarker, type };\n}\n\n\nfunction parseApiKeyParts(secret: string) {\n const regex = new RegExp(\n `^([a-zA-Z0-9_]+)_` + // prefix\n `([a-zA-Z0-9_]{${API_KEY_LENGTHS.SECRET_PART}})` + // secretPart\n `([a-zA-Z0-9_]{${API_KEY_LENGTHS.ID_PART}})` + // idPart\n `([a-zA-Z0-9_]{${API_KEY_LENGTHS.TYPE_PART}})` + // type\n `([a-zA-Z0-9_]{${API_KEY_LENGTHS.SCANNER}})` + // scanner\n `(${STACK_AUTH_MARKER})` + // marker\n `([a-zA-Z0-9_]{${API_KEY_LENGTHS.CHECKSUM}})$` // checksum\n );\n\n const match = secret.match(regex);\n if (!match) {\n throw new HexclaveAssertionError(\"Invalid API key format\");\n }\n\n const [, prefix, secretPart, idPart, type, scannerFlag, marker, checksum] = match;\n\n const isCloudVersion = parseInt(scannerFlag, 32) % 2 === 0;\n const isPublic = (parseInt(scannerFlag, 32) & 2) !== 0;\n\n const checksummablePart = `${prefix}_${secretPart}${idPart}${type}${scannerFlag}${marker}`;\n const restored_id = idPart.replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/, \"$1-$2-$3-$4-$5\");\n\n if (![\"user\", \"team\"].includes(type)) {\n throw new HexclaveAssertionError(\"Invalid type\");\n }\n\n return { checksummablePart, checksum, id: restored_id, isCloudVersion, isPublic, prefix, type: type as \"user\" | \"team\" };\n}\n\n\nexport function isApiKey(secret: string): boolean {\n return secret.includes(\"_\") && secret.includes(STACK_AUTH_MARKER);\n}\n\nexport function createProjectApiKey(options: Pick<ProjectApiKey, \"id\" | \"isPublic\" | \"isCloudVersion\" | \"type\">): string {\n const { checksummablePart } = createApiKeyParts(options);\n const checksum = createChecksumSync(checksummablePart);\n return `${checksummablePart}${checksum}`;\n}\n\n\nexport function parseProjectApiKey(secret: string): ProjectApiKey {\n const { checksummablePart, checksum, id, isCloudVersion, isPublic, prefix, type } = parseApiKeyParts(secret);\n const calculated_checksum = createChecksumSync(checksummablePart);\n\n if (calculated_checksum !== checksum) {\n throw new HexclaveAssertionError(\"Checksum mismatch\");\n }\n\n return {\n id,\n prefix,\n isPublic,\n isCloudVersion,\n secret,\n checksum,\n type,\n };\n}\n\n"],"mappings":";;;;;AAMA,MAAM,oBAAoB;AAG1B,MAAM,kBAAkB;CACtB,aAAa;CACb,SAAS;CACT,WAAW;CACX,SAAS;CACT,QAAQ;CACR,UAAU;AACZ;AAwBA,SAAS,mBAAmB,mBAAmC;CAG7D,OAD4B,MADf,IAAI,YAAY,CAAC,CAAC,OAAO,iBACD,CAAC,CAAC,MACd,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG;AACzD;AAEA,SAAS,kBAAkB,SAA6E;CACtG,MAAM,EAAE,IAAI,UAAU,gBAAgB,SAAS;CAC/C,MAAM,SAAS,WAAW,OAAO;CACjC,MAAM,eAAe,iBAAiB,IAAI,MAAM,WAAW,IAAI,KAAoB;CAEnF,MAAM,aAAa,2BAA2B;CAC9C,MAAM,SAAS,GAAG,QAAQ,MAAM,EAAE;CAClC,MAAM,mBAAmB,4BAA4B,WAAW,CAAC,CAAC,YAAY,IAAI;CAGlF,OAAO;EAAE,mBAAA,GAFoB,OAAO,GAAG,aAAa,SAAS,OAAO;EAExC;EAAQ;EAAQ;EAAkB;CAAK;AACrE;AAGA,SAAS,iBAAiB,QAAgB;CACxC,MAAM,QAAQ,IAAI,OAChB,kCACiB,gBAAgB,YAAY,kBAC5B,gBAAgB,QAAQ,kBACxB,gBAAgB,UAAU,kBAC1B,gBAAgB,QAAQ,KACrC,kBAAkB,iBACL,gBAAgB,SAAS,IAC5C;CAEA,MAAM,QAAQ,OAAO,MAAM,KAAK;CAChC,IAAI,CAAC,OACH,MAAM,IAAI,uBAAuB,wBAAwB;CAG3D,MAAM,GAAG,QAAQ,YAAY,QAAQ,MAAM,aAAa,QAAQ,YAAY;CAE5E,MAAM,iBAAiB,SAAS,aAAa,EAAE,IAAI,MAAM;CACzD,MAAM,YAAY,SAAS,aAAa,EAAE,IAAI,OAAO;CAErD,MAAM,oBAAoB,GAAG,OAAO,GAAG,aAAa,SAAS,OAAO,cAAc;CAClF,MAAM,cAAc,OAAO,QAAQ,mCAAmC,gBAAgB;CAEtF,IAAI,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,SAAS,IAAI,GACjC,MAAM,IAAI,uBAAuB,cAAc;CAGjD,OAAO;EAAE;EAAmB;EAAU,IAAI;EAAa;EAAgB;EAAU;EAAc;CAAwB;AACzH;AAGA,SAAgB,SAAS,QAAyB;CAChD,OAAO,OAAO,SAAS,GAAG,KAAK,OAAO,SAAS,iBAAiB;AAClE;AAEA,SAAgB,oBAAoB,SAAqF;CACvH,MAAM,EAAE,sBAAsB,kBAAkB,OAAO;CAEvD,OAAO,GAAG,oBADO,mBAAmB,iBACC;AACvC;AAGA,SAAgB,mBAAmB,QAA+B;CAChE,MAAM,EAAE,mBAAmB,UAAU,IAAI,gBAAgB,UAAU,QAAQ,SAAS,iBAAiB,MAAM;CAG3G,IAF4B,mBAAmB,iBAEzB,MAAM,UAC1B,MAAM,IAAI,uBAAuB,mBAAmB;CAGtD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrays.d.ts","names":[],"sources":["../../../src/utils/arrays.tsx"],"mappings":";iBAEgB,aAAA,
|
|
1
|
+
{"version":3,"file":"arrays.d.ts","names":[],"sources":["../../../src/utils/arrays.tsx"],"mappings":";iBAEgB,aAAA,2BAAwC,GAAA,EAAK,CAAA,EAAG,IAAA,YAAgB,IAAA,IAAQ,CAAC;AAAA,iBAczE,SAAA,2BAAoC,GAAA,EAAK,CAAA,YAAa,CAAC;AAAA,iBASvD,cAAA,CAAe,CAAA,kBAAmB,CAAiB;;;;iBAuBnD,aAAA,IAAiB,GAAA,WAAc,CAAA,IAAK,SAAA,GAAY,IAAA,EAAM,CAAC;AAAA,iBAcvD,OAAA,mBACd,GAAA,EAAK,QAAA,CAAS,CAAA,GACd,GAAA,GAAM,IAAA,EAAM,CAAA,KAAM,CAAA,GACjB,GAAA,CAAI,CAAA,EAAG,CAAA;AAAA,iBA4BM,KAAA,CAAM,YAAoB;AAAA,iBAC1B,KAAA,CAAM,cAAA,UAAwB,YAAoB;AAAA,iBAClD,KAAA,CAAM,cAAA,UAAwB,YAAA,UAAsB,IAAA;AAAA,iBAwBpD,UAAA,CAAW,GAAA,kBAAqB,CAAS;AAAA,iBAczC,WAAA,CAAY,GAAA,kBAAqB,CAAS;AAAA,iBAa1C,OAAA,IAAW,GAAA,WAAc,CAAA,KAAM,CAAC;AAAA,iBAgChC,YAAA,OAAmB,IAAA,WAAe,CAAA,IAAK,IAAA,WAAe,CAAA,MAAO,CAAA,EAAG,CAAA;AAAA,iBAYhE,MAAA,IAAU,GAAA,WAAc,CAAA,KAAM,CAAC;AAAA,iBAe/B,SAAA,IAAa,GAAA,WAAc,CAAA,IAAK,IAAA,WAAe,CAAC;AAAA,iBAmBhD,aAAA,CAAc,GAAA,YAAe,GAAG;AAAA,iBAGhC,aAAA,CAAc,GAAA,YAAe,GAAG;AAAA,iBAGhC,cAAA,CAAe,GAAA,YAAe,GAAG;AAAA,iBAGjC,aAAA,CAAc,GAAA,YAAe,GAAG"}
|
package/dist/esm/utils/arrays.js
CHANGED
|
@@ -1,90 +1,16 @@
|
|
|
1
1
|
import { remainder } from "./math.js";
|
|
2
|
-
|
|
3
2
|
//#region src/utils/arrays.tsx
|
|
4
3
|
function typedIncludes(arr, item) {
|
|
5
4
|
return arr.includes(item);
|
|
6
5
|
}
|
|
7
|
-
(void 0)?.test("typedIncludes", ({ expect }) => {
|
|
8
|
-
const arr = [
|
|
9
|
-
1,
|
|
10
|
-
2,
|
|
11
|
-
3
|
|
12
|
-
];
|
|
13
|
-
expect(typedIncludes(arr, 1)).toBe(true);
|
|
14
|
-
expect(typedIncludes(arr, 4)).toBe(false);
|
|
15
|
-
expect(typedIncludes(arr, "1")).toBe(false);
|
|
16
|
-
const strArr = [
|
|
17
|
-
"a",
|
|
18
|
-
"b",
|
|
19
|
-
"c"
|
|
20
|
-
];
|
|
21
|
-
expect(typedIncludes(strArr, "a")).toBe(true);
|
|
22
|
-
expect(typedIncludes(strArr, "d")).toBe(false);
|
|
23
|
-
});
|
|
24
6
|
function enumerate(arr) {
|
|
25
7
|
return arr.map((item, index) => [index, item]);
|
|
26
8
|
}
|
|
27
|
-
(void 0)?.test("enumerate", ({ expect }) => {
|
|
28
|
-
expect(enumerate([])).toEqual([]);
|
|
29
|
-
expect(enumerate([
|
|
30
|
-
1,
|
|
31
|
-
2,
|
|
32
|
-
3
|
|
33
|
-
])).toEqual([
|
|
34
|
-
[0, 1],
|
|
35
|
-
[1, 2],
|
|
36
|
-
[2, 3]
|
|
37
|
-
]);
|
|
38
|
-
expect(enumerate([
|
|
39
|
-
"a",
|
|
40
|
-
"b",
|
|
41
|
-
"c"
|
|
42
|
-
])).toEqual([
|
|
43
|
-
[0, "a"],
|
|
44
|
-
[1, "b"],
|
|
45
|
-
[2, "c"]
|
|
46
|
-
]);
|
|
47
|
-
});
|
|
48
9
|
function isShallowEqual(a, b) {
|
|
49
10
|
if (a.length !== b.length) return false;
|
|
50
11
|
for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;
|
|
51
12
|
return true;
|
|
52
13
|
}
|
|
53
|
-
(void 0)?.test("isShallowEqual", ({ expect }) => {
|
|
54
|
-
expect(isShallowEqual([], [])).toBe(true);
|
|
55
|
-
expect(isShallowEqual([
|
|
56
|
-
1,
|
|
57
|
-
2,
|
|
58
|
-
3
|
|
59
|
-
], [
|
|
60
|
-
1,
|
|
61
|
-
2,
|
|
62
|
-
3
|
|
63
|
-
])).toBe(true);
|
|
64
|
-
expect(isShallowEqual([
|
|
65
|
-
1,
|
|
66
|
-
2,
|
|
67
|
-
3
|
|
68
|
-
], [
|
|
69
|
-
1,
|
|
70
|
-
2,
|
|
71
|
-
4
|
|
72
|
-
])).toBe(false);
|
|
73
|
-
expect(isShallowEqual([
|
|
74
|
-
1,
|
|
75
|
-
2,
|
|
76
|
-
3
|
|
77
|
-
], [1, 2])).toBe(false);
|
|
78
|
-
expect(isShallowEqual([1, 2], [
|
|
79
|
-
1,
|
|
80
|
-
2,
|
|
81
|
-
3
|
|
82
|
-
])).toBe(false);
|
|
83
|
-
const obj1 = { a: 1 };
|
|
84
|
-
const obj2 = { a: 1 };
|
|
85
|
-
expect(isShallowEqual([obj1], [obj1])).toBe(true);
|
|
86
|
-
expect(isShallowEqual([obj1], [obj2])).toBe(false);
|
|
87
|
-
});
|
|
88
14
|
/**
|
|
89
15
|
* Ponyfill for ES2023's findLastIndex.
|
|
90
16
|
*/
|
|
@@ -92,35 +18,6 @@ function findLastIndex(arr, predicate) {
|
|
|
92
18
|
for (let i = arr.length - 1; i >= 0; i--) if (predicate(arr[i])) return i;
|
|
93
19
|
return -1;
|
|
94
20
|
}
|
|
95
|
-
(void 0)?.test("findLastIndex", ({ expect }) => {
|
|
96
|
-
expect(findLastIndex([], () => true)).toBe(-1);
|
|
97
|
-
expect(findLastIndex([
|
|
98
|
-
1,
|
|
99
|
-
2,
|
|
100
|
-
3,
|
|
101
|
-
4,
|
|
102
|
-
5
|
|
103
|
-
], (x) => x % 2 === 0)).toBe(3);
|
|
104
|
-
expect(findLastIndex([
|
|
105
|
-
1,
|
|
106
|
-
2,
|
|
107
|
-
3,
|
|
108
|
-
4,
|
|
109
|
-
5
|
|
110
|
-
], (x) => x > 10)).toBe(-1);
|
|
111
|
-
expect(findLastIndex([
|
|
112
|
-
1,
|
|
113
|
-
2,
|
|
114
|
-
3,
|
|
115
|
-
2,
|
|
116
|
-
1
|
|
117
|
-
], (x) => x === 2)).toBe(3);
|
|
118
|
-
expect(findLastIndex([
|
|
119
|
-
1,
|
|
120
|
-
2,
|
|
121
|
-
3
|
|
122
|
-
], (x) => x === 1)).toBe(0);
|
|
123
|
-
});
|
|
124
21
|
function groupBy(arr, key) {
|
|
125
22
|
const result = /* @__PURE__ */ new Map();
|
|
126
23
|
for (const item of arr) {
|
|
@@ -130,38 +27,6 @@ function groupBy(arr, key) {
|
|
|
130
27
|
}
|
|
131
28
|
return result;
|
|
132
29
|
}
|
|
133
|
-
(void 0)?.test("groupBy", ({ expect }) => {
|
|
134
|
-
expect(groupBy([], (x) => x)).toEqual(/* @__PURE__ */ new Map());
|
|
135
|
-
const grouped = groupBy([
|
|
136
|
-
1,
|
|
137
|
-
2,
|
|
138
|
-
3,
|
|
139
|
-
4,
|
|
140
|
-
5,
|
|
141
|
-
6
|
|
142
|
-
], (n) => n % 2 === 0 ? "even" : "odd");
|
|
143
|
-
expect(grouped.get("even")).toEqual([
|
|
144
|
-
2,
|
|
145
|
-
4,
|
|
146
|
-
6
|
|
147
|
-
]);
|
|
148
|
-
expect(grouped.get("odd")).toEqual([
|
|
149
|
-
1,
|
|
150
|
-
3,
|
|
151
|
-
5
|
|
152
|
-
]);
|
|
153
|
-
const byLength = groupBy([
|
|
154
|
-
"apple",
|
|
155
|
-
"banana",
|
|
156
|
-
"cherry",
|
|
157
|
-
"date",
|
|
158
|
-
"elderberry"
|
|
159
|
-
], (w) => w.length);
|
|
160
|
-
expect(byLength.get(5)).toEqual(["apple"]);
|
|
161
|
-
expect(byLength.get(6)).toEqual(["banana", "cherry"]);
|
|
162
|
-
expect(byLength.get(4)).toEqual(["date"]);
|
|
163
|
-
expect(byLength.get(10)).toEqual(["elderberry"]);
|
|
164
|
-
});
|
|
165
30
|
function range(startInclusive, endExclusive, step) {
|
|
166
31
|
if (endExclusive === void 0) {
|
|
167
32
|
endExclusive = startInclusive;
|
|
@@ -172,185 +37,14 @@ function range(startInclusive, endExclusive, step) {
|
|
|
172
37
|
for (let i = startInclusive; step > 0 ? i < endExclusive : i > endExclusive; i += step) result.push(i);
|
|
173
38
|
return result;
|
|
174
39
|
}
|
|
175
|
-
(void 0)?.test("range", ({ expect }) => {
|
|
176
|
-
expect(range(5)).toEqual([
|
|
177
|
-
0,
|
|
178
|
-
1,
|
|
179
|
-
2,
|
|
180
|
-
3,
|
|
181
|
-
4
|
|
182
|
-
]);
|
|
183
|
-
expect(range(2, 5)).toEqual([
|
|
184
|
-
2,
|
|
185
|
-
3,
|
|
186
|
-
4
|
|
187
|
-
]);
|
|
188
|
-
expect(range(1, 10, 2)).toEqual([
|
|
189
|
-
1,
|
|
190
|
-
3,
|
|
191
|
-
5,
|
|
192
|
-
7,
|
|
193
|
-
9
|
|
194
|
-
]);
|
|
195
|
-
expect(range(5, 0, -1)).toEqual([
|
|
196
|
-
5,
|
|
197
|
-
4,
|
|
198
|
-
3,
|
|
199
|
-
2,
|
|
200
|
-
1
|
|
201
|
-
]);
|
|
202
|
-
expect(range(0, 0)).toEqual([]);
|
|
203
|
-
expect(range(0, 10, 3)).toEqual([
|
|
204
|
-
0,
|
|
205
|
-
3,
|
|
206
|
-
6,
|
|
207
|
-
9
|
|
208
|
-
]);
|
|
209
|
-
});
|
|
210
40
|
function rotateLeft(arr, n) {
|
|
211
41
|
if (arr.length === 0) return [];
|
|
212
42
|
const index = remainder(n, arr.length);
|
|
213
43
|
return [...arr.slice(index), ...arr.slice(0, index)];
|
|
214
44
|
}
|
|
215
|
-
(void 0)?.test("rotateLeft", ({ expect }) => {
|
|
216
|
-
expect(rotateLeft([], 1)).toEqual([]);
|
|
217
|
-
expect(rotateLeft([
|
|
218
|
-
1,
|
|
219
|
-
2,
|
|
220
|
-
3,
|
|
221
|
-
4,
|
|
222
|
-
5
|
|
223
|
-
], 0)).toEqual([
|
|
224
|
-
1,
|
|
225
|
-
2,
|
|
226
|
-
3,
|
|
227
|
-
4,
|
|
228
|
-
5
|
|
229
|
-
]);
|
|
230
|
-
expect(rotateLeft([
|
|
231
|
-
1,
|
|
232
|
-
2,
|
|
233
|
-
3,
|
|
234
|
-
4,
|
|
235
|
-
5
|
|
236
|
-
], 1)).toEqual([
|
|
237
|
-
2,
|
|
238
|
-
3,
|
|
239
|
-
4,
|
|
240
|
-
5,
|
|
241
|
-
1
|
|
242
|
-
]);
|
|
243
|
-
expect(rotateLeft([
|
|
244
|
-
1,
|
|
245
|
-
2,
|
|
246
|
-
3,
|
|
247
|
-
4,
|
|
248
|
-
5
|
|
249
|
-
], 3)).toEqual([
|
|
250
|
-
4,
|
|
251
|
-
5,
|
|
252
|
-
1,
|
|
253
|
-
2,
|
|
254
|
-
3
|
|
255
|
-
]);
|
|
256
|
-
expect(rotateLeft([
|
|
257
|
-
1,
|
|
258
|
-
2,
|
|
259
|
-
3,
|
|
260
|
-
4,
|
|
261
|
-
5
|
|
262
|
-
], 5)).toEqual([
|
|
263
|
-
1,
|
|
264
|
-
2,
|
|
265
|
-
3,
|
|
266
|
-
4,
|
|
267
|
-
5
|
|
268
|
-
]);
|
|
269
|
-
expect(rotateLeft([
|
|
270
|
-
1,
|
|
271
|
-
2,
|
|
272
|
-
3,
|
|
273
|
-
4,
|
|
274
|
-
5
|
|
275
|
-
], 6)).toEqual([
|
|
276
|
-
2,
|
|
277
|
-
3,
|
|
278
|
-
4,
|
|
279
|
-
5,
|
|
280
|
-
1
|
|
281
|
-
]);
|
|
282
|
-
});
|
|
283
45
|
function rotateRight(arr, n) {
|
|
284
46
|
return rotateLeft(arr, -n);
|
|
285
47
|
}
|
|
286
|
-
(void 0)?.test("rotateRight", ({ expect }) => {
|
|
287
|
-
expect(rotateRight([], 1)).toEqual([]);
|
|
288
|
-
expect(rotateRight([
|
|
289
|
-
1,
|
|
290
|
-
2,
|
|
291
|
-
3,
|
|
292
|
-
4,
|
|
293
|
-
5
|
|
294
|
-
], 0)).toEqual([
|
|
295
|
-
1,
|
|
296
|
-
2,
|
|
297
|
-
3,
|
|
298
|
-
4,
|
|
299
|
-
5
|
|
300
|
-
]);
|
|
301
|
-
expect(rotateRight([
|
|
302
|
-
1,
|
|
303
|
-
2,
|
|
304
|
-
3,
|
|
305
|
-
4,
|
|
306
|
-
5
|
|
307
|
-
], 1)).toEqual([
|
|
308
|
-
5,
|
|
309
|
-
1,
|
|
310
|
-
2,
|
|
311
|
-
3,
|
|
312
|
-
4
|
|
313
|
-
]);
|
|
314
|
-
expect(rotateRight([
|
|
315
|
-
1,
|
|
316
|
-
2,
|
|
317
|
-
3,
|
|
318
|
-
4,
|
|
319
|
-
5
|
|
320
|
-
], 3)).toEqual([
|
|
321
|
-
3,
|
|
322
|
-
4,
|
|
323
|
-
5,
|
|
324
|
-
1,
|
|
325
|
-
2
|
|
326
|
-
]);
|
|
327
|
-
expect(rotateRight([
|
|
328
|
-
1,
|
|
329
|
-
2,
|
|
330
|
-
3,
|
|
331
|
-
4,
|
|
332
|
-
5
|
|
333
|
-
], 5)).toEqual([
|
|
334
|
-
1,
|
|
335
|
-
2,
|
|
336
|
-
3,
|
|
337
|
-
4,
|
|
338
|
-
5
|
|
339
|
-
]);
|
|
340
|
-
expect(rotateRight([
|
|
341
|
-
1,
|
|
342
|
-
2,
|
|
343
|
-
3,
|
|
344
|
-
4,
|
|
345
|
-
5
|
|
346
|
-
], 6)).toEqual([
|
|
347
|
-
5,
|
|
348
|
-
1,
|
|
349
|
-
2,
|
|
350
|
-
3,
|
|
351
|
-
4
|
|
352
|
-
]);
|
|
353
|
-
});
|
|
354
48
|
function shuffle(arr) {
|
|
355
49
|
const result = [...arr];
|
|
356
50
|
for (let i = result.length - 1; i > 0; i--) {
|
|
@@ -359,133 +53,18 @@ function shuffle(arr) {
|
|
|
359
53
|
}
|
|
360
54
|
return result;
|
|
361
55
|
}
|
|
362
|
-
(void 0)?.test("shuffle", ({ expect }) => {
|
|
363
|
-
expect(shuffle([])).toEqual([]);
|
|
364
|
-
expect(shuffle([1])).toEqual([1]);
|
|
365
|
-
const original = [
|
|
366
|
-
1,
|
|
367
|
-
2,
|
|
368
|
-
3,
|
|
369
|
-
4,
|
|
370
|
-
5
|
|
371
|
-
];
|
|
372
|
-
const shuffled = shuffle(original);
|
|
373
|
-
expect(shuffled).not.toBe(original);
|
|
374
|
-
expect(shuffled.sort((a, b) => a - b)).toEqual(original);
|
|
375
|
-
const large = Array.from({ length: 100 }, (_, i) => i);
|
|
376
|
-
const shuffledLarge = shuffle(large);
|
|
377
|
-
expect(shuffledLarge).not.toEqual(large);
|
|
378
|
-
expect(shuffledLarge.sort((a, b) => a - b)).toEqual(large);
|
|
379
|
-
});
|
|
380
56
|
function outerProduct(arr1, arr2) {
|
|
381
57
|
return arr1.flatMap((item1) => arr2.map((item2) => [item1, item2]));
|
|
382
58
|
}
|
|
383
|
-
(void 0)?.test("outerProduct", ({ expect }) => {
|
|
384
|
-
expect(outerProduct([], [])).toEqual([]);
|
|
385
|
-
expect(outerProduct([1], [])).toEqual([]);
|
|
386
|
-
expect(outerProduct([], [1])).toEqual([]);
|
|
387
|
-
expect(outerProduct([1], [2])).toEqual([[1, 2]]);
|
|
388
|
-
expect(outerProduct([1, 2], [3, 4])).toEqual([
|
|
389
|
-
[1, 3],
|
|
390
|
-
[1, 4],
|
|
391
|
-
[2, 3],
|
|
392
|
-
[2, 4]
|
|
393
|
-
]);
|
|
394
|
-
expect(outerProduct(["a", "b"], [1, 2])).toEqual([
|
|
395
|
-
["a", 1],
|
|
396
|
-
["a", 2],
|
|
397
|
-
["b", 1],
|
|
398
|
-
["b", 2]
|
|
399
|
-
]);
|
|
400
|
-
});
|
|
401
59
|
function unique(arr) {
|
|
402
60
|
return [...new Set(arr)];
|
|
403
61
|
}
|
|
404
|
-
(void 0)?.test("unique", ({ expect }) => {
|
|
405
|
-
expect(unique([])).toEqual([]);
|
|
406
|
-
expect(unique([
|
|
407
|
-
1,
|
|
408
|
-
2,
|
|
409
|
-
3
|
|
410
|
-
])).toEqual([
|
|
411
|
-
1,
|
|
412
|
-
2,
|
|
413
|
-
3
|
|
414
|
-
]);
|
|
415
|
-
expect(unique([
|
|
416
|
-
1,
|
|
417
|
-
2,
|
|
418
|
-
2,
|
|
419
|
-
3,
|
|
420
|
-
1,
|
|
421
|
-
3
|
|
422
|
-
])).toEqual([
|
|
423
|
-
1,
|
|
424
|
-
2,
|
|
425
|
-
3
|
|
426
|
-
]);
|
|
427
|
-
const obj = { a: 1 };
|
|
428
|
-
expect(unique([obj, obj])).toEqual([obj]);
|
|
429
|
-
expect(unique([
|
|
430
|
-
1,
|
|
431
|
-
"1",
|
|
432
|
-
true,
|
|
433
|
-
1,
|
|
434
|
-
"1",
|
|
435
|
-
true
|
|
436
|
-
])).toEqual([
|
|
437
|
-
1,
|
|
438
|
-
"1",
|
|
439
|
-
true
|
|
440
|
-
]);
|
|
441
|
-
});
|
|
442
62
|
function getChunks(arr, size) {
|
|
443
63
|
const result = [];
|
|
444
64
|
if (size <= 0) return result;
|
|
445
65
|
for (let i = 0; i < arr.length; i += size) result.push(arr.slice(i, i + size));
|
|
446
66
|
return result;
|
|
447
67
|
}
|
|
448
|
-
(void 0)?.test("getChunks", ({ expect }) => {
|
|
449
|
-
expect(getChunks([], 2)).toEqual([]);
|
|
450
|
-
expect(getChunks([1], 2)).toEqual([[1]]);
|
|
451
|
-
expect(getChunks([1, 2], 2)).toEqual([[1, 2]]);
|
|
452
|
-
expect(getChunks([
|
|
453
|
-
1,
|
|
454
|
-
2,
|
|
455
|
-
3
|
|
456
|
-
], 2)).toEqual([[1, 2], [3]]);
|
|
457
|
-
expect(getChunks([
|
|
458
|
-
1,
|
|
459
|
-
2,
|
|
460
|
-
3,
|
|
461
|
-
4,
|
|
462
|
-
5
|
|
463
|
-
], 2)).toEqual([
|
|
464
|
-
[1, 2],
|
|
465
|
-
[3, 4],
|
|
466
|
-
[5]
|
|
467
|
-
]);
|
|
468
|
-
expect(getChunks([
|
|
469
|
-
1,
|
|
470
|
-
2,
|
|
471
|
-
3,
|
|
472
|
-
4
|
|
473
|
-
], 3)).toEqual([[
|
|
474
|
-
1,
|
|
475
|
-
2,
|
|
476
|
-
3
|
|
477
|
-
], [4]]);
|
|
478
|
-
expect(getChunks([
|
|
479
|
-
1,
|
|
480
|
-
2,
|
|
481
|
-
3
|
|
482
|
-
], 0)).toEqual([]);
|
|
483
|
-
expect(getChunks([
|
|
484
|
-
1,
|
|
485
|
-
2,
|
|
486
|
-
3
|
|
487
|
-
], -1)).toEqual([]);
|
|
488
|
-
});
|
|
489
68
|
function isStringArray(arr) {
|
|
490
69
|
return Array.isArray(arr) && arr.every((item) => typeof item === "string");
|
|
491
70
|
}
|
|
@@ -498,55 +77,7 @@ function isBooleanArray(arr) {
|
|
|
498
77
|
function isObjectArray(arr) {
|
|
499
78
|
return Array.isArray(arr) && arr.every((item) => typeof item === "object" && item !== null);
|
|
500
79
|
}
|
|
501
|
-
(void 0)?.test("is<Type>Array", ({ expect }) => {
|
|
502
|
-
expect(isStringArray([])).toBe(true);
|
|
503
|
-
expect(isNumberArray([
|
|
504
|
-
1,
|
|
505
|
-
2,
|
|
506
|
-
3
|
|
507
|
-
])).toBe(true);
|
|
508
|
-
expect(isBooleanArray([
|
|
509
|
-
true,
|
|
510
|
-
false,
|
|
511
|
-
true
|
|
512
|
-
])).toBe(true);
|
|
513
|
-
expect(isObjectArray([
|
|
514
|
-
{ a: 1 },
|
|
515
|
-
{ b: 2 },
|
|
516
|
-
{ c: 3 }
|
|
517
|
-
])).toBe(true);
|
|
518
|
-
expect(isStringArray([
|
|
519
|
-
1,
|
|
520
|
-
2,
|
|
521
|
-
3
|
|
522
|
-
])).toBe(false);
|
|
523
|
-
expect(isNumberArray([
|
|
524
|
-
"a",
|
|
525
|
-
"b",
|
|
526
|
-
"c"
|
|
527
|
-
])).toBe(false);
|
|
528
|
-
expect(isBooleanArray([
|
|
529
|
-
1,
|
|
530
|
-
2,
|
|
531
|
-
3
|
|
532
|
-
])).toBe(false);
|
|
533
|
-
expect(isObjectArray([
|
|
534
|
-
1,
|
|
535
|
-
2,
|
|
536
|
-
3
|
|
537
|
-
])).toBe(false);
|
|
538
|
-
expect(isObjectArray([
|
|
539
|
-
{ a: 1 },
|
|
540
|
-
null,
|
|
541
|
-
{ b: 2 }
|
|
542
|
-
])).toBe(false);
|
|
543
|
-
expect(isObjectArray([
|
|
544
|
-
{ a: 1 },
|
|
545
|
-
void 0,
|
|
546
|
-
{ b: 2 }
|
|
547
|
-
])).toBe(false);
|
|
548
|
-
});
|
|
549
|
-
|
|
550
80
|
//#endregion
|
|
551
81
|
export { enumerate, findLastIndex, getChunks, groupBy, isBooleanArray, isNumberArray, isObjectArray, isShallowEqual, isStringArray, outerProduct, range, rotateLeft, rotateRight, shuffle, typedIncludes, unique };
|
|
82
|
+
|
|
552
83
|
//# sourceMappingURL=arrays.js.map
|