@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paginated-lists.test.js","names":["ArrayPaginatedList","PaginatedList"],"sources":["../../src/utils/paginated-lists.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { ArrayPaginatedList, PaginatedList } from \"./paginated-lists\";\nimport { stringCompare } from \"./strings\";\n\ntype NumberFilter = (item: number) => boolean;\ntype NumberOrderBy = (a: number, b: number) => number;\n\n// Helper to extract just the items from a paginated result\nconst items = <T>(result: { items: { item: T }[] }) => result.items.map(i => i.item);\n\ndescribe(\"ArrayPaginatedList\", () => {\n describe(\"basic forward pagination (next)\", () => {\n it(\"should return all items when limit is greater than array length\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should return exact limit when more items exist\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(false);\n });\n\n it(\"should continue from cursor correctly\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1, 2]);\n expect(first.cursor).toBe(\"before-2\");\n\n const second = await list.next({\n after: first.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([3, 4]);\n expect(second.isFirst).toBe(false);\n expect(second.isLast).toBe(false);\n });\n\n it(\"should handle empty array\", async () => {\n const list = new ArrayPaginatedList<number>([]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should handle limit of 0\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 0,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([]);\n });\n });\n\n describe(\"backward pagination (prev)\", () => {\n it(\"should return items before cursor\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.prev({\n before: list.getLastCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([4, 5]);\n expect(result.isFirst).toBe(false);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should paginate backwards correctly\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n\n const last = await list.prev({\n before: list.getLastCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n expect(items(last)).toEqual([4, 5]);\n\n const middle = await list.prev({\n before: last.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n expect(items(middle)).toEqual([2, 3]);\n\n const first = await list.prev({\n before: middle.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n expect(items(first)).toEqual([1]);\n expect(first.isFirst).toBe(true);\n });\n });\n\n describe(\"cursor semantics (prevCursor and nextCursor)\", () => {\n it(\"should have prevCursor before the item and nextCursor after\", async () => {\n const list = new ArrayPaginatedList([10, 20, 30]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n // First item: prevCursor should be \"before-0\", nextCursor should be \"before-1\"\n expect(result.items[0].prevCursor).toBe(\"before-0\");\n expect(result.items[0].nextCursor).toBe(\"before-1\");\n\n // Second item\n expect(result.items[1].prevCursor).toBe(\"before-1\");\n expect(result.items[1].nextCursor).toBe(\"before-2\");\n\n // Third item\n expect(result.items[2].prevCursor).toBe(\"before-2\");\n expect(result.items[2].nextCursor).toBe(\"before-3\");\n });\n\n it(\"should allow using nextCursor to continue forward pagination\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n // Use the nextCursor of the last item to continue\n const continueFrom = first.items[first.items.length - 1].nextCursor;\n const second = await list.next({\n after: continueFrom,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([3, 4]);\n });\n\n it(\"should allow using prevCursor to go back\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n\n // Get items 3,4,5 first\n const middle = await list.next({\n after: \"before-2\",\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(middle)).toEqual([3, 4, 5]);\n expect(middle.items[0].prevCursor).toBe(\"before-2\");\n\n // Use prevCursor of first item to go back\n const goBack = await list.prev({\n before: middle.items[0].prevCursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(goBack)).toEqual([1, 2]);\n });\n });\n\n describe(\"filtering\", () => {\n it(\"should filter items correctly\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: (n) => n % 2 === 0, // only even numbers\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4, 6]);\n });\n\n it(\"should respect limit with filtering\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: (n) => n % 2 === 0,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4]);\n });\n\n it(\"should handle filter that matches nothing\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => false,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([]);\n });\n });\n\n describe(\"ordering\", () => {\n it(\"should sort items in ascending order\", async () => {\n const list = new ArrayPaginatedList([5, 2, 8, 1, 9]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 5, 8, 9]);\n });\n\n it(\"should sort items in descending order\", async () => {\n const list = new ArrayPaginatedList([5, 2, 8, 1, 9]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => b - a,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([9, 8, 5, 2, 1]);\n });\n\n it(\"should sort objects by property\", async () => {\n const list = new ArrayPaginatedList([\n { name: \"Charlie\", age: 30 },\n { name: \"Alice\", age: 25 },\n { name: \"Bob\", age: 35 },\n ]);\n\n const byName = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => stringCompare(a.name, b.name),\n limitPrecision: \"exact\",\n });\n\n expect(items(byName).map(p => p.name)).toEqual([\"Alice\", \"Bob\", \"Charlie\"]);\n\n const byAge = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a.age - b.age,\n limitPrecision: \"exact\",\n });\n\n expect(items(byAge).map(p => p.name)).toEqual([\"Alice\", \"Charlie\", \"Bob\"]);\n });\n });\n\n describe(\"limitPrecision\", () => {\n it(\"exact should return exactly the limit\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(result.items.length).toBe(3);\n });\n\n // Note: ArrayPaginatedList always returns exact results since it has all data in memory\n // These tests verify the contract is respected\n it(\"at-least should return at least the limit (or all if less available)\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"at-least\",\n });\n\n expect(result.items.length).toBeGreaterThanOrEqual(3);\n });\n\n it(\"at-most should return at most the limit\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"at-most\",\n });\n\n expect(result.items.length).toBeLessThanOrEqual(3);\n });\n\n it(\"approximate should allow flexibility in either direction\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"approximate\",\n });\n\n // With 'approximate', the implementation can return more or fewer items\n // than requested. We just verify it returns some items and makes progress.\n expect(result.items.length).toBeGreaterThan(0);\n // Should still return valid items\n expect(items(result).every(n => typeof n === \"number\")).toBe(true);\n });\n\n it(\"approximate should still make progress when limit > 0\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const allItems: number[] = [];\n\n let cursor = list.getFirstCursor();\n let iterations = 0;\n const maxIterations = 20; // Safety limit to prevent infinite loops\n\n while (iterations < maxIterations) {\n const result = await list.next({\n after: cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"approximate\",\n });\n\n if (result.items.length === 0) break;\n\n allItems.push(...items(result));\n // Cursor must change to ensure progress\n expect(result.cursor).not.toBe(cursor);\n cursor = result.cursor;\n iterations++;\n\n if (result.isLast) break;\n }\n\n // Should eventually get all items\n expect(allItems.length).toBeGreaterThan(0);\n });\n });\n\n describe(\"getFirstCursor and getLastCursor\", () => {\n it(\"should return correct cursor format\", () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n expect(list.getFirstCursor()).toBe(\"before-0\");\n expect(list.getLastCursor()).toBe(\"before-3\");\n });\n\n it(\"should work for empty array\", () => {\n const list = new ArrayPaginatedList([]);\n expect(list.getFirstCursor()).toBe(\"before-0\");\n expect(list.getLastCursor()).toBe(\"before-0\");\n });\n });\n\n describe(\"compare\", () => {\n it(\"should compare items using the orderBy function\", () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const orderBy = (a: number, b: number) => a - b;\n\n expect(list.compare(orderBy, 1, 2)).toBeLessThan(0);\n expect(list.compare(orderBy, 2, 1)).toBeGreaterThan(0);\n expect(list.compare(orderBy, 1, 1)).toBe(0);\n });\n });\n});\n\ndescribe(\"PaginatedList.empty\", () => {\n it(\"should return empty results\", async () => {\n const list = PaginatedList.empty();\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: {},\n orderBy: {},\n limitPrecision: \"exact\",\n });\n\n expect(result.items).toEqual([]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should have first cursor\", () => {\n const list = PaginatedList.empty();\n expect(list.getFirstCursor()).toBe(\"first\");\n expect(list.getLastCursor()).toBe(\"last\");\n });\n});\n\ndescribe(\"PaginatedList.map\", () => {\n it(\"should transform items\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const doubled = list.map<number, NumberFilter, NumberOrderBy>({\n itemMapper: (n) => n * 2,\n oldItemFromNewItem: (n) => n / 2,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n });\n\n const result = await doubled.next({\n after: doubled.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4, 6]);\n });\n\n it(\"should preserve cursor semantics\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const doubled = list.map<number, NumberFilter, NumberOrderBy>({\n itemMapper: (n) => n * 2,\n oldItemFromNewItem: (n) => n / 2,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n });\n\n const first = await doubled.next({\n after: doubled.getFirstCursor(),\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([2]);\n\n const second = await doubled.next({\n after: first.cursor,\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([4]);\n });\n});\n\ndescribe(\"PaginatedList.filter\", () => {\n it(\"should filter items\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6]);\n const evens = list.filter({\n filter: (n) => n % 2 === 0,\n oldFilterFromNewFilter: () => () => true,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n const result = await evens.next({\n after: evens.getFirstCursor(),\n limit: 10,\n filter: undefined,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4, 6]);\n });\n});\n\ndescribe(\"PaginatedList.addFilter\", () => {\n it(\"should add additional filter constraint\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n\n // First filter: only even\n const evens = list.filter({\n filter: (n) => n % 2 === 0,\n oldFilterFromNewFilter: () => () => true,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n // Add filter: only > 5\n const evenAndGreaterThan5 = evens.addFilter({\n filter: (n) => n > 5,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n const result = await evenAndGreaterThan5.next({\n after: evenAndGreaterThan5.getFirstCursor(),\n limit: 10,\n filter: undefined,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([6, 8, 10]);\n });\n});\n\ndescribe(\"PaginatedList.flatMap\", () => {\n it(\"should expand items\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const expanded = list.flatMap<number, `before-${number}`, NumberFilter, NumberOrderBy>({\n itemMapper: (entry) => [\n { item: entry.item, prevCursor: entry.prevCursor, nextCursor: entry.nextCursor },\n { item: entry.item + 0.5, prevCursor: entry.prevCursor, nextCursor: entry.nextCursor },\n ],\n compare: (_, a, b) => a - b,\n newCursorFromOldCursor: (c) => c,\n oldCursorFromNewCursor: (c) => c,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n estimateItemsToFetch: ({ limit }) => limit,\n });\n\n const result = await expanded.next({\n after: expanded.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 1.5, 2, 2.5, 3, 3.5]);\n });\n\n it(\"should filter out items (return empty array)\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const evensOnly = list.flatMap<number, `before-${number}`, NumberFilter, NumberOrderBy>({\n itemMapper: (entry) => entry.item % 2 === 0\n ? [{ item: entry.item, prevCursor: entry.prevCursor, nextCursor: entry.nextCursor }]\n : [],\n compare: (_, a, b) => a - b,\n newCursorFromOldCursor: (c) => c,\n oldCursorFromNewCursor: (c) => c,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n const result = await evensOnly.next({\n after: evensOnly.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4]);\n });\n});\n\ndescribe(\"PaginatedList.merge\", () => {\n it(\"should merge two lists\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5]);\n const list2 = new ArrayPaginatedList([2, 4, 6]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n const result = await merged.next({\n after: merged.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3, 4, 5, 6]);\n });\n\n it(\"should merge three lists\", async () => {\n const list1 = new ArrayPaginatedList([1, 4, 7]);\n const list2 = new ArrayPaginatedList([2, 5, 8]);\n const list3 = new ArrayPaginatedList([3, 6, 9]);\n\n const merged = PaginatedList.merge(list1, list2, list3);\n\n const result = await merged.next({\n after: merged.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n });\n\n it(\"should handle empty lists in merge\", async () => {\n const list1 = new ArrayPaginatedList([1, 2, 3]);\n const list2 = new ArrayPaginatedList<number>([]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n const result = await merged.next({\n after: merged.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3]);\n });\n\n it(\"should paginate through merged list\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5, 7, 9]);\n const list2 = new ArrayPaginatedList([2, 4, 6, 8, 10]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n const first = await merged.next({\n after: merged.getFirstCursor(),\n limit: 4,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1, 2, 3, 4]);\n\n const second = await merged.next({\n after: first.cursor,\n limit: 4,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([5, 6, 7, 8]);\n });\n\n it(\"should have JSON-encoded cursor\", () => {\n const list1 = new ArrayPaginatedList([1, 2]);\n const list2 = new ArrayPaginatedList([3, 4]);\n\n const merged = PaginatedList.merge(list1, list2);\n const cursor = merged.getFirstCursor();\n\n expect(() => JSON.parse(cursor)).not.toThrow();\n expect(JSON.parse(cursor)).toEqual([\"before-0\", \"before-0\"]);\n });\n\n it(\"should paginate backward through merged list correctly\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5]);\n const list2 = new ArrayPaginatedList([2, 4, 6]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n // Get last 3 items going backward\n const last = await merged.prev({\n before: merged.getLastCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(last)).toEqual([4, 5, 6]);\n expect(last.isLast).toBe(true);\n expect(last.isFirst).toBe(false);\n\n // Continue backward to get previous 3 items\n const middle = await merged.prev({\n before: last.cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(middle)).toEqual([1, 2, 3]);\n expect(middle.isFirst).toBe(true);\n });\n\n it(\"should paginate backward through entire merged list\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5, 7, 9]);\n const list2 = new ArrayPaginatedList([2, 4, 6, 8, 10]);\n\n const merged = PaginatedList.merge(list1, list2);\n const allItems: number[] = [];\n\n let cursor = merged.getLastCursor();\n let isFirst = false;\n\n while (!isFirst) {\n const result = await merged.prev({\n before: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.unshift(...items(result));\n cursor = result.cursor;\n isFirst = result.isFirst;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n });\n\n it(\"should have consistent forward and backward pagination results\", async () => {\n const list1 = new ArrayPaginatedList([1, 4, 7]);\n const list2 = new ArrayPaginatedList([2, 5, 8]);\n const list3 = new ArrayPaginatedList([3, 6, 9]);\n\n const merged = PaginatedList.merge(list1, list2, list3);\n\n // Collect all items going forward\n const forwardItems: number[] = [];\n let forwardCursor = merged.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await merged.next({\n after: forwardCursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n forwardItems.push(...items(result));\n forwardCursor = result.cursor;\n isLast = result.isLast;\n }\n\n // Collect all items going backward\n const backwardItems: number[] = [];\n let backwardCursor = merged.getLastCursor();\n let isFirst = false;\n\n while (!isFirst) {\n const result = await merged.prev({\n before: backwardCursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n backwardItems.unshift(...items(result));\n backwardCursor = result.cursor;\n isFirst = result.isFirst;\n }\n\n // Both directions should yield the same final result\n expect(forwardItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n expect(backwardItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n });\n});\n\ndescribe(\"edge cases\", () => {\n it(\"should handle single item\", async () => {\n const list = new ArrayPaginatedList([42]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([42]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should handle duplicate values\", async () => {\n const list = new ArrayPaginatedList([1, 1, 2, 2, 3, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 1, 2, 2, 3, 3]);\n });\n\n it(\"should handle negative numbers\", async () => {\n const list = new ArrayPaginatedList([-3, -1, 0, 1, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([-3, -1, 0, 1, 3]);\n });\n\n it(\"should handle string items\", async () => {\n const list = new ArrayPaginatedList([\"banana\", \"apple\", \"cherry\"]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => stringCompare(a, b),\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([\"apple\", \"banana\", \"cherry\"]);\n });\n\n it(\"should handle object items\", async () => {\n const list = new ArrayPaginatedList([\n { id: 1, value: \"a\" },\n { id: 2, value: \"b\" },\n ]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a.id - b.id,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([\n { id: 1, value: \"a\" },\n { id: 2, value: \"b\" },\n ]);\n });\n});\n\ndescribe(\"complete pagination walkthrough\", () => {\n it(\"should paginate forward through entire list\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const allItems: number[] = [];\n\n let cursor = list.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await list.next({\n after: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.push(...items(result));\n cursor = result.cursor;\n isLast = result.isLast;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n });\n\n it(\"should paginate backward through entire list\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const allItems: number[] = [];\n\n let cursor = list.getLastCursor();\n let isFirst = false;\n\n while (!isFirst) {\n const result = await list.prev({\n before: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.unshift(...items(result));\n cursor = result.cursor;\n isFirst = result.isFirst;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n });\n});\n\ndescribe(\"unsorted array pagination\", () => {\n it(\"should correctly paginate through an unsorted array with sorting\", async () => {\n const list = new ArrayPaginatedList([3, 1, 2]);\n\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1, 2]);\n\n const second = await list.next({\n after: first.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([3]);\n });\n\n it(\"should maintain sorted order across pagination boundaries\", async () => {\n const list = new ArrayPaginatedList([5, 4, 3, 2, 1]);\n const allItems: number[] = [];\n\n let cursor = list.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await list.next({\n after: cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.push(...items(result));\n cursor = result.cursor;\n isLast = result.isLast;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5]);\n });\n\n it(\"should handle random order array correctly\", async () => {\n const list = new ArrayPaginatedList([7, 2, 9, 1, 5, 8, 3, 6, 4]);\n\n const allItems: number[] = [];\n let cursor = list.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await list.next({\n after: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.push(...items(result));\n cursor = result.cursor;\n isLast = result.isLast;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n });\n\n it(\"should have consistent cursor semantics with sorted data\", async () => {\n const list = new ArrayPaginatedList([3, 1, 2]);\n\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1]);\n\n const second = await list.next({\n after: first.cursor,\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([2]);\n });\n});\n\n"],"mappings":";;;;;;AAQA,MAAM,SAAY,WAAqC,OAAO,MAAM,KAAI,MAAK,EAAE,KAAK;qBAE3E,4BAA4B;AACnC,sBAAS,yCAAyC;AAChD,iBAAG,mEAAmE,YAAY;GAChF,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAE,CAAC;GAC9C,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,sBAAO,MAAM,OAAO,CAAC,CAAC,QAAQ;IAAC;IAAG;IAAG;IAAE,CAAC;AACxC,sBAAO,OAAO,QAAQ,CAAC,KAAK,KAAK;AACjC,sBAAO,OAAO,OAAO,CAAC,KAAK,KAAK;IAChC;AAEF,iBAAG,mDAAmD,YAAY;GAChE,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;GACpD,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,sBAAO,MAAM,OAAO,CAAC,CAAC,QAAQ;IAAC;IAAG;IAAG;IAAE,CAAC;AACxC,sBAAO,OAAO,QAAQ,CAAC,KAAK,KAAK;AACjC,sBAAO,OAAO,OAAO,CAAC,KAAK,MAAM;IACjC;AAEF,iBAAG,yCAAyC,YAAY;GACtD,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;GACpD,MAAM,QAAQ,MAAM,KAAK,KAAK;IAC5B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,sBAAO,MAAM,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACpC,sBAAO,MAAM,OAAO,CAAC,KAAK,WAAW;GAErC,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,OAAO,MAAM;IACb,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,sBAAO,MAAM,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACrC,sBAAO,OAAO,QAAQ,CAAC,KAAK,MAAM;AAClC,sBAAO,OAAO,OAAO,CAAC,KAAK,MAAM;IACjC;AAEF,iBAAG,6BAA6B,YAAY;GAC1C,MAAM,OAAO,IAAIA,wCAA2B,EAAE,CAAC;GAC/C,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,sBAAO,MAAM,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AACjC,sBAAO,OAAO,QAAQ,CAAC,KAAK,KAAK;AACjC,sBAAO,OAAO,OAAO,CAAC,KAAK,KAAK;IAChC;AAEF,iBAAG,4BAA4B,YAAY;GACzC,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAE,CAAC;AAS9C,sBAAO,MARQ,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjC;GACF;AAEF,sBAAS,oCAAoC;AAC3C,iBAAG,qCAAqC,YAAY;GAClD,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;GACpD,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,QAAQ,KAAK,eAAe;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,sBAAO,MAAM,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACrC,sBAAO,OAAO,QAAQ,CAAC,KAAK,MAAM;AAClC,sBAAO,OAAO,OAAO,CAAC,KAAK,KAAK;IAChC;AAEF,iBAAG,uCAAuC,YAAY;GACpD,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;GAEpD,MAAM,OAAO,MAAM,KAAK,KAAK;IAC3B,QAAQ,KAAK,eAAe;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AACF,sBAAO,MAAM,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;GAEnC,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,QAAQ,KAAK;IACb,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AACF,sBAAO,MAAM,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;GAErC,MAAM,QAAQ,MAAM,KAAK,KAAK;IAC5B,QAAQ,OAAO;IACf,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AACF,sBAAO,MAAM,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjC,sBAAO,MAAM,QAAQ,CAAC,KAAK,KAAK;IAChC;GACF;AAEF,sBAAS,sDAAsD;AAC7D,iBAAG,+DAA+D,YAAY;GAC5E,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAI;IAAI;IAAG,CAAC;GACjD,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAGF,sBAAO,OAAO,MAAM,GAAG,WAAW,CAAC,KAAK,WAAW;AACnD,sBAAO,OAAO,MAAM,GAAG,WAAW,CAAC,KAAK,WAAW;AAGnD,sBAAO,OAAO,MAAM,GAAG,WAAW,CAAC,KAAK,WAAW;AACnD,sBAAO,OAAO,MAAM,GAAG,WAAW,CAAC,KAAK,WAAW;AAGnD,sBAAO,OAAO,MAAM,GAAG,WAAW,CAAC,KAAK,WAAW;AACnD,sBAAO,OAAO,MAAM,GAAG,WAAW,CAAC,KAAK,WAAW;IACnD;AAEF,iBAAG,gEAAgE,YAAY;GAC7E,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;GAEpD,MAAM,QAAQ,MAAM,KAAK,KAAK;IAC5B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;GAGF,MAAM,eAAe,MAAM,MAAM,MAAM,MAAM,SAAS,GAAG;AASzD,sBAAO,MARQ,MAAM,KAAK,KAAK;IAC7B,OAAO;IACP,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACrC;AAEF,iBAAG,4CAA4C,YAAY;GACzD,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;GAGpD,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,OAAO;IACP,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,sBAAO,MAAM,OAAO,CAAC,CAAC,QAAQ;IAAC;IAAG;IAAG;IAAE,CAAC;AACxC,sBAAO,OAAO,MAAM,GAAG,WAAW,CAAC,KAAK,WAAW;AAWnD,sBAAO,MARQ,MAAM,KAAK,KAAK;IAC7B,QAAQ,OAAO,MAAM,GAAG;IACxB,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACrC;GACF;AAEF,sBAAS,mBAAmB;AAC1B,iBAAG,iCAAiC,YAAY;GAC9C,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;AASvD,sBAAO,MARQ,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,SAAS,MAAM,IAAI,MAAM;IACzB,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;IAAC;IAAG;IAAG;IAAE,CAAC;IACxC;AAEF,iBAAG,uCAAuC,YAAY;GACpD,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG,CAAC;AASpE,sBAAO,MARQ,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,SAAS,MAAM,IAAI,MAAM;IACzB,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACrC;AAEF,iBAAG,6CAA6C,YAAY;GAC1D,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAE,CAAC;AAS9C,sBAAO,MARQ,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjC;GACF;AAEF,sBAAS,kBAAkB;AACzB,iBAAG,wCAAwC,YAAY;GACrD,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;AASpD,sBAAO,MARQ,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;IAC9C;AAEF,iBAAG,yCAAyC,YAAY;GACtD,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;AASpD,sBAAO,MARQ,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;IAC9C;AAEF,iBAAG,mCAAmC,YAAY;GAChD,MAAM,OAAO,IAAIA,wCAAmB;IAClC;KAAE,MAAM;KAAW,KAAK;KAAI;IAC5B;KAAE,MAAM;KAAS,KAAK;KAAI;IAC1B;KAAE,MAAM;KAAO,KAAK;KAAI;IACzB,CAAC;AAUF,sBAAO,MARQ,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,sCAAoB,EAAE,MAAM,EAAE,KAAK;IAChD,gBAAgB;IACjB,CAAC,CAEkB,CAAC,KAAI,MAAK,EAAE,KAAK,CAAC,CAAC,QAAQ;IAAC;IAAS;IAAO;IAAU,CAAC;AAU3E,sBAAO,MARO,MAAM,KAAK,KAAK;IAC5B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,EAAE,MAAM,EAAE;IAC7B,gBAAgB;IACjB,CAAC,CAEiB,CAAC,KAAI,MAAK,EAAE,KAAK,CAAC,CAAC,QAAQ;IAAC;IAAS;IAAW;IAAM,CAAC;IAC1E;GACF;AAEF,sBAAS,wBAAwB;AAC/B,iBAAG,yCAAyC,YAAY;GACtD,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;AASpD,uBARe,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC,EAEY,MAAM,OAAO,CAAC,KAAK,EAAE;IACnC;AAIF,iBAAG,wEAAwE,YAAY;GACrF,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;AASpD,uBARe,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC,EAEY,MAAM,OAAO,CAAC,uBAAuB,EAAE;IACrD;AAEF,iBAAG,2CAA2C,YAAY;GACxD,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;AASpD,uBARe,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC,EAEY,MAAM,OAAO,CAAC,oBAAoB,EAAE;IAClD;AAEF,iBAAG,4DAA4D,YAAY;GACzE,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAE,CAAC;GACpD,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,OAAO,KAAK,gBAAgB;IAC5B,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAIF,sBAAO,OAAO,MAAM,OAAO,CAAC,gBAAgB,EAAE;AAE9C,sBAAO,MAAM,OAAO,CAAC,OAAM,MAAK,OAAO,MAAM,SAAS,CAAC,CAAC,KAAK,KAAK;IAClE;AAEF,iBAAG,yDAAyD,YAAY;GACtE,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG,CAAC;GACpE,MAAM,WAAqB,EAAE;GAE7B,IAAI,SAAS,KAAK,gBAAgB;GAClC,IAAI,aAAa;GACjB,MAAM,gBAAgB;AAEtB,UAAO,aAAa,eAAe;IACjC,MAAM,SAAS,MAAM,KAAK,KAAK;KAC7B,OAAO;KACP,OAAO;KACP,cAAc;KACd,UAAU,GAAG,MAAM,IAAI;KACvB,gBAAgB;KACjB,CAAC;AAEF,QAAI,OAAO,MAAM,WAAW,EAAG;AAE/B,aAAS,KAAK,GAAG,MAAM,OAAO,CAAC;AAE/B,uBAAO,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO;AACtC,aAAS,OAAO;AAChB;AAEA,QAAI,OAAO,OAAQ;;AAIrB,sBAAO,SAAS,OAAO,CAAC,gBAAgB,EAAE;IAC1C;GACF;AAEF,sBAAS,0CAA0C;AACjD,iBAAG,6CAA6C;GAC9C,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAE,CAAC;AAC9C,sBAAO,KAAK,gBAAgB,CAAC,CAAC,KAAK,WAAW;AAC9C,sBAAO,KAAK,eAAe,CAAC,CAAC,KAAK,WAAW;IAC7C;AAEF,iBAAG,qCAAqC;GACtC,MAAM,OAAO,IAAIA,wCAAmB,EAAE,CAAC;AACvC,sBAAO,KAAK,gBAAgB,CAAC,CAAC,KAAK,WAAW;AAC9C,sBAAO,KAAK,eAAe,CAAC,CAAC,KAAK,WAAW;IAC7C;GACF;AAEF,sBAAS,iBAAiB;AACxB,iBAAG,yDAAyD;GAC1D,MAAM,OAAO,IAAIA,wCAAmB;IAAC;IAAG;IAAG;IAAE,CAAC;GAC9C,MAAM,WAAW,GAAW,MAAc,IAAI;AAE9C,sBAAO,KAAK,QAAQ,SAAS,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE;AACnD,sBAAO,KAAK,QAAQ,SAAS,GAAG,EAAE,CAAC,CAAC,gBAAgB,EAAE;AACtD,sBAAO,KAAK,QAAQ,SAAS,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE;IAC3C;GACF;EACF;qBAEO,6BAA6B;AACpC,gBAAG,+BAA+B,YAAY;EAC5C,MAAM,OAAOC,mCAAc,OAAO;EAClC,MAAM,SAAS,MAAM,KAAK,KAAK;GAC7B,OAAO,KAAK,gBAAgB;GAC5B,OAAO;GACP,QAAQ,EAAE;GACV,SAAS,EAAE;GACX,gBAAgB;GACjB,CAAC;AAEF,qBAAO,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChC,qBAAO,OAAO,QAAQ,CAAC,KAAK,KAAK;AACjC,qBAAO,OAAO,OAAO,CAAC,KAAK,KAAK;GAChC;AAEF,gBAAG,kCAAkC;EACnC,MAAM,OAAOA,mCAAc,OAAO;AAClC,qBAAO,KAAK,gBAAgB,CAAC,CAAC,KAAK,QAAQ;AAC3C,qBAAO,KAAK,eAAe,CAAC,CAAC,KAAK,OAAO;GACzC;EACF;qBAEO,2BAA2B;AAClC,gBAAG,0BAA0B,YAAY;EAEvC,MAAM,UADO,IAAID,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC,CACzB,IAAyC;GAC5D,aAAa,MAAM,IAAI;GACvB,qBAAqB,MAAM,IAAI;GAC/B,yBAAyB,MAAM;GAC/B,2BAA2B,MAAM;GAClC,CAAC;AAUF,qBAAO,MARQ,MAAM,QAAQ,KAAK;GAChC,OAAO,QAAQ,gBAAgB;GAC/B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAE,CAAC;GACxC;AAEF,gBAAG,oCAAoC,YAAY;EAEjD,MAAM,UADO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC,CACzB,IAAyC;GAC5D,aAAa,MAAM,IAAI;GACvB,qBAAqB,MAAM,IAAI;GAC/B,yBAAyB,MAAM;GAC/B,2BAA2B,MAAM;GAClC,CAAC;EAEF,MAAM,QAAQ,MAAM,QAAQ,KAAK;GAC/B,OAAO,QAAQ,gBAAgB;GAC/B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC;AAEF,qBAAO,MAAM,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AAUjC,qBAAO,MARQ,MAAM,QAAQ,KAAK;GAChC,OAAO,MAAM;GACb,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;GAClC;EACF;qBAEO,8BAA8B;AACrC,gBAAG,uBAAuB,YAAY;EAEpC,MAAM,QADO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC,CACpC,OAAO;GACxB,SAAS,MAAM,IAAI,MAAM;GACzB,oCAAoC;GACpC,uBAAuB,EAAE,YAAY,QAAQ;GAC9C,CAAC;AAUF,qBAAO,MARQ,MAAM,MAAM,KAAK;GAC9B,OAAO,MAAM,gBAAgB;GAC7B,OAAO;GACP,QAAQ;GACR,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAE,CAAC;GACxC;EACF;qBAEO,iCAAiC;AACxC,gBAAG,2CAA2C,YAAY;EAWxD,MAAM,sBAVO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG,CAAC,CAGjD,OAAO;GACxB,SAAS,MAAM,IAAI,MAAM;GACzB,oCAAoC;GACpC,uBAAuB,EAAE,YAAY,QAAQ;GAC9C,CAAC,CAGgC,UAAU;GAC1C,SAAS,MAAM,IAAI;GACnB,uBAAuB,EAAE,YAAY,QAAQ;GAC9C,CAAC;AAUF,qBAAO,MARQ,MAAM,oBAAoB,KAAK;GAC5C,OAAO,oBAAoB,gBAAgB;GAC3C,OAAO;GACP,QAAQ;GACR,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG,CAAC;GACzC;EACF;qBAEO,+BAA+B;AACtC,gBAAG,uBAAuB,YAAY;EAEpC,MAAM,WADO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC,CACxB,QAAiE;GACrF,aAAa,UAAU,CACrB;IAAE,MAAM,MAAM;IAAM,YAAY,MAAM;IAAY,YAAY,MAAM;IAAY,EAChF;IAAE,MAAM,MAAM,OAAO;IAAK,YAAY,MAAM;IAAY,YAAY,MAAM;IAAY,CACvF;GACD,UAAU,GAAG,GAAG,MAAM,IAAI;GAC1B,yBAAyB,MAAM;GAC/B,yBAAyB,MAAM;GAC/B,yBAAyB,MAAM;GAC/B,2BAA2B,MAAM;GACjC,uBAAuB,EAAE,YAAY;GACtC,CAAC;AAUF,qBAAO,MARQ,MAAM,SAAS,KAAK;GACjC,OAAO,SAAS,gBAAgB;GAChC,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAK;GAAG;GAAK;GAAG;GAAI,CAAC;GACvD;AAEF,gBAAG,gDAAgD,YAAY;EAE7D,MAAM,YADO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC,CAC7B,QAAiE;GACtF,aAAa,UAAU,MAAM,OAAO,MAAM,IACtC,CAAC;IAAE,MAAM,MAAM;IAAM,YAAY,MAAM;IAAY,YAAY,MAAM;IAAY,CAAC,GAClF,EAAE;GACN,UAAU,GAAG,GAAG,MAAM,IAAI;GAC1B,yBAAyB,MAAM;GAC/B,yBAAyB,MAAM;GAC/B,yBAAyB,MAAM;GAC/B,2BAA2B,MAAM;GACjC,uBAAuB,EAAE,YAAY,QAAQ;GAC9C,CAAC;AAUF,qBAAO,MARQ,MAAM,UAAU,KAAK;GAClC,OAAO,UAAU,gBAAgB;GACjC,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;GACrC;EACF;qBAEO,6BAA6B;AACpC,gBAAG,0BAA0B,YAAY;EACvC,MAAM,QAAQ,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAC/C,MAAM,QAAQ,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAE/C,MAAM,SAASC,mCAAc,MAAM,OAAO,MAAM;AAUhD,qBAAO,MARQ,MAAM,OAAO,KAAK;GAC/B,OAAO,OAAO,gBAAgB;GAC9B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;GACjD;AAEF,gBAAG,4BAA4B,YAAY;EACzC,MAAM,QAAQ,IAAID,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAC/C,MAAM,QAAQ,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAC/C,MAAM,QAAQ,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAE/C,MAAM,SAASC,mCAAc,MAAM,OAAO,OAAO,MAAM;AAUvD,qBAAO,MARQ,MAAM,OAAO,KAAK;GAC/B,OAAO,OAAO,gBAAgB;GAC9B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;GAC1D;AAEF,gBAAG,sCAAsC,YAAY;EACnD,MAAM,QAAQ,IAAID,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAC/C,MAAM,QAAQ,IAAIA,wCAA2B,EAAE,CAAC;EAEhD,MAAM,SAASC,mCAAc,MAAM,OAAO,MAAM;AAUhD,qBAAO,MARQ,MAAM,OAAO,KAAK;GAC/B,OAAO,OAAO,gBAAgB;GAC9B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAE,CAAC;GACxC;AAEF,gBAAG,uCAAuC,YAAY;EACpD,MAAM,QAAQ,IAAID,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;EACrD,MAAM,QAAQ,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG,CAAC;EAEtD,MAAM,SAASC,mCAAc,MAAM,OAAO,MAAM;EAEhD,MAAM,QAAQ,MAAM,OAAO,KAAK;GAC9B,OAAO,OAAO,gBAAgB;GAC9B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC;AAEF,qBAAO,MAAM,MAAM,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAE,CAAC;AAU1C,qBAAO,MARQ,MAAM,OAAO,KAAK;GAC/B,OAAO,MAAM;GACb,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAE,CAAC;GAC3C;AAEF,gBAAG,yCAAyC;EAC1C,MAAM,QAAQ,IAAID,wCAAmB,CAAC,GAAG,EAAE,CAAC;EAC5C,MAAM,QAAQ,IAAIA,wCAAmB,CAAC,GAAG,EAAE,CAAC;EAG5C,MAAM,SADSC,mCAAc,MAAM,OAAO,MAAM,CAC1B,gBAAgB;AAEtC,2BAAa,KAAK,MAAM,OAAO,CAAC,CAAC,IAAI,SAAS;AAC9C,qBAAO,KAAK,MAAM,OAAO,CAAC,CAAC,QAAQ,CAAC,YAAY,WAAW,CAAC;GAC5D;AAEF,gBAAG,0DAA0D,YAAY;EACvE,MAAM,QAAQ,IAAID,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAC/C,MAAM,QAAQ,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAE/C,MAAM,SAASC,mCAAc,MAAM,OAAO,MAAM;EAGhD,MAAM,OAAO,MAAM,OAAO,KAAK;GAC7B,QAAQ,OAAO,eAAe;GAC9B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC;AAEF,qBAAO,MAAM,KAAK,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAE,CAAC;AACtC,qBAAO,KAAK,OAAO,CAAC,KAAK,KAAK;AAC9B,qBAAO,KAAK,QAAQ,CAAC,KAAK,MAAM;EAGhC,MAAM,SAAS,MAAM,OAAO,KAAK;GAC/B,QAAQ,KAAK;GACb,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC;AAEF,qBAAO,MAAM,OAAO,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAE,CAAC;AACxC,qBAAO,OAAO,QAAQ,CAAC,KAAK,KAAK;GACjC;AAEF,gBAAG,uDAAuD,YAAY;EACpE,MAAM,QAAQ,IAAID,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;EACrD,MAAM,QAAQ,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG,CAAC;EAEtD,MAAM,SAASC,mCAAc,MAAM,OAAO,MAAM;EAChD,MAAM,WAAqB,EAAE;EAE7B,IAAI,SAAS,OAAO,eAAe;EACnC,IAAI,UAAU;AAEd,SAAO,CAAC,SAAS;GACf,MAAM,SAAS,MAAM,OAAO,KAAK;IAC/B,QAAQ;IACR,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,YAAS,QAAQ,GAAG,MAAM,OAAO,CAAC;AAClC,YAAS,OAAO;AAChB,aAAU,OAAO;;AAGnB,qBAAO,SAAS,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG,CAAC;GACzD;AAEF,gBAAG,kEAAkE,YAAY;EAC/E,MAAM,QAAQ,IAAID,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAC/C,MAAM,QAAQ,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAC/C,MAAM,QAAQ,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAE/C,MAAM,SAASC,mCAAc,MAAM,OAAO,OAAO,MAAM;EAGvD,MAAM,eAAyB,EAAE;EACjC,IAAI,gBAAgB,OAAO,gBAAgB;EAC3C,IAAI,SAAS;AAEb,SAAO,CAAC,QAAQ;GACd,MAAM,SAAS,MAAM,OAAO,KAAK;IAC/B,OAAO;IACP,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,gBAAa,KAAK,GAAG,MAAM,OAAO,CAAC;AACnC,mBAAgB,OAAO;AACvB,YAAS,OAAO;;EAIlB,MAAM,gBAA0B,EAAE;EAClC,IAAI,iBAAiB,OAAO,eAAe;EAC3C,IAAI,UAAU;AAEd,SAAO,CAAC,SAAS;GACf,MAAM,SAAS,MAAM,OAAO,KAAK;IAC/B,QAAQ;IACR,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,iBAAc,QAAQ,GAAG,MAAM,OAAO,CAAC;AACvC,oBAAiB,OAAO;AACxB,aAAU,OAAO;;AAInB,qBAAO,aAAa,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;AACzD,qBAAO,cAAc,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;GAC1D;EACF;qBAEO,oBAAoB;AAC3B,gBAAG,6BAA6B,YAAY;EAC1C,MAAM,OAAO,IAAID,wCAAmB,CAAC,GAAG,CAAC;EACzC,MAAM,SAAS,MAAM,KAAK,KAAK;GAC7B,OAAO,KAAK,gBAAgB;GAC5B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC;AAEF,qBAAO,MAAM,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACnC,qBAAO,OAAO,QAAQ,CAAC,KAAK,KAAK;AACjC,qBAAO,OAAO,OAAO,CAAC,KAAK,KAAK;GAChC;AAEF,gBAAG,kCAAkC,YAAY;EAC/C,MAAM,OAAO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;AASvD,qBAAO,MARQ,MAAM,KAAK,KAAK;GAC7B,OAAO,KAAK,gBAAgB;GAC5B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;GACjD;AAEF,gBAAG,kCAAkC,YAAY;EAC/C,MAAM,OAAO,IAAIA,wCAAmB;GAAC;GAAI;GAAI;GAAG;GAAG;GAAE,CAAC;AAStD,qBAAO,MARQ,MAAM,KAAK,KAAK;GAC7B,OAAO,KAAK,gBAAgB;GAC5B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;GAAC;GAAI;GAAI;GAAG;GAAG;GAAE,CAAC;GAChD;AAEF,gBAAG,8BAA8B,YAAY;EAC3C,MAAM,OAAO,IAAIA,wCAAmB;GAAC;GAAU;GAAS;GAAS,CAAC;AASlE,qBAAO,MARQ,MAAM,KAAK,KAAK;GAC7B,OAAO,KAAK,gBAAgB;GAC5B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,sCAAoB,GAAG,EAAE;GACtC,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ;GAAC;GAAS;GAAU;GAAS,CAAC;GAC5D;AAEF,gBAAG,8BAA8B,YAAY;EAC3C,MAAM,OAAO,IAAIA,wCAAmB,CAClC;GAAE,IAAI;GAAG,OAAO;GAAK,EACrB;GAAE,IAAI;GAAG,OAAO;GAAK,CACtB,CAAC;AASF,qBAAO,MARQ,MAAM,KAAK,KAAK;GAC7B,OAAO,KAAK,gBAAgB;GAC5B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,EAAE,KAAK,EAAE;GAC5B,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ,CAC5B;GAAE,IAAI;GAAG,OAAO;GAAK,EACrB;GAAE,IAAI;GAAG,OAAO;GAAK,CACtB,CAAC;GACF;EACF;qBAEO,yCAAyC;AAChD,gBAAG,+CAA+C,YAAY;EAC5D,MAAM,OAAO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG,CAAC;EACpE,MAAM,WAAqB,EAAE;EAE7B,IAAI,SAAS,KAAK,gBAAgB;EAClC,IAAI,SAAS;AAEb,SAAO,CAAC,QAAQ;GACd,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,OAAO;IACP,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,YAAS,KAAK,GAAG,MAAM,OAAO,CAAC;AAC/B,YAAS,OAAO;AAChB,YAAS,OAAO;;AAGlB,qBAAO,SAAS,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG,CAAC;GACzD;AAEF,gBAAG,gDAAgD,YAAY;EAC7D,MAAM,OAAO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG,CAAC;EACpE,MAAM,WAAqB,EAAE;EAE7B,IAAI,SAAS,KAAK,eAAe;EACjC,IAAI,UAAU;AAEd,SAAO,CAAC,SAAS;GACf,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,QAAQ;IACR,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,YAAS,QAAQ,GAAG,MAAM,OAAO,CAAC;AAClC,YAAS,OAAO;AAChB,aAAU,OAAO;;AAGnB,qBAAO,SAAS,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG,CAAC;GACzD;EACF;qBAEO,mCAAmC;AAC1C,gBAAG,oEAAoE,YAAY;EACjF,MAAM,OAAO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAE9C,MAAM,QAAQ,MAAM,KAAK,KAAK;GAC5B,OAAO,KAAK,gBAAgB;GAC5B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC;AAEF,qBAAO,MAAM,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAUpC,qBAAO,MARQ,MAAM,KAAK,KAAK;GAC7B,OAAO,MAAM;GACb,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;GAClC;AAEF,gBAAG,6DAA6D,YAAY;EAC1E,MAAM,OAAO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;EACpD,MAAM,WAAqB,EAAE;EAE7B,IAAI,SAAS,KAAK,gBAAgB;EAClC,IAAI,SAAS;AAEb,SAAO,CAAC,QAAQ;GACd,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,OAAO;IACP,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,YAAS,KAAK,GAAG,MAAM,OAAO,CAAC;AAC/B,YAAS,OAAO;AAChB,YAAS,OAAO;;AAGlB,qBAAO,SAAS,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;GACzC;AAEF,gBAAG,8CAA8C,YAAY;EAC3D,MAAM,OAAO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;EAEhE,MAAM,WAAqB,EAAE;EAC7B,IAAI,SAAS,KAAK,gBAAgB;EAClC,IAAI,SAAS;AAEb,SAAO,CAAC,QAAQ;GACd,MAAM,SAAS,MAAM,KAAK,KAAK;IAC7B,OAAO;IACP,OAAO;IACP,cAAc;IACd,UAAU,GAAG,MAAM,IAAI;IACvB,gBAAgB;IACjB,CAAC;AAEF,YAAS,KAAK,GAAG,MAAM,OAAO,CAAC;AAC/B,YAAS,OAAO;AAChB,YAAS,OAAO;;AAGlB,qBAAO,SAAS,CAAC,QAAQ;GAAC;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAG;GAAE,CAAC;GACrD;AAEF,gBAAG,4DAA4D,YAAY;EACzE,MAAM,OAAO,IAAIA,wCAAmB;GAAC;GAAG;GAAG;GAAE,CAAC;EAE9C,MAAM,QAAQ,MAAM,KAAK,KAAK;GAC5B,OAAO,KAAK,gBAAgB;GAC5B,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC;AAEF,qBAAO,MAAM,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AAUjC,qBAAO,MARQ,MAAM,KAAK,KAAK;GAC7B,OAAO,MAAM;GACb,OAAO;GACP,cAAc;GACd,UAAU,GAAG,MAAM,IAAI;GACvB,gBAAgB;GACjB,CAAC,CAEkB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;GAClC;EACF"}
|
|
1
|
+
{"version":3,"file":"paginated-lists.test.js","names":["ArrayPaginatedList","PaginatedList"],"sources":["../../src/utils/paginated-lists.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { ArrayPaginatedList, PaginatedList } from \"./paginated-lists\";\nimport { stringCompare } from \"./strings\";\n\ntype NumberFilter = (item: number) => boolean;\ntype NumberOrderBy = (a: number, b: number) => number;\n\n// Helper to extract just the items from a paginated result\nconst items = <T>(result: { items: { item: T }[] }) => result.items.map(i => i.item);\n\ndescribe(\"ArrayPaginatedList\", () => {\n describe(\"basic forward pagination (next)\", () => {\n it(\"should return all items when limit is greater than array length\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should return exact limit when more items exist\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(false);\n });\n\n it(\"should continue from cursor correctly\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1, 2]);\n expect(first.cursor).toBe(\"before-2\");\n\n const second = await list.next({\n after: first.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([3, 4]);\n expect(second.isFirst).toBe(false);\n expect(second.isLast).toBe(false);\n });\n\n it(\"should handle empty array\", async () => {\n const list = new ArrayPaginatedList<number>([]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should handle limit of 0\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 0,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([]);\n });\n });\n\n describe(\"backward pagination (prev)\", () => {\n it(\"should return items before cursor\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.prev({\n before: list.getLastCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([4, 5]);\n expect(result.isFirst).toBe(false);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should paginate backwards correctly\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n\n const last = await list.prev({\n before: list.getLastCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n expect(items(last)).toEqual([4, 5]);\n\n const middle = await list.prev({\n before: last.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n expect(items(middle)).toEqual([2, 3]);\n\n const first = await list.prev({\n before: middle.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n expect(items(first)).toEqual([1]);\n expect(first.isFirst).toBe(true);\n });\n });\n\n describe(\"cursor semantics (prevCursor and nextCursor)\", () => {\n it(\"should have prevCursor before the item and nextCursor after\", async () => {\n const list = new ArrayPaginatedList([10, 20, 30]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n // First item: prevCursor should be \"before-0\", nextCursor should be \"before-1\"\n expect(result.items[0].prevCursor).toBe(\"before-0\");\n expect(result.items[0].nextCursor).toBe(\"before-1\");\n\n // Second item\n expect(result.items[1].prevCursor).toBe(\"before-1\");\n expect(result.items[1].nextCursor).toBe(\"before-2\");\n\n // Third item\n expect(result.items[2].prevCursor).toBe(\"before-2\");\n expect(result.items[2].nextCursor).toBe(\"before-3\");\n });\n\n it(\"should allow using nextCursor to continue forward pagination\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n // Use the nextCursor of the last item to continue\n const continueFrom = first.items[first.items.length - 1].nextCursor;\n const second = await list.next({\n after: continueFrom,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([3, 4]);\n });\n\n it(\"should allow using prevCursor to go back\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n\n // Get items 3,4,5 first\n const middle = await list.next({\n after: \"before-2\",\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(middle)).toEqual([3, 4, 5]);\n expect(middle.items[0].prevCursor).toBe(\"before-2\");\n\n // Use prevCursor of first item to go back\n const goBack = await list.prev({\n before: middle.items[0].prevCursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(goBack)).toEqual([1, 2]);\n });\n });\n\n describe(\"filtering\", () => {\n it(\"should filter items correctly\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: (n) => n % 2 === 0, // only even numbers\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4, 6]);\n });\n\n it(\"should respect limit with filtering\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: (n) => n % 2 === 0,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4]);\n });\n\n it(\"should handle filter that matches nothing\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => false,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([]);\n });\n });\n\n describe(\"ordering\", () => {\n it(\"should sort items in ascending order\", async () => {\n const list = new ArrayPaginatedList([5, 2, 8, 1, 9]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 5, 8, 9]);\n });\n\n it(\"should sort items in descending order\", async () => {\n const list = new ArrayPaginatedList([5, 2, 8, 1, 9]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => b - a,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([9, 8, 5, 2, 1]);\n });\n\n it(\"should sort objects by property\", async () => {\n const list = new ArrayPaginatedList([\n { name: \"Charlie\", age: 30 },\n { name: \"Alice\", age: 25 },\n { name: \"Bob\", age: 35 },\n ]);\n\n const byName = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => stringCompare(a.name, b.name),\n limitPrecision: \"exact\",\n });\n\n expect(items(byName).map(p => p.name)).toEqual([\"Alice\", \"Bob\", \"Charlie\"]);\n\n const byAge = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a.age - b.age,\n limitPrecision: \"exact\",\n });\n\n expect(items(byAge).map(p => p.name)).toEqual([\"Alice\", \"Charlie\", \"Bob\"]);\n });\n });\n\n describe(\"limitPrecision\", () => {\n it(\"exact should return exactly the limit\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(result.items.length).toBe(3);\n });\n\n // Note: ArrayPaginatedList always returns exact results since it has all data in memory\n // These tests verify the contract is respected\n it(\"at-least should return at least the limit (or all if less available)\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"at-least\",\n });\n\n expect(result.items.length).toBeGreaterThanOrEqual(3);\n });\n\n it(\"at-most should return at most the limit\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"at-most\",\n });\n\n expect(result.items.length).toBeLessThanOrEqual(3);\n });\n\n it(\"approximate should allow flexibility in either direction\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"approximate\",\n });\n\n // With 'approximate', the implementation can return more or fewer items\n // than requested. We just verify it returns some items and makes progress.\n expect(result.items.length).toBeGreaterThan(0);\n // Should still return valid items\n expect(items(result).every(n => typeof n === \"number\")).toBe(true);\n });\n\n it(\"approximate should still make progress when limit > 0\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const allItems: number[] = [];\n\n let cursor = list.getFirstCursor();\n let iterations = 0;\n const maxIterations = 20; // Safety limit to prevent infinite loops\n\n while (iterations < maxIterations) {\n const result = await list.next({\n after: cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"approximate\",\n });\n\n if (result.items.length === 0) break;\n\n allItems.push(...items(result));\n // Cursor must change to ensure progress\n expect(result.cursor).not.toBe(cursor);\n cursor = result.cursor;\n iterations++;\n\n if (result.isLast) break;\n }\n\n // Should eventually get all items\n expect(allItems.length).toBeGreaterThan(0);\n });\n });\n\n describe(\"getFirstCursor and getLastCursor\", () => {\n it(\"should return correct cursor format\", () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n expect(list.getFirstCursor()).toBe(\"before-0\");\n expect(list.getLastCursor()).toBe(\"before-3\");\n });\n\n it(\"should work for empty array\", () => {\n const list = new ArrayPaginatedList([]);\n expect(list.getFirstCursor()).toBe(\"before-0\");\n expect(list.getLastCursor()).toBe(\"before-0\");\n });\n });\n\n describe(\"compare\", () => {\n it(\"should compare items using the orderBy function\", () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const orderBy = (a: number, b: number) => a - b;\n\n expect(list.compare(orderBy, 1, 2)).toBeLessThan(0);\n expect(list.compare(orderBy, 2, 1)).toBeGreaterThan(0);\n expect(list.compare(orderBy, 1, 1)).toBe(0);\n });\n });\n});\n\ndescribe(\"PaginatedList.empty\", () => {\n it(\"should return empty results\", async () => {\n const list = PaginatedList.empty();\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: {},\n orderBy: {},\n limitPrecision: \"exact\",\n });\n\n expect(result.items).toEqual([]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should have first cursor\", () => {\n const list = PaginatedList.empty();\n expect(list.getFirstCursor()).toBe(\"first\");\n expect(list.getLastCursor()).toBe(\"last\");\n });\n});\n\ndescribe(\"PaginatedList.map\", () => {\n it(\"should transform items\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const doubled = list.map<number, NumberFilter, NumberOrderBy>({\n itemMapper: (n) => n * 2,\n oldItemFromNewItem: (n) => n / 2,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n });\n\n const result = await doubled.next({\n after: doubled.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4, 6]);\n });\n\n it(\"should preserve cursor semantics\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const doubled = list.map<number, NumberFilter, NumberOrderBy>({\n itemMapper: (n) => n * 2,\n oldItemFromNewItem: (n) => n / 2,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n });\n\n const first = await doubled.next({\n after: doubled.getFirstCursor(),\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([2]);\n\n const second = await doubled.next({\n after: first.cursor,\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([4]);\n });\n});\n\ndescribe(\"PaginatedList.filter\", () => {\n it(\"should filter items\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6]);\n const evens = list.filter({\n filter: (n) => n % 2 === 0,\n oldFilterFromNewFilter: () => () => true,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n const result = await evens.next({\n after: evens.getFirstCursor(),\n limit: 10,\n filter: undefined,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4, 6]);\n });\n});\n\ndescribe(\"PaginatedList.addFilter\", () => {\n it(\"should add additional filter constraint\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n\n // First filter: only even\n const evens = list.filter({\n filter: (n) => n % 2 === 0,\n oldFilterFromNewFilter: () => () => true,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n // Add filter: only > 5\n const evenAndGreaterThan5 = evens.addFilter({\n filter: (n) => n > 5,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n const result = await evenAndGreaterThan5.next({\n after: evenAndGreaterThan5.getFirstCursor(),\n limit: 10,\n filter: undefined,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([6, 8, 10]);\n });\n});\n\ndescribe(\"PaginatedList.flatMap\", () => {\n it(\"should expand items\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3]);\n const expanded = list.flatMap<number, `before-${number}`, NumberFilter, NumberOrderBy>({\n itemMapper: (entry) => [\n { item: entry.item, prevCursor: entry.prevCursor, nextCursor: entry.nextCursor },\n { item: entry.item + 0.5, prevCursor: entry.prevCursor, nextCursor: entry.nextCursor },\n ],\n compare: (_, a, b) => a - b,\n newCursorFromOldCursor: (c) => c,\n oldCursorFromNewCursor: (c) => c,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n estimateItemsToFetch: ({ limit }) => limit,\n });\n\n const result = await expanded.next({\n after: expanded.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 1.5, 2, 2.5, 3, 3.5]);\n });\n\n it(\"should filter out items (return empty array)\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5]);\n const evensOnly = list.flatMap<number, `before-${number}`, NumberFilter, NumberOrderBy>({\n itemMapper: (entry) => entry.item % 2 === 0\n ? [{ item: entry.item, prevCursor: entry.prevCursor, nextCursor: entry.nextCursor }]\n : [],\n compare: (_, a, b) => a - b,\n newCursorFromOldCursor: (c) => c,\n oldCursorFromNewCursor: (c) => c,\n oldFilterFromNewFilter: (f) => f,\n oldOrderByFromNewOrderBy: (o) => o,\n estimateItemsToFetch: ({ limit }) => limit * 2,\n });\n\n const result = await evensOnly.next({\n after: evensOnly.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([2, 4]);\n });\n});\n\ndescribe(\"PaginatedList.merge\", () => {\n it(\"should merge two lists\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5]);\n const list2 = new ArrayPaginatedList([2, 4, 6]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n const result = await merged.next({\n after: merged.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3, 4, 5, 6]);\n });\n\n it(\"should merge three lists\", async () => {\n const list1 = new ArrayPaginatedList([1, 4, 7]);\n const list2 = new ArrayPaginatedList([2, 5, 8]);\n const list3 = new ArrayPaginatedList([3, 6, 9]);\n\n const merged = PaginatedList.merge(list1, list2, list3);\n\n const result = await merged.next({\n after: merged.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n });\n\n it(\"should handle empty lists in merge\", async () => {\n const list1 = new ArrayPaginatedList([1, 2, 3]);\n const list2 = new ArrayPaginatedList<number>([]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n const result = await merged.next({\n after: merged.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 2, 3]);\n });\n\n it(\"should paginate through merged list\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5, 7, 9]);\n const list2 = new ArrayPaginatedList([2, 4, 6, 8, 10]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n const first = await merged.next({\n after: merged.getFirstCursor(),\n limit: 4,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1, 2, 3, 4]);\n\n const second = await merged.next({\n after: first.cursor,\n limit: 4,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([5, 6, 7, 8]);\n });\n\n it(\"should have JSON-encoded cursor\", () => {\n const list1 = new ArrayPaginatedList([1, 2]);\n const list2 = new ArrayPaginatedList([3, 4]);\n\n const merged = PaginatedList.merge(list1, list2);\n const cursor = merged.getFirstCursor();\n\n expect(() => JSON.parse(cursor)).not.toThrow();\n expect(JSON.parse(cursor)).toEqual([\"before-0\", \"before-0\"]);\n });\n\n it(\"should paginate backward through merged list correctly\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5]);\n const list2 = new ArrayPaginatedList([2, 4, 6]);\n\n const merged = PaginatedList.merge(list1, list2);\n\n // Get last 3 items going backward\n const last = await merged.prev({\n before: merged.getLastCursor(),\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(last)).toEqual([4, 5, 6]);\n expect(last.isLast).toBe(true);\n expect(last.isFirst).toBe(false);\n\n // Continue backward to get previous 3 items\n const middle = await merged.prev({\n before: last.cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(middle)).toEqual([1, 2, 3]);\n expect(middle.isFirst).toBe(true);\n });\n\n it(\"should paginate backward through entire merged list\", async () => {\n const list1 = new ArrayPaginatedList([1, 3, 5, 7, 9]);\n const list2 = new ArrayPaginatedList([2, 4, 6, 8, 10]);\n\n const merged = PaginatedList.merge(list1, list2);\n const allItems: number[] = [];\n\n let cursor = merged.getLastCursor();\n let isFirst = false;\n\n while (!isFirst) {\n const result = await merged.prev({\n before: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.unshift(...items(result));\n cursor = result.cursor;\n isFirst = result.isFirst;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n });\n\n it(\"should have consistent forward and backward pagination results\", async () => {\n const list1 = new ArrayPaginatedList([1, 4, 7]);\n const list2 = new ArrayPaginatedList([2, 5, 8]);\n const list3 = new ArrayPaginatedList([3, 6, 9]);\n\n const merged = PaginatedList.merge(list1, list2, list3);\n\n // Collect all items going forward\n const forwardItems: number[] = [];\n let forwardCursor = merged.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await merged.next({\n after: forwardCursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n forwardItems.push(...items(result));\n forwardCursor = result.cursor;\n isLast = result.isLast;\n }\n\n // Collect all items going backward\n const backwardItems: number[] = [];\n let backwardCursor = merged.getLastCursor();\n let isFirst = false;\n\n while (!isFirst) {\n const result = await merged.prev({\n before: backwardCursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n backwardItems.unshift(...items(result));\n backwardCursor = result.cursor;\n isFirst = result.isFirst;\n }\n\n // Both directions should yield the same final result\n expect(forwardItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n expect(backwardItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n });\n});\n\ndescribe(\"edge cases\", () => {\n it(\"should handle single item\", async () => {\n const list = new ArrayPaginatedList([42]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([42]);\n expect(result.isFirst).toBe(true);\n expect(result.isLast).toBe(true);\n });\n\n it(\"should handle duplicate values\", async () => {\n const list = new ArrayPaginatedList([1, 1, 2, 2, 3, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([1, 1, 2, 2, 3, 3]);\n });\n\n it(\"should handle negative numbers\", async () => {\n const list = new ArrayPaginatedList([-3, -1, 0, 1, 3]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([-3, -1, 0, 1, 3]);\n });\n\n it(\"should handle string items\", async () => {\n const list = new ArrayPaginatedList([\"banana\", \"apple\", \"cherry\"]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => stringCompare(a, b),\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([\"apple\", \"banana\", \"cherry\"]);\n });\n\n it(\"should handle object items\", async () => {\n const list = new ArrayPaginatedList([\n { id: 1, value: \"a\" },\n { id: 2, value: \"b\" },\n ]);\n const result = await list.next({\n after: list.getFirstCursor(),\n limit: 10,\n filter: () => true,\n orderBy: (a, b) => a.id - b.id,\n limitPrecision: \"exact\",\n });\n\n expect(items(result)).toEqual([\n { id: 1, value: \"a\" },\n { id: 2, value: \"b\" },\n ]);\n });\n});\n\ndescribe(\"complete pagination walkthrough\", () => {\n it(\"should paginate forward through entire list\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const allItems: number[] = [];\n\n let cursor = list.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await list.next({\n after: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.push(...items(result));\n cursor = result.cursor;\n isLast = result.isLast;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n });\n\n it(\"should paginate backward through entire list\", async () => {\n const list = new ArrayPaginatedList([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n const allItems: number[] = [];\n\n let cursor = list.getLastCursor();\n let isFirst = false;\n\n while (!isFirst) {\n const result = await list.prev({\n before: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.unshift(...items(result));\n cursor = result.cursor;\n isFirst = result.isFirst;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n });\n});\n\ndescribe(\"unsorted array pagination\", () => {\n it(\"should correctly paginate through an unsorted array with sorting\", async () => {\n const list = new ArrayPaginatedList([3, 1, 2]);\n\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1, 2]);\n\n const second = await list.next({\n after: first.cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([3]);\n });\n\n it(\"should maintain sorted order across pagination boundaries\", async () => {\n const list = new ArrayPaginatedList([5, 4, 3, 2, 1]);\n const allItems: number[] = [];\n\n let cursor = list.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await list.next({\n after: cursor,\n limit: 2,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.push(...items(result));\n cursor = result.cursor;\n isLast = result.isLast;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5]);\n });\n\n it(\"should handle random order array correctly\", async () => {\n const list = new ArrayPaginatedList([7, 2, 9, 1, 5, 8, 3, 6, 4]);\n\n const allItems: number[] = [];\n let cursor = list.getFirstCursor();\n let isLast = false;\n\n while (!isLast) {\n const result = await list.next({\n after: cursor,\n limit: 3,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n allItems.push(...items(result));\n cursor = result.cursor;\n isLast = result.isLast;\n }\n\n expect(allItems).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9]);\n });\n\n it(\"should have consistent cursor semantics with sorted data\", async () => {\n const list = new ArrayPaginatedList([3, 1, 2]);\n\n const first = await list.next({\n after: list.getFirstCursor(),\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(first)).toEqual([1]);\n\n const second = await list.next({\n after: first.cursor,\n limit: 1,\n filter: () => true,\n orderBy: (a, b) => a - b,\n limitPrecision: \"exact\",\n });\n\n expect(items(second)).toEqual([2]);\n });\n});\n\n"],"mappings":"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"}
|
package/dist/utils/passkey.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { a as RegistrationResponseJSON, i as PublicKeyCredentialRequestOptionsJSON, n as AuthenticatorAttestationResponseJSON, r as PublicKeyCredentialCreationOptionsJSON, t as AuthenticationResponseJSON } from "../passkey-CKg87UH-.js";
|
|
2
|
+
export type { AuthenticationResponseJSON, AuthenticatorAttestationResponseJSON, PublicKeyCredentialCreationOptionsJSON, PublicKeyCredentialRequestOptionsJSON, RegistrationResponseJSON };
|
package/dist/utils/promises.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promises.d.ts","names":[],"sources":["../../src/utils/promises.tsx"],"mappings":";;;KAQY,YAAA,MAAkB,OAAA,CAAQ,CAAA;EAChC,MAAA;EAAoB,MAAA;AAAA;EACpB,MAAA;EAAqB,KAAA,EAAO,CAAA;AAAA;EAC5B,MAAA;AAAA;AAAA,KAGD,OAAA,OAAc,KAAA,EAAO,
|
|
1
|
+
{"version":3,"file":"promises.d.ts","names":[],"sources":["../../src/utils/promises.tsx"],"mappings":";;;KAQY,YAAA,MAAkB,OAAA,CAAQ,CAAA;EAChC,MAAA;EAAoB,MAAA;AAAA;EACpB,MAAA;EAAqB,KAAA,EAAO,CAAA;AAAA;EAC5B,MAAA;AAAA;AAAA,KAGD,OAAA,OAAc,KAAA,EAAO,CAAC;AAAA,KACtB,MAAA,IAAU,MAAe;AAAA,iBACd,aAAA,IAAiB,QAAA,GAAW,OAAA,EAAS,OAAA,CAAQ,CAAA,GAAI,MAAA,EAAQ,MAAA,YAAkB,YAAA,CAAa,CAAA;;;;;iBAwExF,QAAA,IAAY,KAAA,EAAO,CAAA,GAAI,YAAA,CAAa,CAAA;;;;AA7ExC;iBAuHI,QAAA,IAAY,MAAA,YAAkB,YAAY,CAAC,CAAA;AAAA,iBA6C3C,YAAA,IAAgB,YAAY;AAAA,iBAc5B,OAAA,IAAW,OAAA,EAAS,OAAA,CAAQ,CAAA,GAAI,OAAA;EAAW,oBAAA;AAAA,IAAwC,YAAA,CAAa,CAAA;;;;AA/KrF;AAAA;;iBAuNX,wBAAA,WAAmC,OAAA,OAAc,OAAA,EAAS,CAAC;;AAtN7C;AAC9B;iBA0OgB,2BAAA,IAA+B,OAAA,EAAS,OAAO,CAAC,CAAA;AAAA,iBAW1C,IAAA,CAAK,EAAA,WAAU,OAAA;AAAA,iBAgCf,SAAA,CAAU,IAAA,EAAM,IAAA,GAAI,OAAA;AAAA,iBAsB1B,0BAAA,IAA8B,IAAA,EAAM,UAAU,QAAQ,iBAAA;AAAA,iBAgCtD,iBAAA,CACd,aAAA,SAAsB,OAAA,0BAAiC,OAAA,wBACvD,OAAA;EACE,cAAA;EACA,OAAA,IAAW,KAAA,EAAO,KAAA;AAAA;AAAA,cAoChB,YAAA,SAAqB,KAAK;EAAA,SACF,EAAA;cAAA,EAAA;AAAA;AAAA,iBAMR,OAAA,IAAW,aAAA,EAAe,OAAA,CAAQ,CAAA,WAAY,OAAA,CAAQ,CAAA,IAAK,EAAA,WAAa,OAAA,CAAQ,MAAA,CAAO,CAAA,EAAG,YAAA;AAAA,iBA0B1F,YAAA,IAAgB,OAAA,EAAS,OAAA,CAAQ,CAAA,GAAI,EAAA,WAAa,OAAA,CAAQ,CAAA;;;;;;AApZyB;AAwEzG;;;;iBAsWsB,kBAAA,OACpB,KAAA,WAAgB,CAAA,IAChB,WAAA,UACA,EAAA,GAAK,IAAA,EAAM,CAAA,EAAG,KAAA,aAAkB,OAAA,CAAQ,CAAA,IACvC,OAAA,CAAQ,CAAA;AAAA,KAmDC,gBAAA;EA7ZuC;;;EAiajD,WAAA;EAja0B;;;EAsa1B,UAAA;EAtamD;AA0CrD;;EAiYE,UAAA;EAjYwD;;;EAsYxD,KAAA;EAtYyD;;AAAC;EA2Y1D,UAAA;AAAA;AAAA,iBAGc,WAAA,IACd,IAAA,QAAY,OAAA,CAAQ,CAAA,GACpB,OAAA,EAAS,gBAAA,SACF,OAAA,CAAQ,CAAA;AAAA,iBA0DD,SAAA,qBAA8B,IAAA,MAAU,IAAA,EAAM,CAAA,KAAM,OAAA,CAAQ,CAAA,GAAI,OAAA,eAAsB,IAAA,EAAM,CAAA,KAAM,OAAA,CAAQ,CAAA"}
|
package/dist/utils/promises.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
const require_chunk = require('../chunk-BE-pF4vm.js');
|
|
3
|
-
let ___index_js = require("../index.js");
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
2
|
let __errors_js = require("./errors.js");
|
|
5
3
|
let __env_js = require("./env.js");
|
|
6
4
|
let __maps_js = require("./maps.js");
|
|
7
5
|
let __results_js = require("./results.js");
|
|
8
6
|
let __telemetry_js = require("./telemetry.js");
|
|
7
|
+
let ___index_js = require("../index.js");
|
|
9
8
|
let __uuids_js = require("./uuids.js");
|
|
10
|
-
|
|
11
9
|
//#region src/utils/promises.tsx
|
|
12
10
|
function createPromise(callback) {
|
|
13
11
|
let status = "pending";
|
|
@@ -35,36 +33,6 @@ function createPromise(callback) {
|
|
|
35
33
|
...status === "rejected" ? { reason: valueOrReason } : {}
|
|
36
34
|
});
|
|
37
35
|
}
|
|
38
|
-
(void 0)?.test("createPromise", async ({ expect }) => {
|
|
39
|
-
const resolvedPromise = createPromise((resolve) => {
|
|
40
|
-
resolve(42);
|
|
41
|
-
});
|
|
42
|
-
expect(resolvedPromise.status).toBe("fulfilled");
|
|
43
|
-
expect(resolvedPromise.value).toBe(42);
|
|
44
|
-
expect(await resolvedPromise).toBe(42);
|
|
45
|
-
const error = /* @__PURE__ */ new Error("Test error");
|
|
46
|
-
const rejectedPromise = createPromise((_, reject) => {
|
|
47
|
-
reject(error);
|
|
48
|
-
});
|
|
49
|
-
expect(rejectedPromise.status).toBe("rejected");
|
|
50
|
-
expect(rejectedPromise.reason).toBe(error);
|
|
51
|
-
await expect(rejectedPromise).rejects.toBe(error);
|
|
52
|
-
const pendingPromise = createPromise(() => {});
|
|
53
|
-
expect(pendingPromise.status).toBe("pending");
|
|
54
|
-
expect(pendingPromise.value).toBeUndefined();
|
|
55
|
-
expect(pendingPromise.reason).toBeUndefined();
|
|
56
|
-
let resolveCount = 0;
|
|
57
|
-
const multiResolvePromise = createPromise((resolve) => {
|
|
58
|
-
resolve(1);
|
|
59
|
-
resolveCount++;
|
|
60
|
-
resolve(2);
|
|
61
|
-
resolveCount++;
|
|
62
|
-
});
|
|
63
|
-
expect(resolveCount).toBe(2);
|
|
64
|
-
expect(multiResolvePromise.status).toBe("fulfilled");
|
|
65
|
-
expect(multiResolvePromise.value).toBe(1);
|
|
66
|
-
expect(await multiResolvePromise).toBe(1);
|
|
67
|
-
});
|
|
68
36
|
let resolvedCache = null;
|
|
69
37
|
/**
|
|
70
38
|
* Like Promise.resolve(...), but also adds the status and value properties for use with React's `use` hook, and caches
|
|
@@ -80,19 +48,6 @@ function resolved(value) {
|
|
|
80
48
|
resolvedCache.set([value], res);
|
|
81
49
|
return res;
|
|
82
50
|
}
|
|
83
|
-
(void 0)?.test("resolved", async ({ expect }) => {
|
|
84
|
-
const promise1 = resolved(42);
|
|
85
|
-
expect(promise1.status).toBe("fulfilled");
|
|
86
|
-
expect(promise1.value).toBe(42);
|
|
87
|
-
expect(await promise1).toBe(42);
|
|
88
|
-
const obj = { test: true };
|
|
89
|
-
const promise2 = resolved(obj);
|
|
90
|
-
expect(promise2.status).toBe("fulfilled");
|
|
91
|
-
expect(promise2.value).toBe(obj);
|
|
92
|
-
expect(await promise2).toBe(obj);
|
|
93
|
-
expect(resolved(42)).toBe(promise1);
|
|
94
|
-
expect(resolved(43)).not.toBe(promise1);
|
|
95
|
-
});
|
|
96
51
|
let rejectedCache = null;
|
|
97
52
|
/**
|
|
98
53
|
* Like Promise.reject(...), but also adds the status and value properties for use with React's `use` hook, and caches
|
|
@@ -110,28 +65,10 @@ function rejected(reason) {
|
|
|
110
65
|
rejectedCache.set([reason], res);
|
|
111
66
|
return res;
|
|
112
67
|
}
|
|
113
|
-
(void 0)?.test("rejected", ({ expect }) => {
|
|
114
|
-
const error = /* @__PURE__ */ new Error("Test error");
|
|
115
|
-
const promise1 = rejected(error);
|
|
116
|
-
expect(promise1.status).toBe("rejected");
|
|
117
|
-
expect(promise1.reason).toBe(error);
|
|
118
|
-
const promise2 = rejected("error message");
|
|
119
|
-
expect(promise2.status).toBe("rejected");
|
|
120
|
-
expect(promise2.reason).toBe("error message");
|
|
121
|
-
expect(rejected(error)).toBe(promise1);
|
|
122
|
-
expect(rejected(/* @__PURE__ */ new Error("Different error"))).not.toBe(promise1);
|
|
123
|
-
});
|
|
124
68
|
const neverResolvePromise = pending(new Promise(() => {}));
|
|
125
69
|
function neverResolve() {
|
|
126
70
|
return neverResolvePromise;
|
|
127
71
|
}
|
|
128
|
-
(void 0)?.test("neverResolve", ({ expect }) => {
|
|
129
|
-
const promise = neverResolve();
|
|
130
|
-
expect(promise.status).toBe("pending");
|
|
131
|
-
expect(promise.value).toBeUndefined();
|
|
132
|
-
expect(promise.reason).toBeUndefined();
|
|
133
|
-
expect(neverResolve()).toBe(promise);
|
|
134
|
-
});
|
|
135
72
|
function pending(promise, options = {}) {
|
|
136
73
|
const res = promise.then((value) => {
|
|
137
74
|
res.status = "fulfilled";
|
|
@@ -145,15 +82,6 @@ function pending(promise, options = {}) {
|
|
|
145
82
|
res.status = "pending";
|
|
146
83
|
return res;
|
|
147
84
|
}
|
|
148
|
-
(void 0)?.test("pending", async ({ expect }) => {
|
|
149
|
-
const resolvePromise = Promise.resolve(42);
|
|
150
|
-
const pendingPromise = pending(resolvePromise);
|
|
151
|
-
expect(pendingPromise.status).toBe("pending");
|
|
152
|
-
await resolvePromise;
|
|
153
|
-
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
154
|
-
expect(pendingPromise.status).toBe("fulfilled");
|
|
155
|
-
expect(pendingPromise.value).toBe(42);
|
|
156
|
-
});
|
|
157
85
|
/**
|
|
158
86
|
* Should be used to wrap Promises that are not immediately awaited, so they don't throw an unhandled promise rejection
|
|
159
87
|
* error.
|
|
@@ -163,15 +91,6 @@ function pending(promise, options = {}) {
|
|
|
163
91
|
function ignoreUnhandledRejection(promise) {
|
|
164
92
|
promise.catch(() => {});
|
|
165
93
|
}
|
|
166
|
-
(void 0)?.test("ignoreUnhandledRejection", async ({ expect }) => {
|
|
167
|
-
const resolvePromise = Promise.resolve(42);
|
|
168
|
-
ignoreUnhandledRejection(resolvePromise);
|
|
169
|
-
expect(await resolvePromise).toBe(42);
|
|
170
|
-
const error = /* @__PURE__ */ new Error("Test error");
|
|
171
|
-
const rejectPromise = Promise.reject(error);
|
|
172
|
-
ignoreUnhandledRejection(rejectPromise);
|
|
173
|
-
await expect(rejectPromise).rejects.toBe(error);
|
|
174
|
-
});
|
|
175
94
|
/**
|
|
176
95
|
* See concatStacktraces for more information.
|
|
177
96
|
*/
|
|
@@ -191,32 +110,9 @@ async function wait(ms) {
|
|
|
191
110
|
return await new Promise((resolve) => setTimeout(resolve, ms));
|
|
192
111
|
});
|
|
193
112
|
}
|
|
194
|
-
(void 0)?.test("wait", async ({ expect }) => {
|
|
195
|
-
const start = Date.now();
|
|
196
|
-
await wait(10);
|
|
197
|
-
expect(Date.now() - start).toBeGreaterThanOrEqual(5);
|
|
198
|
-
await expect(wait(0)).resolves.toBeUndefined();
|
|
199
|
-
await expect(wait(-10)).rejects.toThrow("wait() requires a non-negative integer");
|
|
200
|
-
await expect(wait(NaN)).rejects.toThrow("wait() requires a non-negative integer");
|
|
201
|
-
await expect(wait(Infinity)).rejects.toThrow("wait() requires a non-negative integer");
|
|
202
|
-
await expect(wait(2 ** 31)).rejects.toThrow("The maximum timeout for wait()");
|
|
203
|
-
});
|
|
204
113
|
async function waitUntil(date) {
|
|
205
114
|
return await wait(date.getTime() - Date.now());
|
|
206
115
|
}
|
|
207
|
-
(void 0)?.test("waitUntil", async ({ expect }) => {
|
|
208
|
-
const futureDate = new Date(Date.now() + 10);
|
|
209
|
-
const start = Date.now();
|
|
210
|
-
await waitUntil(futureDate);
|
|
211
|
-
expect(Date.now() - start).toBeGreaterThanOrEqual(5);
|
|
212
|
-
try {
|
|
213
|
-
await waitUntil(/* @__PURE__ */ new Date(Date.now() - 1e3));
|
|
214
|
-
expect.fail("Should have thrown an error");
|
|
215
|
-
} catch (error) {
|
|
216
|
-
expect(error).toBeInstanceOf(__errors_js.HexclaveAssertionError);
|
|
217
|
-
expect(error.message).toContain("wait() requires a non-negative integer");
|
|
218
|
-
}
|
|
219
|
-
});
|
|
220
116
|
function runAsynchronouslyWithAlert(...args) {
|
|
221
117
|
return runAsynchronously(args[0], {
|
|
222
118
|
...args[1],
|
|
@@ -228,12 +124,6 @@ function runAsynchronouslyWithAlert(...args) {
|
|
|
228
124
|
}
|
|
229
125
|
}, ...args.slice(2));
|
|
230
126
|
}
|
|
231
|
-
(void 0)?.test("runAsynchronouslyWithAlert", ({ expect }) => {
|
|
232
|
-
const testFn = () => Promise.resolve("test");
|
|
233
|
-
const testOptions = { noErrorLogging: true };
|
|
234
|
-
expect(() => runAsynchronouslyWithAlert(testFn, testOptions)).not.toThrow();
|
|
235
|
-
expect(typeof runAsynchronouslyWithAlert).toBe("function");
|
|
236
|
-
});
|
|
237
127
|
function runAsynchronously(promiseOrFunc, options = {}) {
|
|
238
128
|
if (typeof promiseOrFunc === "function") promiseOrFunc = promiseOrFunc();
|
|
239
129
|
if (promiseOrFunc) {
|
|
@@ -245,14 +135,6 @@ function runAsynchronously(promiseOrFunc, options = {}) {
|
|
|
245
135
|
});
|
|
246
136
|
}
|
|
247
137
|
}
|
|
248
|
-
(void 0)?.test("runAsynchronously", ({ expect }) => {
|
|
249
|
-
const testFn = () => Promise.resolve("test");
|
|
250
|
-
expect(() => runAsynchronously(testFn)).not.toThrow();
|
|
251
|
-
expect(() => runAsynchronously(Promise.resolve("test"))).not.toThrow();
|
|
252
|
-
expect(() => runAsynchronously(void 0)).not.toThrow();
|
|
253
|
-
expect(() => runAsynchronously(testFn, { noErrorLogging: true })).not.toThrow();
|
|
254
|
-
expect(() => runAsynchronously(testFn, { onError: () => {} })).not.toThrow();
|
|
255
|
-
});
|
|
256
138
|
var TimeoutError = class extends Error {
|
|
257
139
|
constructor(ms) {
|
|
258
140
|
super(`Timeout after ${ms}ms`);
|
|
@@ -264,26 +146,9 @@ async function timeout(promiseOrFunc, ms) {
|
|
|
264
146
|
const promise = typeof promiseOrFunc === "function" ? promiseOrFunc() : promiseOrFunc;
|
|
265
147
|
return await Promise.race([promise.then((value) => __results_js.Result.ok(value)), wait(ms).then(() => __results_js.Result.error(new TimeoutError(ms)))]);
|
|
266
148
|
}
|
|
267
|
-
(void 0)?.test("timeout", async ({ expect }) => {
|
|
268
|
-
const fastResult = await timeout(Promise.resolve(42), 100);
|
|
269
|
-
expect(fastResult.status).toBe("ok");
|
|
270
|
-
if (fastResult.status === "ok") expect(fastResult.data).toBe(42);
|
|
271
|
-
const slowResult = await timeout(new Promise((resolve) => setTimeout(() => resolve("too late"), 50)), 10);
|
|
272
|
-
expect(slowResult.status).toBe("error");
|
|
273
|
-
if (slowResult.status === "error") {
|
|
274
|
-
expect(slowResult.error).toBeInstanceOf(TimeoutError);
|
|
275
|
-
expect(slowResult.error.ms).toBe(10);
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
149
|
async function timeoutThrow(promise, ms) {
|
|
279
150
|
return __results_js.Result.orThrow(await timeout(promise, ms));
|
|
280
151
|
}
|
|
281
|
-
(void 0)?.test("timeoutThrow", async ({ expect }) => {
|
|
282
|
-
expect(await timeoutThrow(Promise.resolve(42), 100)).toBe(42);
|
|
283
|
-
const slowPromise = new Promise((resolve) => setTimeout(() => resolve("too late"), 50));
|
|
284
|
-
await expect(timeoutThrow(slowPromise, 10)).rejects.toThrow("Timeout after 10ms");
|
|
285
|
-
await expect(timeoutThrow(slowPromise, 10)).rejects.toBeInstanceOf(TimeoutError);
|
|
286
|
-
});
|
|
287
152
|
/**
|
|
288
153
|
* Maps over `items` with `fn`, running at most `concurrency` invocations at a time.
|
|
289
154
|
*
|
|
@@ -315,31 +180,6 @@ async function mapWithConcurrency(items, concurrency, fn) {
|
|
|
315
180
|
await Promise.all(Array.from({ length: workerCount }, () => worker()));
|
|
316
181
|
return results;
|
|
317
182
|
}
|
|
318
|
-
(void 0)?.test("mapWithConcurrency", async ({ expect }) => {
|
|
319
|
-
expect(await mapWithConcurrency([
|
|
320
|
-
30,
|
|
321
|
-
10,
|
|
322
|
-
20
|
|
323
|
-
], 3, async (ms, index) => {
|
|
324
|
-
await wait(ms);
|
|
325
|
-
return `${index}:${ms}`;
|
|
326
|
-
})).toEqual([
|
|
327
|
-
"0:30",
|
|
328
|
-
"1:10",
|
|
329
|
-
"2:20"
|
|
330
|
-
]);
|
|
331
|
-
let inFlight = 0;
|
|
332
|
-
let maxInFlight = 0;
|
|
333
|
-
await mapWithConcurrency(Array.from({ length: 10 }, (_, i) => i), 3, async () => {
|
|
334
|
-
inFlight++;
|
|
335
|
-
maxInFlight = Math.max(maxInFlight, inFlight);
|
|
336
|
-
await wait(5);
|
|
337
|
-
inFlight--;
|
|
338
|
-
});
|
|
339
|
-
expect(maxInFlight).toBe(3);
|
|
340
|
-
expect(await mapWithConcurrency([], 4, async () => 1)).toEqual([]);
|
|
341
|
-
await expect(mapWithConcurrency([1], 0, async (x) => x)).rejects.toThrow("positive integer concurrency");
|
|
342
|
-
});
|
|
343
183
|
function rateLimited(func, options) {
|
|
344
184
|
let waitUntil = performance.now();
|
|
345
185
|
let queue = [];
|
|
@@ -385,7 +225,6 @@ function throttled(func, delayMs) {
|
|
|
385
225
|
return await nextAvailable;
|
|
386
226
|
};
|
|
387
227
|
}
|
|
388
|
-
|
|
389
228
|
//#endregion
|
|
390
229
|
exports.concatStacktracesIfRejected = concatStacktracesIfRejected;
|
|
391
230
|
exports.createPromise = createPromise;
|
|
@@ -403,4 +242,5 @@ exports.timeout = timeout;
|
|
|
403
242
|
exports.timeoutThrow = timeoutThrow;
|
|
404
243
|
exports.wait = wait;
|
|
405
244
|
exports.waitUntil = waitUntil;
|
|
245
|
+
|
|
406
246
|
//# sourceMappingURL=promises.js.map
|