@latte-macchiat-io/latte-payload 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -0
- package/dist/access/adminAccessOnly.d.ts.map +1 -0
- package/dist/access/adminAccessOnly.js.map +1 -0
- package/dist/access/admins.d.ts.map +1 -0
- package/dist/access/admins.js.map +1 -0
- package/dist/access/anyone.d.ts.map +1 -0
- package/dist/access/anyone.js.map +1 -0
- package/dist/access/authenticated.d.ts.map +1 -0
- package/dist/access/authenticated.js.map +1 -0
- package/dist/access/authenticatedAccessOnly.d.ts.map +1 -0
- package/dist/access/authenticatedAccessOnly.js.map +1 -0
- package/dist/access/index.d.ts.map +1 -0
- package/dist/access/index.js.map +1 -0
- package/dist/access/publicReadAuthenticatedAccess.d.ts.map +1 -0
- package/dist/access/publicReadAuthenticatedAccess.js.map +1 -0
- package/dist/collections/ContactMessages/hooks/sendEmailNotification.d.ts.map +1 -0
- package/dist/collections/ContactMessages/hooks/sendEmailNotification.js.map +1 -0
- package/dist/collections/ContactMessages/index.d.ts.map +1 -0
- package/dist/collections/ContactMessages/index.js.map +1 -0
- package/dist/collections/EmailTemplates/index.d.ts.map +1 -0
- package/dist/collections/EmailTemplates/index.js.map +1 -0
- package/dist/collections/Media/index.d.ts.map +1 -0
- package/dist/collections/Media/index.js.map +1 -0
- package/dist/collections/QueuedEmails/components/HtmlViewer.d.ts.map +1 -0
- package/dist/collections/QueuedEmails/components/HtmlViewer.js.map +1 -0
- package/dist/collections/QueuedEmails/components/RetryEmailButtons.d.ts.map +1 -0
- package/dist/collections/QueuedEmails/components/RetryEmailButtons.js.map +1 -0
- package/dist/collections/QueuedEmails/index.d.ts.map +1 -0
- package/dist/collections/QueuedEmails/index.js.map +1 -0
- package/dist/collections/Users/auth-emails/forgot-password-email.d.ts.map +1 -0
- package/dist/collections/Users/auth-emails/forgot-password-email.js.map +1 -0
- package/dist/collections/Users/auth-emails/verify-email.d.ts.map +1 -0
- package/dist/collections/Users/auth-emails/verify-email.js.map +1 -0
- package/dist/collections/Users/hooks/ensureFirstUserIsAdmin.d.ts.map +1 -0
- package/dist/collections/Users/hooks/ensureFirstUserIsAdmin.js.map +1 -0
- package/dist/collections/Users/index.d.ts.map +1 -0
- package/dist/collections/Users/index.js.map +1 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/components/admin/client-space-button.d.ts +4 -0
- package/dist/components/admin/client-space-button.d.ts.map +1 -0
- package/dist/components/admin/client-space-button.js +26 -0
- package/dist/components/admin/client-space-button.js.map +1 -0
- package/dist/{src/components → components}/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/{src/components → components}/index.js +2 -0
- package/dist/components/index.js.map +1 -0
- package/dist/forms/states.d.ts.map +1 -0
- package/dist/forms/states.js.map +1 -0
- package/dist/forms/translate-errors.d.ts.map +1 -0
- package/dist/forms/translate-errors.js.map +1 -0
- package/dist/forms/validators.d.ts.map +1 -0
- package/dist/forms/validators.js.map +1 -0
- package/dist/{src/globals/TermsOfUse → globals/PrivacyPolicy}/hooks/revalidate-cache.d.ts.map +1 -1
- package/dist/{src/globals/TermsOfUse → globals/PrivacyPolicy}/hooks/revalidate-cache.js.map +1 -1
- package/dist/globals/PrivacyPolicy/index.d.ts.map +1 -0
- package/dist/globals/PrivacyPolicy/index.js.map +1 -0
- package/dist/globals/TermsOfUse/hooks/revalidate-cache.d.ts.map +1 -0
- package/dist/globals/TermsOfUse/hooks/revalidate-cache.js.map +1 -0
- package/dist/globals/TermsOfUse/index.d.ts.map +1 -0
- package/dist/globals/TermsOfUse/index.js.map +1 -0
- package/dist/globals/index.d.ts.map +1 -0
- package/dist/globals/index.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/process-email-queue.d.ts.map +1 -0
- package/dist/tasks/process-email-queue.js.map +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{src/types → types}/index.js.map +1 -1
- package/dist/types/slug.d.ts.map +1 -0
- package/dist/types/slug.js.map +1 -0
- package/dist/utils/database-dates.d.ts.map +1 -0
- package/dist/utils/database-dates.js.map +1 -0
- package/dist/utils/email/generate-email-html.d.ts.map +1 -0
- package/dist/utils/email/generate-email-html.js.map +1 -0
- package/dist/utils/email/get-email-template.d.ts.map +1 -0
- package/dist/utils/email/get-email-template.js.map +1 -0
- package/dist/utils/email/index.d.ts.map +1 -0
- package/dist/utils/email/index.js.map +1 -0
- package/dist/utils/email/queue-email.d.ts.map +1 -0
- package/dist/utils/email/queue-email.js.map +1 -0
- package/dist/utils/get-global.d.ts.map +1 -0
- package/dist/utils/get-global.js.map +1 -0
- package/dist/utils/id-from-payload.d.ts.map +1 -0
- package/dist/utils/id-from-payload.js.map +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/migrations.d.ts.map +1 -0
- package/dist/utils/migrations.js.map +1 -0
- package/dist/utils/payload-client.d.ts.map +1 -0
- package/dist/utils/payload-client.js.map +1 -0
- package/dist/utils/slugify.d.ts.map +1 -0
- package/dist/utils/slugify.js.map +1 -0
- package/package.json +1 -1
- package/src/components/admin/client-space-button.tsx +57 -0
- package/src/components/index.ts +3 -0
- package/tsconfig.json +2 -1
- package/dist/src/access/adminAccessOnly.d.ts.map +0 -1
- package/dist/src/access/adminAccessOnly.js.map +0 -1
- package/dist/src/access/admins.d.ts.map +0 -1
- package/dist/src/access/admins.js.map +0 -1
- package/dist/src/access/anyone.d.ts.map +0 -1
- package/dist/src/access/anyone.js.map +0 -1
- package/dist/src/access/authenticated.d.ts.map +0 -1
- package/dist/src/access/authenticated.js.map +0 -1
- package/dist/src/access/authenticatedAccessOnly.d.ts.map +0 -1
- package/dist/src/access/authenticatedAccessOnly.js.map +0 -1
- package/dist/src/access/index.d.ts.map +0 -1
- package/dist/src/access/index.js.map +0 -1
- package/dist/src/access/publicReadAuthenticatedAccess.d.ts.map +0 -1
- package/dist/src/access/publicReadAuthenticatedAccess.js.map +0 -1
- package/dist/src/collections/ContactMessages/hooks/sendEmailNotification.d.ts.map +0 -1
- package/dist/src/collections/ContactMessages/hooks/sendEmailNotification.js.map +0 -1
- package/dist/src/collections/ContactMessages/index.d.ts.map +0 -1
- package/dist/src/collections/ContactMessages/index.js.map +0 -1
- package/dist/src/collections/EmailTemplates/index.d.ts.map +0 -1
- package/dist/src/collections/EmailTemplates/index.js.map +0 -1
- package/dist/src/collections/Media/index.d.ts.map +0 -1
- package/dist/src/collections/Media/index.js.map +0 -1
- package/dist/src/collections/QueuedEmails/components/HtmlViewer.d.ts.map +0 -1
- package/dist/src/collections/QueuedEmails/components/HtmlViewer.js.map +0 -1
- package/dist/src/collections/QueuedEmails/components/RetryEmailButtons.d.ts.map +0 -1
- package/dist/src/collections/QueuedEmails/components/RetryEmailButtons.js.map +0 -1
- package/dist/src/collections/QueuedEmails/index.d.ts.map +0 -1
- package/dist/src/collections/QueuedEmails/index.js.map +0 -1
- package/dist/src/collections/Users/auth-emails/forgot-password-email.d.ts.map +0 -1
- package/dist/src/collections/Users/auth-emails/forgot-password-email.js.map +0 -1
- package/dist/src/collections/Users/auth-emails/verify-email.d.ts.map +0 -1
- package/dist/src/collections/Users/auth-emails/verify-email.js.map +0 -1
- package/dist/src/collections/Users/hooks/ensureFirstUserIsAdmin.d.ts.map +0 -1
- package/dist/src/collections/Users/hooks/ensureFirstUserIsAdmin.js.map +0 -1
- package/dist/src/collections/Users/index.d.ts.map +0 -1
- package/dist/src/collections/Users/index.js.map +0 -1
- package/dist/src/collections/index.d.ts.map +0 -1
- package/dist/src/collections/index.js.map +0 -1
- package/dist/src/components/index.d.ts.map +0 -1
- package/dist/src/components/index.js.map +0 -1
- package/dist/src/forms/states.d.ts.map +0 -1
- package/dist/src/forms/states.js.map +0 -1
- package/dist/src/forms/translate-errors.d.ts.map +0 -1
- package/dist/src/forms/translate-errors.js.map +0 -1
- package/dist/src/forms/validators.d.ts.map +0 -1
- package/dist/src/forms/validators.js.map +0 -1
- package/dist/src/globals/PrivacyPolicy/hooks/revalidate-cache.d.ts.map +0 -1
- package/dist/src/globals/PrivacyPolicy/hooks/revalidate-cache.js.map +0 -1
- package/dist/src/globals/PrivacyPolicy/index.d.ts.map +0 -1
- package/dist/src/globals/PrivacyPolicy/index.js.map +0 -1
- package/dist/src/globals/TermsOfUse/index.d.ts.map +0 -1
- package/dist/src/globals/TermsOfUse/index.js.map +0 -1
- package/dist/src/globals/index.d.ts.map +0 -1
- package/dist/src/globals/index.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/tasks/index.d.ts.map +0 -1
- package/dist/src/tasks/index.js.map +0 -1
- package/dist/src/tasks/process-email-queue.d.ts.map +0 -1
- package/dist/src/tasks/process-email-queue.js.map +0 -1
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/slug.d.ts.map +0 -1
- package/dist/src/types/slug.js.map +0 -1
- package/dist/src/utils/database-dates.d.ts.map +0 -1
- package/dist/src/utils/database-dates.js.map +0 -1
- package/dist/src/utils/email/generate-email-html.d.ts.map +0 -1
- package/dist/src/utils/email/generate-email-html.js.map +0 -1
- package/dist/src/utils/email/get-email-template.d.ts.map +0 -1
- package/dist/src/utils/email/get-email-template.js.map +0 -1
- package/dist/src/utils/email/index.d.ts.map +0 -1
- package/dist/src/utils/email/index.js.map +0 -1
- package/dist/src/utils/email/queue-email.d.ts.map +0 -1
- package/dist/src/utils/email/queue-email.js.map +0 -1
- package/dist/src/utils/get-global.d.ts.map +0 -1
- package/dist/src/utils/get-global.js.map +0 -1
- package/dist/src/utils/id-from-payload.d.ts.map +0 -1
- package/dist/src/utils/id-from-payload.js.map +0 -1
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/migrations.d.ts.map +0 -1
- package/dist/src/utils/migrations.js.map +0 -1
- package/dist/src/utils/payload-client.d.ts.map +0 -1
- package/dist/src/utils/payload-client.js.map +0 -1
- package/dist/src/utils/slugify.d.ts.map +0 -1
- package/dist/src/utils/slugify.js.map +0 -1
- package/dist/tests/fixtures/sample-data.d.ts +0 -27
- package/dist/tests/fixtures/sample-data.d.ts.map +0 -1
- package/dist/tests/fixtures/sample-data.js +0 -53
- package/dist/tests/fixtures/sample-data.js.map +0 -1
- package/dist/tests/helpers/create-test-user.d.ts +0 -16
- package/dist/tests/helpers/create-test-user.d.ts.map +0 -1
- package/dist/tests/helpers/create-test-user.js +0 -27
- package/dist/tests/helpers/create-test-user.js.map +0 -1
- package/dist/tests/helpers/init-payload.d.ts +0 -11
- package/dist/tests/helpers/init-payload.d.ts.map +0 -1
- package/dist/tests/helpers/init-payload.js +0 -52
- package/dist/tests/helpers/init-payload.js.map +0 -1
- package/dist/tests/setup.d.ts +0 -3
- package/dist/tests/setup.d.ts.map +0 -1
- package/dist/tests/setup.integration.d.ts +0 -2
- package/dist/tests/setup.integration.d.ts.map +0 -1
- package/dist/tests/setup.integration.js +0 -8
- package/dist/tests/setup.integration.js.map +0 -1
- package/dist/tests/setup.js +0 -4
- package/dist/tests/setup.js.map +0 -1
- package/dist/tests/unit/access/adminAccessOnly.spec.d.ts +0 -2
- package/dist/tests/unit/access/adminAccessOnly.spec.d.ts.map +0 -1
- package/dist/tests/unit/access/adminAccessOnly.spec.js +0 -97
- package/dist/tests/unit/access/adminAccessOnly.spec.js.map +0 -1
- package/dist/tests/unit/access/admins.spec.d.ts +0 -2
- package/dist/tests/unit/access/admins.spec.d.ts.map +0 -1
- package/dist/tests/unit/access/admins.spec.js +0 -57
- package/dist/tests/unit/access/admins.spec.js.map +0 -1
- package/dist/tests/unit/access/anyone.spec.d.ts +0 -2
- package/dist/tests/unit/access/anyone.spec.d.ts.map +0 -1
- package/dist/tests/unit/access/anyone.spec.js +0 -24
- package/dist/tests/unit/access/anyone.spec.js.map +0 -1
- package/dist/tests/unit/access/authenticated.spec.d.ts +0 -2
- package/dist/tests/unit/access/authenticated.spec.d.ts.map +0 -1
- package/dist/tests/unit/access/authenticated.spec.js +0 -45
- package/dist/tests/unit/access/authenticated.spec.js.map +0 -1
- package/dist/tests/unit/access/authenticatedAccessOnly.spec.d.ts +0 -2
- package/dist/tests/unit/access/authenticatedAccessOnly.spec.d.ts.map +0 -1
- package/dist/tests/unit/access/authenticatedAccessOnly.spec.js +0 -95
- package/dist/tests/unit/access/authenticatedAccessOnly.spec.js.map +0 -1
- package/dist/tests/unit/access/publicReadAuthenticatedAccess.spec.d.ts +0 -2
- package/dist/tests/unit/access/publicReadAuthenticatedAccess.spec.d.ts.map +0 -1
- package/dist/tests/unit/access/publicReadAuthenticatedAccess.spec.js +0 -95
- package/dist/tests/unit/access/publicReadAuthenticatedAccess.spec.js.map +0 -1
- package/dist/tests/unit/forms/validators.spec.d.ts +0 -2
- package/dist/tests/unit/forms/validators.spec.d.ts.map +0 -1
- package/dist/tests/unit/forms/validators.spec.js +0 -294
- package/dist/tests/unit/forms/validators.spec.js.map +0 -1
- package/dist/tests/unit/utils/database-dates.spec.d.ts +0 -2
- package/dist/tests/unit/utils/database-dates.spec.d.ts.map +0 -1
- package/dist/tests/unit/utils/database-dates.spec.js +0 -82
- package/dist/tests/unit/utils/database-dates.spec.js.map +0 -1
- package/dist/tests/unit/utils/id-from-payload.spec.d.ts +0 -2
- package/dist/tests/unit/utils/id-from-payload.spec.d.ts.map +0 -1
- package/dist/tests/unit/utils/id-from-payload.spec.js +0 -110
- package/dist/tests/unit/utils/id-from-payload.spec.js.map +0 -1
- package/dist/tests/unit/utils/slugify.spec.d.ts +0 -2
- package/dist/tests/unit/utils/slugify.spec.d.ts.map +0 -1
- package/dist/tests/unit/utils/slugify.spec.js +0 -150
- package/dist/tests/unit/utils/slugify.spec.js.map +0 -1
- /package/dist/{src/access → access}/adminAccessOnly.d.ts +0 -0
- /package/dist/{src/access → access}/adminAccessOnly.js +0 -0
- /package/dist/{src/access → access}/admins.d.ts +0 -0
- /package/dist/{src/access → access}/admins.js +0 -0
- /package/dist/{src/access → access}/anyone.d.ts +0 -0
- /package/dist/{src/access → access}/anyone.js +0 -0
- /package/dist/{src/access → access}/authenticated.d.ts +0 -0
- /package/dist/{src/access → access}/authenticated.js +0 -0
- /package/dist/{src/access → access}/authenticatedAccessOnly.d.ts +0 -0
- /package/dist/{src/access → access}/authenticatedAccessOnly.js +0 -0
- /package/dist/{src/access → access}/index.d.ts +0 -0
- /package/dist/{src/access → access}/index.js +0 -0
- /package/dist/{src/access → access}/publicReadAuthenticatedAccess.d.ts +0 -0
- /package/dist/{src/access → access}/publicReadAuthenticatedAccess.js +0 -0
- /package/dist/{src/collections → collections}/ContactMessages/hooks/sendEmailNotification.d.ts +0 -0
- /package/dist/{src/collections → collections}/ContactMessages/hooks/sendEmailNotification.js +0 -0
- /package/dist/{src/collections → collections}/ContactMessages/index.d.ts +0 -0
- /package/dist/{src/collections → collections}/ContactMessages/index.js +0 -0
- /package/dist/{src/collections → collections}/EmailTemplates/index.d.ts +0 -0
- /package/dist/{src/collections → collections}/EmailTemplates/index.js +0 -0
- /package/dist/{src/collections → collections}/Media/index.d.ts +0 -0
- /package/dist/{src/collections → collections}/Media/index.js +0 -0
- /package/dist/{src/collections → collections}/QueuedEmails/components/HtmlViewer.d.ts +0 -0
- /package/dist/{src/collections → collections}/QueuedEmails/components/HtmlViewer.js +0 -0
- /package/dist/{src/collections → collections}/QueuedEmails/components/RetryEmailButtons.d.ts +0 -0
- /package/dist/{src/collections → collections}/QueuedEmails/components/RetryEmailButtons.js +0 -0
- /package/dist/{src/collections → collections}/QueuedEmails/index.d.ts +0 -0
- /package/dist/{src/collections → collections}/QueuedEmails/index.js +0 -0
- /package/dist/{src/collections → collections}/Users/auth-emails/forgot-password-email.d.ts +0 -0
- /package/dist/{src/collections → collections}/Users/auth-emails/forgot-password-email.js +0 -0
- /package/dist/{src/collections → collections}/Users/auth-emails/verify-email.d.ts +0 -0
- /package/dist/{src/collections → collections}/Users/auth-emails/verify-email.js +0 -0
- /package/dist/{src/collections → collections}/Users/hooks/ensureFirstUserIsAdmin.d.ts +0 -0
- /package/dist/{src/collections → collections}/Users/hooks/ensureFirstUserIsAdmin.js +0 -0
- /package/dist/{src/collections → collections}/Users/index.d.ts +0 -0
- /package/dist/{src/collections → collections}/Users/index.js +0 -0
- /package/dist/{src/collections → collections}/index.d.ts +0 -0
- /package/dist/{src/collections → collections}/index.js +0 -0
- /package/dist/{src/forms → forms}/states.d.ts +0 -0
- /package/dist/{src/forms → forms}/states.js +0 -0
- /package/dist/{src/forms → forms}/translate-errors.d.ts +0 -0
- /package/dist/{src/forms → forms}/translate-errors.js +0 -0
- /package/dist/{src/forms → forms}/validators.d.ts +0 -0
- /package/dist/{src/forms → forms}/validators.js +0 -0
- /package/dist/{src/globals → globals}/PrivacyPolicy/hooks/revalidate-cache.d.ts +0 -0
- /package/dist/{src/globals → globals}/PrivacyPolicy/hooks/revalidate-cache.js +0 -0
- /package/dist/{src/globals → globals}/PrivacyPolicy/index.d.ts +0 -0
- /package/dist/{src/globals → globals}/PrivacyPolicy/index.js +0 -0
- /package/dist/{src/globals → globals}/TermsOfUse/hooks/revalidate-cache.d.ts +0 -0
- /package/dist/{src/globals → globals}/TermsOfUse/hooks/revalidate-cache.js +0 -0
- /package/dist/{src/globals → globals}/TermsOfUse/index.d.ts +0 -0
- /package/dist/{src/globals → globals}/TermsOfUse/index.js +0 -0
- /package/dist/{src/globals → globals}/index.d.ts +0 -0
- /package/dist/{src/globals → globals}/index.js +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{src/index.js → index.js} +0 -0
- /package/dist/{src/tasks → tasks}/index.d.ts +0 -0
- /package/dist/{src/tasks → tasks}/index.js +0 -0
- /package/dist/{src/tasks → tasks}/process-email-queue.d.ts +0 -0
- /package/dist/{src/tasks → tasks}/process-email-queue.js +0 -0
- /package/dist/{src/types → types}/index.d.ts +0 -0
- /package/dist/{src/types → types}/index.js +0 -0
- /package/dist/{src/types → types}/slug.d.ts +0 -0
- /package/dist/{src/types → types}/slug.js +0 -0
- /package/dist/{src/utils → utils}/database-dates.d.ts +0 -0
- /package/dist/{src/utils → utils}/database-dates.js +0 -0
- /package/dist/{src/utils → utils}/email/generate-email-html.d.ts +0 -0
- /package/dist/{src/utils → utils}/email/generate-email-html.js +0 -0
- /package/dist/{src/utils → utils}/email/get-email-template.d.ts +0 -0
- /package/dist/{src/utils → utils}/email/get-email-template.js +0 -0
- /package/dist/{src/utils → utils}/email/index.d.ts +0 -0
- /package/dist/{src/utils → utils}/email/index.js +0 -0
- /package/dist/{src/utils → utils}/email/queue-email.d.ts +0 -0
- /package/dist/{src/utils → utils}/email/queue-email.js +0 -0
- /package/dist/{src/utils → utils}/get-global.d.ts +0 -0
- /package/dist/{src/utils → utils}/get-global.js +0 -0
- /package/dist/{src/utils → utils}/id-from-payload.d.ts +0 -0
- /package/dist/{src/utils → utils}/id-from-payload.js +0 -0
- /package/dist/{src/utils → utils}/index.d.ts +0 -0
- /package/dist/{src/utils → utils}/index.js +0 -0
- /package/dist/{src/utils → utils}/migrations.d.ts +0 -0
- /package/dist/{src/utils → utils}/migrations.js +0 -0
- /package/dist/{src/utils → utils}/payload-client.d.ts +0 -0
- /package/dist/{src/utils → utils}/payload-client.js +0 -0
- /package/dist/{src/utils → utils}/slugify.d.ts +0 -0
- /package/dist/{src/utils → utils}/slugify.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"publicReadAuthenticatedAccess.spec.d.ts","sourceRoot":"","sources":["../../../../tests/unit/access/publicReadAuthenticatedAccess.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { publicReadAuthenticatedAccess } from '@/access/publicReadAuthenticatedAccess';
|
|
3
|
-
describe('publicReadAuthenticatedAccess access control', () => {
|
|
4
|
-
describe('admin property', () => {
|
|
5
|
-
it('should return true for authenticated users', () => {
|
|
6
|
-
const req = { user: { id: 1 } };
|
|
7
|
-
expect(publicReadAuthenticatedAccess.admin({ req })).toBe(true);
|
|
8
|
-
});
|
|
9
|
-
it('should return false for unauthenticated users', () => {
|
|
10
|
-
const req = { user: null };
|
|
11
|
-
expect(publicReadAuthenticatedAccess.admin({ req })).toBe(false);
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
describe('read property (public access)', () => {
|
|
15
|
-
it('should return true for authenticated users', () => {
|
|
16
|
-
const req = { user: { id: 1 } };
|
|
17
|
-
expect(publicReadAuthenticatedAccess.read({ req })).toBe(true);
|
|
18
|
-
});
|
|
19
|
-
it('should return true for unauthenticated users (public read)', () => {
|
|
20
|
-
const req = { user: null };
|
|
21
|
-
expect(publicReadAuthenticatedAccess.read({ req })).toBe(true);
|
|
22
|
-
});
|
|
23
|
-
it('should return true with no user property', () => {
|
|
24
|
-
const req = {};
|
|
25
|
-
expect(publicReadAuthenticatedAccess.read({ req })).toBe(true);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
describe('create property (authenticated only)', () => {
|
|
29
|
-
it('should return true for authenticated users', () => {
|
|
30
|
-
const req = { user: { id: 1 } };
|
|
31
|
-
expect(publicReadAuthenticatedAccess.create({ req })).toBe(true);
|
|
32
|
-
});
|
|
33
|
-
it('should return false for unauthenticated users', () => {
|
|
34
|
-
const req = { user: null };
|
|
35
|
-
expect(publicReadAuthenticatedAccess.create({ req })).toBe(false);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
describe('update property (authenticated only)', () => {
|
|
39
|
-
it('should return true for authenticated users', () => {
|
|
40
|
-
const req = { user: { id: 1 } };
|
|
41
|
-
expect(publicReadAuthenticatedAccess.update({ req })).toBe(true);
|
|
42
|
-
});
|
|
43
|
-
it('should return false for unauthenticated users', () => {
|
|
44
|
-
const req = { user: null };
|
|
45
|
-
expect(publicReadAuthenticatedAccess.update({ req })).toBe(false);
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
describe('delete property (authenticated only)', () => {
|
|
49
|
-
it('should return true for authenticated users', () => {
|
|
50
|
-
const req = { user: { id: 1 } };
|
|
51
|
-
expect(publicReadAuthenticatedAccess.delete({ req })).toBe(true);
|
|
52
|
-
});
|
|
53
|
-
it('should return false for unauthenticated users', () => {
|
|
54
|
-
const req = { user: null };
|
|
55
|
-
expect(publicReadAuthenticatedAccess.delete({ req })).toBe(false);
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
describe('readVersions property (authenticated only)', () => {
|
|
59
|
-
it('should return true for authenticated users', () => {
|
|
60
|
-
const req = { user: { id: 1 } };
|
|
61
|
-
expect(publicReadAuthenticatedAccess.readVersions({ req })).toBe(true);
|
|
62
|
-
});
|
|
63
|
-
it('should return false for unauthenticated users', () => {
|
|
64
|
-
const req = { user: null };
|
|
65
|
-
expect(publicReadAuthenticatedAccess.readVersions({ req })).toBe(false);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
describe('unlock property (authenticated only)', () => {
|
|
69
|
-
it('should return true for authenticated users', () => {
|
|
70
|
-
const req = { user: { id: 1 } };
|
|
71
|
-
expect(publicReadAuthenticatedAccess.unlock({ req })).toBe(true);
|
|
72
|
-
});
|
|
73
|
-
it('should return false for unauthenticated users', () => {
|
|
74
|
-
const req = { user: null };
|
|
75
|
-
expect(publicReadAuthenticatedAccess.unlock({ req })).toBe(false);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
describe('access pattern verification', () => {
|
|
79
|
-
it('should allow read to everyone and other operations to authenticated users only', () => {
|
|
80
|
-
const authenticatedReq = { user: { id: 1 } };
|
|
81
|
-
const unauthenticatedReq = { user: null };
|
|
82
|
-
// Authenticated user can do everything
|
|
83
|
-
expect(publicReadAuthenticatedAccess.read({ req: authenticatedReq })).toBe(true);
|
|
84
|
-
expect(publicReadAuthenticatedAccess.create({ req: authenticatedReq })).toBe(true);
|
|
85
|
-
expect(publicReadAuthenticatedAccess.update({ req: authenticatedReq })).toBe(true);
|
|
86
|
-
expect(publicReadAuthenticatedAccess.delete({ req: authenticatedReq })).toBe(true);
|
|
87
|
-
// Unauthenticated user can only read
|
|
88
|
-
expect(publicReadAuthenticatedAccess.read({ req: unauthenticatedReq })).toBe(true);
|
|
89
|
-
expect(publicReadAuthenticatedAccess.create({ req: unauthenticatedReq })).toBe(false);
|
|
90
|
-
expect(publicReadAuthenticatedAccess.update({ req: unauthenticatedReq })).toBe(false);
|
|
91
|
-
expect(publicReadAuthenticatedAccess.delete({ req: unauthenticatedReq })).toBe(false);
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
//# sourceMappingURL=publicReadAuthenticatedAccess.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"publicReadAuthenticatedAccess.spec.js","sourceRoot":"","sources":["../../../../tests/unit/access/publicReadAuthenticatedAccess.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.spec.d.ts","sourceRoot":"","sources":["../../../../tests/unit/forms/validators.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,294 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { requiredCheckbox, requiredEmailString, requiredPasswordString, requiredString, validHoneyPot } from '@/forms/validators';
|
|
3
|
-
describe('form validators', () => {
|
|
4
|
-
describe('requiredString', () => {
|
|
5
|
-
const validator = requiredString('This field is required');
|
|
6
|
-
it('should accept valid non-empty strings', () => {
|
|
7
|
-
const result = validator.safeParse('hello');
|
|
8
|
-
expect(result.success).toBe(true);
|
|
9
|
-
if (result.success) {
|
|
10
|
-
expect(result.data).toBe('hello');
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
it('should trim whitespace', () => {
|
|
14
|
-
const result = validator.safeParse(' hello ');
|
|
15
|
-
expect(result.success).toBe(true);
|
|
16
|
-
if (result.success) {
|
|
17
|
-
expect(result.data).toBe('hello');
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
it('should reject empty strings', () => {
|
|
21
|
-
const result = validator.safeParse('');
|
|
22
|
-
expect(result.success).toBe(false);
|
|
23
|
-
if (!result.success) {
|
|
24
|
-
expect(result.error.issues[0].message).toBe('This field is required');
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
it('should reject whitespace-only strings', () => {
|
|
28
|
-
const result = validator.safeParse(' ');
|
|
29
|
-
expect(result.success).toBe(false);
|
|
30
|
-
if (!result.success) {
|
|
31
|
-
expect(result.error.issues[0].message).toBe('This field is required');
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
it('should reject non-string values', () => {
|
|
35
|
-
const result = validator.safeParse(123);
|
|
36
|
-
expect(result.success).toBe(false);
|
|
37
|
-
});
|
|
38
|
-
it('should accept strings with numbers', () => {
|
|
39
|
-
const result = validator.safeParse('hello123');
|
|
40
|
-
expect(result.success).toBe(true);
|
|
41
|
-
});
|
|
42
|
-
it('should accept strings with special characters', () => {
|
|
43
|
-
const result = validator.safeParse('hello@world!');
|
|
44
|
-
expect(result.success).toBe(true);
|
|
45
|
-
});
|
|
46
|
-
it('should use custom error message', () => {
|
|
47
|
-
const customValidator = requiredString('Custom error');
|
|
48
|
-
const result = customValidator.safeParse('');
|
|
49
|
-
expect(result.success).toBe(false);
|
|
50
|
-
if (!result.success) {
|
|
51
|
-
expect(result.error.issues[0].message).toBe('Custom error');
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
describe('requiredPasswordString', () => {
|
|
56
|
-
const validator = requiredPasswordString(8, 'Password is required', 'Password must be at least 8 characters');
|
|
57
|
-
it('should accept valid passwords meeting minimum length', () => {
|
|
58
|
-
const result = validator.safeParse('password123');
|
|
59
|
-
expect(result.success).toBe(true);
|
|
60
|
-
if (result.success) {
|
|
61
|
-
expect(result.data).toBe('password123');
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
it('should accept passwords exactly at minimum length', () => {
|
|
65
|
-
const result = validator.safeParse('12345678');
|
|
66
|
-
expect(result.success).toBe(true);
|
|
67
|
-
if (result.success) {
|
|
68
|
-
expect(result.data).toBe('12345678');
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
it('should reject passwords shorter than minimum length', () => {
|
|
72
|
-
const result = validator.safeParse('short');
|
|
73
|
-
expect(result.success).toBe(false);
|
|
74
|
-
if (!result.success) {
|
|
75
|
-
expect(result.error.issues[0].message).toBe('Password must be at least 8 characters');
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
it('should reject empty passwords', () => {
|
|
79
|
-
const result = validator.safeParse('');
|
|
80
|
-
expect(result.success).toBe(false);
|
|
81
|
-
if (!result.success) {
|
|
82
|
-
expect(result.error.issues[0].message).toBe('Password is required');
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
it('should trim whitespace before checking length', () => {
|
|
86
|
-
const result = validator.safeParse(' 12345678 ');
|
|
87
|
-
expect(result.success).toBe(true);
|
|
88
|
-
if (result.success) {
|
|
89
|
-
expect(result.data).toBe('12345678');
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
it('should reject whitespace-only passwords', () => {
|
|
93
|
-
const result = validator.safeParse(' ');
|
|
94
|
-
expect(result.success).toBe(false);
|
|
95
|
-
});
|
|
96
|
-
it('should handle different minimum lengths', () => {
|
|
97
|
-
const validator12 = requiredPasswordString(12, 'Required', 'Min 12 chars');
|
|
98
|
-
const resultShort = validator12.safeParse('password123');
|
|
99
|
-
expect(resultShort.success).toBe(false);
|
|
100
|
-
const resultValid = validator12.safeParse('password1234');
|
|
101
|
-
expect(resultValid.success).toBe(true);
|
|
102
|
-
});
|
|
103
|
-
it('should accept long passwords', () => {
|
|
104
|
-
const result = validator.safeParse('a'.repeat(100));
|
|
105
|
-
expect(result.success).toBe(true);
|
|
106
|
-
});
|
|
107
|
-
it('should accept passwords with special characters', () => {
|
|
108
|
-
const result = validator.safeParse('P@ssw0rd!');
|
|
109
|
-
expect(result.success).toBe(true);
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
describe('requiredEmailString', () => {
|
|
113
|
-
const validator = requiredEmailString({
|
|
114
|
-
required: 'Email is required',
|
|
115
|
-
email: 'Invalid email address',
|
|
116
|
-
});
|
|
117
|
-
it('should accept valid email addresses', () => {
|
|
118
|
-
const validEmails = ['test@example.com', 'user.name@example.com', 'user+tag@example.co.uk', 'test123@test-domain.com'];
|
|
119
|
-
validEmails.forEach((email) => {
|
|
120
|
-
const result = validator.safeParse(email);
|
|
121
|
-
expect(result.success).toBe(true);
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
it('should trim whitespace', () => {
|
|
125
|
-
const result = validator.safeParse(' test@example.com ');
|
|
126
|
-
expect(result.success).toBe(true);
|
|
127
|
-
if (result.success) {
|
|
128
|
-
expect(result.data).toBe('test@example.com');
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
it('should reject empty strings', () => {
|
|
132
|
-
const result = validator.safeParse('');
|
|
133
|
-
expect(result.success).toBe(false);
|
|
134
|
-
if (!result.success) {
|
|
135
|
-
expect(result.error.issues[0].message).toBe('Email is required');
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
it('should reject invalid email formats', () => {
|
|
139
|
-
const invalidEmails = ['notanemail', 'missing@domain', '@example.com', 'test@', 'test @example.com', 'test..double@example.com'];
|
|
140
|
-
invalidEmails.forEach((email) => {
|
|
141
|
-
const result = validator.safeParse(email);
|
|
142
|
-
expect(result.success).toBe(false);
|
|
143
|
-
if (!result.success) {
|
|
144
|
-
expect(result.error.issues[0].message).toBe('Invalid email address');
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
it('should reject whitespace-only strings', () => {
|
|
149
|
-
const result = validator.safeParse(' ');
|
|
150
|
-
expect(result.success).toBe(false);
|
|
151
|
-
if (!result.success) {
|
|
152
|
-
expect(result.error.issues[0].message).toBe('Email is required');
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
it('should use custom error messages', () => {
|
|
156
|
-
const customValidator = requiredEmailString({
|
|
157
|
-
required: 'Custom required message',
|
|
158
|
-
email: 'Custom email message',
|
|
159
|
-
});
|
|
160
|
-
const emptyResult = customValidator.safeParse('');
|
|
161
|
-
expect(emptyResult.success).toBe(false);
|
|
162
|
-
if (!emptyResult.success) {
|
|
163
|
-
expect(emptyResult.error.issues[0].message).toBe('Custom required message');
|
|
164
|
-
}
|
|
165
|
-
const invalidResult = customValidator.safeParse('invalid');
|
|
166
|
-
expect(invalidResult.success).toBe(false);
|
|
167
|
-
if (!invalidResult.success) {
|
|
168
|
-
expect(invalidResult.error.issues[0].message).toBe('Custom email message');
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
it('should handle edge case email formats', () => {
|
|
172
|
-
// These should be valid
|
|
173
|
-
const edgeCases = ['test_underscore@example.com', 'test-hyphen@example.com', 'a@b.co'];
|
|
174
|
-
edgeCases.forEach((email) => {
|
|
175
|
-
const result = validator.safeParse(email);
|
|
176
|
-
expect(result.success).toBe(true);
|
|
177
|
-
});
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
describe('validHoneyPot', () => {
|
|
181
|
-
const validator = validHoneyPot('Bot detected');
|
|
182
|
-
it('should accept empty strings (legitimate users)', () => {
|
|
183
|
-
const result = validator.safeParse('');
|
|
184
|
-
expect(result.success).toBe(true);
|
|
185
|
-
if (result.success) {
|
|
186
|
-
expect(result.data).toBe('');
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
it('should reject non-empty strings (bots)', () => {
|
|
190
|
-
const result = validator.safeParse('I am a bot');
|
|
191
|
-
expect(result.success).toBe(false);
|
|
192
|
-
// Note: Zod refine uses generic "Invalid input" message by default
|
|
193
|
-
});
|
|
194
|
-
it('should reject single character', () => {
|
|
195
|
-
const result = validator.safeParse('x');
|
|
196
|
-
expect(result.success).toBe(false);
|
|
197
|
-
});
|
|
198
|
-
it('should reject whitespace', () => {
|
|
199
|
-
const result = validator.safeParse(' ');
|
|
200
|
-
expect(result.success).toBe(false);
|
|
201
|
-
});
|
|
202
|
-
it('should reject numbers', () => {
|
|
203
|
-
const result = validator.safeParse('123');
|
|
204
|
-
expect(result.success).toBe(false);
|
|
205
|
-
});
|
|
206
|
-
it('should use custom error message', () => {
|
|
207
|
-
const customValidator = validHoneyPot('Custom bot message');
|
|
208
|
-
const result = customValidator.safeParse('filled');
|
|
209
|
-
expect(result.success).toBe(false);
|
|
210
|
-
// Zod refine validation failed - message is set but overridden
|
|
211
|
-
});
|
|
212
|
-
it('should accept empty string consistently', () => {
|
|
213
|
-
// Multiple tests to ensure honeypot works as expected
|
|
214
|
-
expect(validator.safeParse('').success).toBe(true);
|
|
215
|
-
expect(validator.safeParse('anything').success).toBe(false);
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
describe('requiredCheckbox', () => {
|
|
219
|
-
const validator = requiredCheckbox('You must accept the terms');
|
|
220
|
-
it('should accept true', () => {
|
|
221
|
-
const result = validator.safeParse(true);
|
|
222
|
-
expect(result.success).toBe(true);
|
|
223
|
-
if (result.success) {
|
|
224
|
-
expect(result.data).toBe(true);
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
it('should reject false', () => {
|
|
228
|
-
const result = validator.safeParse(false);
|
|
229
|
-
expect(result.success).toBe(false);
|
|
230
|
-
// Zod refine uses generic "Invalid input" message
|
|
231
|
-
});
|
|
232
|
-
it('should reject non-boolean values', () => {
|
|
233
|
-
const invalidValues = [1, 0, 'true', 'false', null, undefined, {}, []];
|
|
234
|
-
invalidValues.forEach((value) => {
|
|
235
|
-
const result = validator.safeParse(value);
|
|
236
|
-
expect(result.success).toBe(false);
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
it('should use custom error message', () => {
|
|
240
|
-
const customValidator = requiredCheckbox('Custom checkbox message');
|
|
241
|
-
const result = customValidator.safeParse(false);
|
|
242
|
-
expect(result.success).toBe(false);
|
|
243
|
-
// Zod refine validation - message set via errorMap but refine overrides
|
|
244
|
-
});
|
|
245
|
-
it('should only accept boolean true', () => {
|
|
246
|
-
// Truthy values should not work
|
|
247
|
-
expect(validator.safeParse(1).success).toBe(false);
|
|
248
|
-
expect(validator.safeParse('true').success).toBe(false);
|
|
249
|
-
expect(validator.safeParse(true).success).toBe(true);
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
describe('validators integration', () => {
|
|
253
|
-
it('should work together in a form schema', () => {
|
|
254
|
-
// Simulate a typical form validation
|
|
255
|
-
const formData = {
|
|
256
|
-
name: 'John Doe',
|
|
257
|
-
email: 'john@example.com',
|
|
258
|
-
password: 'SecurePassword123',
|
|
259
|
-
honeypot: '',
|
|
260
|
-
terms: true,
|
|
261
|
-
};
|
|
262
|
-
const nameResult = requiredString('Name required').safeParse(formData.name);
|
|
263
|
-
const emailResult = requiredEmailString({ required: 'Email required', email: 'Invalid email' }).safeParse(formData.email);
|
|
264
|
-
const passwordResult = requiredPasswordString(8, 'Password required', 'Min 8 chars').safeParse(formData.password);
|
|
265
|
-
const honeypotResult = validHoneyPot('Bot detected').safeParse(formData.honeypot);
|
|
266
|
-
const termsResult = requiredCheckbox('Accept terms').safeParse(formData.terms);
|
|
267
|
-
expect(nameResult.success).toBe(true);
|
|
268
|
-
expect(emailResult.success).toBe(true);
|
|
269
|
-
expect(passwordResult.success).toBe(true);
|
|
270
|
-
expect(honeypotResult.success).toBe(true);
|
|
271
|
-
expect(termsResult.success).toBe(true);
|
|
272
|
-
});
|
|
273
|
-
it('should catch all validation errors in invalid form', () => {
|
|
274
|
-
const invalidFormData = {
|
|
275
|
-
name: '',
|
|
276
|
-
email: 'invalid',
|
|
277
|
-
password: 'short',
|
|
278
|
-
honeypot: 'bot-filled',
|
|
279
|
-
terms: false,
|
|
280
|
-
};
|
|
281
|
-
const nameResult = requiredString('Name required').safeParse(invalidFormData.name);
|
|
282
|
-
const emailResult = requiredEmailString({ required: 'Email required', email: 'Invalid email' }).safeParse(invalidFormData.email);
|
|
283
|
-
const passwordResult = requiredPasswordString(8, 'Password required', 'Min 8 chars').safeParse(invalidFormData.password);
|
|
284
|
-
const honeypotResult = validHoneyPot('Bot detected').safeParse(invalidFormData.honeypot);
|
|
285
|
-
const termsResult = requiredCheckbox('Accept terms').safeParse(invalidFormData.terms);
|
|
286
|
-
expect(nameResult.success).toBe(false);
|
|
287
|
-
expect(emailResult.success).toBe(false);
|
|
288
|
-
expect(passwordResult.success).toBe(false);
|
|
289
|
-
expect(honeypotResult.success).toBe(false);
|
|
290
|
-
expect(termsResult.success).toBe(false);
|
|
291
|
-
});
|
|
292
|
-
});
|
|
293
|
-
});
|
|
294
|
-
//# sourceMappingURL=validators.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.spec.js","sourceRoot":"","sources":["../../../../tests/unit/forms/validators.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAElI,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,MAAM,SAAS,GAAG,cAAc,CAAC,wBAAwB,CAAC,CAAC;QAE3D,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,MAAM,SAAS,GAAG,sBAAsB,CAAC,CAAC,EAAE,sBAAsB,EAAE,wCAAwC,CAAC,CAAC;QAE9G,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,WAAW,GAAG,sBAAsB,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;YAE3E,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACzD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAExC,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAC1D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACpC,QAAQ,EAAE,mBAAmB;YAC7B,KAAK,EAAE,uBAAuB;SAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,WAAW,GAAG,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC,CAAC;YAEvH,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,CAAC,CAAC;YAEjI,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,eAAe,GAAG,mBAAmB,CAAC;gBAC1C,QAAQ,EAAE,yBAAyB;gBACnC,KAAK,EAAE,sBAAsB;aAC9B,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAClD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC9E,CAAC;YAED,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC3D,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,wBAAwB;YACxB,MAAM,SAAS,GAAG,CAAC,6BAA6B,EAAE,yBAAyB,EAAE,QAAQ,CAAC,CAAC;YAEvF,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,MAAM,SAAS,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;QAEhD,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,mEAAmE;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,eAAe,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,+DAA+D;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,sDAAsD;YACtD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;QAEhE,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,kDAAkD;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAEvE,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,eAAe,GAAG,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,wEAAwE;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,gCAAgC;YAChC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,qCAAqC;YACrC,MAAM,QAAQ,GAAG;gBACf,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,mBAAmB;gBAC7B,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,IAAI;aACZ,CAAC;YAEF,MAAM,UAAU,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5E,MAAM,WAAW,GAAG,mBAAmB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1H,MAAM,cAAc,GAAG,sBAAsB,CAAC,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAClH,MAAM,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAClF,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE/E,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,eAAe,GAAG;gBACtB,IAAI,EAAE,EAAE;gBACR,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAE,KAAK;aACb,CAAC;YAEF,MAAM,UAAU,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACnF,MAAM,WAAW,GAAG,mBAAmB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACjI,MAAM,cAAc,GAAG,sBAAsB,CAAC,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACzH,MAAM,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACzF,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEtF,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"database-dates.spec.d.ts","sourceRoot":"","sources":["../../../../tests/unit/utils/database-dates.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { TZDate } from '@date-fns/tz';
|
|
2
|
-
import { describe, expect, it } from 'vitest';
|
|
3
|
-
import { toDatabaseTZDate } from '@/utils/database-dates';
|
|
4
|
-
describe('database-dates utility', () => {
|
|
5
|
-
describe('toDatabaseTZDate', () => {
|
|
6
|
-
describe('string input', () => {
|
|
7
|
-
it('should return the same string when given a string', () => {
|
|
8
|
-
const dateString = '2024-01-15T10:30:00.000Z';
|
|
9
|
-
expect(toDatabaseTZDate(dateString)).toBe(dateString);
|
|
10
|
-
});
|
|
11
|
-
it('should handle empty string', () => {
|
|
12
|
-
expect(toDatabaseTZDate('')).toBe('');
|
|
13
|
-
});
|
|
14
|
-
it('should handle ISO date string', () => {
|
|
15
|
-
const isoDate = '2024-12-25T00:00:00.000Z';
|
|
16
|
-
expect(toDatabaseTZDate(isoDate)).toBe(isoDate);
|
|
17
|
-
});
|
|
18
|
-
it('should handle non-ISO date string (passthrough)', () => {
|
|
19
|
-
const dateStr = '2024-01-15';
|
|
20
|
-
expect(toDatabaseTZDate(dateStr)).toBe(dateStr);
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
describe('TZDate input', () => {
|
|
24
|
-
it('should convert TZDate to ISO string', () => {
|
|
25
|
-
const tzDate = new TZDate(2024, 0, 15, 'UTC'); // January 15, 2024
|
|
26
|
-
const result = toDatabaseTZDate(tzDate);
|
|
27
|
-
expect(typeof result).toBe('string');
|
|
28
|
-
// TZDate preserves timezone info in ISO format (can be +00:00 or Z)
|
|
29
|
-
expect(result).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}(Z|[+-]\d{2}:\d{2})$/);
|
|
30
|
-
});
|
|
31
|
-
it('should handle TZDate with timezone', () => {
|
|
32
|
-
const tzDate = new TZDate(2024, 0, 15, 'America/New_York');
|
|
33
|
-
const result = toDatabaseTZDate(tzDate);
|
|
34
|
-
expect(typeof result).toBe('string');
|
|
35
|
-
expect(result).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}(Z|[+-]\d{2}:\d{2})$/);
|
|
36
|
-
});
|
|
37
|
-
it('should handle TZDate with time components', () => {
|
|
38
|
-
const tzDate = new TZDate(2024, 0, 15, 10, 30, 45, 'UTC'); // 10:30:45
|
|
39
|
-
const result = toDatabaseTZDate(tzDate);
|
|
40
|
-
expect(result).toContain('2024-01-15T10:30:45');
|
|
41
|
-
});
|
|
42
|
-
it('should convert different timezones to UTC ISO string', () => {
|
|
43
|
-
const tzDateUTC = new TZDate(2024, 0, 15, 12, 0, 0, 'UTC');
|
|
44
|
-
const tzDateNY = new TZDate(2024, 0, 15, 12, 0, 0, 'America/New_York');
|
|
45
|
-
const tzDateTokyo = new TZDate(2024, 0, 15, 12, 0, 0, 'Asia/Tokyo');
|
|
46
|
-
const resultUTC = toDatabaseTZDate(tzDateUTC);
|
|
47
|
-
const resultNY = toDatabaseTZDate(tzDateNY);
|
|
48
|
-
const resultTokyo = toDatabaseTZDate(tzDateTokyo);
|
|
49
|
-
expect(resultUTC).toContain('T12:00:00');
|
|
50
|
-
expect(resultNY).not.toBe(resultUTC); // Different timezone offsets
|
|
51
|
-
expect(resultTokyo).not.toBe(resultUTC);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
describe('consistency', () => {
|
|
55
|
-
it('should produce valid ISO 8601 format', () => {
|
|
56
|
-
const tzDate = new TZDate(2024, 11, 25, 'UTC'); // December 25, 2024
|
|
57
|
-
const result = toDatabaseTZDate(tzDate);
|
|
58
|
-
// Valid ISO 8601 format (with timezone offset)
|
|
59
|
-
expect(result).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}(Z|[+-]\d{2}:\d{2})$/);
|
|
60
|
-
// Can be parsed back to Date
|
|
61
|
-
const parsed = new Date(result);
|
|
62
|
-
expect(parsed instanceof Date).toBe(true);
|
|
63
|
-
expect(isNaN(parsed.getTime())).toBe(false);
|
|
64
|
-
});
|
|
65
|
-
it('should be idempotent for strings', () => {
|
|
66
|
-
const dateString = '2024-01-15T10:30:00.000Z';
|
|
67
|
-
const result1 = toDatabaseTZDate(dateString);
|
|
68
|
-
const result2 = toDatabaseTZDate(result1);
|
|
69
|
-
expect(result1).toBe(result2);
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
describe('type safety', () => {
|
|
73
|
-
it('should handle TZDate | string union type correctly', () => {
|
|
74
|
-
const input1 = '2024-01-15T00:00:00.000Z';
|
|
75
|
-
const input2 = new TZDate(2024, 0, 15, 'UTC');
|
|
76
|
-
expect(typeof toDatabaseTZDate(input1)).toBe('string');
|
|
77
|
-
expect(typeof toDatabaseTZDate(input2)).toBe('string');
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
//# sourceMappingURL=database-dates.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"database-dates.spec.js","sourceRoot":"","sources":["../../../../tests/unit/utils/database-dates.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"id-from-payload.spec.d.ts","sourceRoot":"","sources":["../../../../tests/unit/utils/id-from-payload.spec.ts"],"names":[],"mappings":""}
|