@aphexcms/cms-core 0.2.2 → 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
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { SchemaType } from '../types/schemas.js';
|
|
2
|
+
/**
|
|
3
|
+
* Schema utility functions that work with a schema registry
|
|
4
|
+
* These functions accept schemas as parameters to avoid package-level dependencies
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Get a schema type by name from a collection of schemas
|
|
8
|
+
*/
|
|
9
|
+
export declare function getSchemaByName(schemas: SchemaType[], name: string): SchemaType | null;
|
|
10
|
+
/**
|
|
11
|
+
* Get all available object types (for array field dropdowns)
|
|
12
|
+
*/
|
|
13
|
+
export declare function getObjectTypes(schemas: SchemaType[]): SchemaType[];
|
|
14
|
+
/**
|
|
15
|
+
* Get all available document types
|
|
16
|
+
*/
|
|
17
|
+
export declare function getDocumentTypes(schemas: SchemaType[]): SchemaType[];
|
|
18
|
+
/**
|
|
19
|
+
* Check if a schema type exists
|
|
20
|
+
*/
|
|
21
|
+
export declare function schemaExists(schemas: SchemaType[], name: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Get the available types for an array field
|
|
24
|
+
* Supports both schema references and inline object definitions
|
|
25
|
+
*/
|
|
26
|
+
export declare function getArrayTypes(schemas: SchemaType[], arrayField: {
|
|
27
|
+
of?: Array<{
|
|
28
|
+
type: string;
|
|
29
|
+
name?: string;
|
|
30
|
+
title?: string;
|
|
31
|
+
fields?: any[];
|
|
32
|
+
}>;
|
|
33
|
+
}): SchemaType[];
|
|
34
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/schema-utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAEtF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAElE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAEpE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC5B,OAAO,EAAE,UAAU,EAAE,EACrB,UAAU,EAAE;IAAE,EAAE,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,GACzF,UAAU,EAAE,CA0Bd"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema utility functions that work with a schema registry
|
|
3
|
+
* These functions accept schemas as parameters to avoid package-level dependencies
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Get a schema type by name from a collection of schemas
|
|
7
|
+
*/
|
|
8
|
+
export function getSchemaByName(schemas, name) {
|
|
9
|
+
return schemas.find((schema) => schema.name === name) || null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Get all available object types (for array field dropdowns)
|
|
13
|
+
*/
|
|
14
|
+
export function getObjectTypes(schemas) {
|
|
15
|
+
return schemas.filter((schema) => schema.type === 'object');
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get all available document types
|
|
19
|
+
*/
|
|
20
|
+
export function getDocumentTypes(schemas) {
|
|
21
|
+
return schemas.filter((schema) => schema.type === 'document');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if a schema type exists
|
|
25
|
+
*/
|
|
26
|
+
export function schemaExists(schemas, name) {
|
|
27
|
+
return schemas.some((schema) => schema.name === name);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get the available types for an array field
|
|
31
|
+
* Supports both schema references and inline object definitions
|
|
32
|
+
*/
|
|
33
|
+
export function getArrayTypes(schemas, arrayField) {
|
|
34
|
+
if (!arrayField.of)
|
|
35
|
+
return [];
|
|
36
|
+
const availableTypes = [];
|
|
37
|
+
arrayField.of.forEach((item) => {
|
|
38
|
+
// Check if this is an inline object definition
|
|
39
|
+
if (item.fields) {
|
|
40
|
+
// Create a temporary SchemaType from inline definition
|
|
41
|
+
const schemaName = item.name || item.type;
|
|
42
|
+
availableTypes.push({
|
|
43
|
+
type: 'object',
|
|
44
|
+
name: schemaName,
|
|
45
|
+
title: item.title || item.name || item.type,
|
|
46
|
+
fields: item.fields
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Look it up in the schema registry
|
|
51
|
+
const schema = schemas.find((s) => s.name === item.type);
|
|
52
|
+
if (schema) {
|
|
53
|
+
availableTypes.push(schema);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return availableTypes;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/schema-utils/utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAqB,EAAE,IAAY;IAClE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAqB;IACnD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAqB;IACrD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAqB,EAAE,IAAY;IAC/D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC5B,OAAqB,EACrB,UAA2F;IAE3F,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IAE9B,MAAM,cAAc,GAAiB,EAAE,CAAC;IAExC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9B,+CAA+C;QAC/C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,uDAAuD;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;YAC1C,cAAc,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;gBAC3C,MAAM,EAAE,IAAI,CAAC,MAAM;aACnB,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACP,oCAAoC;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,MAAM,EAAE,CAAC;gBACZ,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SchemaType } from '../types/schemas.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check if a field name is reserved
|
|
4
|
+
*/
|
|
5
|
+
export declare function isReservedFieldName(fieldName: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Validate all schema references to ensure they exist
|
|
8
|
+
*/
|
|
9
|
+
export declare function validateSchemaReferences(schemas: SchemaType[]): void;
|
|
10
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/lib/schema-utils/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,kBAAkB,CAAC;AAmB1D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAoMpE"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { cmsLogger } from '../utils/logger.js';
|
|
2
|
+
// Reserved field names that conflict with system properties
|
|
3
|
+
const RESERVED_FIELD_NAMES = [
|
|
4
|
+
'id',
|
|
5
|
+
'type',
|
|
6
|
+
'status',
|
|
7
|
+
'organizationId',
|
|
8
|
+
'createdBy',
|
|
9
|
+
'updatedBy',
|
|
10
|
+
'createdAt',
|
|
11
|
+
'updatedAt',
|
|
12
|
+
'publishedAt',
|
|
13
|
+
'draftData',
|
|
14
|
+
'publishedData',
|
|
15
|
+
'publishedHash'
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Check if a field name is reserved
|
|
19
|
+
*/
|
|
20
|
+
export function isReservedFieldName(fieldName) {
|
|
21
|
+
return RESERVED_FIELD_NAMES.includes(fieldName);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Validate all schema references to ensure they exist
|
|
25
|
+
*/
|
|
26
|
+
export function validateSchemaReferences(schemas) {
|
|
27
|
+
const schemaNames = new Set(schemas.map((schema) => schema.name));
|
|
28
|
+
const errors = [];
|
|
29
|
+
// Primitive field types that don't need schema validation
|
|
30
|
+
const primitiveTypes = [
|
|
31
|
+
'string',
|
|
32
|
+
'text',
|
|
33
|
+
'number',
|
|
34
|
+
'boolean',
|
|
35
|
+
'slug',
|
|
36
|
+
'url',
|
|
37
|
+
'image',
|
|
38
|
+
'date',
|
|
39
|
+
'datetime',
|
|
40
|
+
'reference'
|
|
41
|
+
];
|
|
42
|
+
const validFieldTypes = [...primitiveTypes, 'array', 'object'];
|
|
43
|
+
function validateField(field, parentSchema) {
|
|
44
|
+
// Check that field has a valid type (cast to any to access name property)
|
|
45
|
+
if (!field.type) {
|
|
46
|
+
errors.push(`Schema "${parentSchema}" field "${field.name || 'unknown'}" is missing required "type" property`);
|
|
47
|
+
return; // Skip further validation if type is missing
|
|
48
|
+
}
|
|
49
|
+
if (!validFieldTypes.includes(field.type)) {
|
|
50
|
+
errors.push(`Schema "${parentSchema}" field "${field.name}" has invalid type "${field.type}". Valid types: ${validFieldTypes.join(', ')}`);
|
|
51
|
+
}
|
|
52
|
+
// Check for reserved field names
|
|
53
|
+
if (isReservedFieldName(field.name)) {
|
|
54
|
+
errors.push(`Schema "${parentSchema}" uses reserved field name "${field.name}". Reserved names: ${RESERVED_FIELD_NAMES.join(', ')}`);
|
|
55
|
+
}
|
|
56
|
+
// Check array field references
|
|
57
|
+
if (field.type === 'array' && field.of) {
|
|
58
|
+
for (const arrayType of field.of) {
|
|
59
|
+
// Skip validation for primitive types and inline objects
|
|
60
|
+
if (primitiveTypes.includes(arrayType.type)) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
// Skip inline object definitions (has fields property)
|
|
64
|
+
if (arrayType.type === 'object' && arrayType.fields) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// Only validate if it's a reference to another schema
|
|
68
|
+
if (!schemaNames.has(arrayType.type)) {
|
|
69
|
+
errors.push(`Schema "${parentSchema}" field "${field.name}" references unknown type "${arrayType.type}"`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Check object field references (if they reference external types)
|
|
74
|
+
if (field.type === 'object' && typeof field.fields === 'string') {
|
|
75
|
+
if (!schemaNames.has(field.fields)) {
|
|
76
|
+
errors.push(`Schema "${parentSchema}" field "${field.name}" references unknown object type "${field.fields}"`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Check reference field targets
|
|
80
|
+
if (field.type === 'reference' && 'to' in field && field.to) {
|
|
81
|
+
for (const target of field.to) {
|
|
82
|
+
if (!schemaNames.has(target.type)) {
|
|
83
|
+
errors.push(`Schema "${parentSchema}" field "${field.name}" references unknown document type "${target.type}"`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Recursively check nested fields -- cast type later or something. cba
|
|
88
|
+
if ('fields' in field && Array.isArray(field.fields)) {
|
|
89
|
+
for (const nestedField of field.fields) {
|
|
90
|
+
validateField(nestedField, parentSchema);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Validate each schema
|
|
95
|
+
for (const schema of schemas) {
|
|
96
|
+
// Validate schema type
|
|
97
|
+
if (schema.type !== 'document' && schema.type !== 'object') {
|
|
98
|
+
errors.push(`Schema "${schema.name}" has invalid type "${schema.type}". Must be "document" or "object"`);
|
|
99
|
+
}
|
|
100
|
+
if (schema.fields) {
|
|
101
|
+
for (const field of schema.fields) {
|
|
102
|
+
validateField(field, schema.name);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Validate preview config references
|
|
106
|
+
if (schema.preview?.select) {
|
|
107
|
+
const fieldNames = new Set(schema.fields?.map((f) => f.name) || []);
|
|
108
|
+
// Validate title field reference
|
|
109
|
+
if (schema.preview.select.title && !fieldNames.has(schema.preview.select.title)) {
|
|
110
|
+
errors.push(`Schema "${schema.name}" preview.select.title references unknown field "${schema.preview.select.title}"`);
|
|
111
|
+
}
|
|
112
|
+
// Validate subtitle field reference
|
|
113
|
+
if (schema.preview.select.subtitle && !fieldNames.has(schema.preview.select.subtitle)) {
|
|
114
|
+
errors.push(`Schema "${schema.name}" preview.select.subtitle references unknown field "${schema.preview.select.subtitle}"`);
|
|
115
|
+
}
|
|
116
|
+
// Validate media field reference
|
|
117
|
+
if (schema.preview.select.media && !fieldNames.has(schema.preview.select.media)) {
|
|
118
|
+
errors.push(`Schema "${schema.name}" preview.select.media references unknown field "${schema.preview.select.media}"`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Validate orderings
|
|
122
|
+
if (schema.orderings && schema.orderings.length > 0) {
|
|
123
|
+
const fieldNames = new Set(schema.fields?.map((f) => f.name) || []);
|
|
124
|
+
// Add meta fields that are always available
|
|
125
|
+
fieldNames.add('createdAt');
|
|
126
|
+
fieldNames.add('updatedAt');
|
|
127
|
+
for (const ordering of schema.orderings) {
|
|
128
|
+
// Validate ordering has required properties
|
|
129
|
+
if (!ordering.name) {
|
|
130
|
+
errors.push(`Schema "${schema.name}" has an ordering without a "name" property`);
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (!ordering.title) {
|
|
134
|
+
errors.push(`Schema "${schema.name}" ordering "${ordering.name}" is missing required "title" property`);
|
|
135
|
+
}
|
|
136
|
+
if (!ordering.by || ordering.by.length === 0) {
|
|
137
|
+
errors.push(`Schema "${schema.name}" ordering "${ordering.name}" is missing required "by" array`);
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
// Validate each field in the ordering
|
|
141
|
+
for (const orderItem of ordering.by) {
|
|
142
|
+
if (!orderItem.field) {
|
|
143
|
+
errors.push(`Schema "${schema.name}" ordering "${ordering.name}" has an item without a "field" property`);
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (!fieldNames.has(orderItem.field)) {
|
|
147
|
+
errors.push(`Schema "${schema.name}" ordering "${ordering.name}" references unknown field "${orderItem.field}"`);
|
|
148
|
+
}
|
|
149
|
+
if (orderItem.direction &&
|
|
150
|
+
orderItem.direction !== 'asc' &&
|
|
151
|
+
orderItem.direction !== 'desc') {
|
|
152
|
+
errors.push(`Schema "${schema.name}" ordering "${ordering.name}" field "${orderItem.field}" has invalid direction "${orderItem.direction}". Must be "asc" or "desc"`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Throw error if any validation issues found
|
|
159
|
+
if (errors.length > 0) {
|
|
160
|
+
cmsLogger.error('[Schema]', 'Validation errors:');
|
|
161
|
+
errors.forEach((error) => cmsLogger.error('[Schema]', error));
|
|
162
|
+
// Just throw the errors directly
|
|
163
|
+
throw new Error(errors.join('\n'));
|
|
164
|
+
}
|
|
165
|
+
cmsLogger.info('[Schema]', 'Validation passed - all references are valid');
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/lib/schema-utils/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from '../types/index.js';
|
|
2
|
+
export * from '../auth/provider.js';
|
|
3
|
+
export * from '../email/index.js';
|
|
4
|
+
export { AuthError, type AuthErrorCode } from '../auth/auth-errors.js';
|
|
5
|
+
export { createCMSConfig } from '../config.js';
|
|
6
|
+
export { CMSEngine } from '../engine.js';
|
|
7
|
+
export { createCMSHook, type CMSInstances } from '../hooks.js';
|
|
8
|
+
export * from '../db/interfaces/index.js';
|
|
9
|
+
export * from '../storage/index.js';
|
|
10
|
+
export * from '../storage/interfaces/index.js';
|
|
11
|
+
export * from '../storage/providers/storage.js';
|
|
12
|
+
export * from '../services/index.js';
|
|
13
|
+
export { AssetService } from '../services/asset-service.js';
|
|
14
|
+
export * from '../routes-exports.js';
|
|
15
|
+
export * from '../schema-utils/index.js';
|
|
16
|
+
export { createHashForPublishing } from '../utils/content-hash.js';
|
|
17
|
+
export { createGraphQLHandler, type GraphQLConfig, type GraphQLSettings, type GraphQLHandlerResult } from '../graphql/index.js';
|
|
18
|
+
export { LocalAPI, createLocalAPI, getLocalAPI, CollectionAPI, PermissionChecker, PermissionError, type Collections, type LocalAPIContext, type CreateOptions, type UpdateOptions } from '../local-api/index.js';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/server/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAG5D,cAAc,wBAAwB,CAAC;AAGvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,cAAc,mBAAmB,CAAC;AAGlC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EACN,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACN,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Aphex CMS Core - Server-side exports
|
|
2
|
+
// These require Node.js and should NOT be imported client-side
|
|
3
|
+
// Export all core types from the new central location
|
|
4
|
+
export * from '../types/index.js';
|
|
5
|
+
export * from '../auth/provider.js';
|
|
6
|
+
export * from '../email/index.js';
|
|
7
|
+
// Authentication errors
|
|
8
|
+
export { AuthError } from '../auth/auth-errors.js';
|
|
9
|
+
// Configuration system
|
|
10
|
+
export { createCMSConfig } from '../config.js';
|
|
11
|
+
// CMS Engine
|
|
12
|
+
export { CMSEngine } from '../engine.js';
|
|
13
|
+
// Hooks integration (SvelteKit server hooks)
|
|
14
|
+
export { createCMSHook } from '../hooks.js';
|
|
15
|
+
// Database interfaces (no longer export registry or adapters - use adapter packages)
|
|
16
|
+
export * from '../db/interfaces/index.js';
|
|
17
|
+
// Storage adapters and interfaces
|
|
18
|
+
export * from '../storage/index.js';
|
|
19
|
+
export * from '../storage/interfaces/index.js';
|
|
20
|
+
export * from '../storage/providers/storage.js';
|
|
21
|
+
// Services (includes sharp for image processing)
|
|
22
|
+
export * from '../services/index.js';
|
|
23
|
+
export { AssetService } from '../services/asset-service.js';
|
|
24
|
+
// API Route handlers (for re-exporting in your app's API routes)
|
|
25
|
+
// Re-export from routes-exports to avoid .js extension issues in workspace
|
|
26
|
+
export * from '../routes-exports.js';
|
|
27
|
+
// Schema utilities
|
|
28
|
+
export * from '../schema-utils/index.js';
|
|
29
|
+
// Content hash utilities (server-side)
|
|
30
|
+
export { createHashForPublishing } from '../utils/content-hash.js';
|
|
31
|
+
// GraphQL (built-in, enabled by default)
|
|
32
|
+
export { createGraphQLHandler } from '../graphql/index.js';
|
|
33
|
+
// Local API (unified operations layer)
|
|
34
|
+
export { LocalAPI, createLocalAPI, getLocalAPI, CollectionAPI, PermissionChecker, PermissionError } from '../local-api/index.js';
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/server/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,+DAA+D;AAE/D,sDAAsD;AACtD,cAAc,gBAAgB,CAAC;AAE/B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,gBAAgB,CAAC;AAE/B,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AAEpE,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,6CAA6C;AAC7C,OAAO,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAC;AAE5D,qFAAqF;AACrF,cAAc,wBAAwB,CAAC;AAEvC,kCAAkC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAE7C,iDAAiD;AACjD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,iEAAiE;AACjE,2EAA2E;AAC3E,cAAc,mBAAmB,CAAC;AAElC,mBAAmB;AACnB,cAAc,uBAAuB,CAAC;AAEtC,uCAAuC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,yCAAyC;AACzC,OAAO,EACN,oBAAoB,EAIpB,MAAM,kBAAkB,CAAC;AAE1B,uCAAuC;AACvC,OAAO,EACN,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,eAAe,EAKf,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { StorageAdapter } from '../storage/interfaces/storage.js';
|
|
2
|
+
import type { DatabaseAdapter } from '../db/interfaces/index.js';
|
|
3
|
+
import type { Asset } from '../types/index.js';
|
|
4
|
+
export interface AssetUploadData {
|
|
5
|
+
buffer: Buffer;
|
|
6
|
+
originalFilename: string;
|
|
7
|
+
mimeType: string;
|
|
8
|
+
size: number;
|
|
9
|
+
title?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
alt?: string;
|
|
12
|
+
creditLine?: string;
|
|
13
|
+
createdBy?: string;
|
|
14
|
+
metadata?: {
|
|
15
|
+
schemaType?: string;
|
|
16
|
+
fieldPath?: string;
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface AssetFilters {
|
|
21
|
+
assetType?: 'image' | 'file';
|
|
22
|
+
mimeType?: string;
|
|
23
|
+
search?: string;
|
|
24
|
+
limit?: number;
|
|
25
|
+
offset?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Asset service - coordinates storage and database operations
|
|
29
|
+
* Maintains separation of concerns while providing unified asset management
|
|
30
|
+
*/
|
|
31
|
+
export declare class AssetService {
|
|
32
|
+
private storage;
|
|
33
|
+
private database;
|
|
34
|
+
constructor(storage: StorageAdapter, database: DatabaseAdapter);
|
|
35
|
+
/**
|
|
36
|
+
* Upload and store an asset
|
|
37
|
+
*/
|
|
38
|
+
uploadAsset(organizationId: string, data: AssetUploadData): Promise<Asset>;
|
|
39
|
+
/**
|
|
40
|
+
* Find asset by ID
|
|
41
|
+
*/
|
|
42
|
+
findAssetById(organizationId: string, id: string): Promise<Asset | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Find asset by ID globally (bypasses organization filter for public asset access)
|
|
45
|
+
* Only available on PostgreSQL adapter with RLS bypass
|
|
46
|
+
*/
|
|
47
|
+
findAssetByIdGlobal(id: string): Promise<Asset | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Find multiple assets with filtering
|
|
50
|
+
*/
|
|
51
|
+
findAssets(organizationId: string, filters?: AssetFilters): Promise<Asset[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Delete asset (both file and database record)
|
|
54
|
+
*
|
|
55
|
+
* Note: If the asset was stored by a different adapter (e.g., switching from R2 to local),
|
|
56
|
+
* file deletion may fail. The database record will still be removed for a clean state.
|
|
57
|
+
*/
|
|
58
|
+
deleteAsset(organizationId: string, id: string): Promise<boolean>;
|
|
59
|
+
/**
|
|
60
|
+
* Update asset metadata
|
|
61
|
+
*/
|
|
62
|
+
updateAssetMetadata(organizationId: string, id: string, metadata: {
|
|
63
|
+
title?: string;
|
|
64
|
+
description?: string;
|
|
65
|
+
alt?: string;
|
|
66
|
+
creditLine?: string;
|
|
67
|
+
updatedBy?: string;
|
|
68
|
+
}): Promise<Asset | null>;
|
|
69
|
+
/**
|
|
70
|
+
* Get asset statistics
|
|
71
|
+
*/
|
|
72
|
+
getAssetStats(organizationId: string): Promise<{
|
|
73
|
+
totalAssets: number;
|
|
74
|
+
totalImages: number;
|
|
75
|
+
totalFiles: number;
|
|
76
|
+
totalSize: number;
|
|
77
|
+
}>;
|
|
78
|
+
/**
|
|
79
|
+
* Get health status of both storage and database
|
|
80
|
+
*/
|
|
81
|
+
getHealthStatus(): Promise<{
|
|
82
|
+
storage: boolean;
|
|
83
|
+
database: boolean;
|
|
84
|
+
}>;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=asset-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/asset-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACnB,CAAC;CACF;AAED,MAAM,WAAW,YAAY;IAC5B,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,YAAY;IAEvB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;gBADR,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,eAAe;IAGlC;;OAEG;IACG,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAoFhF;;OAEG;IACG,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAI9E;;;OAGG;IACG,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAmB5D;;OAEG;IACG,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAItF;;;;;OAKG;IACG,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvE;;OAEG;IACG,mBAAmB,CACxB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,GACC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIxB;;OAEG;IACG,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QACpD,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KAClB,CAAC;IAeF;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC;QAChC,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;KAClB,CAAC;CAWF"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
// Asset service - orchestrates storage and database operations
|
|
2
|
+
import sharp from 'sharp';
|
|
3
|
+
import { cmsLogger } from '../utils/logger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Asset service - coordinates storage and database operations
|
|
6
|
+
* Maintains separation of concerns while providing unified asset management
|
|
7
|
+
*/
|
|
8
|
+
export class AssetService {
|
|
9
|
+
storage;
|
|
10
|
+
database;
|
|
11
|
+
constructor(storage, database) {
|
|
12
|
+
this.storage = storage;
|
|
13
|
+
this.database = database;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Upload and store an asset
|
|
17
|
+
*/
|
|
18
|
+
async uploadAsset(organizationId, data) {
|
|
19
|
+
// Determine asset type
|
|
20
|
+
const assetType = data.mimeType.startsWith('image/') ? 'image' : 'file';
|
|
21
|
+
// Extract image metadata if it's an image
|
|
22
|
+
let width;
|
|
23
|
+
let height;
|
|
24
|
+
let metadata = {
|
|
25
|
+
// Include field metadata for privacy checking
|
|
26
|
+
...data.metadata
|
|
27
|
+
};
|
|
28
|
+
if (assetType === 'image') {
|
|
29
|
+
try {
|
|
30
|
+
const imageMetadata = await sharp(data.buffer).metadata();
|
|
31
|
+
width = imageMetadata.width;
|
|
32
|
+
height = imageMetadata.height;
|
|
33
|
+
// Merge image metadata with field metadata
|
|
34
|
+
metadata = {
|
|
35
|
+
...metadata, // Keep schemaType and fieldPath
|
|
36
|
+
format: imageMetadata.format,
|
|
37
|
+
space: imageMetadata.space,
|
|
38
|
+
channels: imageMetadata.channels,
|
|
39
|
+
density: imageMetadata.density,
|
|
40
|
+
hasProfile: imageMetadata.hasProfile,
|
|
41
|
+
hasAlpha: imageMetadata.hasAlpha
|
|
42
|
+
};
|
|
43
|
+
// Add dominant color
|
|
44
|
+
const stats = await sharp(data.buffer).stats();
|
|
45
|
+
metadata.dominantColor = stats.dominant;
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
cmsLogger.warn('Could not extract image metadata:', error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// 1. Store file using storage adapter
|
|
52
|
+
const storageFile = await this.storage.store({
|
|
53
|
+
buffer: data.buffer,
|
|
54
|
+
filename: data.originalFilename,
|
|
55
|
+
mimeType: data.mimeType,
|
|
56
|
+
size: data.size
|
|
57
|
+
});
|
|
58
|
+
// 2. Save asset metadata using database adapter
|
|
59
|
+
try {
|
|
60
|
+
const asset = await this.database.createAsset({
|
|
61
|
+
assetType,
|
|
62
|
+
filename: storageFile.path.split('/').pop() || data.originalFilename,
|
|
63
|
+
originalFilename: data.originalFilename,
|
|
64
|
+
mimeType: data.mimeType,
|
|
65
|
+
size: data.size,
|
|
66
|
+
url: storageFile.url || '', // Empty for local storage initially
|
|
67
|
+
path: storageFile.path,
|
|
68
|
+
storageAdapter: this.storage.name,
|
|
69
|
+
organizationId,
|
|
70
|
+
width,
|
|
71
|
+
height,
|
|
72
|
+
metadata,
|
|
73
|
+
title: data.title || undefined,
|
|
74
|
+
description: data.description || undefined,
|
|
75
|
+
alt: data.alt || undefined,
|
|
76
|
+
creditLine: data.creditLine || undefined,
|
|
77
|
+
createdBy: data.createdBy
|
|
78
|
+
});
|
|
79
|
+
// If using local storage, generate and store the CDN URL with the real asset ID
|
|
80
|
+
if (!storageFile.url) {
|
|
81
|
+
const cdnUrl = `/media/${asset.id}/${encodeURIComponent(asset.originalFilename)}`;
|
|
82
|
+
// Update both the object and the database
|
|
83
|
+
asset.url = cdnUrl;
|
|
84
|
+
await this.database.updateAsset(organizationId, asset.id, { url: cdnUrl });
|
|
85
|
+
}
|
|
86
|
+
return asset;
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
// If database save fails, clean up the stored file
|
|
90
|
+
await this.storage.delete(storageFile.path);
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Find asset by ID
|
|
96
|
+
*/
|
|
97
|
+
async findAssetById(organizationId, id) {
|
|
98
|
+
return await this.database.findAssetById(organizationId, id);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Find asset by ID globally (bypasses organization filter for public asset access)
|
|
102
|
+
* Only available on PostgreSQL adapter with RLS bypass
|
|
103
|
+
*/
|
|
104
|
+
async findAssetByIdGlobal(id) {
|
|
105
|
+
// Check if the adapter has the global method
|
|
106
|
+
if ('findAssetByIdGlobal' in this.database &&
|
|
107
|
+
typeof this.database.findAssetByIdGlobal === 'function') {
|
|
108
|
+
cmsLogger.debug('[AssetService] Using findAssetByIdGlobal from adapter');
|
|
109
|
+
return await this.database.findAssetByIdGlobal(id);
|
|
110
|
+
}
|
|
111
|
+
// Fallback: not supported
|
|
112
|
+
cmsLogger.warn('[AssetService] findAssetByIdGlobal not supported by this database adapter');
|
|
113
|
+
cmsLogger.warn('[AssetService] Database adapter type:', this.database.constructor.name);
|
|
114
|
+
cmsLogger.warn('[AssetService] Available methods:', Object.getOwnPropertyNames(Object.getPrototypeOf(this.database)));
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Find multiple assets with filtering
|
|
119
|
+
*/
|
|
120
|
+
async findAssets(organizationId, filters = {}) {
|
|
121
|
+
return await this.database.findAssets(organizationId, filters);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Delete asset (both file and database record)
|
|
125
|
+
*
|
|
126
|
+
* Note: If the asset was stored by a different adapter (e.g., switching from R2 to local),
|
|
127
|
+
* file deletion may fail. The database record will still be removed for a clean state.
|
|
128
|
+
*/
|
|
129
|
+
async deleteAsset(organizationId, id) {
|
|
130
|
+
const asset = await this.database.findAssetById(organizationId, id);
|
|
131
|
+
if (!asset) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
// Try to delete file from storage
|
|
135
|
+
// If the asset was stored by a different adapter, this may fail
|
|
136
|
+
if (asset.storageAdapter === this.storage.name) {
|
|
137
|
+
// Same adapter - delete should work
|
|
138
|
+
try {
|
|
139
|
+
await this.storage.delete(asset.path);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
cmsLogger.warn(`Failed to delete file from storage: ${asset.path}`, error);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// Different adapter - log warning but continue with database cleanup
|
|
147
|
+
cmsLogger.warn(`Asset ${id} was stored by '${asset.storageAdapter}' but current adapter is '${this.storage.name}'. ` +
|
|
148
|
+
`File at ${asset.path} may need manual cleanup.`);
|
|
149
|
+
}
|
|
150
|
+
// Always delete database record for clean state
|
|
151
|
+
return await this.database.deleteAsset(organizationId, id);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Update asset metadata
|
|
155
|
+
*/
|
|
156
|
+
async updateAssetMetadata(organizationId, id, metadata) {
|
|
157
|
+
return await this.database.updateAsset(organizationId, id, metadata);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get asset statistics
|
|
161
|
+
*/
|
|
162
|
+
async getAssetStats(organizationId) {
|
|
163
|
+
const [totalAssets, assetsByType, totalSize] = await Promise.all([
|
|
164
|
+
this.database.countAssets(organizationId),
|
|
165
|
+
this.database.countAssetsByType(organizationId),
|
|
166
|
+
this.database.getTotalAssetsSize(organizationId)
|
|
167
|
+
]);
|
|
168
|
+
return {
|
|
169
|
+
totalAssets,
|
|
170
|
+
totalImages: assetsByType.image || 0,
|
|
171
|
+
totalFiles: assetsByType.file || 0,
|
|
172
|
+
totalSize
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get health status of both storage and database
|
|
177
|
+
*/
|
|
178
|
+
async getHealthStatus() {
|
|
179
|
+
const [storageHealthy, databaseHealthy] = await Promise.all([
|
|
180
|
+
this.storage.isHealthy(),
|
|
181
|
+
this.database.isHealthy()
|
|
182
|
+
]);
|
|
183
|
+
return {
|
|
184
|
+
storage: storageHealthy,
|
|
185
|
+
database: databaseHealthy
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=asset-service.js.map
|