@aphexcms/cms-core 0.2.3 → 1.0.0
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/api/api-keys.d.ts +37 -0
- package/dist/api/api-keys.d.ts.map +1 -0
- package/dist/api/api-keys.js +20 -0
- package/dist/api/assets.d.ts +27 -0
- package/dist/api/assets.d.ts.map +1 -1
- package/dist/api/assets.js +22 -1
- package/dist/api/index.d.ts +8 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +4 -0
- package/dist/api/instance.d.ts +17 -0
- package/dist/api/instance.d.ts.map +1 -0
- package/dist/api/instance.js +21 -0
- package/dist/api/invitations.d.ts +37 -0
- package/dist/api/invitations.d.ts.map +1 -0
- package/dist/api/invitations.js +27 -0
- package/dist/api/organizations.d.ts +7 -0
- package/dist/api/organizations.d.ts.map +1 -1
- package/dist/api/organizations.js +7 -0
- package/dist/api/types.d.ts +1 -1
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/user.d.ts +23 -0
- package/dist/api/user.d.ts.map +1 -0
- package/dist/api/user.js +20 -0
- package/dist/auth/auth-errors.d.ts +1 -1
- package/dist/auth/auth-errors.d.ts.map +1 -1
- package/dist/auth/auth-hooks.d.ts.map +1 -1
- package/dist/auth/auth-hooks.js +39 -23
- package/dist/auth/provider.d.ts +2 -2
- package/dist/auth/provider.d.ts.map +1 -1
- package/dist/cli/generate-types.d.ts +14 -0
- package/dist/cli/generate-types.d.ts.map +1 -0
- package/dist/cli/generate-types.js +15 -7
- package/dist/cli/generate-types.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -0
- package/dist/components/AdminApp.svelte +160 -63
- package/dist/components/AdminApp.svelte.d.ts +1 -1
- package/dist/components/AdminApp.svelte.d.ts.map +1 -1
- package/dist/components/admin/AdminLayout.svelte.d.ts +3 -3
- package/dist/components/admin/AssetBrowserModal.svelte +66 -0
- package/dist/components/admin/AssetBrowserModal.svelte.d.ts +15 -0
- package/dist/components/admin/AssetBrowserModal.svelte.d.ts.map +1 -0
- package/dist/components/admin/DocumentEditor.svelte +137 -69
- package/dist/components/admin/DocumentEditor.svelte.d.ts +1 -1
- package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
- package/dist/components/admin/DocumentsSkeleton.svelte +40 -0
- package/dist/components/admin/DocumentsSkeleton.svelte.d.ts +7 -0
- package/dist/components/admin/DocumentsSkeleton.svelte.d.ts.map +1 -0
- package/dist/components/admin/MediaBrowser.svelte +1398 -0
- package/dist/components/admin/MediaBrowser.svelte.d.ts +23 -0
- package/dist/components/admin/MediaBrowser.svelte.d.ts.map +1 -0
- package/dist/components/admin/ObjectModal.svelte +3 -4
- package/dist/components/admin/ObjectModal.svelte.d.ts +1 -1
- package/dist/components/admin/ObjectModal.svelte.d.ts.map +1 -1
- package/dist/components/admin/SchemaField.svelte +109 -81
- package/dist/components/admin/SchemaField.svelte.d.ts +1 -1
- package/dist/components/admin/SchemaField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ArrayField.svelte +611 -277
- package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/DateField.svelte +3 -2
- package/dist/components/admin/fields/DateField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/DateTimeField.svelte +3 -2
- package/dist/components/admin/fields/DateTimeField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ImageField.svelte +217 -120
- package/dist/components/admin/fields/ImageField.svelte.d.ts +1 -0
- package/dist/components/admin/fields/ImageField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ReferenceField.svelte +11 -6
- package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/StringField.svelte +2 -1
- package/dist/components/admin/fields/StringField.svelte.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/layout/OrganizationSwitcher.svelte +109 -45
- package/dist/components/layout/OrganizationSwitcher.svelte.d.ts.map +1 -1
- package/dist/components/layout/Sidebar.svelte +36 -14
- package/dist/components/layout/Sidebar.svelte.d.ts +2 -1
- package/dist/components/layout/Sidebar.svelte.d.ts.map +1 -1
- package/dist/components/layout/sidebar/AppSidebar.svelte +1 -1
- package/dist/components/layout/sidebar/NavMain.svelte +1 -1
- package/dist/components/layout/sidebar/NavMain.svelte.d.ts +1 -1
- package/dist/components/layout/sidebar/NavMain.svelte.d.ts.map +1 -1
- package/dist/components/layout/sidebar/NavSecondary.svelte +3 -3
- package/dist/components/layout/sidebar/NavUser.svelte +22 -10
- package/dist/components/layout/sidebar/NavUser.svelte.d.ts +2 -2
- package/dist/components/layout/sidebar/NavUser.svelte.d.ts.map +1 -1
- package/dist/db/interfaces/document.d.ts +20 -0
- package/dist/db/interfaces/document.d.ts.map +1 -1
- package/dist/db/interfaces/index.d.ts +3 -1
- package/dist/db/interfaces/index.d.ts.map +1 -1
- package/dist/db/interfaces/instance.d.ts +7 -0
- package/dist/db/interfaces/instance.d.ts.map +1 -0
- package/dist/db/interfaces/instance.js +1 -0
- package/dist/db/interfaces/organization.d.ts +1 -0
- package/dist/db/interfaces/organization.d.ts.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +4 -3
- package/dist/field-validation/date-utils.d.ts.map +1 -1
- package/dist/field-validation/date-utils.js +12 -11
- package/dist/field-validation/rule.d.ts.map +1 -1
- package/dist/field-validation/rule.js +11 -10
- package/dist/field-validation/utils.d.ts.map +1 -1
- package/dist/field-validation/utils.js +16 -15
- package/dist/graphql/index.d.ts +23 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/index.js +85 -0
- package/dist/graphql/resolvers.d.ts +4 -0
- package/dist/graphql/resolvers.d.ts.map +1 -0
- package/dist/graphql/resolvers.js +542 -0
- package/dist/graphql/schema.d.ts +3 -0
- package/dist/graphql/schema.d.ts.map +1 -0
- package/dist/graphql/schema.js +356 -0
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +62 -9
- package/dist/lib/api/api-keys.d.ts +37 -0
- package/dist/lib/api/api-keys.d.ts.map +1 -0
- package/dist/lib/api/api-keys.js +21 -0
- package/dist/lib/api/api-keys.js.map +1 -0
- package/dist/lib/api/assets.d.ts +75 -0
- package/dist/lib/api/assets.d.ts.map +1 -0
- package/dist/lib/api/assets.js +74 -0
- package/dist/lib/api/assets.js.map +1 -0
- package/dist/lib/api/client.d.ts +37 -0
- package/dist/lib/api/client.d.ts.map +1 -0
- package/dist/lib/api/client.js +132 -0
- package/dist/lib/api/client.js.map +1 -0
- package/dist/lib/api/documents.d.ts +57 -0
- package/dist/lib/api/documents.d.ts.map +1 -0
- package/dist/lib/api/documents.js +86 -0
- package/dist/lib/api/documents.js.map +1 -0
- package/dist/lib/api/index.d.ts +15 -0
- package/dist/lib/api/index.d.ts.map +1 -0
- package/dist/lib/api/index.js +10 -0
- package/dist/lib/api/index.js.map +1 -0
- package/dist/lib/api/instance.d.ts +17 -0
- package/dist/lib/api/instance.d.ts.map +1 -0
- package/dist/lib/api/instance.js +22 -0
- package/dist/lib/api/instance.js.map +1 -0
- package/dist/lib/api/invitations.d.ts +37 -0
- package/dist/lib/api/invitations.d.ts.map +1 -0
- package/dist/lib/api/invitations.js +28 -0
- package/dist/lib/api/invitations.js.map +1 -0
- package/dist/lib/api/organizations.d.ts +108 -0
- package/dist/lib/api/organizations.d.ts.map +1 -0
- package/dist/lib/api/organizations.js +100 -0
- package/dist/lib/api/organizations.js.map +1 -0
- package/dist/lib/api/types.d.ts +47 -0
- package/dist/lib/api/types.d.ts.map +1 -0
- package/dist/lib/api/types.js +2 -0
- package/dist/lib/api/types.js.map +1 -0
- package/dist/lib/api/user.d.ts +23 -0
- package/dist/lib/api/user.d.ts.map +1 -0
- package/dist/lib/api/user.js +21 -0
- package/dist/lib/api/user.js.map +1 -0
- package/dist/lib/auth/auth-errors.d.ts +7 -0
- package/dist/lib/auth/auth-errors.d.ts.map +1 -0
- package/dist/lib/auth/auth-errors.js +14 -0
- package/dist/lib/auth/auth-errors.js.map +1 -0
- package/dist/lib/auth/auth-hooks.d.ts +6 -0
- package/dist/lib/auth/auth-hooks.d.ts.map +1 -0
- package/dist/lib/auth/auth-hooks.js +139 -0
- package/dist/lib/auth/auth-hooks.js.map +1 -0
- package/dist/lib/auth/provider.d.ts +17 -0
- package/dist/lib/auth/provider.d.ts.map +1 -0
- package/dist/lib/auth/provider.js +1 -0
- package/dist/lib/auth/provider.js.map +1 -0
- package/dist/lib/client/index.d.ts +24 -0
- package/dist/lib/client/index.d.ts.map +1 -0
- package/dist/lib/client/index.js +33 -0
- package/dist/lib/client/index.js.map +1 -0
- package/dist/lib/components/fields/index.d.ts +9 -0
- package/dist/lib/components/fields/index.d.ts.map +1 -0
- package/dist/lib/components/fields/index.js +10 -0
- package/dist/lib/components/fields/index.js.map +1 -0
- package/dist/lib/components/index.d.ts +8 -0
- package/dist/lib/components/index.d.ts.map +1 -0
- package/dist/lib/components/index.js +14 -0
- package/dist/lib/components/index.js.map +1 -0
- package/dist/lib/config.d.ts +3 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +16 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/db/adapters/index.d.ts +1 -0
- package/dist/lib/db/adapters/index.d.ts.map +1 -0
- package/dist/lib/db/adapters/index.js +5 -0
- package/dist/lib/db/adapters/index.js.map +1 -0
- package/dist/lib/db/index.d.ts +2 -0
- package/dist/lib/db/index.d.ts.map +1 -0
- package/dist/lib/db/index.js +1 -0
- package/dist/lib/db/index.js.map +1 -0
- package/dist/lib/db/interfaces/asset.d.ts +73 -0
- package/dist/lib/db/interfaces/asset.d.ts.map +1 -0
- package/dist/lib/db/interfaces/asset.js +1 -0
- package/dist/lib/db/interfaces/asset.js.map +1 -0
- package/dist/lib/db/interfaces/document.d.ts +79 -0
- package/dist/lib/db/interfaces/document.d.ts.map +1 -0
- package/dist/lib/db/interfaces/document.js +1 -0
- package/dist/lib/db/interfaces/document.js.map +1 -0
- package/dist/lib/db/interfaces/index.d.ts +76 -0
- package/dist/lib/db/interfaces/index.d.ts.map +1 -0
- package/dist/lib/db/interfaces/index.js +1 -0
- package/dist/lib/db/interfaces/index.js.map +1 -0
- package/dist/lib/db/interfaces/instance.d.ts +7 -0
- package/dist/lib/db/interfaces/instance.d.ts.map +1 -0
- package/dist/lib/db/interfaces/instance.js +2 -0
- package/dist/lib/db/interfaces/instance.js.map +1 -0
- package/dist/lib/db/interfaces/organization.d.ts +28 -0
- package/dist/lib/db/interfaces/organization.d.ts.map +1 -0
- package/dist/lib/db/interfaces/organization.js +1 -0
- package/dist/lib/db/interfaces/organization.js.map +1 -0
- package/dist/lib/db/interfaces/schema.d.ts +21 -0
- package/dist/lib/db/interfaces/schema.d.ts.map +1 -0
- package/dist/lib/db/interfaces/schema.js +1 -0
- package/dist/lib/db/interfaces/schema.js.map +1 -0
- package/dist/lib/db/interfaces/user.d.ts +17 -0
- package/dist/lib/db/interfaces/user.d.ts.map +1 -0
- package/dist/lib/db/interfaces/user.js +1 -0
- package/dist/lib/db/interfaces/user.js.map +1 -0
- package/dist/lib/db/utils/reference-resolver.d.ts +18 -0
- package/dist/lib/db/utils/reference-resolver.d.ts.map +1 -0
- package/dist/lib/db/utils/reference-resolver.js +81 -0
- package/dist/lib/db/utils/reference-resolver.js.map +1 -0
- package/dist/lib/define.d.ts +3 -0
- package/dist/lib/define.d.ts.map +1 -0
- package/dist/lib/define.js +5 -0
- package/dist/lib/define.js.map +1 -0
- package/dist/lib/email/index.d.ts +2 -0
- package/dist/lib/email/index.d.ts.map +1 -0
- package/dist/lib/email/index.js +1 -0
- package/dist/lib/email/index.js.map +1 -0
- package/dist/lib/email/interfaces/email.d.ts +42 -0
- package/dist/lib/email/interfaces/email.d.ts.map +1 -0
- package/dist/lib/email/interfaces/email.js +1 -0
- package/dist/lib/email/interfaces/email.js.map +1 -0
- package/dist/lib/engine.d.ts +26 -0
- package/dist/lib/engine.d.ts.map +1 -0
- package/dist/lib/engine.js +71 -0
- package/dist/lib/engine.js.map +1 -0
- package/dist/lib/field-validation/date-utils.d.ts +30 -0
- package/dist/lib/field-validation/date-utils.d.ts.map +1 -0
- package/dist/lib/field-validation/date-utils.js +13 -11
- package/dist/lib/field-validation/date-utils.js.map +1 -0
- package/dist/lib/field-validation/rule.d.ts +55 -0
- package/dist/lib/field-validation/rule.d.ts.map +1 -0
- package/dist/lib/field-validation/rule.js +12 -10
- package/dist/lib/field-validation/rule.js.map +1 -0
- package/dist/lib/field-validation/utils.d.ts +43 -0
- package/dist/lib/field-validation/utils.d.ts.map +1 -0
- package/dist/lib/field-validation/utils.js +17 -15
- package/dist/lib/field-validation/utils.js.map +1 -0
- package/dist/lib/graphql/index.d.ts +23 -0
- package/dist/lib/graphql/index.d.ts.map +1 -0
- package/dist/lib/graphql/index.js +86 -0
- package/dist/lib/graphql/index.js.map +1 -0
- package/dist/lib/graphql/resolvers.d.ts +4 -0
- package/dist/lib/graphql/resolvers.d.ts.map +1 -0
- package/dist/lib/graphql/resolvers.js +543 -0
- package/dist/lib/graphql/resolvers.js.map +1 -0
- package/dist/lib/graphql/schema.d.ts +3 -0
- package/dist/lib/graphql/schema.d.ts.map +1 -0
- package/dist/lib/graphql/schema.js +357 -0
- package/dist/lib/graphql/schema.js.map +1 -0
- package/dist/lib/hooks.d.ts +27 -0
- package/dist/lib/hooks.d.ts.map +1 -0
- package/dist/lib/hooks.js +235 -0
- package/dist/lib/hooks.js.map +1 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +5 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/is-mobile.svelte.d.ts +5 -0
- package/dist/lib/is-mobile.svelte.d.ts.map +1 -0
- package/dist/lib/is-mobile.svelte.js +8 -0
- package/dist/lib/is-mobile.svelte.js.map +1 -0
- package/dist/lib/local-api/auth-helpers.d.ts +65 -0
- package/dist/lib/local-api/auth-helpers.d.ts.map +1 -0
- package/dist/lib/local-api/auth-helpers.js +103 -0
- package/dist/lib/local-api/auth-helpers.js.map +1 -0
- package/dist/lib/local-api/collection-api.d.ts +150 -0
- package/dist/lib/local-api/collection-api.d.ts.map +1 -0
- package/dist/lib/local-api/collection-api.js +311 -0
- package/dist/lib/local-api/collection-api.js.map +1 -0
- package/dist/lib/local-api/index.d.ts +108 -0
- package/dist/lib/local-api/index.d.ts.map +1 -0
- package/dist/lib/local-api/index.js +158 -0
- package/dist/lib/local-api/index.js.map +1 -0
- package/dist/lib/local-api/permissions.d.ts +45 -0
- package/dist/lib/local-api/permissions.d.ts.map +1 -0
- package/dist/lib/local-api/permissions.js +117 -0
- package/dist/lib/local-api/permissions.js.map +1 -0
- package/dist/lib/local-api/types.d.ts +65 -0
- package/dist/lib/local-api/types.d.ts.map +1 -0
- package/dist/lib/local-api/types.js +5 -0
- package/dist/lib/local-api/types.js.map +1 -0
- package/dist/lib/routes/assets-bulk.d.ts +3 -0
- package/dist/lib/routes/assets-bulk.d.ts.map +1 -0
- package/dist/lib/routes/assets-bulk.js +49 -0
- package/dist/lib/routes/assets-bulk.js.map +1 -0
- package/dist/lib/routes/assets-by-id.d.ts +5 -0
- package/dist/lib/routes/assets-by-id.d.ts.map +1 -0
- package/dist/lib/routes/assets-by-id.js +106 -0
- package/dist/lib/routes/assets-by-id.js.map +1 -0
- package/dist/lib/routes/assets-cdn.d.ts +3 -0
- package/dist/lib/routes/assets-cdn.d.ts.map +1 -0
- package/dist/lib/routes/assets-cdn.js +125 -0
- package/dist/lib/routes/assets-cdn.js.map +1 -0
- package/dist/lib/routes/assets-references-counts.d.ts +7 -0
- package/dist/lib/routes/assets-references-counts.d.ts.map +1 -0
- package/dist/lib/routes/assets-references-counts.js +32 -0
- package/dist/lib/routes/assets-references-counts.js.map +1 -0
- package/dist/lib/routes/assets-references.d.ts +7 -0
- package/dist/lib/routes/assets-references.d.ts.map +1 -0
- package/dist/lib/routes/assets-references.js +35 -0
- package/dist/lib/routes/assets-references.js.map +1 -0
- package/dist/lib/routes/assets.d.ts +4 -0
- package/dist/lib/routes/assets.d.ts.map +1 -0
- package/dist/lib/routes/assets.js +121 -0
- package/dist/lib/routes/assets.js.map +1 -0
- package/dist/lib/routes/documents-by-id.d.ts +5 -0
- package/dist/lib/routes/documents-by-id.d.ts.map +1 -0
- package/dist/lib/routes/documents-by-id.js +176 -0
- package/dist/lib/routes/documents-by-id.js.map +1 -0
- package/dist/lib/routes/documents-publish.d.ts +4 -0
- package/dist/lib/routes/documents-publish.d.ts.map +1 -0
- package/dist/lib/routes/documents-publish.js +138 -0
- package/dist/lib/routes/documents-publish.js.map +1 -0
- package/dist/lib/routes/documents-query.d.ts +26 -0
- package/dist/lib/routes/documents-query.d.ts.map +1 -0
- package/dist/lib/routes/documents-query.js +101 -0
- package/dist/lib/routes/documents-query.js.map +1 -0
- package/dist/lib/routes/documents.d.ts +4 -0
- package/dist/lib/routes/documents.d.ts.map +1 -0
- package/dist/lib/routes/documents.js +154 -0
- package/dist/lib/routes/documents.js.map +1 -0
- package/dist/lib/routes/index.d.ts +9 -0
- package/dist/lib/routes/index.d.ts.map +1 -0
- package/dist/lib/routes/index.js +15 -0
- package/dist/lib/routes/index.js.map +1 -0
- package/dist/lib/routes/organizations-by-id.d.ts +5 -0
- package/dist/lib/routes/organizations-by-id.d.ts.map +1 -0
- package/dist/lib/routes/organizations-by-id.js +189 -0
- package/dist/lib/routes/organizations-by-id.js.map +1 -0
- package/dist/lib/routes/organizations-invitations.d.ts +4 -0
- package/dist/lib/routes/organizations-invitations.d.ts.map +1 -0
- package/dist/lib/routes/organizations-invitations.js +127 -0
- package/dist/lib/routes/organizations-invitations.js.map +1 -0
- package/dist/lib/routes/organizations-members.d.ts +5 -0
- package/dist/lib/routes/organizations-members.d.ts.map +1 -0
- package/dist/lib/routes/organizations-members.js +208 -0
- package/dist/lib/routes/organizations-members.js.map +1 -0
- package/dist/lib/routes/organizations-switch.d.ts +3 -0
- package/dist/lib/routes/organizations-switch.d.ts.map +1 -0
- package/dist/lib/routes/organizations-switch.js +55 -0
- package/dist/lib/routes/organizations-switch.js.map +1 -0
- package/dist/lib/routes/organizations.d.ts +4 -0
- package/dist/lib/routes/organizations.d.ts.map +1 -0
- package/dist/lib/routes/organizations.js +111 -0
- package/dist/lib/routes/organizations.js.map +1 -0
- package/dist/lib/routes/schemas-by-type.d.ts +3 -0
- package/dist/lib/routes/schemas-by-type.d.ts.map +1 -0
- package/dist/lib/routes/schemas-by-type.js +27 -0
- package/dist/lib/routes/schemas-by-type.js.map +1 -0
- package/dist/lib/routes/schemas.d.ts +3 -0
- package/dist/lib/routes/schemas.d.ts.map +1 -0
- package/dist/lib/routes/schemas.js +12 -0
- package/dist/lib/routes/schemas.js.map +1 -0
- package/dist/lib/routes/user-preferences.d.ts +4 -0
- package/dist/lib/routes/user-preferences.d.ts.map +1 -0
- package/dist/lib/routes/user-preferences.js +79 -0
- package/dist/lib/routes/user-preferences.js.map +1 -0
- package/dist/lib/routes-exports.d.ts +17 -0
- package/dist/lib/routes-exports.d.ts.map +1 -0
- package/dist/lib/routes-exports.js +23 -0
- package/dist/lib/routes-exports.js.map +1 -0
- package/dist/lib/schema/index.d.ts +6 -0
- package/dist/lib/schema/index.d.ts.map +1 -0
- package/dist/lib/schema/index.js +12 -0
- package/dist/lib/schema/index.js.map +1 -0
- package/dist/lib/schema-context.svelte.d.ts +10 -0
- package/dist/lib/schema-context.svelte.d.ts.map +1 -0
- package/dist/lib/schema-context.svelte.js +19 -0
- package/dist/lib/schema-context.svelte.js.map +1 -0
- package/dist/lib/schema-utils/cleanup.d.ts +21 -0
- package/dist/lib/schema-utils/cleanup.d.ts.map +1 -0
- package/dist/lib/schema-utils/cleanup.js +81 -0
- package/dist/lib/schema-utils/cleanup.js.map +1 -0
- package/dist/lib/schema-utils/index.d.ts +4 -0
- package/dist/lib/schema-utils/index.d.ts.map +1 -0
- package/dist/lib/schema-utils/index.js +5 -0
- package/dist/lib/schema-utils/index.js.map +1 -0
- package/dist/lib/schema-utils/utils.d.ts +34 -0
- package/dist/lib/schema-utils/utils.d.ts.map +1 -0
- package/dist/lib/schema-utils/utils.js +59 -0
- package/dist/lib/schema-utils/utils.js.map +1 -0
- package/dist/lib/schema-utils/validator.d.ts +10 -0
- package/dist/lib/schema-utils/validator.d.ts.map +1 -0
- package/dist/lib/schema-utils/validator.js +167 -0
- package/dist/lib/schema-utils/validator.js.map +1 -0
- package/dist/lib/server/index.d.ts +19 -0
- package/dist/lib/server/index.d.ts.map +1 -0
- package/dist/lib/server/index.js +35 -0
- package/dist/lib/server/index.js.map +1 -0
- package/dist/lib/services/asset-service.d.ts +86 -0
- package/dist/lib/services/asset-service.d.ts.map +1 -0
- package/dist/lib/services/asset-service.js +189 -0
- package/dist/lib/services/asset-service.js.map +1 -0
- package/dist/lib/services/index.d.ts +3 -0
- package/dist/lib/services/index.d.ts.map +1 -0
- package/dist/lib/services/index.js +5 -0
- package/dist/lib/services/index.js.map +1 -0
- package/dist/lib/storage/adapters/index.d.ts +2 -0
- package/dist/lib/storage/adapters/index.d.ts.map +1 -0
- package/dist/lib/storage/adapters/index.js +3 -0
- package/dist/lib/storage/adapters/index.js.map +1 -0
- package/dist/lib/storage/adapters/local-storage-adapter.d.ts +54 -0
- package/dist/lib/storage/adapters/local-storage-adapter.d.ts.map +1 -0
- package/dist/lib/storage/adapters/local-storage-adapter.js +189 -0
- package/dist/lib/storage/adapters/local-storage-adapter.js.map +1 -0
- package/dist/lib/storage/index.d.ts +3 -0
- package/dist/lib/storage/index.d.ts.map +1 -0
- package/dist/lib/storage/index.js +7 -0
- package/dist/lib/storage/index.js.map +1 -0
- package/dist/lib/storage/interfaces/index.d.ts +2 -0
- package/dist/lib/storage/interfaces/index.d.ts.map +1 -0
- package/dist/lib/storage/interfaces/index.js +1 -0
- package/dist/lib/storage/interfaces/index.js.map +1 -0
- package/dist/lib/storage/interfaces/storage.d.ts +91 -0
- package/dist/lib/storage/interfaces/storage.d.ts.map +1 -0
- package/dist/lib/storage/interfaces/storage.js +1 -0
- package/dist/lib/storage/interfaces/storage.js.map +1 -0
- package/dist/lib/storage/providers/storage.d.ts +43 -0
- package/dist/lib/storage/providers/storage.d.ts.map +1 -0
- package/dist/lib/storage/providers/storage.js +65 -0
- package/dist/lib/storage/providers/storage.js.map +1 -0
- package/dist/lib/types/asset.d.ts +73 -0
- package/dist/lib/types/asset.d.ts.map +1 -0
- package/dist/lib/types/asset.js +1 -0
- package/dist/lib/types/asset.js.map +1 -0
- package/dist/lib/types/auth.d.ts +62 -0
- package/dist/lib/types/auth.d.ts.map +1 -0
- package/dist/lib/types/auth.js +7 -5
- package/dist/lib/types/auth.js.map +1 -0
- package/dist/lib/types/config.d.ts +77 -0
- package/dist/lib/types/config.d.ts.map +1 -0
- package/dist/lib/types/config.js +1 -0
- package/dist/lib/types/config.js.map +1 -0
- package/dist/lib/types/document.d.ts +35 -0
- package/dist/lib/types/document.d.ts.map +1 -0
- package/dist/lib/types/document.js +1 -0
- package/dist/lib/types/document.js.map +1 -0
- package/dist/lib/types/filters.d.ts +186 -0
- package/dist/lib/types/filters.d.ts.map +1 -0
- package/dist/lib/types/filters.js +1 -0
- package/dist/lib/types/filters.js.map +1 -0
- package/dist/lib/types/index.d.ts +11 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/dist/lib/types/index.js +2 -0
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/types/instance.d.ts +5 -0
- package/dist/lib/types/instance.d.ts.map +1 -0
- package/dist/lib/types/instance.js +3 -0
- package/dist/lib/types/instance.js.map +1 -0
- package/dist/lib/types/organization.d.ts +108 -0
- package/dist/lib/types/organization.d.ts.map +1 -0
- package/dist/lib/types/organization.js +1 -0
- package/dist/lib/types/organization.js.map +1 -0
- package/dist/lib/types/schemas.d.ts +179 -0
- package/dist/lib/types/schemas.d.ts.map +1 -0
- package/dist/lib/types/schemas.js +1 -0
- package/dist/lib/types/schemas.js.map +1 -0
- package/dist/lib/types/sidebar.d.ts +34 -0
- package/dist/lib/types/sidebar.d.ts.map +1 -0
- package/dist/lib/types/sidebar.js +1 -0
- package/dist/lib/types/sidebar.js.map +1 -0
- package/dist/lib/types/user.d.ts +14 -0
- package/dist/lib/types/user.d.ts.map +1 -0
- package/dist/lib/types/user.js +1 -0
- package/dist/lib/types/user.js.map +1 -0
- package/dist/lib/utils/asset-actions.d.ts +9 -0
- package/dist/lib/utils/asset-actions.d.ts.map +1 -0
- package/dist/lib/utils/asset-actions.js +28 -0
- package/dist/lib/utils/asset-actions.js.map +1 -0
- package/dist/lib/utils/content-hash.d.ts +22 -0
- package/dist/lib/utils/content-hash.d.ts.map +1 -0
- package/dist/lib/utils/content-hash.js +68 -0
- package/dist/lib/utils/content-hash.js.map +1 -0
- package/dist/lib/utils/default-orderings.d.ts +10 -0
- package/dist/lib/utils/default-orderings.d.ts.map +1 -0
- package/dist/lib/utils/default-orderings.js +64 -0
- package/dist/lib/utils/default-orderings.js.map +1 -0
- package/dist/lib/utils/element-events.d.ts +15 -0
- package/dist/lib/utils/element-events.d.ts.map +1 -0
- package/dist/lib/utils/element-events.js +17 -0
- package/dist/lib/utils/element-events.js.map +1 -0
- package/dist/lib/utils/field-defaults.d.ts +8 -0
- package/dist/lib/utils/field-defaults.d.ts.map +1 -0
- package/dist/lib/utils/field-defaults.js +21 -0
- package/dist/lib/utils/field-defaults.js.map +1 -0
- package/dist/lib/utils/image-url.d.ts +88 -0
- package/dist/lib/utils/image-url.d.ts.map +1 -0
- package/dist/lib/utils/image-url.js +167 -0
- package/dist/lib/utils/image-url.js.map +1 -0
- package/dist/lib/utils/index.d.ts +8 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +13 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/utils/initial-value-helpers.d.ts +50 -0
- package/dist/lib/utils/initial-value-helpers.d.ts.map +1 -0
- package/dist/lib/utils/initial-value-helpers.js +71 -0
- package/dist/lib/utils/initial-value-helpers.js.map +1 -0
- package/dist/lib/utils/logger.d.ts +9 -0
- package/dist/lib/utils/logger.d.ts.map +1 -0
- package/dist/lib/utils/logger.js +30 -0
- package/dist/lib/utils/logger.js.map +1 -0
- package/dist/lib/utils/slug.d.ts +13 -0
- package/dist/lib/utils/slug.d.ts.map +1 -0
- package/dist/lib/utils/slug.js +31 -0
- package/dist/lib/utils/slug.js.map +1 -0
- package/dist/lib/utils.d.ts +13 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +6 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/local-api/index.d.ts.map +1 -1
- package/dist/local-api/permissions.d.ts.map +1 -1
- package/dist/local-api/permissions.js +3 -4
- package/dist/routes/assets-bulk.d.ts +3 -0
- package/dist/routes/assets-bulk.d.ts.map +1 -0
- package/dist/routes/assets-bulk.js +48 -0
- package/dist/routes/assets-by-id.d.ts.map +1 -1
- package/dist/routes/assets-by-id.js +22 -55
- package/dist/routes/assets-cdn.d.ts.map +1 -1
- package/dist/routes/assets-cdn.js +12 -50
- package/dist/routes/assets-references-counts.d.ts +7 -0
- package/dist/routes/assets-references-counts.d.ts.map +1 -0
- package/dist/routes/assets-references-counts.js +31 -0
- package/dist/routes/assets-references.d.ts +7 -0
- package/dist/routes/assets-references.d.ts.map +1 -0
- package/dist/routes/assets-references.js +34 -0
- package/dist/routes/assets.d.ts.map +1 -1
- package/dist/routes/assets.js +27 -6
- package/dist/routes/documents-by-id.d.ts.map +1 -1
- package/dist/routes/documents-by-id.js +4 -3
- package/dist/routes/documents-publish.d.ts.map +1 -1
- package/dist/routes/documents-publish.js +3 -2
- package/dist/routes/documents-query.d.ts.map +1 -1
- package/dist/routes/documents-query.js +2 -1
- package/dist/routes/documents.d.ts.map +1 -1
- package/dist/routes/documents.js +3 -2
- package/dist/routes/organizations-by-id.d.ts.map +1 -1
- package/dist/routes/organizations-by-id.js +4 -3
- package/dist/routes/organizations-invitations.d.ts.map +1 -1
- package/dist/routes/organizations-invitations.js +5 -4
- package/dist/routes/organizations-members.d.ts.map +1 -1
- package/dist/routes/organizations-members.js +7 -6
- package/dist/routes/organizations-switch.d.ts.map +1 -1
- package/dist/routes/organizations-switch.js +2 -1
- package/dist/routes/organizations.d.ts.map +1 -1
- package/dist/routes/organizations.js +3 -2
- package/dist/routes/schemas-by-type.d.ts.map +1 -1
- package/dist/routes/schemas-by-type.js +3 -2
- package/dist/routes/user-preferences.d.ts.map +1 -1
- package/dist/routes/user-preferences.js +3 -2
- package/dist/routes-exports.d.ts +3 -0
- package/dist/routes-exports.d.ts.map +1 -1
- package/dist/routes-exports.js +3 -0
- package/dist/schema/index.d.ts +6 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +11 -0
- package/dist/schema-utils/validator.d.ts.map +1 -1
- package/dist/schema-utils/validator.js +4 -3
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -0
- package/dist/services/asset-service.d.ts.map +1 -1
- package/dist/services/asset-service.js +8 -7
- package/dist/storage/adapters/local-storage-adapter.d.ts.map +1 -1
- package/dist/storage/adapters/local-storage-adapter.js +5 -4
- package/dist/types/auth.d.ts +13 -1
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/auth.js +6 -5
- package/dist/types/config.d.ts +14 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/document.d.ts +1 -1
- package/dist/types/document.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/instance.d.ts +5 -0
- package/dist/types/instance.d.ts.map +1 -0
- package/dist/types/instance.js +2 -0
- package/dist/types/schemas.d.ts +1 -1
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/sidebar.d.ts +1 -0
- package/dist/types/sidebar.d.ts.map +1 -1
- package/dist/utils/asset-actions.d.ts +9 -0
- package/dist/utils/asset-actions.d.ts.map +1 -0
- package/dist/utils/asset-actions.js +27 -0
- package/dist/utils/element-events.d.ts +15 -0
- package/dist/utils/element-events.d.ts.map +1 -0
- package/dist/utils/element-events.js +16 -0
- package/dist/utils/image-url.d.ts.map +1 -1
- package/dist/utils/image-url.js +10 -9
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/logger.d.ts +9 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +29 -0
- package/package.json +132 -103
- package/LICENSE +0 -21
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
2
|
import customParseFormat from 'dayjs/plugin/customParseFormat.js';
|
|
3
3
|
import utc from 'dayjs/plugin/utc.js';
|
|
4
|
+
import { cmsLogger } from '../utils/logger.js';
|
|
4
5
|
dayjs.extend(customParseFormat);
|
|
5
6
|
dayjs.extend(utc);
|
|
6
7
|
/**
|
|
@@ -70,13 +71,13 @@ export function convertDateTimeToUserFormat(value, dateFormat, timeFormat = 'HH:
|
|
|
70
71
|
*/
|
|
71
72
|
export function convertDateTimeToISO(value, dateFormat, timeFormat = 'HH:mm') {
|
|
72
73
|
const userFormat = `${dateFormat} ${timeFormat}`;
|
|
73
|
-
|
|
74
|
+
cmsLogger.debug('[convertDateTimeToISO]', { value, userFormat });
|
|
74
75
|
// Try parsing as user format first (for API consumers)
|
|
75
76
|
// Use strict mode to reject invalid dates like Feb 31st
|
|
76
77
|
const parsedUser = dayjs(value, userFormat, true);
|
|
77
78
|
if (parsedUser.isValid()) {
|
|
78
79
|
const result = parsedUser.utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
|
|
79
|
-
|
|
80
|
+
cmsLogger.debug('[convertDateTimeToISO] User format parse successful, converting to UTC:', result);
|
|
80
81
|
return result;
|
|
81
82
|
}
|
|
82
83
|
// Try parsing as ISO datetime (for DateTimeField component)
|
|
@@ -84,11 +85,11 @@ export function convertDateTimeToISO(value, dateFormat, timeFormat = 'HH:mm') {
|
|
|
84
85
|
const parsedISO = dayjs(value, 'YYYY-MM-DDTHH:mm:ss[Z]', true);
|
|
85
86
|
if (parsedISO.isValid()) {
|
|
86
87
|
const result = parsedISO.utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
|
|
87
|
-
|
|
88
|
+
cmsLogger.debug('[convertDateTimeToISO] ISO parse successful:', result);
|
|
88
89
|
return result;
|
|
89
90
|
}
|
|
90
91
|
// Invalid datetime - return as-is
|
|
91
|
-
|
|
92
|
+
cmsLogger.debug('[convertDateTimeToISO] Invalid - returning as-is');
|
|
92
93
|
return value;
|
|
93
94
|
}
|
|
94
95
|
/**
|
|
@@ -98,21 +99,21 @@ export function convertDateTimeToISO(value, dateFormat, timeFormat = 'HH:mm') {
|
|
|
98
99
|
export function normalizeDateFields(data, schema) {
|
|
99
100
|
const normalizedData = { ...data };
|
|
100
101
|
const dataForValidation = { ...data };
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
cmsLogger.debug('[normalizeDateFields] Starting normalization...');
|
|
103
|
+
cmsLogger.debug('[normalizeDateFields] Input data:', data);
|
|
103
104
|
for (const field of schema.fields) {
|
|
104
105
|
if (field.type === 'date' && normalizedData[field.name]) {
|
|
105
106
|
const dateField = field;
|
|
106
107
|
const userFormat = dateField.options?.dateFormat || 'YYYY-MM-DD';
|
|
107
108
|
const dateValue = normalizedData[field.name];
|
|
108
|
-
|
|
109
|
+
cmsLogger.debug(`[normalizeDateFields] Processing DATE field "${field.name}"`, {
|
|
109
110
|
originalValue: dateValue,
|
|
110
111
|
userFormat
|
|
111
112
|
});
|
|
112
113
|
if (typeof dateValue === 'string') {
|
|
113
114
|
normalizedData[field.name] = convertDateToISO(dateValue, userFormat);
|
|
114
115
|
dataForValidation[field.name] = convertDateToUserFormat(dateValue, userFormat);
|
|
115
|
-
|
|
116
|
+
cmsLogger.debug(`[normalizeDateFields] Converted DATE field "${field.name}"`, {
|
|
116
117
|
normalizedValue: normalizedData[field.name],
|
|
117
118
|
validationValue: dataForValidation[field.name]
|
|
118
119
|
});
|
|
@@ -123,7 +124,7 @@ export function normalizeDateFields(data, schema) {
|
|
|
123
124
|
const dateFormat = dateTimeField.options?.dateFormat || 'YYYY-MM-DD';
|
|
124
125
|
const timeFormat = dateTimeField.options?.timeFormat || 'HH:mm';
|
|
125
126
|
const dateTimeValue = normalizedData[field.name];
|
|
126
|
-
|
|
127
|
+
cmsLogger.debug(`[normalizeDateFields] Processing DATETIME field "${field.name}"`, {
|
|
127
128
|
originalValue: dateTimeValue,
|
|
128
129
|
dateFormat,
|
|
129
130
|
timeFormat,
|
|
@@ -132,14 +133,14 @@ export function normalizeDateFields(data, schema) {
|
|
|
132
133
|
if (typeof dateTimeValue === 'string') {
|
|
133
134
|
normalizedData[field.name] = convertDateTimeToISO(dateTimeValue, dateFormat, timeFormat);
|
|
134
135
|
dataForValidation[field.name] = convertDateTimeToUserFormat(dateTimeValue, dateFormat, timeFormat);
|
|
135
|
-
|
|
136
|
+
cmsLogger.debug(`[normalizeDateFields] Converted DATETIME field "${field.name}"`, {
|
|
136
137
|
normalizedValue: normalizedData[field.name],
|
|
137
138
|
validationValue: dataForValidation[field.name]
|
|
138
139
|
});
|
|
139
140
|
}
|
|
140
141
|
}
|
|
141
142
|
}
|
|
142
|
-
|
|
143
|
+
cmsLogger.debug('[normalizeDateFields] Final result:', {
|
|
143
144
|
normalizedData,
|
|
144
145
|
dataForValidation
|
|
145
146
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../src/lib/field-validation/rule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../src/lib/field-validation/rule.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAEjC,QAAQ,CAAC,EAAE,GAAG,CAAC;IAEf,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC3C,CACC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,iBAAiB,GACxB,gBAAgB,EAAE,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CAC1F;AAED,MAAM,WAAW,cAAc;IAC9B,gBAAgB,EAAE,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,IAAI;IAChB,OAAO,CAAC,SAAS,CAAkB;IAEnC,OAAO,CAAC,MAAM,CAAmE;IACjF,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,QAAQ,CAAC,CAAS;IAE1B,MAAM,CAAC,SAAS,SAA4B;IAE5C,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc;IAO5D,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc;IAIrD,QAAQ,IAAI,IAAI;IAMhB,QAAQ,IAAI,IAAI;IAMhB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,IAAI;IAMhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,IAAI;IAMhD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAM1C,MAAM,IAAI,IAAI;IAMd,KAAK,IAAI,IAAI;IAMb,GAAG,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAMnE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAM3C,QAAQ,IAAI,IAAI;IAMhB,QAAQ,IAAI,IAAI;IAMhB,OAAO,IAAI,IAAI;IAMf,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAM/C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAM5C,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAM3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAOxD,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAMjD,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAO7B,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAO/B,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAO5B,KAAK,IAAI,IAAI;IASP,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAwC9E,YAAY;IAgO1B,UAAU,IAAI,OAAO;IAKrB,OAAO,CAAC,sBAAsB;CAkB9B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Sanity-style validation Rule implementation
|
|
2
2
|
import dayjs from 'dayjs';
|
|
3
3
|
import customParseFormat from 'dayjs/plugin/customParseFormat.js';
|
|
4
|
+
import { cmsLogger } from '../utils/logger.js';
|
|
4
5
|
// Enable strict parsing
|
|
5
6
|
dayjs.extend(customParseFormat);
|
|
6
7
|
export class Rule {
|
|
@@ -297,52 +298,52 @@ export class Rule {
|
|
|
297
298
|
case 'date': {
|
|
298
299
|
if (typeof value === 'string') {
|
|
299
300
|
const format = rule.constraint || 'YYYY-MM-DD';
|
|
300
|
-
|
|
301
|
+
cmsLogger.debug('[Rule.validate] DATE validation', { value, format });
|
|
301
302
|
// Parse with strict mode
|
|
302
303
|
const parsed = dayjs(value, format, true);
|
|
303
|
-
|
|
304
|
+
cmsLogger.debug('[Rule.validate] DATE parsed', {
|
|
304
305
|
isValid: parsed.isValid(),
|
|
305
306
|
parsed: parsed.format()
|
|
306
307
|
});
|
|
307
308
|
if (!parsed.isValid()) {
|
|
308
|
-
|
|
309
|
+
cmsLogger.debug('[Rule.validate] DATE validation FAILED - invalid format');
|
|
309
310
|
return `Invalid date format. Expected: ${format}`;
|
|
310
311
|
}
|
|
311
312
|
// Verify the parsed date matches the input (catches invalid dates like 2025-02-31)
|
|
312
313
|
if (parsed.format(format) !== value) {
|
|
313
|
-
|
|
314
|
+
cmsLogger.debug('[Rule.validate] DATE validation FAILED - format mismatch', {
|
|
314
315
|
expected: value,
|
|
315
316
|
got: parsed.format(format)
|
|
316
317
|
});
|
|
317
318
|
return `Invalid date. Expected format: ${format}`;
|
|
318
319
|
}
|
|
319
|
-
|
|
320
|
+
cmsLogger.debug('[Rule.validate] DATE validation PASSED');
|
|
320
321
|
}
|
|
321
322
|
break;
|
|
322
323
|
}
|
|
323
324
|
case 'datetime': {
|
|
324
325
|
if (typeof value === 'string') {
|
|
325
326
|
const format = rule.constraint || 'YYYY-MM-DD HH:mm';
|
|
326
|
-
|
|
327
|
+
cmsLogger.debug('[Rule.validate] DATETIME validation', { value, format });
|
|
327
328
|
// Parse with strict mode
|
|
328
329
|
const parsed = dayjs(value, format, true);
|
|
329
|
-
|
|
330
|
+
cmsLogger.debug('[Rule.validate] DATETIME parsed', {
|
|
330
331
|
isValid: parsed.isValid(),
|
|
331
332
|
parsed: parsed.format()
|
|
332
333
|
});
|
|
333
334
|
if (!parsed.isValid()) {
|
|
334
|
-
|
|
335
|
+
cmsLogger.debug('[Rule.validate] DATETIME validation FAILED - invalid format');
|
|
335
336
|
return `Invalid datetime format. Expected: ${format}`;
|
|
336
337
|
}
|
|
337
338
|
// Verify the parsed datetime matches the input (catches invalid dates like 2025-02-31 23:59)
|
|
338
339
|
if (parsed.format(format) !== value) {
|
|
339
|
-
|
|
340
|
+
cmsLogger.debug('[Rule.validate] DATETIME validation FAILED - format mismatch', {
|
|
340
341
|
expected: value,
|
|
341
342
|
got: parsed.format(format)
|
|
342
343
|
});
|
|
343
344
|
return `Invalid datetime. Expected format: ${format}`;
|
|
344
345
|
}
|
|
345
|
-
|
|
346
|
+
cmsLogger.debug('[Rule.validate] DATETIME validation PASSED');
|
|
346
347
|
}
|
|
347
348
|
break;
|
|
348
349
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/field-validation/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/field-validation/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKxD,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACnD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAUrD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAClC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,GAAG,EACV,OAAO,GAAE,GAAQ,GACf,OAAO,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC1B,CAAC,CAiID;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAO/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,OAAO,GAAE,GAAQ,GACf,OAAO,CAAC,wBAAwB,CAAC,CAqDnC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Rule } from './rule.js';
|
|
2
2
|
import { normalizeDateFields } from './date-utils.js';
|
|
3
|
+
import { cmsLogger } from '../utils/logger.js';
|
|
3
4
|
/**
|
|
4
5
|
* Check if a field is required based on its validation rules
|
|
5
6
|
*/
|
|
@@ -21,7 +22,7 @@ export function isFieldRequired(field) {
|
|
|
21
22
|
* Validate a field value against its validation rules
|
|
22
23
|
*/
|
|
23
24
|
export async function validateField(field, value, context = {}) {
|
|
24
|
-
|
|
25
|
+
cmsLogger.debug('[validateField]', `Validating field "${field.name}"`, {
|
|
25
26
|
type: field.type,
|
|
26
27
|
value,
|
|
27
28
|
hasValidation: !!field.validation
|
|
@@ -31,7 +32,7 @@ export async function validateField(field, value, context = {}) {
|
|
|
31
32
|
if (field.type === 'date') {
|
|
32
33
|
const dateField = field;
|
|
33
34
|
const dateFormat = dateField.options?.dateFormat || 'YYYY-MM-DD';
|
|
34
|
-
|
|
35
|
+
cmsLogger.debug('[validateField]', `Adding automatic DATE validation for "${field.name}"`, {
|
|
35
36
|
dateFormat
|
|
36
37
|
});
|
|
37
38
|
const autoRule = new Rule().date(dateFormat);
|
|
@@ -48,7 +49,7 @@ export async function validateField(field, value, context = {}) {
|
|
|
48
49
|
const dateTimeField = field;
|
|
49
50
|
const dateFormat = dateTimeField.options?.dateFormat || 'YYYY-MM-DD';
|
|
50
51
|
const timeFormat = dateTimeField.options?.timeFormat || 'HH:mm';
|
|
51
|
-
|
|
52
|
+
cmsLogger.debug('[validateField]', `Adding automatic DATETIME validation for "${field.name}"`, {
|
|
52
53
|
dateFormat,
|
|
53
54
|
timeFormat
|
|
54
55
|
});
|
|
@@ -66,7 +67,7 @@ export async function validateField(field, value, context = {}) {
|
|
|
66
67
|
// Only add automatic URL validation if there's no custom validation
|
|
67
68
|
// This allows custom validation to specify different options (scheme, allowRelative, relativeOnly)
|
|
68
69
|
if (!field.validation) {
|
|
69
|
-
|
|
70
|
+
cmsLogger.debug('[validateField]', `Adding automatic URL validation for "${field.name}"`);
|
|
70
71
|
// Automatic URL validation - only validate if there's a value
|
|
71
72
|
if (value && value !== '') {
|
|
72
73
|
const autoRule = new Rule().uri();
|
|
@@ -81,23 +82,23 @@ export async function validateField(field, value, context = {}) {
|
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
84
|
else {
|
|
84
|
-
|
|
85
|
+
cmsLogger.debug('[validateField]', `Skipping automatic URL validation for "${field.name}" (has custom validation)`);
|
|
85
86
|
}
|
|
86
87
|
}
|
|
87
88
|
// Run user-defined validation rules if present
|
|
88
89
|
if (!field.validation) {
|
|
89
|
-
|
|
90
|
+
cmsLogger.debug('[validateField]', `No custom validation rules for "${field.name}"`);
|
|
90
91
|
}
|
|
91
92
|
else {
|
|
92
93
|
try {
|
|
93
94
|
const validationFunctions = Array.isArray(field.validation)
|
|
94
95
|
? field.validation
|
|
95
96
|
: [field.validation];
|
|
96
|
-
|
|
97
|
+
cmsLogger.debug('[validateField]', `Field "${field.name}" has ${validationFunctions.length} custom validation function(s)`);
|
|
97
98
|
for (const validationFn of validationFunctions) {
|
|
98
99
|
const rule = validationFn(new Rule());
|
|
99
100
|
if (!(rule instanceof Rule)) {
|
|
100
|
-
|
|
101
|
+
cmsLogger.error(`Validation function for field "${field.name}" did not return a Rule object. Make sure you are chaining validation methods and returning the result.`);
|
|
101
102
|
continue;
|
|
102
103
|
}
|
|
103
104
|
const markers = await rule.validate(value, {
|
|
@@ -111,12 +112,12 @@ export async function validateField(field, value, context = {}) {
|
|
|
111
112
|
}
|
|
112
113
|
}
|
|
113
114
|
catch (error) {
|
|
114
|
-
|
|
115
|
+
cmsLogger.error('[validateField]', `Validation error for "${field.name}":`, error);
|
|
115
116
|
allErrors.push({ level: 'error', message: 'Validation failed' });
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
119
|
const isValid = allErrors.filter((e) => e.level === 'error').length === 0;
|
|
119
|
-
|
|
120
|
+
cmsLogger.debug('[validateField]', `Field "${field.name}" validation complete`, {
|
|
120
121
|
isValid,
|
|
121
122
|
errors: allErrors
|
|
122
123
|
});
|
|
@@ -146,26 +147,26 @@ export function getValidationClasses(hasErrors) {
|
|
|
146
147
|
* @returns Validation result with isValid flag, errors, and normalized data
|
|
147
148
|
*/
|
|
148
149
|
export async function validateDocumentData(schema, data, context = {}) {
|
|
149
|
-
|
|
150
|
+
cmsLogger.debug('[validateDocumentData]', 'Starting validation', {
|
|
150
151
|
schemaName: schema.name,
|
|
151
152
|
data
|
|
152
153
|
});
|
|
153
154
|
const validationErrors = [];
|
|
154
155
|
// Normalize date fields: convert to ISO for storage, user format for validation
|
|
155
156
|
const { normalizedData, dataForValidation } = normalizeDateFields(data, schema);
|
|
156
|
-
|
|
157
|
+
cmsLogger.debug('[validateDocumentData]', 'After normalization', {
|
|
157
158
|
normalizedData,
|
|
158
159
|
dataForValidation
|
|
159
160
|
});
|
|
160
161
|
// Validate each field using the user-formatted data
|
|
161
162
|
for (const field of schema.fields) {
|
|
162
163
|
const value = dataForValidation[field.name];
|
|
163
|
-
|
|
164
|
+
cmsLogger.debug('[validateDocumentData]', `Validating field "${field.name}"`, {
|
|
164
165
|
type: field.type,
|
|
165
166
|
value
|
|
166
167
|
});
|
|
167
168
|
const result = await validateField(field, value, { ...context, ...dataForValidation });
|
|
168
|
-
|
|
169
|
+
cmsLogger.debug('[validateDocumentData]', `Field "${field.name}" validation result`, {
|
|
169
170
|
isValid: result.isValid,
|
|
170
171
|
errors: result.errors
|
|
171
172
|
});
|
|
@@ -179,7 +180,7 @@ export async function validateDocumentData(schema, data, context = {}) {
|
|
|
179
180
|
}
|
|
180
181
|
}
|
|
181
182
|
}
|
|
182
|
-
|
|
183
|
+
cmsLogger.debug('[validateDocumentData]', 'Final result', {
|
|
183
184
|
isValid: validationErrors.length === 0,
|
|
184
185
|
errors: validationErrors
|
|
185
186
|
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CMSInstances } from '../hooks.js';
|
|
2
|
+
import type { SchemaType } from '../types/schemas.js';
|
|
3
|
+
import type { RequestEvent } from '@sveltejs/kit';
|
|
4
|
+
export interface GraphQLConfig {
|
|
5
|
+
defaultPerspective?: 'draft' | 'published';
|
|
6
|
+
path?: string;
|
|
7
|
+
enableGraphiQL?: boolean;
|
|
8
|
+
defaultQuery?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface GraphQLSettings {
|
|
11
|
+
endpoint: string;
|
|
12
|
+
enableGraphiQL: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface GraphQLHandlerResult {
|
|
15
|
+
handler: (event: RequestEvent) => Promise<Response> | Response;
|
|
16
|
+
settings: GraphQLSettings;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates a GraphQL handler for the CMS.
|
|
20
|
+
* Uses dynamic imports so graphql dependencies are only loaded when GraphQL is enabled.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createGraphQLHandler(cms: CMSInstances, schemaTypes: SchemaType[], options?: GraphQLConfig): Promise<GraphQLHandlerResult>;
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/graphql/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKlD,MAAM,WAAW,aAAa;IAC7B,kBAAkB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;IAC/D,QAAQ,EAAE,eAAe,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACzC,GAAG,EAAE,YAAY,EACjB,WAAW,EAAE,UAAU,EAAE,EACzB,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAsF/B"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { generateGraphQLSchema } from './schema.js';
|
|
2
|
+
import { createResolvers } from './resolvers.js';
|
|
3
|
+
import { cmsLogger } from '../utils/logger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a GraphQL handler for the CMS.
|
|
6
|
+
* Uses dynamic imports so graphql dependencies are only loaded when GraphQL is enabled.
|
|
7
|
+
*/
|
|
8
|
+
export async function createGraphQLHandler(cms, schemaTypes, options = {}) {
|
|
9
|
+
const rawPath = options.path ?? '/api/graphql';
|
|
10
|
+
const endpoint = rawPath.startsWith('/') ? rawPath : `/${rawPath}`;
|
|
11
|
+
const enableGraphiQL = options.enableGraphiQL ?? true;
|
|
12
|
+
const defaultPerspective = options.defaultPerspective ?? 'published';
|
|
13
|
+
// Lazy-load GraphQL dependencies
|
|
14
|
+
const [{ createYoga, createSchema }, { useGraphQlJit }, { renderGraphiQL }] = await Promise.all([
|
|
15
|
+
import('graphql-yoga'),
|
|
16
|
+
import('@envelop/graphql-jit'),
|
|
17
|
+
import('@graphql-yoga/render-graphiql')
|
|
18
|
+
]);
|
|
19
|
+
// Generate GraphQL schema and resolvers from CMS schema types
|
|
20
|
+
const typeDefs = generateGraphQLSchema(schemaTypes);
|
|
21
|
+
const resolvers = createResolvers(cms, schemaTypes, defaultPerspective);
|
|
22
|
+
const yogaApp = createYoga({
|
|
23
|
+
logging: false,
|
|
24
|
+
schema: createSchema({
|
|
25
|
+
typeDefs,
|
|
26
|
+
resolvers
|
|
27
|
+
}),
|
|
28
|
+
plugins: [useGraphQlJit()],
|
|
29
|
+
graphqlEndpoint: endpoint,
|
|
30
|
+
renderGraphiQL,
|
|
31
|
+
fetchAPI: { Response },
|
|
32
|
+
context: async (event) => {
|
|
33
|
+
// Extract auth and localAPI from event.locals (set by auth hook)
|
|
34
|
+
const auth = event.locals.auth;
|
|
35
|
+
const localAPI = event.locals.aphexCMS?.localAPI;
|
|
36
|
+
if (!auth || auth.type === 'partial_session') {
|
|
37
|
+
throw new Error('Unauthorized: Authentication required for GraphQL');
|
|
38
|
+
}
|
|
39
|
+
if (!localAPI) {
|
|
40
|
+
throw new Error('LocalAPI not initialized');
|
|
41
|
+
}
|
|
42
|
+
// Return context with organizationId, auth, and localAPI
|
|
43
|
+
return {
|
|
44
|
+
organizationId: auth.organizationId,
|
|
45
|
+
auth,
|
|
46
|
+
localAPI
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
graphiql: enableGraphiQL
|
|
50
|
+
? {
|
|
51
|
+
defaultQuery: options.defaultQuery ||
|
|
52
|
+
`# Welcome to Aphex GraphQL API
|
|
53
|
+
# Try these example queries:
|
|
54
|
+
|
|
55
|
+
# Get all documents of a type (replace 'page' with your document type)
|
|
56
|
+
{
|
|
57
|
+
allPage(perspective: "draft") {
|
|
58
|
+
id
|
|
59
|
+
title
|
|
60
|
+
createdAt
|
|
61
|
+
updatedAt
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Get a single document by ID
|
|
66
|
+
{
|
|
67
|
+
page(id: "your-page-id", perspective: "draft") {
|
|
68
|
+
id
|
|
69
|
+
title
|
|
70
|
+
}
|
|
71
|
+
}`
|
|
72
|
+
}
|
|
73
|
+
: false
|
|
74
|
+
});
|
|
75
|
+
cmsLogger.info('[GraphQL]', `Initialized at ${endpoint}`);
|
|
76
|
+
return {
|
|
77
|
+
handler: async (event) => {
|
|
78
|
+
return yogaApp.fetch(event.request, event);
|
|
79
|
+
},
|
|
80
|
+
settings: {
|
|
81
|
+
endpoint,
|
|
82
|
+
enableGraphiQL
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CMSInstances } from '../hooks.js';
|
|
2
|
+
import type { SchemaType } from '../types/schemas.js';
|
|
3
|
+
export declare function createResolvers(cms: CMSInstances, schemaTypes: SchemaType[], defaultPerspective?: 'draft' | 'published'): Record<string, any>;
|
|
4
|
+
//# sourceMappingURL=resolvers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../src/lib/graphql/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,kBAAkB,CAAC;AA4H1D,wBAAgB,eAAe,CAC9B,GAAG,EAAE,YAAY,EACjB,WAAW,EAAE,UAAU,EAAE,EACzB,kBAAkB,GAAE,OAAO,GAAG,WAAyB,uBAqhBvD"}
|