@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
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Asset } from '../types/asset.js';
|
|
2
|
+
import type { ApiResponse } from './types.js';
|
|
3
|
+
export interface AssetFilters {
|
|
4
|
+
assetType?: 'image' | 'file';
|
|
5
|
+
mimeType?: string;
|
|
6
|
+
search?: string;
|
|
7
|
+
limit?: number;
|
|
8
|
+
offset?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface UpdateAssetData {
|
|
11
|
+
title?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
alt?: string;
|
|
14
|
+
creditLine?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare class AssetsApi {
|
|
17
|
+
/**
|
|
18
|
+
* List assets with optional filters
|
|
19
|
+
*/
|
|
20
|
+
static list(filters?: AssetFilters): Promise<ApiResponse<Asset[]>>;
|
|
21
|
+
/**
|
|
22
|
+
* Get asset by ID
|
|
23
|
+
*/
|
|
24
|
+
static getById(id: string): Promise<ApiResponse<Asset>>;
|
|
25
|
+
/**
|
|
26
|
+
* Upload a new asset (multipart/form-data)
|
|
27
|
+
* Note: Use FormData for file uploads
|
|
28
|
+
*/
|
|
29
|
+
static upload(formData: FormData): Promise<ApiResponse<Asset>>;
|
|
30
|
+
/**
|
|
31
|
+
* Update asset metadata
|
|
32
|
+
*/
|
|
33
|
+
static update(id: string, data: UpdateAssetData): Promise<ApiResponse<Asset>>;
|
|
34
|
+
/**
|
|
35
|
+
* Delete an asset
|
|
36
|
+
*/
|
|
37
|
+
static delete(id: string): Promise<ApiResponse<{
|
|
38
|
+
success: boolean;
|
|
39
|
+
}>>;
|
|
40
|
+
}
|
|
41
|
+
export declare const assets: {
|
|
42
|
+
list: typeof AssetsApi.list;
|
|
43
|
+
getById: typeof AssetsApi.getById;
|
|
44
|
+
upload: typeof AssetsApi.upload;
|
|
45
|
+
update: typeof AssetsApi.update;
|
|
46
|
+
delete: typeof AssetsApi.delete;
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/lib/api/assets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,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,MAAM,WAAW,eAAe;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IACrB;;OAEG;WACU,IAAI,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAaxE;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAI7D;;;OAGG;WACU,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAIpE;;OAEG;WACU,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAInF;;OAEG;WACU,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAG3E;AAGD,eAAO,MAAM,MAAM;;;;;;CAMlB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// Assets API client - manage uploaded files and images
|
|
2
|
+
import { apiClient } from './client.js';
|
|
3
|
+
export class AssetsApi {
|
|
4
|
+
/**
|
|
5
|
+
* List assets with optional filters
|
|
6
|
+
*/
|
|
7
|
+
static async list(filters) {
|
|
8
|
+
const params = new URLSearchParams();
|
|
9
|
+
if (filters) {
|
|
10
|
+
Object.entries(filters).forEach(([key, value]) => {
|
|
11
|
+
if (value !== undefined) {
|
|
12
|
+
params.append(key, String(value));
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
const query = params.toString();
|
|
17
|
+
return apiClient.get(`/assets${query ? `?${query}` : ''}`);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get asset by ID
|
|
21
|
+
*/
|
|
22
|
+
static async getById(id) {
|
|
23
|
+
return apiClient.get(`/assets/${id}`);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Upload a new asset (multipart/form-data)
|
|
27
|
+
* Note: Use FormData for file uploads
|
|
28
|
+
*/
|
|
29
|
+
static async upload(formData) {
|
|
30
|
+
return apiClient.post('/assets', formData);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Update asset metadata
|
|
34
|
+
*/
|
|
35
|
+
static async update(id, data) {
|
|
36
|
+
return apiClient.patch(`/assets/${id}`, data);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Delete an asset
|
|
40
|
+
*/
|
|
41
|
+
static async delete(id) {
|
|
42
|
+
return apiClient.delete(`/assets/${id}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Export convenience functions for direct use
|
|
46
|
+
export const assets = {
|
|
47
|
+
list: AssetsApi.list.bind(AssetsApi),
|
|
48
|
+
getById: AssetsApi.getById.bind(AssetsApi),
|
|
49
|
+
upload: AssetsApi.upload.bind(AssetsApi),
|
|
50
|
+
update: AssetsApi.update.bind(AssetsApi),
|
|
51
|
+
delete: AssetsApi.delete.bind(AssetsApi)
|
|
52
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ApiResponse } from './types.js';
|
|
2
|
+
export declare class ApiError extends Error {
|
|
3
|
+
status: number;
|
|
4
|
+
response: any;
|
|
5
|
+
constructor(status: number, response: any, message?: string);
|
|
6
|
+
}
|
|
7
|
+
export declare class ApiClient {
|
|
8
|
+
private baseUrl;
|
|
9
|
+
private timeout;
|
|
10
|
+
constructor(baseUrl?: string, timeout?: number);
|
|
11
|
+
/**
|
|
12
|
+
* Make HTTP request with proper error handling
|
|
13
|
+
*/
|
|
14
|
+
private request;
|
|
15
|
+
/**
|
|
16
|
+
* GET request
|
|
17
|
+
*/
|
|
18
|
+
get<T>(endpoint: string, params?: Record<string, any>): Promise<ApiResponse<T>>;
|
|
19
|
+
/**
|
|
20
|
+
* POST request
|
|
21
|
+
*/
|
|
22
|
+
post<T>(endpoint: string, body?: any): Promise<ApiResponse<T>>;
|
|
23
|
+
/**
|
|
24
|
+
* PUT request
|
|
25
|
+
*/
|
|
26
|
+
put<T>(endpoint: string, body?: any): Promise<ApiResponse<T>>;
|
|
27
|
+
/**
|
|
28
|
+
* DELETE request
|
|
29
|
+
*/
|
|
30
|
+
delete<T>(endpoint: string, body?: any): Promise<ApiResponse<T>>;
|
|
31
|
+
/**
|
|
32
|
+
* PATCH request
|
|
33
|
+
*/
|
|
34
|
+
patch<T>(endpoint: string, body?: any): Promise<ApiResponse<T>>;
|
|
35
|
+
}
|
|
36
|
+
export declare const apiClient: ApiClient;
|
|
37
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/api/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C,qBAAa,QAAS,SAAQ,KAAK;IAE1B,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,GAAG;gBADb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,GAAG,EACpB,OAAO,CAAC,EAAE,MAAM;CAKjB;AAED,qBAAa,SAAS;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,SAAmB,EAAE,OAAO,SAAkB;IAKjE;;OAEG;YACW,OAAO;IAoDrB;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAmBrF;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAQpE;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAQnE;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAOtE;;OAEG;IACG,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAOrE;AAGD,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// Default configuration
|
|
2
|
+
const DEFAULT_BASE_URL = '/api';
|
|
3
|
+
const DEFAULT_TIMEOUT = 10000; // 10 seconds
|
|
4
|
+
export class ApiError extends Error {
|
|
5
|
+
status;
|
|
6
|
+
response;
|
|
7
|
+
constructor(status, response, message) {
|
|
8
|
+
super(message || `API Error: ${status}`);
|
|
9
|
+
this.status = status;
|
|
10
|
+
this.response = response;
|
|
11
|
+
this.name = 'ApiError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export class ApiClient {
|
|
15
|
+
baseUrl;
|
|
16
|
+
timeout;
|
|
17
|
+
constructor(baseUrl = DEFAULT_BASE_URL, timeout = DEFAULT_TIMEOUT) {
|
|
18
|
+
this.baseUrl = baseUrl;
|
|
19
|
+
this.timeout = timeout;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Make HTTP request with proper error handling
|
|
23
|
+
*/
|
|
24
|
+
async request(endpoint, options = {}) {
|
|
25
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
26
|
+
// Set up request with defaults
|
|
27
|
+
// Don't set Content-Type for FormData (browser will set it with boundary)
|
|
28
|
+
const headers = {};
|
|
29
|
+
if (!(options.body instanceof FormData)) {
|
|
30
|
+
headers['Content-Type'] = 'application/json';
|
|
31
|
+
}
|
|
32
|
+
const requestOptions = {
|
|
33
|
+
headers: {
|
|
34
|
+
...headers,
|
|
35
|
+
...options.headers
|
|
36
|
+
},
|
|
37
|
+
...options
|
|
38
|
+
};
|
|
39
|
+
// Add timeout
|
|
40
|
+
const controller = new AbortController();
|
|
41
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
42
|
+
requestOptions.signal = controller.signal;
|
|
43
|
+
try {
|
|
44
|
+
const response = await fetch(url, requestOptions);
|
|
45
|
+
clearTimeout(timeoutId);
|
|
46
|
+
const data = await response.json();
|
|
47
|
+
// Handle HTTP errors
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
throw new ApiError(response.status, data, data.message || data.error);
|
|
50
|
+
}
|
|
51
|
+
// Handle API-level errors
|
|
52
|
+
if (!data.success) {
|
|
53
|
+
throw new ApiError(response.status, data, data.message || data.error);
|
|
54
|
+
}
|
|
55
|
+
return data;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
clearTimeout(timeoutId);
|
|
59
|
+
if (error instanceof ApiError) {
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
// Handle fetch errors (network, timeout, etc.)
|
|
63
|
+
throw new ApiError(0, null, error instanceof Error ? error.message : 'Network error');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* GET request
|
|
68
|
+
*/
|
|
69
|
+
async get(endpoint, params) {
|
|
70
|
+
let url = endpoint;
|
|
71
|
+
if (params) {
|
|
72
|
+
const searchParams = new URLSearchParams();
|
|
73
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
74
|
+
if (value !== undefined && value !== null) {
|
|
75
|
+
searchParams.append(key, String(value));
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
if (searchParams.toString()) {
|
|
79
|
+
url += `?${searchParams.toString()}`;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return this.request(url, { method: 'GET' });
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* POST request
|
|
86
|
+
*/
|
|
87
|
+
async post(endpoint, body) {
|
|
88
|
+
return this.request(endpoint, {
|
|
89
|
+
method: 'POST',
|
|
90
|
+
// Don't stringify FormData - pass it directly
|
|
91
|
+
body: body instanceof FormData ? body : body ? JSON.stringify(body) : undefined
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* PUT request
|
|
96
|
+
*/
|
|
97
|
+
async put(endpoint, body) {
|
|
98
|
+
return this.request(endpoint, {
|
|
99
|
+
method: 'PUT',
|
|
100
|
+
// Don't stringify FormData - pass it directly
|
|
101
|
+
body: body instanceof FormData ? body : body ? JSON.stringify(body) : undefined
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* DELETE request
|
|
106
|
+
*/
|
|
107
|
+
async delete(endpoint, body) {
|
|
108
|
+
return this.request(endpoint, {
|
|
109
|
+
method: 'DELETE',
|
|
110
|
+
body: body ? JSON.stringify(body) : undefined
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* PATCH request
|
|
115
|
+
*/
|
|
116
|
+
async patch(endpoint, body) {
|
|
117
|
+
return this.request(endpoint, {
|
|
118
|
+
method: 'PATCH',
|
|
119
|
+
// Don't stringify FormData - pass it directly
|
|
120
|
+
body: body instanceof FormData ? body : body ? JSON.stringify(body) : undefined
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Export singleton instance
|
|
125
|
+
export const apiClient = new ApiClient();
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Document, DocumentListParams, CreateDocumentData, UpdateDocumentData, ApiResponse } from './types.js';
|
|
2
|
+
export declare class DocumentsApi {
|
|
3
|
+
/**
|
|
4
|
+
* List documents with optional filtering
|
|
5
|
+
*/
|
|
6
|
+
static list(params?: DocumentListParams): Promise<ApiResponse<Document[]>>;
|
|
7
|
+
/**
|
|
8
|
+
* Get document by ID
|
|
9
|
+
*/
|
|
10
|
+
static getById(id: string): Promise<ApiResponse<Document>>;
|
|
11
|
+
/**
|
|
12
|
+
* Create new document
|
|
13
|
+
*/
|
|
14
|
+
static create(data: CreateDocumentData): Promise<ApiResponse<Document>>;
|
|
15
|
+
/**
|
|
16
|
+
* Update document draft by ID (auto-save)
|
|
17
|
+
*/
|
|
18
|
+
static updateById(id: string, data: UpdateDocumentData): Promise<ApiResponse<Document>>;
|
|
19
|
+
/**
|
|
20
|
+
* Publish document (copy draft -> published)
|
|
21
|
+
*/
|
|
22
|
+
static publish(id: string): Promise<ApiResponse<Document>>;
|
|
23
|
+
/**
|
|
24
|
+
* Unpublish document (revert to draft only)
|
|
25
|
+
*/
|
|
26
|
+
static unpublish(id: string): Promise<ApiResponse<Document>>;
|
|
27
|
+
/**
|
|
28
|
+
* Delete document by ID
|
|
29
|
+
*/
|
|
30
|
+
static deleteById(id: string): Promise<ApiResponse<void>>;
|
|
31
|
+
/**
|
|
32
|
+
* Get documents by type (convenience method)
|
|
33
|
+
*/
|
|
34
|
+
static getByType(docType: string, params?: Omit<DocumentListParams, 'docType'>): Promise<ApiResponse<Document[]>>;
|
|
35
|
+
/**
|
|
36
|
+
* Get published documents only (convenience method)
|
|
37
|
+
*/
|
|
38
|
+
static getPublished(params?: Omit<DocumentListParams, 'status'>): Promise<ApiResponse<Document[]>>;
|
|
39
|
+
/**
|
|
40
|
+
* Get draft documents only (convenience method)
|
|
41
|
+
*/
|
|
42
|
+
static getDrafts(params?: Omit<DocumentListParams, 'status'>): Promise<ApiResponse<Document[]>>;
|
|
43
|
+
}
|
|
44
|
+
export declare const documents: {
|
|
45
|
+
list: typeof DocumentsApi.list;
|
|
46
|
+
getById: typeof DocumentsApi.getById;
|
|
47
|
+
create: typeof DocumentsApi.create;
|
|
48
|
+
updateById: typeof DocumentsApi.updateById;
|
|
49
|
+
publish: typeof DocumentsApi.publish;
|
|
50
|
+
unpublish: typeof DocumentsApi.unpublish;
|
|
51
|
+
deleteById: typeof DocumentsApi.deleteById;
|
|
52
|
+
getByType: typeof DocumentsApi.getByType;
|
|
53
|
+
getPublished: typeof DocumentsApi.getPublished;
|
|
54
|
+
getDrafts: typeof DocumentsApi.getDrafts;
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=documents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/lib/api/documents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY;IACxB;;OAEG;WACU,IAAI,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAIpF;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIhE;;OAEG;WACU,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI7E;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI7F;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIhE;;OAEG;WACU,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIlE;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAI/D;;OAEG;WACU,SAAS,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAM,GAC9C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,YAAY,CACxB,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,SAAS,CACrB,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;CAGnC;AAGD,eAAO,MAAM,SAAS;;;;;;;;;;;CAWrB,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Documents API client - composable document operations
|
|
2
|
+
import { apiClient } from './client.js';
|
|
3
|
+
export class DocumentsApi {
|
|
4
|
+
/**
|
|
5
|
+
* List documents with optional filtering
|
|
6
|
+
*/
|
|
7
|
+
static async list(params = {}) {
|
|
8
|
+
return apiClient.get('/documents', params);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get document by ID
|
|
12
|
+
*/
|
|
13
|
+
static async getById(id) {
|
|
14
|
+
return apiClient.get(`/documents/${id}`);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create new document
|
|
18
|
+
*/
|
|
19
|
+
static async create(data) {
|
|
20
|
+
return apiClient.post('/documents', data);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Update document draft by ID (auto-save)
|
|
24
|
+
*/
|
|
25
|
+
static async updateById(id, data) {
|
|
26
|
+
return apiClient.put(`/documents/${id}`, data);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Publish document (copy draft -> published)
|
|
30
|
+
*/
|
|
31
|
+
static async publish(id) {
|
|
32
|
+
return apiClient.post(`/documents/${id}/publish`);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Unpublish document (revert to draft only)
|
|
36
|
+
*/
|
|
37
|
+
static async unpublish(id) {
|
|
38
|
+
return apiClient.delete(`/documents/${id}/publish`);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Delete document by ID
|
|
42
|
+
*/
|
|
43
|
+
static async deleteById(id) {
|
|
44
|
+
return apiClient.delete(`/documents/${id}`);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get documents by type (convenience method)
|
|
48
|
+
*/
|
|
49
|
+
static async getByType(docType, params = {}) {
|
|
50
|
+
return this.list({ ...params, docType });
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get published documents only (convenience method)
|
|
54
|
+
*/
|
|
55
|
+
static async getPublished(params = {}) {
|
|
56
|
+
return this.list({ ...params, status: 'published' });
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get draft documents only (convenience method)
|
|
60
|
+
*/
|
|
61
|
+
static async getDrafts(params = {}) {
|
|
62
|
+
return this.list({ ...params, status: 'draft' });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Export convenience functions for direct use
|
|
66
|
+
export const documents = {
|
|
67
|
+
list: DocumentsApi.list.bind(DocumentsApi),
|
|
68
|
+
getById: DocumentsApi.getById.bind(DocumentsApi),
|
|
69
|
+
create: DocumentsApi.create.bind(DocumentsApi),
|
|
70
|
+
updateById: DocumentsApi.updateById.bind(DocumentsApi),
|
|
71
|
+
publish: DocumentsApi.publish.bind(DocumentsApi),
|
|
72
|
+
unpublish: DocumentsApi.unpublish.bind(DocumentsApi),
|
|
73
|
+
deleteById: DocumentsApi.deleteById.bind(DocumentsApi),
|
|
74
|
+
getByType: DocumentsApi.getByType.bind(DocumentsApi),
|
|
75
|
+
getPublished: DocumentsApi.getPublished.bind(DocumentsApi),
|
|
76
|
+
getDrafts: DocumentsApi.getDrafts.bind(DocumentsApi)
|
|
77
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// API Client exports
|
|
2
1
|
export { type ApiClient, ApiError, apiClient } from './client.js';
|
|
3
2
|
export { type ApiResponse } from './types.js';
|
|
4
3
|
export { documents } from './documents.js';
|
|
5
4
|
export { organizations } from './organizations.js';
|
|
6
5
|
export { assets } from './assets.js';
|
|
7
6
|
export type * from '../types/index.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/api/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,mBAAmB,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { Organization, OrganizationMember, OrganizationRole } from '../types/organization.js';
|
|
2
|
+
import type { ApiResponse } from './types.js';
|
|
3
|
+
export interface CreateOrganizationData {
|
|
4
|
+
name: string;
|
|
5
|
+
slug: string;
|
|
6
|
+
metadata?: any;
|
|
7
|
+
parentOrganizationId?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface OrganizationListItem extends Organization {
|
|
10
|
+
role: OrganizationRole;
|
|
11
|
+
joinedAt: Date;
|
|
12
|
+
isActive: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface SwitchOrganizationData {
|
|
15
|
+
organizationId: string;
|
|
16
|
+
}
|
|
17
|
+
export interface InviteMemberData {
|
|
18
|
+
email: string;
|
|
19
|
+
role: OrganizationRole;
|
|
20
|
+
}
|
|
21
|
+
export interface UpdateMemberRoleData {
|
|
22
|
+
userId: string;
|
|
23
|
+
role: OrganizationRole;
|
|
24
|
+
}
|
|
25
|
+
export interface RemoveMemberData {
|
|
26
|
+
userId: string;
|
|
27
|
+
}
|
|
28
|
+
export interface CancelInvitationData {
|
|
29
|
+
invitationId: string;
|
|
30
|
+
}
|
|
31
|
+
export interface UpdateOrganizationData {
|
|
32
|
+
name?: string;
|
|
33
|
+
slug?: string;
|
|
34
|
+
metadata?: any;
|
|
35
|
+
}
|
|
36
|
+
export declare class OrganizationsApi {
|
|
37
|
+
/**
|
|
38
|
+
* List user's organizations
|
|
39
|
+
*/
|
|
40
|
+
static list(): Promise<ApiResponse<OrganizationListItem[]>>;
|
|
41
|
+
/**
|
|
42
|
+
* Create new organization (super_admin only)
|
|
43
|
+
*/
|
|
44
|
+
static create(data: CreateOrganizationData): Promise<ApiResponse<Organization>>;
|
|
45
|
+
/**
|
|
46
|
+
* Switch to a different organization
|
|
47
|
+
*/
|
|
48
|
+
static switch(data: SwitchOrganizationData): Promise<ApiResponse<{
|
|
49
|
+
success: boolean;
|
|
50
|
+
}>>;
|
|
51
|
+
/**
|
|
52
|
+
* Get organization by ID
|
|
53
|
+
*/
|
|
54
|
+
static getById(id: string): Promise<ApiResponse<Organization>>;
|
|
55
|
+
/**
|
|
56
|
+
* Get active organization
|
|
57
|
+
*/
|
|
58
|
+
static getActive(): Promise<ApiResponse<Organization>>;
|
|
59
|
+
/**
|
|
60
|
+
* Get organization members
|
|
61
|
+
*/
|
|
62
|
+
static getMembers(): Promise<ApiResponse<OrganizationMember[]>>;
|
|
63
|
+
/**
|
|
64
|
+
* Invite a member to the organization
|
|
65
|
+
*/
|
|
66
|
+
static inviteMember(data: InviteMemberData): Promise<ApiResponse<OrganizationMember>>;
|
|
67
|
+
/**
|
|
68
|
+
* Remove a member from the organization
|
|
69
|
+
*/
|
|
70
|
+
static removeMember(data: RemoveMemberData): Promise<ApiResponse<{
|
|
71
|
+
success: boolean;
|
|
72
|
+
}>>;
|
|
73
|
+
/**
|
|
74
|
+
* Update a member's role
|
|
75
|
+
*/
|
|
76
|
+
static updateMemberRole(data: UpdateMemberRoleData): Promise<ApiResponse<OrganizationMember>>;
|
|
77
|
+
/**
|
|
78
|
+
* Update organization settings
|
|
79
|
+
*/
|
|
80
|
+
static update(id: string, data: UpdateOrganizationData): Promise<ApiResponse<Organization>>;
|
|
81
|
+
/**
|
|
82
|
+
* Cancel a pending invitation
|
|
83
|
+
*/
|
|
84
|
+
static cancelInvitation(data: CancelInvitationData): Promise<ApiResponse<{
|
|
85
|
+
success: boolean;
|
|
86
|
+
}>>;
|
|
87
|
+
}
|
|
88
|
+
export declare const organizations: {
|
|
89
|
+
list: typeof OrganizationsApi.list;
|
|
90
|
+
create: typeof OrganizationsApi.create;
|
|
91
|
+
switch: typeof OrganizationsApi.switch;
|
|
92
|
+
getById: typeof OrganizationsApi.getById;
|
|
93
|
+
getActive: typeof OrganizationsApi.getActive;
|
|
94
|
+
update: typeof OrganizationsApi.update;
|
|
95
|
+
getMembers: typeof OrganizationsApi.getMembers;
|
|
96
|
+
inviteMember: typeof OrganizationsApi.inviteMember;
|
|
97
|
+
removeMember: typeof OrganizationsApi.removeMember;
|
|
98
|
+
updateMemberRole: typeof OrganizationsApi.updateMemberRole;
|
|
99
|
+
cancelInvitation: typeof OrganizationsApi.cancelInvitation;
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=organizations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../../src/lib/api/organizations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACzD,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACtC,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,gBAAgB,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,gBAAgB,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACpC,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,GAAG,CAAC;CACf;AAED,qBAAa,gBAAgB;IAC5B;;OAEG;WACU,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAIjE;;OAEG;WACU,MAAM,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAIrF;;OAEG;WACU,MAAM,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAI7F;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAIpE;;OAEG;WACU,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAY5D;;OAEG;WACU,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAIrE;;OAEG;WACU,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAI3F;;OAEG;WACU,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAI7F;;OAEG;WACU,gBAAgB,CAC5B,IAAI,EAAE,oBAAoB,GACxB,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAI3C;;OAEG;WACU,MAAM,CAClB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,sBAAsB,GAC1B,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAIrC;;OAEG;WACU,gBAAgB,CAC5B,IAAI,EAAE,oBAAoB,GACxB,OAAO,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAG7C;AAGD,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYzB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Organizations API client - composable organization operations
|
|
2
|
+
import { apiClient } from './client.js';
|
|
3
|
+
export class OrganizationsApi {
|
|
4
|
+
/**
|
|
5
|
+
* List user's organizations
|
|
6
|
+
*/
|
|
7
|
+
static async list() {
|
|
8
|
+
return apiClient.get('/organizations');
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Create new organization (super_admin only)
|
|
12
|
+
*/
|
|
13
|
+
static async create(data) {
|
|
14
|
+
return apiClient.post('/organizations', data);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Switch to a different organization
|
|
18
|
+
*/
|
|
19
|
+
static async switch(data) {
|
|
20
|
+
return apiClient.post('/organizations/switch', data);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get organization by ID
|
|
24
|
+
*/
|
|
25
|
+
static async getById(id) {
|
|
26
|
+
return apiClient.get(`/organizations/${id}`);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get active organization
|
|
30
|
+
*/
|
|
31
|
+
static async getActive() {
|
|
32
|
+
const result = await this.list();
|
|
33
|
+
const active = result.data?.find((org) => org.isActive);
|
|
34
|
+
if (!active) {
|
|
35
|
+
throw new Error('No active organization found');
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
success: true,
|
|
39
|
+
data: active
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get organization members
|
|
44
|
+
*/
|
|
45
|
+
static async getMembers() {
|
|
46
|
+
return apiClient.get('/organizations/members');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Invite a member to the organization
|
|
50
|
+
*/
|
|
51
|
+
static async inviteMember(data) {
|
|
52
|
+
return apiClient.post('/organizations/invitations', data);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Remove a member from the organization
|
|
56
|
+
*/
|
|
57
|
+
static async removeMember(data) {
|
|
58
|
+
return apiClient.delete('/organizations/members', data);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Update a member's role
|
|
62
|
+
*/
|
|
63
|
+
static async updateMemberRole(data) {
|
|
64
|
+
return apiClient.patch('/organizations/members', data);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Update organization settings
|
|
68
|
+
*/
|
|
69
|
+
static async update(id, data) {
|
|
70
|
+
return apiClient.patch(`/organizations/${id}`, data);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Cancel a pending invitation
|
|
74
|
+
*/
|
|
75
|
+
static async cancelInvitation(data) {
|
|
76
|
+
return apiClient.delete('/organizations/invitations', data);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Export convenience functions for direct use
|
|
80
|
+
export const organizations = {
|
|
81
|
+
list: OrganizationsApi.list.bind(OrganizationsApi),
|
|
82
|
+
create: OrganizationsApi.create.bind(OrganizationsApi),
|
|
83
|
+
switch: OrganizationsApi.switch.bind(OrganizationsApi),
|
|
84
|
+
getById: OrganizationsApi.getById.bind(OrganizationsApi),
|
|
85
|
+
getActive: OrganizationsApi.getActive.bind(OrganizationsApi),
|
|
86
|
+
update: OrganizationsApi.update.bind(OrganizationsApi),
|
|
87
|
+
getMembers: OrganizationsApi.getMembers.bind(OrganizationsApi),
|
|
88
|
+
inviteMember: OrganizationsApi.inviteMember.bind(OrganizationsApi),
|
|
89
|
+
removeMember: OrganizationsApi.removeMember.bind(OrganizationsApi),
|
|
90
|
+
updateMemberRole: OrganizationsApi.updateMemberRole.bind(OrganizationsApi),
|
|
91
|
+
cancelInvitation: OrganizationsApi.cancelInvitation.bind(OrganizationsApi)
|
|
92
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Document, NewDocument } from '../types/index.js';
|
|
2
|
+
export interface ApiResponse<T> {
|
|
3
|
+
success: boolean;
|
|
4
|
+
data?: T;
|
|
5
|
+
error?: string;
|
|
6
|
+
message?: string;
|
|
7
|
+
meta?: {
|
|
8
|
+
count: number;
|
|
9
|
+
limit: number;
|
|
10
|
+
offset: number;
|
|
11
|
+
filters: Record<string, any>;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface DocumentListParams {
|
|
15
|
+
docType?: string;
|
|
16
|
+
status?: string;
|
|
17
|
+
limit?: number;
|
|
18
|
+
offset?: number;
|
|
19
|
+
}
|
|
20
|
+
export type CreateDocumentData = Omit<NewDocument, 'id' | 'createdAt' | 'updatedAt' | 'publishedAt'>;
|
|
21
|
+
export type UpdateDocumentData = Partial<Pick<Document, 'draftData' | 'status'>>;
|
|
22
|
+
export type { Document, NewDocument };
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/api/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG/D,MAAM,WAAW,WAAW,CAAC,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC7B,CAAC;CACF;AAGD,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACpC,WAAW,EACX,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAChD,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC;AAGjF,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type AuthErrorCode = 'no_session' | 'session_expired' | 'no_organization' | 'kicked_from_org' | 'unauthorized';
|
|
2
|
+
export declare class AuthError extends Error {
|
|
3
|
+
code: AuthErrorCode;
|
|
4
|
+
constructor(code: AuthErrorCode, message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function createAuthError(code: AuthErrorCode, message: string): AuthError;
|
|
7
|
+
//# sourceMappingURL=auth-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-errors.d.ts","sourceRoot":"","sources":["../../src/lib/auth/auth-errors.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GACtB,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,CAAC;AAElB,qBAAa,SAAU,SAAQ,KAAK;IACnC,IAAI,EAAE,aAAa,CAAC;gBAER,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM;CAKhD;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAE/E"}
|