@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
|
@@ -6,11 +6,14 @@
|
|
|
6
6
|
import { ApiError } from '../../api/client';
|
|
7
7
|
import SchemaField from './SchemaField.svelte';
|
|
8
8
|
import { findOrphanedFields, type OrphanedField } from '../../schema-utils/cleanup';
|
|
9
|
-
import type { SchemaType } from '
|
|
9
|
+
import type { SchemaType } from '../../types/schemas.js';
|
|
10
10
|
import { Rule } from '../../field-validation/rule';
|
|
11
11
|
import { hasUnpublishedChanges } from '../../utils/content-hash';
|
|
12
12
|
import { setSchemaContext } from '../../schema-context.svelte';
|
|
13
13
|
import { getDefaultValueForFieldType } from '../../utils/field-defaults';
|
|
14
|
+
import elementEvents from '../../utils/element-events';
|
|
15
|
+
import { cmsLogger } from '../../utils/logger';
|
|
16
|
+
import { toast } from 'svelte-sonner';
|
|
14
17
|
|
|
15
18
|
interface Props {
|
|
16
19
|
schemas: SchemaType[];
|
|
@@ -56,6 +59,32 @@
|
|
|
56
59
|
let lastSaved = $state<Date | null>(null);
|
|
57
60
|
let publishSuccess = $state<Date | null>(null);
|
|
58
61
|
|
|
62
|
+
// Ticker to keep relative time updating
|
|
63
|
+
let now = $state(Date.now());
|
|
64
|
+
let tickerInterval: ReturnType<typeof setInterval> | null = null;
|
|
65
|
+
|
|
66
|
+
$effect(() => {
|
|
67
|
+
tickerInterval = setInterval(() => {
|
|
68
|
+
now = Date.now();
|
|
69
|
+
}, 10_000); // update every 10s
|
|
70
|
+
return () => {
|
|
71
|
+
if (tickerInterval) clearInterval(tickerInterval);
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
function timeAgo(date: Date): string {
|
|
76
|
+
const seconds = Math.floor((now - date.getTime()) / 1000);
|
|
77
|
+
if (seconds < 5) return 'just now';
|
|
78
|
+
if (seconds < 60) return `${seconds}s ago`;
|
|
79
|
+
const minutes = Math.floor(seconds / 60);
|
|
80
|
+
if (minutes < 60) return `${minutes}m ago`;
|
|
81
|
+
const hours = Math.floor(minutes / 60);
|
|
82
|
+
if (hours < 24) return `${hours}h ago`;
|
|
83
|
+
return date.toLocaleDateString();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const savedAgoText = $derived(lastSaved ? `Saved ${timeAgo(lastSaved)}` : null);
|
|
87
|
+
|
|
59
88
|
// Menu dropdown state
|
|
60
89
|
let showDropdown = $state(false);
|
|
61
90
|
|
|
@@ -95,7 +124,7 @@
|
|
|
95
124
|
const _docId = documentId;
|
|
96
125
|
const _docType = documentType;
|
|
97
126
|
|
|
98
|
-
|
|
127
|
+
cmsLogger.debug('[Document Editor]', 'hasValidationErrors: ', hasValidationErrors);
|
|
99
128
|
|
|
100
129
|
// Detect if we're actually switching documents vs just transitioning from creating→editing
|
|
101
130
|
const isSwitchingDocuments =
|
|
@@ -120,7 +149,12 @@
|
|
|
120
149
|
autoSaveTimer = null;
|
|
121
150
|
}
|
|
122
151
|
|
|
123
|
-
|
|
152
|
+
cmsLogger.debug(
|
|
153
|
+
'[Document Editor]',
|
|
154
|
+
'🧹 Cleared state for document switch:',
|
|
155
|
+
_docType,
|
|
156
|
+
_docId || 'new'
|
|
157
|
+
);
|
|
124
158
|
}
|
|
125
159
|
|
|
126
160
|
// Update tracking
|
|
@@ -140,7 +174,10 @@
|
|
|
140
174
|
if (!isCreating && documentId) {
|
|
141
175
|
// Skip loading if we just created this document (data is already in memory)
|
|
142
176
|
if (justCreatedDocument) {
|
|
143
|
-
|
|
177
|
+
cmsLogger.debug(
|
|
178
|
+
'[Document Editor]',
|
|
179
|
+
'⏭️ Skipping loadDocumentData - just created document'
|
|
180
|
+
);
|
|
144
181
|
justCreatedDocument = false;
|
|
145
182
|
return;
|
|
146
183
|
}
|
|
@@ -168,8 +205,8 @@
|
|
|
168
205
|
schemaLoading = true;
|
|
169
206
|
schemaError = null;
|
|
170
207
|
|
|
171
|
-
|
|
172
|
-
|
|
208
|
+
cmsLogger.debug('[Document Editor]', 'RUNNING LOAD SCHEMA');
|
|
209
|
+
cmsLogger.debug('[Document Editor]', 'SCHEMAS: ', schemas);
|
|
173
210
|
|
|
174
211
|
try {
|
|
175
212
|
// Find schema from provided schemas
|
|
@@ -181,7 +218,7 @@
|
|
|
181
218
|
throw new Error(`Schema type '${documentType}' not found`);
|
|
182
219
|
}
|
|
183
220
|
} catch (err) {
|
|
184
|
-
|
|
221
|
+
toast.error(err instanceof Error ? err.message : 'Failed to load schema');
|
|
185
222
|
schemaError = err instanceof Error ? err.message : 'Failed to load schema';
|
|
186
223
|
} finally {
|
|
187
224
|
schemaLoading = false;
|
|
@@ -191,7 +228,7 @@
|
|
|
191
228
|
async function loadDocumentData() {
|
|
192
229
|
if (!documentId) return;
|
|
193
230
|
|
|
194
|
-
|
|
231
|
+
cmsLogger.debug('[Document Editor]', '📄 Loading document data for:', documentId);
|
|
195
232
|
|
|
196
233
|
try {
|
|
197
234
|
const response = await documents.getById(documentId);
|
|
@@ -202,15 +239,16 @@
|
|
|
202
239
|
|
|
203
240
|
// With LocalAPI, data is flattened at top level (not in draftData)
|
|
204
241
|
// Extract all fields except id and _meta
|
|
242
|
+
// @ts-expect-error
|
|
205
243
|
const { id, _meta, ...data } = response.data;
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
244
|
+
cmsLogger.debug('[Document Editor]', '📄 Full response.data:', response.data);
|
|
245
|
+
cmsLogger.debug('[Document Editor]', '📄 Extracted data (after destructuring):', data);
|
|
246
|
+
cmsLogger.debug('[Document Editor]', '📄 Keys in extracted data:', Object.keys(data));
|
|
247
|
+
cmsLogger.debug('[Document Editor]', '📄 Published hash:', _meta?.publishedHash);
|
|
210
248
|
|
|
211
249
|
documentData = { ...data };
|
|
212
|
-
|
|
213
|
-
|
|
250
|
+
cmsLogger.debug('[Document Editor]', '📄 documentData after assignment:', documentData);
|
|
251
|
+
cmsLogger.debug('[Document Editor]', '📄 Keys in documentData:', Object.keys(documentData));
|
|
214
252
|
hasUnsavedChanges = false; // Just loaded, so no unsaved changes
|
|
215
253
|
|
|
216
254
|
// Run validation on loaded document to show any existing errors
|
|
@@ -222,11 +260,11 @@
|
|
|
222
260
|
}
|
|
223
261
|
});
|
|
224
262
|
} else {
|
|
225
|
-
|
|
263
|
+
cmsLogger.debug('[Document Editor]', '❌ Failed to load document data:', response.error);
|
|
226
264
|
saveError = response.error || 'Failed to load document';
|
|
227
265
|
}
|
|
228
266
|
} catch (err) {
|
|
229
|
-
|
|
267
|
+
toast.error(err instanceof ApiError ? err.message : 'Failed to load document');
|
|
230
268
|
saveError = err instanceof ApiError ? err.message : 'Failed to load document';
|
|
231
269
|
}
|
|
232
270
|
}
|
|
@@ -234,7 +272,7 @@
|
|
|
234
272
|
async function initializeDocument() {
|
|
235
273
|
if (!schema) return;
|
|
236
274
|
|
|
237
|
-
|
|
275
|
+
cmsLogger.debug('[Document Editor]', '🆕 Initializing new document with field defaults');
|
|
238
276
|
|
|
239
277
|
// Initialize document data with field defaults
|
|
240
278
|
const initialData: Record<string, any> = {};
|
|
@@ -246,7 +284,7 @@
|
|
|
246
284
|
try {
|
|
247
285
|
initialData[field.name] = await field.initialValue();
|
|
248
286
|
} catch (error) {
|
|
249
|
-
|
|
287
|
+
toast.error(`Failed to resolve initial value for "${field.name}"`);
|
|
250
288
|
// Fall back to default value for the field type
|
|
251
289
|
initialData[field.name] = getDefaultValueForFieldType(field.type);
|
|
252
290
|
}
|
|
@@ -277,7 +315,7 @@
|
|
|
277
315
|
hasUnsavedChanges = false;
|
|
278
316
|
lastSaved = null;
|
|
279
317
|
saveError = null;
|
|
280
|
-
|
|
318
|
+
cmsLogger.debug('[Document Editor]', '✅ Document initialized with:', initialData);
|
|
281
319
|
}
|
|
282
320
|
|
|
283
321
|
// Check if document has meaningful content (not just empty initialized values)
|
|
@@ -342,11 +380,17 @@
|
|
|
342
380
|
// Only auto-save if there's meaningful content, data has changed, and not in read-only mode
|
|
343
381
|
if (hasContent && hasChanges && schema && !isReadOnly) {
|
|
344
382
|
autoSaveTimer = setTimeout(() => {
|
|
345
|
-
|
|
383
|
+
cmsLogger.debug(
|
|
384
|
+
'[Document Editor]',
|
|
385
|
+
'🔄 Auto-saving after typing pause (data changed)...',
|
|
386
|
+
{
|
|
387
|
+
documentId
|
|
388
|
+
}
|
|
389
|
+
);
|
|
346
390
|
saveDocument(true); // auto-save
|
|
347
391
|
}, 1200); // Shorter delay - saves faster but still waits for typing pauses
|
|
348
392
|
} else if (!hasChanges) {
|
|
349
|
-
|
|
393
|
+
cmsLogger.debug('[Document Editor]', '⏭️ Skipping auto-save - no changes from saved data');
|
|
350
394
|
}
|
|
351
395
|
|
|
352
396
|
return () => {
|
|
@@ -368,7 +412,7 @@
|
|
|
368
412
|
// ALWAYS allow saving drafts (even with validation errors) - Sanity-style
|
|
369
413
|
if (isCreating) {
|
|
370
414
|
// Create new document
|
|
371
|
-
|
|
415
|
+
cmsLogger.debug('[Document Editor]', '🔄 Creating new document with data:', {
|
|
372
416
|
type: documentType,
|
|
373
417
|
data: documentData
|
|
374
418
|
});
|
|
@@ -377,10 +421,14 @@
|
|
|
377
421
|
data: documentData
|
|
378
422
|
});
|
|
379
423
|
|
|
380
|
-
|
|
424
|
+
cmsLogger.debug('[Document Editor]', '📝 Document creation response:', response);
|
|
381
425
|
|
|
382
426
|
if (response.success && response.data) {
|
|
383
|
-
|
|
427
|
+
cmsLogger.debug(
|
|
428
|
+
'[Document Editor]',
|
|
429
|
+
'✅ Document created successfully with ID:',
|
|
430
|
+
response.data.id
|
|
431
|
+
);
|
|
384
432
|
// Set flag to prevent loadDocumentData from overwriting our data
|
|
385
433
|
justCreatedDocument = true;
|
|
386
434
|
// Store the response data for hash comparison
|
|
@@ -388,7 +436,7 @@
|
|
|
388
436
|
// Always call onSaved to switch to edit mode after creation
|
|
389
437
|
onSaved?.(response.data.id);
|
|
390
438
|
} else {
|
|
391
|
-
|
|
439
|
+
toast.error(response?.error || 'Failed to create document');
|
|
392
440
|
}
|
|
393
441
|
} else if (documentId) {
|
|
394
442
|
// Update existing document
|
|
@@ -400,6 +448,8 @@
|
|
|
400
448
|
// We need to sync fullDocument to match what we just saved (documentData)
|
|
401
449
|
// instead of what the server returned, in case server adds extra metadata
|
|
402
450
|
if (response?.success && response.data) {
|
|
451
|
+
cmsLogger.debug('[Document Editor]', 'meta response data:', response.data);
|
|
452
|
+
// @ts-expect-error
|
|
403
453
|
const { id: responseId, _meta } = response.data;
|
|
404
454
|
// Reconstruct fullDocument using the data we sent (documentData)
|
|
405
455
|
// plus the id and _meta from the response
|
|
@@ -418,7 +468,7 @@
|
|
|
418
468
|
// Trigger validation on all fields after auto-save
|
|
419
469
|
validateAllFields(); // Update validation status
|
|
420
470
|
schemaFields.forEach((fieldComponent, index) => {
|
|
421
|
-
const field = schema
|
|
471
|
+
const field = schema?.fields[index];
|
|
422
472
|
if (fieldComponent && field) {
|
|
423
473
|
fieldComponent.performValidation(documentData[field.name], {});
|
|
424
474
|
}
|
|
@@ -431,7 +481,7 @@
|
|
|
431
481
|
throw new Error(response?.error || 'Failed to save document');
|
|
432
482
|
}
|
|
433
483
|
} catch (err) {
|
|
434
|
-
|
|
484
|
+
toast.error(err instanceof ApiError ? err.message : 'Failed to save document');
|
|
435
485
|
|
|
436
486
|
// Extract validation errors if present
|
|
437
487
|
if (err instanceof ApiError && err.response?.validationErrors) {
|
|
@@ -470,8 +520,8 @@
|
|
|
470
520
|
fullDocument = response.data;
|
|
471
521
|
lastSaved = new Date();
|
|
472
522
|
publishSuccess = new Date();
|
|
473
|
-
|
|
474
|
-
|
|
523
|
+
cmsLogger.debug('[Document Editor]', '✅ Document published successfully');
|
|
524
|
+
cmsLogger.debug('[Document Editor]', '📄 New published hash:', response.data.publishedHash);
|
|
475
525
|
|
|
476
526
|
// Notify parent that document was published
|
|
477
527
|
if (onPublished && documentId) {
|
|
@@ -481,7 +531,7 @@
|
|
|
481
531
|
throw new Error(response.error || 'Failed to publish document');
|
|
482
532
|
}
|
|
483
533
|
} catch (err) {
|
|
484
|
-
|
|
534
|
+
toast.error(err instanceof ApiError ? err.message : 'Failed to publish document');
|
|
485
535
|
|
|
486
536
|
// Extract validation errors if present
|
|
487
537
|
if (err instanceof ApiError && err.response?.validationErrors) {
|
|
@@ -518,14 +568,17 @@
|
|
|
518
568
|
const rule = validationFn(new Rule());
|
|
519
569
|
const markers = await rule.validate(documentData[field.name], { path: [field.name] });
|
|
520
570
|
|
|
521
|
-
if (markers.some((m) => m.level === 'error')) {
|
|
571
|
+
if (markers.some((m: any) => m.level === 'error')) {
|
|
522
572
|
errorsFound = true;
|
|
523
|
-
|
|
573
|
+
cmsLogger.debug(
|
|
574
|
+
`[DocumentEditor] Validation error in field '${field.name}':`,
|
|
575
|
+
markers
|
|
576
|
+
);
|
|
524
577
|
}
|
|
525
578
|
}
|
|
526
579
|
} catch (error) {
|
|
527
580
|
errorsFound = true;
|
|
528
|
-
|
|
581
|
+
toast.error(`Validation failed for field "${field.name}"`);
|
|
529
582
|
}
|
|
530
583
|
}
|
|
531
584
|
}
|
|
@@ -548,13 +601,13 @@
|
|
|
548
601
|
const response = await documents.deleteById(documentId);
|
|
549
602
|
|
|
550
603
|
if (response.success) {
|
|
551
|
-
|
|
604
|
+
cmsLogger.debug('[Document Editor]', '✅ Document deleted successfully');
|
|
552
605
|
onDeleted?.();
|
|
553
606
|
} else {
|
|
554
607
|
throw new Error(response.error || 'Failed to delete document');
|
|
555
608
|
}
|
|
556
609
|
} catch (err) {
|
|
557
|
-
|
|
610
|
+
toast.error(err instanceof ApiError ? err.message : 'Failed to delete document');
|
|
558
611
|
saveError = err instanceof ApiError ? err.message : 'Failed to delete document';
|
|
559
612
|
} finally {
|
|
560
613
|
saving = false;
|
|
@@ -590,18 +643,18 @@
|
|
|
590
643
|
let current = obj;
|
|
591
644
|
|
|
592
645
|
for (let i = 0; i < parts.length - 1; i++) {
|
|
593
|
-
const part = parts[i]
|
|
646
|
+
const part = parts[i]!;
|
|
594
647
|
if (part.includes('[') && part.includes(']')) {
|
|
595
648
|
// Handle array index like "items[0]"
|
|
596
649
|
const [key, indexStr] = part.split('[');
|
|
597
|
-
const index = parseInt(indexStr
|
|
598
|
-
current = current[key][index];
|
|
650
|
+
const index = parseInt(indexStr!.replace(']', ''));
|
|
651
|
+
current = current[key!][index];
|
|
599
652
|
} else {
|
|
600
653
|
current = current[part];
|
|
601
654
|
}
|
|
602
655
|
}
|
|
603
656
|
|
|
604
|
-
const lastPart = parts[parts.length - 1]
|
|
657
|
+
const lastPart = parts[parts.length - 1]!;
|
|
605
658
|
delete current[lastPart];
|
|
606
659
|
}
|
|
607
660
|
|
|
@@ -632,9 +685,9 @@
|
|
|
632
685
|
<div class="flex items-center gap-2">
|
|
633
686
|
{#if saving}
|
|
634
687
|
<span class="text-muted-foreground text-xs">Saving...</span>
|
|
635
|
-
{:else if
|
|
688
|
+
{:else if savedAgoText}
|
|
636
689
|
<span class="text-muted-foreground text-xs">
|
|
637
|
-
|
|
690
|
+
{savedAgoText}
|
|
638
691
|
</span>
|
|
639
692
|
{:else if hasUnsavedChanges}
|
|
640
693
|
<span class="text-muted-foreground text-xs">Unsaved changes</span>
|
|
@@ -657,12 +710,8 @@
|
|
|
657
710
|
<!-- Status badges -->
|
|
658
711
|
{#if saving}
|
|
659
712
|
<Badge variant="secondary" class="hidden sm:flex">Saving...</Badge>
|
|
660
|
-
{:else if publishSuccess &&
|
|
713
|
+
{:else if publishSuccess && now - publishSuccess.getTime() < 3000}
|
|
661
714
|
<Badge variant="default" class="hidden sm:flex">Published!</Badge>
|
|
662
|
-
{:else if hasUnpublishedContent}
|
|
663
|
-
<Badge variant="outline" class="hidden sm:flex">Unpublished</Badge>
|
|
664
|
-
{:else if lastSaved}
|
|
665
|
-
<Badge variant="secondary" class="hidden sm:flex">Saved</Badge>
|
|
666
715
|
{/if}
|
|
667
716
|
|
|
668
717
|
<!-- Close button (X) - hidden on mobile -->
|
|
@@ -775,22 +824,38 @@
|
|
|
775
824
|
{/if}
|
|
776
825
|
|
|
777
826
|
<!-- Dynamic Schema Fields -->
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
827
|
+
<svelte:boundary
|
|
828
|
+
onerror={(error) => cmsLogger.error('[DocumentEditor]', 'Error in editor content:', error)}
|
|
829
|
+
>
|
|
830
|
+
{#each schema.fields as field, index (index)}
|
|
831
|
+
<SchemaField
|
|
832
|
+
{field}
|
|
833
|
+
value={documentData[field.name]}
|
|
834
|
+
{documentData}
|
|
835
|
+
onUpdate={(newValue) => {
|
|
836
|
+
documentData = { ...documentData, [field.name]: newValue };
|
|
837
|
+
hasUnsavedChanges = true;
|
|
838
|
+
}}
|
|
839
|
+
{onOpenReference}
|
|
840
|
+
schemaType={documentType}
|
|
841
|
+
readonly={isReadOnly}
|
|
842
|
+
organizationId={fullDocument?._meta?.organizationId}
|
|
843
|
+
/>
|
|
844
|
+
{/each}
|
|
845
|
+
|
|
846
|
+
{#snippet failed(error, reset)}
|
|
847
|
+
<div class="border-destructive/30 bg-destructive/5 rounded-md border p-4 text-center">
|
|
848
|
+
<p class="text-destructive font-medium">Document editor encountered an error</p>
|
|
849
|
+
<p class="text-muted-foreground mt-1 text-sm">{error instanceof Error ? error.message : 'Unknown error'}</p>
|
|
850
|
+
<button
|
|
851
|
+
class="bg-primary text-primary-foreground mt-3 rounded px-4 py-2 text-sm"
|
|
852
|
+
onclick={reset}
|
|
853
|
+
>
|
|
854
|
+
Reload editor
|
|
855
|
+
</button>
|
|
856
|
+
</div>
|
|
857
|
+
{/snippet}
|
|
858
|
+
</svelte:boundary>
|
|
794
859
|
{:else}
|
|
795
860
|
<div class="border-muted-foreground/30 rounded-md border border-dashed p-4">
|
|
796
861
|
<p class="text-muted-foreground text-center text-sm">
|
|
@@ -808,14 +873,12 @@
|
|
|
808
873
|
<div class="flex items-center gap-2">
|
|
809
874
|
{#if saving}
|
|
810
875
|
<Badge variant="secondary">Saving...</Badge>
|
|
811
|
-
{:else if publishSuccess &&
|
|
876
|
+
{:else if publishSuccess && now - publishSuccess.getTime() < 3000}
|
|
812
877
|
<Badge variant="default">Published!</Badge>
|
|
813
878
|
{:else if hasUnsavedChanges}
|
|
814
879
|
<Badge variant="outline">Unsaved</Badge>
|
|
815
|
-
{:else if
|
|
816
|
-
<Badge variant="
|
|
817
|
-
{:else if lastSaved}
|
|
818
|
-
<Badge variant="secondary">Saved</Badge>
|
|
880
|
+
{:else if savedAgoText}
|
|
881
|
+
<Badge variant="secondary">{savedAgoText}</Badge>
|
|
819
882
|
{/if}
|
|
820
883
|
</div>
|
|
821
884
|
|
|
@@ -862,7 +925,7 @@
|
|
|
862
925
|
{#if showDropdown}
|
|
863
926
|
<!-- Dropdown menu -->
|
|
864
927
|
<div
|
|
865
|
-
class="bg-background border-border absolute bottom-full
|
|
928
|
+
class="bg-background border-border absolute right-0 bottom-full z-50 mb-2 min-w-[140px] rounded-md border py-1 shadow-lg"
|
|
866
929
|
>
|
|
867
930
|
<Button
|
|
868
931
|
variant="ghost"
|
|
@@ -877,7 +940,12 @@
|
|
|
877
940
|
</div>
|
|
878
941
|
|
|
879
942
|
<!-- Click outside to close -->
|
|
880
|
-
<div
|
|
943
|
+
<div
|
|
944
|
+
class="fixed inset-0 z-40"
|
|
945
|
+
use:elementEvents={{
|
|
946
|
+
events: [{ name: 'click', handler: () => (showDropdown = false) }]
|
|
947
|
+
}}
|
|
948
|
+
></div>
|
|
881
949
|
{/if}
|
|
882
950
|
</div>
|
|
883
951
|
{/if}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentEditor.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentEditor.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"DocumentEditor.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentEditor.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAUxD,UAAU,KAAK;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAg2BF,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { fade } from 'svelte/transition';
|
|
3
|
+
|
|
4
|
+
type Props = {
|
|
5
|
+
container_class?: string;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const { container_class = '' }: Props = $props();
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<div class="relative {container_class}" transition:fade={{ duration: 100 }}>
|
|
12
|
+
<div
|
|
13
|
+
class="from-muted/50 via-muted/30 absolute flex size-full animate-pulse flex-col items-center bg-linear-to-b to-transparent"
|
|
14
|
+
>
|
|
15
|
+
{#each new Array(3) as _, index (index)}
|
|
16
|
+
<div
|
|
17
|
+
class="border-border group flex w-full items-center justify-between border-b p-3"
|
|
18
|
+
style="opacity: {1 - index * 0.4}"
|
|
19
|
+
>
|
|
20
|
+
<div class="flex min-w-0 flex-1 items-center gap-3">
|
|
21
|
+
<div class="flex items-center justify-center">
|
|
22
|
+
<div class="bg-muted size-6 rounded dark:bg-white/10"></div>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="min-w-0 flex-1">
|
|
25
|
+
<!-- Title -->
|
|
26
|
+
<div class="h-5 w-4/5 pb-0.5">
|
|
27
|
+
<div class="bg-muted h-full w-full rounded dark:bg-white/10"></div>
|
|
28
|
+
</div>
|
|
29
|
+
<!-- Subtitle -->
|
|
30
|
+
<div class="h-4 w-3/5 pt-0.5">
|
|
31
|
+
<div class="bg-muted h-full w-full rounded dark:bg-white/10"></div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<!-- Date -->
|
|
36
|
+
<div class="bg-muted h-4 w-1/5 rounded dark:bg-white/10"></div>
|
|
37
|
+
</div>
|
|
38
|
+
{/each}
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type Props = {
|
|
2
|
+
container_class?: string;
|
|
3
|
+
};
|
|
4
|
+
declare const DocumentsSkeleton: import("svelte").Component<Props, {}, "">;
|
|
5
|
+
type DocumentsSkeleton = ReturnType<typeof DocumentsSkeleton>;
|
|
6
|
+
export default DocumentsSkeleton;
|
|
7
|
+
//# sourceMappingURL=DocumentsSkeleton.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentsSkeleton.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentsSkeleton.svelte.ts"],"names":[],"mappings":"AAMC,KAAK,KAAK,GAAG;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAoCH,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
|