@aphexcms/cms-core 0.1.1 → 0.1.4
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/assets.d.ts +48 -0
- package/dist/api/assets.d.ts.map +1 -0
- package/dist/api/assets.js +52 -0
- package/dist/api/client.d.ts +37 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +125 -0
- package/dist/api/documents.d.ts +56 -0
- package/dist/api/documents.d.ts.map +1 -0
- package/dist/api/documents.js +77 -0
- package/{src/api/index.ts → dist/api/index.d.ts} +1 -1
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +5 -0
- package/dist/api/organizations.d.ts +101 -0
- package/dist/api/organizations.d.ts.map +1 -0
- package/dist/api/organizations.js +92 -0
- package/dist/api/types.d.ts +23 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +1 -0
- package/dist/auth/auth-errors.d.ts +7 -0
- package/dist/auth/auth-errors.d.ts.map +1 -0
- package/dist/auth/auth-errors.js +13 -0
- package/dist/auth/auth-hooks.d.ts +6 -0
- package/dist/auth/auth-hooks.d.ts.map +1 -0
- package/dist/auth/auth-hooks.js +108 -0
- package/dist/auth/provider.d.ts +17 -0
- package/dist/auth/provider.d.ts.map +1 -0
- package/dist/auth/provider.js +1 -0
- package/dist/client/index.d.ts +24 -0
- package/dist/client/index.d.ts.map +1 -0
- package/{src/client/index.ts → dist/client/index.js} +0 -16
- package/{src → dist}/components/AdminApp.svelte +7 -8
- package/dist/components/AdminApp.svelte.d.ts +24 -0
- package/dist/components/AdminApp.svelte.d.ts.map +1 -0
- package/dist/components/admin/AdminLayout.svelte.d.ts +15 -0
- package/dist/components/admin/AdminLayout.svelte.d.ts.map +1 -0
- package/dist/components/admin/DocumentEditor.svelte.d.ts +18 -0
- package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -0
- package/dist/components/admin/DocumentTypesList.svelte.d.ts +14 -0
- package/dist/components/admin/DocumentTypesList.svelte.d.ts.map +1 -0
- package/dist/components/admin/ObjectModal.svelte.d.ts +15 -0
- package/dist/components/admin/ObjectModal.svelte.d.ts.map +1 -0
- package/dist/components/admin/SchemaField.svelte.d.ts +19 -0
- package/dist/components/admin/SchemaField.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/ArrayField.svelte.d.ts +12 -0
- package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/BooleanField.svelte.d.ts +13 -0
- package/dist/components/admin/fields/BooleanField.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/ImageField.svelte.d.ts +15 -0
- package/dist/components/admin/fields/ImageField.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/NumberField.svelte.d.ts +14 -0
- package/dist/components/admin/fields/NumberField.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/ReferenceField.svelte.d.ts +12 -0
- package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/SlugField.svelte.d.ts +15 -0
- package/dist/components/admin/fields/SlugField.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/StringField.svelte.d.ts +14 -0
- package/dist/components/admin/fields/StringField.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/TextareaField.svelte.d.ts +14 -0
- package/dist/components/admin/fields/TextareaField.svelte.d.ts.map +1 -0
- package/dist/components/fields/index.d.ts +9 -0
- package/dist/components/fields/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +7 -0
- package/dist/components/index.d.ts.map +1 -0
- package/{src/components/index.ts → dist/components/index.js} +0 -4
- package/dist/components/layout/OrganizationSwitcher.svelte.d.ts +11 -0
- package/dist/components/layout/OrganizationSwitcher.svelte.d.ts.map +1 -0
- package/{src → dist}/components/layout/Sidebar.svelte +7 -7
- package/dist/components/layout/Sidebar.svelte.d.ts +14 -0
- package/dist/components/layout/Sidebar.svelte.d.ts.map +1 -0
- package/dist/components/layout/sidebar/AppSidebar.svelte.d.ts +11 -0
- package/dist/components/layout/sidebar/AppSidebar.svelte.d.ts.map +1 -0
- package/dist/components/layout/sidebar/NavMain.svelte.d.ts +19 -0
- package/dist/components/layout/sidebar/NavMain.svelte.d.ts.map +1 -0
- package/dist/components/layout/sidebar/NavSecondary.svelte.d.ts +9 -0
- package/dist/components/layout/sidebar/NavSecondary.svelte.d.ts.map +1 -0
- package/dist/components/layout/sidebar/NavUser.svelte.d.ts +9 -0
- package/dist/components/layout/sidebar/NavUser.svelte.d.ts.map +1 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +15 -0
- package/dist/db/adapters/index.d.ts +1 -0
- package/dist/db/adapters/index.d.ts.map +1 -0
- package/{src/db/adapters/index.ts → dist/db/adapters/index.js} +1 -0
- package/dist/db/index.d.ts +2 -0
- package/dist/db/index.d.ts.map +1 -0
- package/{src/db/index.ts → dist/db/index.js} +0 -1
- package/dist/db/interfaces/asset.d.ts +51 -0
- package/dist/db/interfaces/asset.d.ts.map +1 -0
- package/dist/db/interfaces/asset.js +1 -0
- package/dist/db/interfaces/document.d.ts +36 -0
- package/dist/db/interfaces/document.d.ts.map +1 -0
- package/dist/db/interfaces/document.js +1 -0
- package/dist/db/interfaces/index.d.ts +73 -0
- package/dist/db/interfaces/index.d.ts.map +1 -0
- package/dist/db/interfaces/index.js +1 -0
- package/dist/db/interfaces/organization.d.ts +27 -0
- package/dist/db/interfaces/organization.d.ts.map +1 -0
- package/dist/db/interfaces/organization.js +1 -0
- package/dist/db/interfaces/schema.d.ts +21 -0
- package/dist/db/interfaces/schema.d.ts.map +1 -0
- package/dist/db/interfaces/schema.js +1 -0
- package/dist/db/interfaces/user.d.ts +15 -0
- package/dist/db/interfaces/user.d.ts.map +1 -0
- package/dist/db/interfaces/user.js +1 -0
- package/dist/db/utils/reference-resolver.d.ts +18 -0
- package/dist/db/utils/reference-resolver.d.ts.map +1 -0
- package/dist/db/utils/reference-resolver.js +80 -0
- package/dist/define.d.ts +3 -0
- package/dist/define.d.ts.map +1 -0
- package/dist/define.js +4 -0
- package/dist/email/index.d.ts +2 -0
- package/dist/email/index.d.ts.map +1 -0
- package/{src/email/index.ts → dist/email/index.js} +0 -1
- package/dist/email/interfaces/email.d.ts +42 -0
- package/dist/email/interfaces/email.d.ts.map +1 -0
- package/dist/email/interfaces/email.js +1 -0
- package/dist/engine.d.ts +26 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +66 -0
- package/dist/field-validation/rule.d.ts +51 -0
- package/dist/field-validation/rule.d.ts.map +1 -0
- package/dist/field-validation/rule.js +221 -0
- package/dist/field-validation/utils.d.ts +21 -0
- package/dist/field-validation/utils.d.ts.map +1 -0
- package/dist/field-validation/utils.js +66 -0
- package/dist/hooks.d.ts +23 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +96 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.js} +0 -1
- package/dist/routes/assets-by-id.d.ts +5 -0
- package/dist/routes/assets-by-id.d.ts.map +1 -0
- package/dist/routes/assets-by-id.js +138 -0
- package/dist/routes/assets-cdn.d.ts +3 -0
- package/dist/routes/assets-cdn.d.ts.map +1 -0
- package/dist/routes/assets-cdn.js +155 -0
- package/dist/routes/assets.d.ts +4 -0
- package/dist/routes/assets.d.ts.map +1 -0
- package/dist/routes/assets.js +94 -0
- package/dist/routes/documents-by-id.d.ts +5 -0
- package/dist/routes/documents-by-id.d.ts.map +1 -0
- package/dist/routes/documents-by-id.js +142 -0
- package/dist/routes/documents-publish.d.ts +4 -0
- package/dist/routes/documents-publish.d.ts.map +1 -0
- package/dist/routes/documents-publish.js +151 -0
- package/dist/routes/documents.d.ts +4 -0
- package/dist/routes/documents.d.ts.map +1 -0
- package/dist/routes/documents.js +131 -0
- package/dist/routes/index.d.ts +6 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/{src/routes/index.ts → dist/routes/index.js} +0 -3
- package/dist/routes/organizations-by-id.d.ts +5 -0
- package/dist/routes/organizations-by-id.d.ts.map +1 -0
- package/dist/routes/organizations-by-id.js +187 -0
- package/dist/routes/organizations-invitations.d.ts +4 -0
- package/dist/routes/organizations-invitations.d.ts.map +1 -0
- package/dist/routes/organizations-invitations.js +125 -0
- package/dist/routes/organizations-members.d.ts +5 -0
- package/dist/routes/organizations-members.d.ts.map +1 -0
- package/dist/routes/organizations-members.js +206 -0
- package/dist/routes/organizations-switch.d.ts +3 -0
- package/dist/routes/organizations-switch.d.ts.map +1 -0
- package/dist/routes/organizations-switch.js +53 -0
- package/dist/routes/organizations.d.ts +4 -0
- package/dist/routes/organizations.d.ts.map +1 -0
- package/dist/routes/organizations.js +108 -0
- package/dist/routes/schemas-by-type.d.ts +3 -0
- package/dist/routes/schemas-by-type.d.ts.map +1 -0
- package/dist/routes/schemas-by-type.js +25 -0
- package/dist/routes/schemas.d.ts +3 -0
- package/dist/routes/schemas.d.ts.map +1 -0
- package/dist/routes/schemas.js +11 -0
- package/dist/routes-exports.d.ts +14 -0
- package/dist/routes-exports.d.ts.map +1 -0
- package/{src/routes-exports.ts → dist/routes-exports.js} +5 -28
- package/dist/schema-context.svelte.d.ts +10 -0
- package/dist/schema-context.svelte.d.ts.map +1 -0
- package/dist/schema-context.svelte.js +18 -0
- package/dist/schema-utils/cleanup.d.ts +21 -0
- package/dist/schema-utils/cleanup.d.ts.map +1 -0
- package/dist/schema-utils/cleanup.js +80 -0
- package/dist/schema-utils/index.d.ts +4 -0
- package/dist/schema-utils/index.d.ts.map +1 -0
- package/dist/schema-utils/utils.d.ts +30 -0
- package/dist/schema-utils/utils.d.ts.map +1 -0
- package/dist/schema-utils/utils.js +37 -0
- package/dist/schema-utils/validator.d.ts +6 -0
- package/dist/schema-utils/validator.d.ts.map +1 -0
- package/dist/schema-utils/validator.js +45 -0
- package/dist/server/index.d.ts +16 -0
- package/dist/server/index.d.ts.map +1 -0
- package/{src/server/index.ts → dist/server/index.js} +2 -14
- package/dist/services/asset-service.d.ts +86 -0
- package/dist/services/asset-service.d.ts.map +1 -0
- package/dist/services/asset-service.js +187 -0
- package/{src/services/index.ts → dist/services/index.d.ts} +1 -4
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +4 -0
- package/dist/storage/adapters/index.d.ts +2 -0
- package/dist/storage/adapters/index.d.ts.map +1 -0
- package/dist/storage/adapters/local-storage-adapter.d.ts +54 -0
- package/dist/storage/adapters/local-storage-adapter.d.ts.map +1 -0
- package/dist/storage/adapters/local-storage-adapter.js +187 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/{src/storage/index.ts → dist/storage/index.js} +0 -2
- package/dist/storage/interfaces/index.d.ts +2 -0
- package/dist/storage/interfaces/index.d.ts.map +1 -0
- package/dist/storage/interfaces/storage.d.ts +91 -0
- package/dist/storage/interfaces/storage.d.ts.map +1 -0
- package/dist/storage/interfaces/storage.js +1 -0
- package/dist/storage/providers/storage.d.ts +43 -0
- package/dist/storage/providers/storage.d.ts.map +1 -0
- package/dist/storage/providers/storage.js +64 -0
- package/dist/types/asset.d.ts +73 -0
- package/dist/types/asset.d.ts.map +1 -0
- package/dist/types/asset.js +2 -0
- package/dist/types/auth.d.ts +50 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +41 -0
- package/dist/types/config.d.ts +47 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +1 -0
- package/dist/types/document.d.ts +34 -0
- package/dist/types/document.d.ts.map +1 -0
- package/dist/types/document.js +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/organization.d.ts +105 -0
- package/dist/types/organization.d.ts.map +1 -0
- package/dist/types/organization.js +3 -0
- package/dist/types/schemas.d.ts +114 -0
- package/dist/types/schemas.d.ts.map +1 -0
- package/dist/types/schemas.js +1 -0
- package/dist/types/sidebar.d.ts +33 -0
- package/dist/types/sidebar.d.ts.map +1 -0
- package/dist/types/sidebar.js +1 -0
- package/dist/types/user.d.ts +14 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +1 -0
- package/dist/utils/content-hash.d.ts +22 -0
- package/dist/utils/content-hash.d.ts.map +1 -0
- package/dist/utils/content-hash.js +67 -0
- package/dist/utils/image-url.d.ts +88 -0
- package/dist/utils/image-url.d.ts.map +1 -0
- package/dist/utils/image-url.js +165 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/{src/utils/index.ts → dist/utils/index.js} +0 -3
- package/dist/utils/slug.d.ts +13 -0
- package/dist/utils/slug.d.ts.map +1 -0
- package/dist/utils/slug.js +30 -0
- package/package.json +12 -25
- package/src/api/assets.ts +0 -75
- package/src/api/client.ts +0 -150
- package/src/api/documents.ts +0 -102
- package/src/api/organizations.ts +0 -154
- package/src/api/types.ts +0 -34
- package/src/auth/auth-errors.ts +0 -23
- package/src/auth/auth-hooks.ts +0 -132
- package/src/auth/provider.ts +0 -25
- package/src/config.ts +0 -18
- package/src/db/interfaces/asset.ts +0 -61
- package/src/db/interfaces/document.ts +0 -53
- package/src/db/interfaces/index.ts +0 -98
- package/src/db/interfaces/organization.ts +0 -51
- package/src/db/interfaces/schema.ts +0 -13
- package/src/db/interfaces/user.ts +0 -16
- package/src/db/utils/reference-resolver.ts +0 -119
- package/src/define.ts +0 -7
- package/src/email/interfaces/email.ts +0 -45
- package/src/engine.ts +0 -85
- package/src/field-validation/rule.ts +0 -287
- package/src/field-validation/utils.ts +0 -91
- package/src/hooks.ts +0 -142
- package/src/lib/is-mobile.svelte.ts +0 -9
- package/src/lib/utils.ts +0 -13
- package/src/routes/assets-by-id.ts +0 -161
- package/src/routes/assets-cdn.ts +0 -185
- package/src/routes/assets.ts +0 -116
- package/src/routes/documents-by-id.ts +0 -188
- package/src/routes/documents-publish.ts +0 -211
- package/src/routes/documents.ts +0 -172
- package/src/routes/organizations-by-id.ts +0 -258
- package/src/routes/organizations-invitations.ts +0 -183
- package/src/routes/organizations-members.ts +0 -301
- package/src/routes/organizations-switch.ts +0 -74
- package/src/routes/organizations.ts +0 -146
- package/src/routes/schemas-by-type.ts +0 -35
- package/src/routes/schemas.ts +0 -19
- package/src/schema-context.svelte.ts +0 -24
- package/src/schema-utils/cleanup.ts +0 -116
- package/src/schema-utils/utils.ts +0 -47
- package/src/schema-utils/validator.ts +0 -58
- package/src/services/asset-service.ts +0 -256
- package/src/storage/adapters/local-storage-adapter.ts +0 -215
- package/src/storage/interfaces/storage.ts +0 -114
- package/src/storage/providers/storage.ts +0 -83
- package/src/types/asset.ts +0 -81
- package/src/types/auth.ts +0 -80
- package/src/types/config.ts +0 -45
- package/src/types/document.ts +0 -38
- package/src/types/organization.ts +0 -119
- package/src/types/schemas.ts +0 -151
- package/src/types/sidebar.ts +0 -37
- package/src/types/user.ts +0 -17
- package/src/utils/content-hash.ts +0 -75
- package/src/utils/image-url.ts +0 -204
- package/src/utils/slug.ts +0 -33
- /package/{src → dist}/app.d.ts +0 -0
- /package/{src → dist}/auth/MULTI_TENANCY_PLAN.md +0 -0
- /package/{src → dist}/components/admin/AdminLayout.svelte +0 -0
- /package/{src → dist}/components/admin/DocumentEditor.svelte +0 -0
- /package/{src → dist}/components/admin/DocumentTypesList.svelte +0 -0
- /package/{src → dist}/components/admin/ObjectModal.svelte +0 -0
- /package/{src → dist}/components/admin/SchemaField.svelte +0 -0
- /package/{src → dist}/components/admin/fields/ArrayField.svelte +0 -0
- /package/{src → dist}/components/admin/fields/BooleanField.svelte +0 -0
- /package/{src → dist}/components/admin/fields/ImageField.svelte +0 -0
- /package/{src → dist}/components/admin/fields/NumberField.svelte +0 -0
- /package/{src → dist}/components/admin/fields/ReferenceField.svelte +0 -0
- /package/{src → dist}/components/admin/fields/SlugField.svelte +0 -0
- /package/{src → dist}/components/admin/fields/StringField.svelte +0 -0
- /package/{src → dist}/components/admin/fields/TextareaField.svelte +0 -0
- /package/{src/components/fields/index.ts → dist/components/fields/index.js} +0 -0
- /package/{src → dist}/components/layout/OrganizationSwitcher.svelte +0 -0
- /package/{src → dist}/components/layout/sidebar/AppSidebar.svelte +0 -0
- /package/{src → dist}/components/layout/sidebar/NavMain.svelte +0 -0
- /package/{src → dist}/components/layout/sidebar/NavSecondary.svelte +0 -0
- /package/{src → dist}/components/layout/sidebar/NavUser.svelte +0 -0
- /package/{src → dist}/plugins/README.md +0 -0
- /package/{src/schema-utils/index.ts → dist/schema-utils/index.js} +0 -0
- /package/{src/storage/adapters/index.ts → dist/storage/adapters/index.js} +0 -0
- /package/{src/storage/interfaces/index.ts → dist/storage/interfaces/index.js} +0 -0
- /package/{src/types/index.ts → dist/types/index.js} +0 -0
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
// Aphex CMS Components
|
|
2
2
|
// All admin interface components -- is this being used?
|
|
3
|
-
|
|
4
3
|
// Main admin app
|
|
5
4
|
export { default as AdminApp } from './AdminApp.svelte';
|
|
6
|
-
|
|
7
5
|
// Sidebar
|
|
8
6
|
export { default as Sidebar } from './layout/Sidebar.svelte';
|
|
9
|
-
|
|
10
7
|
// Admin components (will be migrated from your current structure)
|
|
11
8
|
export { default as DocumentEditor } from './admin/DocumentEditor.svelte';
|
|
12
9
|
export { default as DocumentTypesList } from './admin/DocumentTypesList.svelte';
|
|
13
10
|
export { default as SchemaField } from './admin/SchemaField.svelte';
|
|
14
|
-
|
|
15
11
|
// Field components
|
|
16
12
|
export * from './fields/index.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SidebarOrganization } from '../../types/sidebar.js';
|
|
2
|
+
type Props = {
|
|
3
|
+
organizations?: SidebarOrganization[];
|
|
4
|
+
activeOrganization?: SidebarOrganization;
|
|
5
|
+
canCreateOrganization?: boolean;
|
|
6
|
+
onOpenChange?: (open: boolean) => void;
|
|
7
|
+
};
|
|
8
|
+
declare const OrganizationSwitcher: import("svelte").Component<Props, {}, "">;
|
|
9
|
+
type OrganizationSwitcher = ReturnType<typeof OrganizationSwitcher>;
|
|
10
|
+
export default OrganizationSwitcher;
|
|
11
|
+
//# sourceMappingURL=OrganizationSwitcher.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrganizationSwitcher.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/layout/OrganizationSwitcher.svelte.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,KAAK,KAAK,GAAG;IACZ,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACtC,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC,CAAC;AAqJH,QAAA,MAAM,oBAAoB,2CAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
|
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
import { page } from '$app/state';
|
|
9
9
|
import type { SidebarData } from '../../types/sidebar.js';
|
|
10
10
|
import AppSidebar from './sidebar/AppSidebar.svelte';
|
|
11
|
-
import { activeTabState } from '$lib/stores/activeTab.svelte.js';
|
|
12
11
|
|
|
13
12
|
type Props = {
|
|
14
13
|
data: SidebarData;
|
|
15
14
|
onSignOut?: () => void | Promise<void>;
|
|
16
15
|
children: any;
|
|
17
16
|
enableGraphiQL?: boolean;
|
|
17
|
+
activeTab?: { value: 'structure' | 'vision' };
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
let { data, onSignOut, children, enableGraphiQL = false }: Props = $props();
|
|
20
|
+
let { data, onSignOut, children, enableGraphiQL = false, activeTab }: Props = $props();
|
|
21
21
|
|
|
22
22
|
// Only show tabs on the main /admin page
|
|
23
23
|
const showTabs = $derived(page.url.pathname === '/admin');
|
|
@@ -38,15 +38,15 @@
|
|
|
38
38
|
</div>
|
|
39
39
|
|
|
40
40
|
<!-- Center: Structure/Vision Tabs (only on /admin page) -->
|
|
41
|
-
{#if showTabs &&
|
|
41
|
+
{#if showTabs && activeTab}
|
|
42
42
|
<div
|
|
43
43
|
class="bg-muted text-muted-foreground mx-auto inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]"
|
|
44
44
|
>
|
|
45
45
|
<button
|
|
46
46
|
onclick={() => {
|
|
47
|
-
if (
|
|
47
|
+
if (activeTab) activeTab.value = 'structure';
|
|
48
48
|
}}
|
|
49
|
-
class="{
|
|
49
|
+
class="{activeTab.value === 'structure'
|
|
50
50
|
? 'bg-background text-foreground shadow'
|
|
51
51
|
: 'text-muted-foreground'} ring-offset-background focus-visible:ring-ring inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"
|
|
52
52
|
>
|
|
@@ -55,9 +55,9 @@
|
|
|
55
55
|
{#if enableGraphiQL}
|
|
56
56
|
<button
|
|
57
57
|
onclick={() => {
|
|
58
|
-
if (
|
|
58
|
+
if (activeTab) activeTab.value = 'vision';
|
|
59
59
|
}}
|
|
60
|
-
class="{
|
|
60
|
+
class="{activeTab.value === 'vision'
|
|
61
61
|
? 'bg-background text-foreground shadow'
|
|
62
62
|
: 'text-muted-foreground'} ring-offset-background focus-visible:ring-ring inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"
|
|
63
63
|
>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SidebarData } from '../../types/sidebar.js';
|
|
2
|
+
type Props = {
|
|
3
|
+
data: SidebarData;
|
|
4
|
+
onSignOut?: () => void | Promise<void>;
|
|
5
|
+
children: any;
|
|
6
|
+
enableGraphiQL?: boolean;
|
|
7
|
+
activeTab?: {
|
|
8
|
+
value: 'structure' | 'vision';
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
declare const Sidebar: import("svelte").Component<Props, {}, "">;
|
|
12
|
+
type Sidebar = ReturnType<typeof Sidebar>;
|
|
13
|
+
export default Sidebar;
|
|
14
|
+
//# sourceMappingURL=Sidebar.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/layout/Sidebar.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAIzD,KAAK,KAAK,GAAG;IACZ,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,QAAQ,EAAE,GAAG,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,WAAW,GAAG,QAAQ,CAAA;KAAE,CAAC;CAC9C,CAAC;AAuEH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Sidebar } from '@aphexcms/ui/shadcn/sidebar';
|
|
2
|
+
import type { SidebarData } from '../../../types/sidebar.js';
|
|
3
|
+
import type { ComponentProps } from 'svelte';
|
|
4
|
+
type Props = ComponentProps<typeof Sidebar> & {
|
|
5
|
+
data: SidebarData;
|
|
6
|
+
onSignOut?: () => void | Promise<void>;
|
|
7
|
+
};
|
|
8
|
+
declare const AppSidebar: import("svelte").Component<Props, {}, "">;
|
|
9
|
+
type AppSidebar = ReturnType<typeof AppSidebar>;
|
|
10
|
+
export default AppSidebar;
|
|
11
|
+
//# sourceMappingURL=AppSidebar.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppSidebar.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/layout/sidebar/AppSidebar.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,OAAO,EAKP,MAAM,6BAA6B,CAAC;AAItC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAG5C,KAAK,KAAK,GAAG,cAAc,CAAC,OAAO,OAAO,CAAC,GAAG;IAC7C,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,CAAC;AAqDH,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Icon as IconType } from 'lucide-svelte';
|
|
2
|
+
type NavItem = {
|
|
3
|
+
title: string;
|
|
4
|
+
url: string;
|
|
5
|
+
icon?: typeof IconType;
|
|
6
|
+
isActive?: boolean;
|
|
7
|
+
items?: {
|
|
8
|
+
title: string;
|
|
9
|
+
url: string;
|
|
10
|
+
}[];
|
|
11
|
+
};
|
|
12
|
+
type Props = {
|
|
13
|
+
items: NavItem[];
|
|
14
|
+
label?: string;
|
|
15
|
+
};
|
|
16
|
+
declare const NavMain: import("svelte").Component<Props, {}, "">;
|
|
17
|
+
type NavMain = ReturnType<typeof NavMain>;
|
|
18
|
+
export default NavMain;
|
|
19
|
+
//# sourceMappingURL=NavMain.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavMain.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/layout/sidebar/NavMain.svelte.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAgB,KAAK,IAAI,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGnE,KAAK,OAAO,GAAG;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,QAAQ,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACZ,EAAE,CAAC;CACJ,CAAC;AAEF,KAAK,KAAK,GAAG;IACZ,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAsEH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type Props = {
|
|
2
|
+
enableGraphiQL?: boolean;
|
|
3
|
+
activeTab?: 'structure' | 'vision';
|
|
4
|
+
onTabChange?: (tab: 'structure' | 'vision') => void;
|
|
5
|
+
};
|
|
6
|
+
declare const NavSecondary: import("svelte").Component<Props, {}, "activeTab">;
|
|
7
|
+
type NavSecondary = ReturnType<typeof NavSecondary>;
|
|
8
|
+
export default NavSecondary;
|
|
9
|
+
//# sourceMappingURL=NavSecondary.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavSecondary.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/layout/sidebar/NavSecondary.svelte.ts"],"names":[],"mappings":"AAcC,KAAK,KAAK,GAAG;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,GAAG,QAAQ,KAAK,IAAI,CAAC;CACpD,CAAC;AAkDH,QAAA,MAAM,YAAY,oDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AuthUser } from '../../../types/user.js';
|
|
2
|
+
type Props = {
|
|
3
|
+
user: AuthUser;
|
|
4
|
+
onSignOut?: () => void | Promise<void>;
|
|
5
|
+
};
|
|
6
|
+
declare const NavUser: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type NavUser = ReturnType<typeof NavUser>;
|
|
8
|
+
export default NavUser;
|
|
9
|
+
//# sourceMappingURL=NavUser.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavUser.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/layout/sidebar/NavUser.svelte.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGtD,KAAK,KAAK,GAAG;IACZ,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,CAAC;AA+DH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/lib/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAc5D"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function createCMSConfig(config) {
|
|
2
|
+
return {
|
|
3
|
+
// Start with the user's config and apply defaults for missing properties
|
|
4
|
+
...config,
|
|
5
|
+
storage: config.storage ?? null, // Default to null if not provided
|
|
6
|
+
customization: {
|
|
7
|
+
branding: {
|
|
8
|
+
title: 'Aphex CMS',
|
|
9
|
+
...config.customization?.branding
|
|
10
|
+
},
|
|
11
|
+
...config.customization
|
|
12
|
+
},
|
|
13
|
+
plugins: config.plugins ?? []
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/db/adapters/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/db/index.ts"],"names":[],"mappings":"AAIA,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Asset } from '../../types/index.js';
|
|
2
|
+
export interface AssetFilters {
|
|
3
|
+
organizationId: string;
|
|
4
|
+
assetType?: 'image' | 'file';
|
|
5
|
+
mimeType?: string;
|
|
6
|
+
search?: string;
|
|
7
|
+
limit?: number;
|
|
8
|
+
offset?: number;
|
|
9
|
+
filterOrganizationIds?: string[];
|
|
10
|
+
}
|
|
11
|
+
export interface CreateAssetData {
|
|
12
|
+
organizationId: string;
|
|
13
|
+
assetType: 'image' | 'file';
|
|
14
|
+
filename: string;
|
|
15
|
+
originalFilename: string;
|
|
16
|
+
mimeType: string;
|
|
17
|
+
size: number;
|
|
18
|
+
url: string;
|
|
19
|
+
path: string;
|
|
20
|
+
storageAdapter: string;
|
|
21
|
+
width?: number;
|
|
22
|
+
height?: number;
|
|
23
|
+
metadata?: any;
|
|
24
|
+
title?: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
alt?: string;
|
|
27
|
+
creditLine?: string;
|
|
28
|
+
createdBy?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface UpdateAssetData {
|
|
31
|
+
url?: string;
|
|
32
|
+
title?: string;
|
|
33
|
+
description?: string;
|
|
34
|
+
alt?: string;
|
|
35
|
+
creditLine?: string;
|
|
36
|
+
updatedBy?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Asset adapter interface for asset-specific operations
|
|
40
|
+
*/
|
|
41
|
+
export interface AssetAdapter {
|
|
42
|
+
createAsset(data: CreateAssetData): Promise<Asset>;
|
|
43
|
+
findAssetById(organizationId: string, id: string): Promise<Asset | null>;
|
|
44
|
+
findAssets(organizationId: string, filters?: Omit<AssetFilters, 'organizationId'>): Promise<Asset[]>;
|
|
45
|
+
updateAsset(organizationId: string, id: string, data: UpdateAssetData): Promise<Asset | null>;
|
|
46
|
+
deleteAsset(organizationId: string, id: string): Promise<boolean>;
|
|
47
|
+
countAssets(organizationId: string): Promise<number>;
|
|
48
|
+
countAssetsByType(organizationId: string): Promise<Record<string, number>>;
|
|
49
|
+
getTotalAssetsSize(organizationId: string): Promise<number>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=asset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../../src/lib/db/interfaces/asset.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,WAAW,YAAY;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,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;IAChB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,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;CACnB;AAED,MAAM,WAAW,eAAe;IAC/B,GAAG,CAAC,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;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAE5B,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACzE,UAAU,CACT,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAC5C,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACpB,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC9F,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAGlE,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3E,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Document } from '../../types/index.js';
|
|
2
|
+
export interface DocumentFilters {
|
|
3
|
+
organizationId: string;
|
|
4
|
+
type?: string;
|
|
5
|
+
status?: string;
|
|
6
|
+
limit?: number;
|
|
7
|
+
offset?: number;
|
|
8
|
+
depth?: number;
|
|
9
|
+
filterOrganizationIds?: string[];
|
|
10
|
+
}
|
|
11
|
+
export interface CreateDocumentData {
|
|
12
|
+
organizationId: string;
|
|
13
|
+
type: string;
|
|
14
|
+
draftData: any;
|
|
15
|
+
createdBy?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface UpdateDocumentData {
|
|
18
|
+
draftData?: any;
|
|
19
|
+
status?: string;
|
|
20
|
+
updatedBy?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Document adapter interface for document-specific operations
|
|
24
|
+
*/
|
|
25
|
+
export interface DocumentAdapter {
|
|
26
|
+
findManyDoc(organizationId: string, filters?: Omit<DocumentFilters, 'organizationId'>): Promise<Document[]>;
|
|
27
|
+
findByDocId(organizationId: string, id: string, depth?: number): Promise<Document | null>;
|
|
28
|
+
createDocument(data: CreateDocumentData): Promise<Document>;
|
|
29
|
+
updateDocDraft(organizationId: string, id: string, data: any, updatedBy?: string): Promise<Document | null>;
|
|
30
|
+
deleteDocById(organizationId: string, id: string): Promise<boolean>;
|
|
31
|
+
publishDoc(organizationId: string, id: string): Promise<Document | null>;
|
|
32
|
+
unpublishDoc(organizationId: string, id: string): Promise<Document | null>;
|
|
33
|
+
countDocsByType(organizationId: string, type: string): Promise<number>;
|
|
34
|
+
getDocCountsByType(organizationId: string): Promise<Record<string, number>>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/lib/db/interfaces/document.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,eAAe;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAClC,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAE/B,WAAW,CACV,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAC/C,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvB,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC1F,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,cAAc,CACb,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,GAAG,EACT,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC5B,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAGpE,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IACzE,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAG3E,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { DocumentAdapter } from './document.js';
|
|
2
|
+
import type { AssetAdapter } from './asset.js';
|
|
3
|
+
import type { UserProfileAdapter } from './user.js';
|
|
4
|
+
import type { SchemaAdapter } from './schema.js';
|
|
5
|
+
import type { OrganizationAdapter } from './organization.js';
|
|
6
|
+
export type { DocumentAdapter, DocumentFilters, CreateDocumentData, UpdateDocumentData } from './document.js';
|
|
7
|
+
export type { AssetAdapter, CreateAssetData, UpdateAssetData } from './asset.js';
|
|
8
|
+
export type { UserProfileAdapter, NewUserProfileData } from './user.js';
|
|
9
|
+
export type { SchemaAdapter } from './schema.js';
|
|
10
|
+
export type { OrganizationAdapter } from './organization.js';
|
|
11
|
+
/**
|
|
12
|
+
* Combined database adapter interface
|
|
13
|
+
* Extends all entity-specific adapters for full database functionality
|
|
14
|
+
*/
|
|
15
|
+
export interface DatabaseAdapter extends DocumentAdapter, AssetAdapter, UserProfileAdapter, SchemaAdapter, OrganizationAdapter {
|
|
16
|
+
connect?(): Promise<void>;
|
|
17
|
+
disconnect?(): Promise<void>;
|
|
18
|
+
isHealthy(): Promise<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* Initialize RLS (enable/disable) on tables - call after migrations
|
|
21
|
+
*/
|
|
22
|
+
initializeRLS?(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Execute a function within a transaction with organization context set for RLS
|
|
25
|
+
* Ensures proper isolation with connection pooling
|
|
26
|
+
*/
|
|
27
|
+
withOrgContext?<T>(organizationId: string, fn: () => Promise<T>): Promise<T>;
|
|
28
|
+
/**
|
|
29
|
+
* Get all child organizations for a parent (for hierarchy support)
|
|
30
|
+
*/
|
|
31
|
+
getChildOrganizations?(parentOrganizationId: string): Promise<string[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Check if any user profiles exist in the system (for first-user detection)
|
|
34
|
+
*/
|
|
35
|
+
hasAnyUserProfiles?(): Promise<boolean>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Database provider factory interface
|
|
39
|
+
* Providers are pre-configured and create adapters on demand
|
|
40
|
+
*/
|
|
41
|
+
export interface DatabaseProvider {
|
|
42
|
+
name: string;
|
|
43
|
+
createAdapter(): DatabaseAdapter;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Generic database configuration
|
|
47
|
+
*/
|
|
48
|
+
export interface DatabaseConfig {
|
|
49
|
+
connectionString?: string;
|
|
50
|
+
client?: any;
|
|
51
|
+
options?: {
|
|
52
|
+
maxConnections?: number;
|
|
53
|
+
timeout?: number;
|
|
54
|
+
ssl?: boolean;
|
|
55
|
+
[key: string]: any;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Database transaction interface (optional for advanced providers)
|
|
60
|
+
*/
|
|
61
|
+
export interface DatabaseTransaction {
|
|
62
|
+
commit(): Promise<void>;
|
|
63
|
+
rollback(): Promise<void>;
|
|
64
|
+
isActive(): boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Extended database adapter with transaction support
|
|
68
|
+
*/
|
|
69
|
+
export interface TransactionalDatabaseAdapter extends DatabaseAdapter {
|
|
70
|
+
beginTransaction(): Promise<DatabaseTransaction>;
|
|
71
|
+
withTransaction<T>(fn: (adapter: DatabaseAdapter) => Promise<T>): Promise<T>;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/db/interfaces/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,YAAY,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjF,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,eAChB,SAAQ,eAAe,EACtB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,mBAAmB;IAEpB,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAG7B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAG9B;;OAEG;IACH,aAAa,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC;;;OAGG;IACH,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE7E;;OAEG;IACH,qBAAqB,CAAC,CAAC,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAExE;;OAEG;IACH,kBAAkB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,IAAI,eAAe,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE;QACT,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACnB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,IAAI,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,eAAe;IACpE,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACjD,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Organization, NewOrganization, OrganizationMember, NewOrganizationMember, Invitation, NewInvitation, UserSession, OrganizationMembership } from '../../types/organization.js';
|
|
2
|
+
export interface OrganizationAdapter {
|
|
3
|
+
createOrganization(data: NewOrganization): Promise<Organization>;
|
|
4
|
+
findOrganizationById(id: string): Promise<Organization | null>;
|
|
5
|
+
findOrganizationBySlug(slug: string): Promise<Organization | null>;
|
|
6
|
+
updateOrganization(id: string, data: Partial<Omit<Organization, 'id' | 'createdAt' | 'createdBy'>>): Promise<Organization | null>;
|
|
7
|
+
deleteOrganization(id: string): Promise<boolean>;
|
|
8
|
+
addMember(data: NewOrganizationMember): Promise<OrganizationMember>;
|
|
9
|
+
removeMember(organizationId: string, userId: string): Promise<boolean>;
|
|
10
|
+
removeAllMembers(organizationId: string): Promise<boolean>;
|
|
11
|
+
updateMemberRole(organizationId: string, userId: string, role: 'owner' | 'admin' | 'editor' | 'viewer'): Promise<OrganizationMember | null>;
|
|
12
|
+
findUserMembership(userId: string, organizationId: string): Promise<OrganizationMember | null>;
|
|
13
|
+
findUserOrganizations(userId: string): Promise<OrganizationMembership[]>;
|
|
14
|
+
findOrganizationMembers(organizationId: string): Promise<OrganizationMember[]>;
|
|
15
|
+
createInvitation(data: NewInvitation): Promise<Invitation>;
|
|
16
|
+
findInvitationByToken(token: string): Promise<Invitation | null>;
|
|
17
|
+
findOrganizationInvitations(organizationId: string): Promise<Invitation[]>;
|
|
18
|
+
findInvitationsByEmail(email: string): Promise<Invitation[]>;
|
|
19
|
+
acceptInvitation(token: string, userId: string): Promise<OrganizationMember>;
|
|
20
|
+
deleteInvitation(id: string): Promise<boolean>;
|
|
21
|
+
removeAllInvitations(organizationId: string): Promise<boolean>;
|
|
22
|
+
cleanupExpiredInvitations(): Promise<number>;
|
|
23
|
+
updateUserSession(userId: string, organizationId: string): Promise<void>;
|
|
24
|
+
findUserSession(userId: string): Promise<UserSession | null>;
|
|
25
|
+
deleteUserSession(userId: string): Promise<boolean>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=organization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization.d.ts","sourceRoot":"","sources":["../../../src/lib/db/interfaces/organization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,EACV,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,mBAAmB;IAEnC,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACjE,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC/D,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACnE,kBAAkB,CACjB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,GACjE,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAChC,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAGjD,SAAS,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpE,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,gBAAgB,CACf,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAC3C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACtC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAC/F,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACzE,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAG/E,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3D,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACjE,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3E,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7D,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7E,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAG7C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC7D,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SchemaType } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Defines database operations for managing schemas.
|
|
4
|
+
*/
|
|
5
|
+
export interface SchemaAdapter {
|
|
6
|
+
registerSchemaType(schemaType: SchemaType): Promise<void>;
|
|
7
|
+
getSchemaType(name: string): Promise<SchemaType | null>;
|
|
8
|
+
listSchemas(): Promise<SchemaType[]>;
|
|
9
|
+
listDocumentTypes(): Promise<Array<{
|
|
10
|
+
name: string;
|
|
11
|
+
title: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
}>>;
|
|
14
|
+
listObjectTypes(): Promise<Array<{
|
|
15
|
+
name: string;
|
|
16
|
+
title: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
}>>;
|
|
19
|
+
deleteSchemaType(name: string): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/lib/db/interfaces/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACxD,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACrC,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC3F,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACzF,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { UserProfile } from '../../types/index.js';
|
|
2
|
+
export interface NewUserProfileData {
|
|
3
|
+
userId: string;
|
|
4
|
+
role?: 'super_admin' | 'admin' | 'editor' | 'viewer';
|
|
5
|
+
preferences?: Record<string, any>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Defines database operations for managing user profiles.
|
|
9
|
+
*/
|
|
10
|
+
export interface UserProfileAdapter {
|
|
11
|
+
createUserProfile(data: NewUserProfileData): Promise<UserProfile>;
|
|
12
|
+
findUserProfileById(userId: string): Promise<UserProfile | null>;
|
|
13
|
+
deleteUserProfile(userId: string): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/lib/db/interfaces/user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACjE,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Document } from '../../types/index.js';
|
|
2
|
+
import type { DocumentAdapter } from '../interfaces/document.js';
|
|
3
|
+
interface ResolveOptions {
|
|
4
|
+
depth: number;
|
|
5
|
+
currentDepth?: number;
|
|
6
|
+
visited?: Set<string>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Recursively resolves reference fields in a document
|
|
10
|
+
* @param document - The document to resolve references for
|
|
11
|
+
* @param adapter - Document adapter for fetching referenced documents
|
|
12
|
+
* @param organizationId - Organization ID for filtering referenced documents
|
|
13
|
+
* @param options - Resolution options (depth, tracking)
|
|
14
|
+
* @returns Document with resolved references
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveReferences(document: Document, adapter: DocumentAdapter, organizationId: string, options: ResolveOptions): Promise<Document>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=reference-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-resolver.d.ts","sourceRoot":"","sources":["../../../src/lib/db/utils/reference-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,UAAU,cAAc;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACtC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,eAAe,EACxB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,QAAQ,CAAC,CA2CnB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively resolves reference fields in a document
|
|
3
|
+
* @param document - The document to resolve references for
|
|
4
|
+
* @param adapter - Document adapter for fetching referenced documents
|
|
5
|
+
* @param organizationId - Organization ID for filtering referenced documents
|
|
6
|
+
* @param options - Resolution options (depth, tracking)
|
|
7
|
+
* @returns Document with resolved references
|
|
8
|
+
*/
|
|
9
|
+
export async function resolveReferences(document, adapter, organizationId, options) {
|
|
10
|
+
const { depth, currentDepth = 0, visited = new Set() } = options;
|
|
11
|
+
// Base case: no more depth to resolve or already visited (circular reference)
|
|
12
|
+
if (currentDepth >= depth || visited.has(document.id)) {
|
|
13
|
+
return document;
|
|
14
|
+
}
|
|
15
|
+
// Mark as visited
|
|
16
|
+
visited.add(document.id);
|
|
17
|
+
// Clone the document to avoid mutations
|
|
18
|
+
const resolvedDocument = { ...document };
|
|
19
|
+
// Resolve references in draftData
|
|
20
|
+
if (document.draftData) {
|
|
21
|
+
resolvedDocument.draftData = await resolveDataReferences(document.draftData, adapter, organizationId, {
|
|
22
|
+
depth,
|
|
23
|
+
currentDepth: currentDepth + 1,
|
|
24
|
+
visited
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
// Resolve references in publishedData
|
|
28
|
+
if (document.publishedData) {
|
|
29
|
+
resolvedDocument.publishedData = await resolveDataReferences(document.publishedData, adapter, organizationId, {
|
|
30
|
+
depth,
|
|
31
|
+
currentDepth: currentDepth + 1,
|
|
32
|
+
visited
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return resolvedDocument;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resolves references within document data (recursive)
|
|
39
|
+
*/
|
|
40
|
+
async function resolveDataReferences(data, adapter, organizationId, options) {
|
|
41
|
+
if (!data || typeof data !== 'object') {
|
|
42
|
+
return data;
|
|
43
|
+
}
|
|
44
|
+
// Handle arrays
|
|
45
|
+
if (Array.isArray(data)) {
|
|
46
|
+
return Promise.all(data.map((item) => resolveDataReferences(item, adapter, organizationId, options)));
|
|
47
|
+
}
|
|
48
|
+
// Clone object
|
|
49
|
+
const resolved = {};
|
|
50
|
+
for (const [key, value] of Object.entries(data)) {
|
|
51
|
+
// Check if this looks like a reference field (string ID)
|
|
52
|
+
if (typeof value === 'string' && key !== '_type' && key !== '_key') {
|
|
53
|
+
// Try to fetch the referenced document
|
|
54
|
+
try {
|
|
55
|
+
const referencedDoc = await adapter.findByDocId(organizationId, value);
|
|
56
|
+
if (referencedDoc) {
|
|
57
|
+
// Recursively resolve nested references
|
|
58
|
+
resolved[key] = await resolveReferences(referencedDoc, adapter, organizationId, options);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Reference not found, keep the ID
|
|
62
|
+
resolved[key] = value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
// On error, keep the original value
|
|
67
|
+
resolved[key] = value;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else if (value && typeof value === 'object') {
|
|
71
|
+
// Recursively resolve nested objects/arrays
|
|
72
|
+
resolved[key] = await resolveDataReferences(value, adapter, organizationId, options);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// Primitive value, keep as is
|
|
76
|
+
resolved[key] = value;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return resolved;
|
|
80
|
+
}
|
package/dist/define.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/lib/define.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAE5D"}
|
package/dist/define.js
ADDED