@aphexcms/cms-core 2.0.5 → 2.0.7
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/documents.d.ts +18 -0
- package/dist/api/documents.d.ts.map +1 -1
- package/dist/api/documents.js +22 -1
- package/dist/components/AdminApp.svelte +53 -1
- package/dist/components/AdminApp.svelte.d.ts.map +1 -1
- package/dist/components/admin/DocumentEditor.svelte +440 -51
- package/dist/components/admin/DocumentEditor.svelte.d.ts +7 -0
- package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
- package/dist/components/admin/DocumentVersionPanel.svelte +138 -0
- package/dist/components/admin/DocumentVersionPanel.svelte.d.ts +15 -0
- package/dist/components/admin/DocumentVersionPanel.svelte.d.ts.map +1 -0
- package/dist/components/admin/MediaBrowser.svelte +42 -13
- package/dist/components/admin/MediaBrowser.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ArrayField.svelte +102 -2
- package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/db/interfaces/document.d.ts +14 -0
- package/dist/db/interfaces/document.d.ts.map +1 -1
- package/dist/db/interfaces/index.d.ts +6 -0
- package/dist/db/interfaces/index.d.ts.map +1 -1
- package/dist/graphql/resolvers.js +1 -1
- package/dist/lib/api/documents.d.ts +18 -0
- package/dist/lib/api/documents.d.ts.map +1 -1
- package/dist/lib/api/documents.js +22 -1
- package/dist/lib/api/documents.js.map +1 -1
- package/dist/lib/components/index.d.ts +1 -0
- package/dist/lib/components/index.d.ts.map +1 -1
- package/dist/lib/components/index.js +1 -0
- package/dist/lib/components/index.js.map +1 -1
- package/dist/lib/db/interfaces/document.d.ts +14 -0
- package/dist/lib/db/interfaces/document.d.ts.map +1 -1
- package/dist/lib/db/interfaces/index.d.ts +6 -0
- package/dist/lib/db/interfaces/index.d.ts.map +1 -1
- package/dist/lib/graphql/resolvers.js +1 -1
- package/dist/lib/graphql/resolvers.js.map +1 -1
- package/dist/lib/local-api/collection-api.d.ts +5 -1
- package/dist/lib/local-api/collection-api.d.ts.map +1 -1
- package/dist/lib/local-api/collection-api.js +26 -6
- package/dist/lib/local-api/collection-api.js.map +1 -1
- package/dist/lib/local-api/index.d.ts +2 -0
- package/dist/lib/local-api/index.d.ts.map +1 -1
- package/dist/lib/local-api/index.js +7 -2
- package/dist/lib/local-api/index.js.map +1 -1
- package/dist/lib/routes/document-versions.d.ts +5 -0
- package/dist/lib/routes/document-versions.d.ts.map +1 -0
- package/dist/lib/routes/document-versions.js +100 -0
- package/dist/lib/routes/document-versions.js.map +1 -0
- package/dist/lib/routes-exports.d.ts +1 -0
- package/dist/lib/routes-exports.d.ts.map +1 -1
- package/dist/lib/routes-exports.js +1 -0
- package/dist/lib/routes-exports.js.map +1 -1
- package/dist/lib/services/index.d.ts +1 -0
- package/dist/lib/services/index.d.ts.map +1 -1
- package/dist/lib/services/index.js +1 -0
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/version-service.d.ts +39 -0
- package/dist/lib/services/version-service.d.ts.map +1 -0
- package/dist/lib/services/version-service.js +129 -0
- package/dist/lib/services/version-service.js.map +1 -0
- package/dist/lib/types/config.d.ts +7 -0
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/document.d.ts +2 -2
- package/dist/lib/types/document.d.ts.map +1 -1
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/index.js +1 -0
- package/dist/lib/types/index.js.map +1 -1
- package/dist/lib/types/schemas.d.ts +3 -0
- package/dist/lib/types/schemas.d.ts.map +1 -1
- package/dist/lib/types/version.d.ts +15 -0
- package/dist/lib/types/version.d.ts.map +1 -0
- package/dist/lib/types/version.js +2 -0
- package/dist/lib/types/version.js.map +1 -0
- package/dist/local-api/collection-api.d.ts +5 -1
- package/dist/local-api/collection-api.d.ts.map +1 -1
- package/dist/local-api/collection-api.js +26 -6
- package/dist/local-api/index.d.ts +2 -0
- package/dist/local-api/index.d.ts.map +1 -1
- package/dist/local-api/index.js +7 -2
- package/dist/routes/document-versions.d.ts +5 -0
- package/dist/routes/document-versions.d.ts.map +1 -0
- package/dist/routes/document-versions.js +99 -0
- package/dist/routes-exports.d.ts +1 -0
- package/dist/routes-exports.d.ts.map +1 -1
- package/dist/routes-exports.js +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -0
- package/dist/services/version-service.d.ts +39 -0
- package/dist/services/version-service.d.ts.map +1 -0
- package/dist/services/version-service.js +128 -0
- package/dist/types/config.d.ts +7 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/document.d.ts +2 -2
- package/dist/types/document.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/schemas.d.ts +3 -0
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/version.d.ts +15 -0
- package/dist/types/version.d.ts.map +1 -0
- package/dist/types/version.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Aphex CMS Document Version API Handlers
|
|
2
|
+
import { json } from '@sveltejs/kit';
|
|
3
|
+
import { authToContext } from '../local-api/auth-helpers.js';
|
|
4
|
+
import { cmsLogger } from '../utils/logger.js';
|
|
5
|
+
// GET /api/documents/[id]/versions - List version history
|
|
6
|
+
export const GET = async ({ params, url, locals }) => {
|
|
7
|
+
try {
|
|
8
|
+
const { localAPI, databaseAdapter } = locals.aphexCMS;
|
|
9
|
+
const context = authToContext(locals.auth);
|
|
10
|
+
const { id } = params;
|
|
11
|
+
if (!id) {
|
|
12
|
+
return json({ success: false, error: 'Document ID is required' }, { status: 400 });
|
|
13
|
+
}
|
|
14
|
+
const limit = parseInt(url.searchParams.get('limit') || '25');
|
|
15
|
+
const offset = parseInt(url.searchParams.get('offset') || '0');
|
|
16
|
+
const result = await localAPI.versionService.listVersions(databaseAdapter, context.organizationId, id, { limit, offset });
|
|
17
|
+
// Resolve user names for createdBy IDs
|
|
18
|
+
const userIds = [...new Set(result.versions.map((v) => v.createdBy).filter(Boolean))];
|
|
19
|
+
const userMap = new Map();
|
|
20
|
+
if (userIds.length > 0 && locals.aphexCMS.auth) {
|
|
21
|
+
await Promise.all(userIds.map(async (userId) => {
|
|
22
|
+
try {
|
|
23
|
+
const user = await locals.aphexCMS.auth.getUserById(userId);
|
|
24
|
+
if (user) {
|
|
25
|
+
userMap.set(userId, user.name || user.email);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// User not found — skip
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
const versionsWithUsers = result.versions.map((v) => ({
|
|
34
|
+
...v,
|
|
35
|
+
createdByName: v.createdBy ? userMap.get(v.createdBy) || null : null
|
|
36
|
+
}));
|
|
37
|
+
return json({
|
|
38
|
+
success: true,
|
|
39
|
+
data: versionsWithUsers,
|
|
40
|
+
total: result.total
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
cmsLogger.error('Failed to list document versions:', error);
|
|
45
|
+
return json({ success: false, error: 'Failed to list versions' }, { status: 500 });
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
// GET /api/documents/[id]/versions/[version] - Get specific version
|
|
49
|
+
export const getVersion = async ({ params, locals }) => {
|
|
50
|
+
try {
|
|
51
|
+
const { localAPI, databaseAdapter } = locals.aphexCMS;
|
|
52
|
+
const context = authToContext(locals.auth);
|
|
53
|
+
const { id, version } = params;
|
|
54
|
+
if (!id || !version) {
|
|
55
|
+
return json({ success: false, error: 'Document ID and version number are required' }, { status: 400 });
|
|
56
|
+
}
|
|
57
|
+
const versionNumber = parseInt(version);
|
|
58
|
+
if (isNaN(versionNumber)) {
|
|
59
|
+
return json({ success: false, error: 'Version must be a number' }, { status: 400 });
|
|
60
|
+
}
|
|
61
|
+
const result = await localAPI.versionService.getVersion(databaseAdapter, context.organizationId, id, versionNumber);
|
|
62
|
+
if (!result) {
|
|
63
|
+
return json({ success: false, error: 'Version not found' }, { status: 404 });
|
|
64
|
+
}
|
|
65
|
+
return json({ success: true, data: result });
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
cmsLogger.error('Failed to get document version:', error);
|
|
69
|
+
return json({ success: false, error: 'Failed to get version' }, { status: 500 });
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
// POST /api/documents/[id]/versions/[version]/restore - Restore version to draft
|
|
73
|
+
export const restoreVersion = async ({ params, locals }) => {
|
|
74
|
+
try {
|
|
75
|
+
const { localAPI, databaseAdapter } = locals.aphexCMS;
|
|
76
|
+
const context = authToContext(locals.auth);
|
|
77
|
+
const { id, version } = params;
|
|
78
|
+
if (!id || !version) {
|
|
79
|
+
return json({ success: false, error: 'Document ID and version number are required' }, { status: 400 });
|
|
80
|
+
}
|
|
81
|
+
const versionNumber = parseInt(version);
|
|
82
|
+
if (isNaN(versionNumber)) {
|
|
83
|
+
return json({ success: false, error: 'Version must be a number' }, { status: 400 });
|
|
84
|
+
}
|
|
85
|
+
const document = await localAPI.versionService.restoreVersion(databaseAdapter, context.organizationId, id, versionNumber, context.user?.id);
|
|
86
|
+
if (!document) {
|
|
87
|
+
return json({ success: false, error: 'Version not found or restore failed' }, { status: 404 });
|
|
88
|
+
}
|
|
89
|
+
return json({
|
|
90
|
+
success: true,
|
|
91
|
+
data: document,
|
|
92
|
+
message: `Restored to version ${versionNumber}`
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
cmsLogger.error('Failed to restore document version:', error);
|
|
97
|
+
return json({ success: false, error: 'Failed to restore version' }, { status: 500 });
|
|
98
|
+
}
|
|
99
|
+
};
|
package/dist/routes-exports.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { GET as getDocuments, POST as createDocument } from './routes/documents.js';
|
|
2
2
|
export { GET as getDocumentById, PUT as updateDocument, DELETE as deleteDocument } from './routes/documents-by-id.js';
|
|
3
3
|
export { POST as publishDocument, DELETE as unpublishDocument } from './routes/documents-publish.js';
|
|
4
|
+
export { GET as getDocumentVersions, getVersion as getDocumentVersion, restoreVersion as restoreDocumentVersion } from './routes/document-versions.js';
|
|
4
5
|
export { GET as getAssets, POST as createAsset } from './routes/assets.js';
|
|
5
6
|
export { GET as getAssetById, PATCH as updateAsset, DELETE as deleteAsset } from './routes/assets-by-id.js';
|
|
6
7
|
export { GET as serveAssetCDN } from './routes/assets-cdn.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-exports.d.ts","sourceRoot":"","sources":["../src/lib/routes-exports.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,IAAI,YAAY,EAAE,IAAI,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EACN,GAAG,IAAI,eAAe,EACtB,GAAG,IAAI,cAAc,EACrB,MAAM,IAAI,cAAc,EACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,IAAI,IAAI,eAAe,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"routes-exports.d.ts","sourceRoot":"","sources":["../src/lib/routes-exports.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,IAAI,YAAY,EAAE,IAAI,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EACN,GAAG,IAAI,eAAe,EACtB,GAAG,IAAI,cAAc,EACrB,MAAM,IAAI,cAAc,EACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,IAAI,IAAI,eAAe,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EACN,GAAG,IAAI,mBAAmB,EAC1B,UAAU,IAAI,kBAAkB,EAChC,cAAc,IAAI,sBAAsB,EACxC,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,GAAG,IAAI,SAAS,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EACN,GAAG,IAAI,YAAY,EACnB,KAAK,IAAI,WAAW,EACpB,MAAM,IAAI,WAAW,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,GAAG,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,GAAG,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,IAAI,IAAI,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAGpF,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,GAAG,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,GAAG,IAAI,gBAAgB,EAAE,IAAI,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EACN,GAAG,IAAI,mBAAmB,EAC1B,KAAK,IAAI,kBAAkB,EAC3B,MAAM,IAAI,kBAAkB,EAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EACN,GAAG,IAAI,sBAAsB,EAC7B,MAAM,IAAI,YAAY,EACtB,KAAK,IAAI,gBAAgB,EACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACN,IAAI,IAAI,YAAY,EACpB,MAAM,IAAI,gBAAgB,EAC1B,MAAM,oCAAoC,CAAC"}
|
package/dist/routes-exports.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
export { GET as getDocuments, POST as createDocument } from './routes/documents.js';
|
|
5
5
|
export { GET as getDocumentById, PUT as updateDocument, DELETE as deleteDocument } from './routes/documents-by-id.js';
|
|
6
6
|
export { POST as publishDocument, DELETE as unpublishDocument } from './routes/documents-publish.js';
|
|
7
|
+
export { GET as getDocumentVersions, getVersion as getDocumentVersion, restoreVersion as restoreDocumentVersion } from './routes/document-versions.js';
|
|
7
8
|
// Asset routes
|
|
8
9
|
export { GET as getAssets, POST as createAsset } from './routes/assets.js';
|
|
9
10
|
export { GET as getAssetById, PATCH as updateAsset, DELETE as deleteAsset } from './routes/assets-by-id.js';
|
package/dist/services/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { AssetService } from './asset-service.js';
|
|
2
2
|
export type { AssetUploadData, AssetFilters } from './asset-service.js';
|
|
3
3
|
export { HierarchyService } from './hierarchy-service.js';
|
|
4
|
+
export { VersionService } from './version-service.js';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/services/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/services/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/services/index.js
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { DatabaseAdapter } from '../db/index.js';
|
|
2
|
+
import type { Document } from '../types/document.js';
|
|
3
|
+
import type { DocumentVersion, DocumentVersionList } from '../types/version.js';
|
|
4
|
+
/**
|
|
5
|
+
* VersionService — orchestrates document versioning with rolling retention.
|
|
6
|
+
*
|
|
7
|
+
* Stateless regarding the adapter — each method receives the adapter to use.
|
|
8
|
+
* This allows CollectionAPI to pass whichever adapter is active (user or system),
|
|
9
|
+
* ensuring proper RLS context propagation.
|
|
10
|
+
*/
|
|
11
|
+
export declare class VersionService {
|
|
12
|
+
private maxVersions;
|
|
13
|
+
constructor(options?: {
|
|
14
|
+
maxVersions?: number;
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Create a version snapshot and enforce rolling retention.
|
|
18
|
+
*/
|
|
19
|
+
createVersion(db: DatabaseAdapter, organizationId: string, documentId: string, eventType: 'draft' | 'publish', data: any, userId?: string | null): Promise<DocumentVersion | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Save draft and create version atomically using adapter transaction.
|
|
22
|
+
*/
|
|
23
|
+
saveWithVersion(db: DatabaseAdapter, organizationId: string, documentId: string, data: any, userId?: string): Promise<Document | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Publish and create version.
|
|
26
|
+
*/
|
|
27
|
+
publishWithVersion(db: DatabaseAdapter, organizationId: string, documentId: string): Promise<Document | null>;
|
|
28
|
+
/**
|
|
29
|
+
* Restore a version to draft. Creates a 'draft' version entry.
|
|
30
|
+
*/
|
|
31
|
+
restoreVersion(db: DatabaseAdapter, organizationId: string, documentId: string, versionNumber: number, userId?: string): Promise<Document | null>;
|
|
32
|
+
listVersions(db: DatabaseAdapter, organizationId: string, documentId: string, options?: {
|
|
33
|
+
limit?: number;
|
|
34
|
+
offset?: number;
|
|
35
|
+
}): Promise<DocumentVersionList>;
|
|
36
|
+
getVersion(db: DatabaseAdapter, organizationId: string, documentId: string, versionNumber: number): Promise<DocumentVersion | null>;
|
|
37
|
+
private enforceRetention;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=version-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-service.d.ts","sourceRoot":"","sources":["../../src/lib/services/version-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE7E;;;;;;GAMG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAI9C;;OAEG;IACG,aAAa,CAClB,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,OAAO,GAAG,SAAS,EAC9B,IAAI,EAAE,GAAG,EACT,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAelC;;OAEG;IACG,eAAe,CACpB,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,GAAG,EACT,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA2B3B;;OAEG;IACG,kBAAkB,CACvB,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgB3B;;OAEG;IACG,cAAc,CACnB,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAqCrB,YAAY,CACjB,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC,mBAAmB,CAAC;IAKzB,UAAU,CACf,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;YAKpB,gBAAgB;CAoB9B"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VersionService — orchestrates document versioning with rolling retention.
|
|
3
|
+
*
|
|
4
|
+
* Stateless regarding the adapter — each method receives the adapter to use.
|
|
5
|
+
* This allows CollectionAPI to pass whichever adapter is active (user or system),
|
|
6
|
+
* ensuring proper RLS context propagation.
|
|
7
|
+
*/
|
|
8
|
+
export class VersionService {
|
|
9
|
+
maxVersions;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.maxVersions = options?.maxVersions ?? 25;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Create a version snapshot and enforce rolling retention.
|
|
15
|
+
*/
|
|
16
|
+
async createVersion(db, organizationId, documentId, eventType, data, userId) {
|
|
17
|
+
if (!db.createDocumentVersion)
|
|
18
|
+
return null;
|
|
19
|
+
const version = await db.createDocumentVersion({
|
|
20
|
+
documentId,
|
|
21
|
+
organizationId,
|
|
22
|
+
eventType,
|
|
23
|
+
data,
|
|
24
|
+
createdBy: userId
|
|
25
|
+
});
|
|
26
|
+
await this.enforceRetention(db, documentId, organizationId);
|
|
27
|
+
return version;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Save draft and create version atomically using adapter transaction.
|
|
31
|
+
*/
|
|
32
|
+
async saveWithVersion(db, organizationId, documentId, data, userId) {
|
|
33
|
+
if (db.withTransaction && db.createDocumentVersion) {
|
|
34
|
+
const updated = await db.withTransaction(async (txAdapter) => {
|
|
35
|
+
const result = await txAdapter.updateDocDraft(organizationId, documentId, data, userId);
|
|
36
|
+
if (result) {
|
|
37
|
+
await txAdapter.createDocumentVersion({
|
|
38
|
+
documentId,
|
|
39
|
+
organizationId,
|
|
40
|
+
eventType: 'draft',
|
|
41
|
+
data,
|
|
42
|
+
createdBy: userId
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
});
|
|
47
|
+
if (updated)
|
|
48
|
+
await this.enforceRetention(db, documentId, organizationId);
|
|
49
|
+
return updated;
|
|
50
|
+
}
|
|
51
|
+
// Fallback: non-atomic
|
|
52
|
+
const updated = await db.updateDocDraft(organizationId, documentId, data, userId);
|
|
53
|
+
if (updated) {
|
|
54
|
+
await this.createVersion(db, organizationId, documentId, 'draft', data, userId);
|
|
55
|
+
}
|
|
56
|
+
return updated;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Publish and create version.
|
|
60
|
+
*/
|
|
61
|
+
async publishWithVersion(db, organizationId, documentId) {
|
|
62
|
+
const published = await db.publishDoc(organizationId, documentId);
|
|
63
|
+
if (!published)
|
|
64
|
+
return null;
|
|
65
|
+
await this.createVersion(db, organizationId, documentId, 'publish', published.publishedData, published.updatedBy);
|
|
66
|
+
return published;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Restore a version to draft. Creates a 'draft' version entry.
|
|
70
|
+
*/
|
|
71
|
+
async restoreVersion(db, organizationId, documentId, versionNumber, userId) {
|
|
72
|
+
if (!db.getDocumentVersion)
|
|
73
|
+
return null;
|
|
74
|
+
const version = await db.getDocumentVersion(organizationId, documentId, versionNumber);
|
|
75
|
+
if (!version)
|
|
76
|
+
return null;
|
|
77
|
+
if (db.withTransaction && db.createDocumentVersion) {
|
|
78
|
+
const restored = await db.withTransaction(async (txAdapter) => {
|
|
79
|
+
const result = await txAdapter.updateDocDraft(organizationId, documentId, version.data, userId);
|
|
80
|
+
if (result) {
|
|
81
|
+
await txAdapter.createDocumentVersion({
|
|
82
|
+
documentId,
|
|
83
|
+
organizationId,
|
|
84
|
+
eventType: 'draft',
|
|
85
|
+
data: version.data,
|
|
86
|
+
createdBy: userId
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return result;
|
|
90
|
+
});
|
|
91
|
+
if (restored)
|
|
92
|
+
await this.enforceRetention(db, documentId, organizationId);
|
|
93
|
+
return restored;
|
|
94
|
+
}
|
|
95
|
+
// Fallback: non-atomic
|
|
96
|
+
const restored = await db.updateDocDraft(organizationId, documentId, version.data, userId);
|
|
97
|
+
if (restored) {
|
|
98
|
+
await this.createVersion(db, organizationId, documentId, 'draft', version.data, userId);
|
|
99
|
+
}
|
|
100
|
+
return restored;
|
|
101
|
+
}
|
|
102
|
+
async listVersions(db, organizationId, documentId, options) {
|
|
103
|
+
if (!db.listDocumentVersions)
|
|
104
|
+
return { versions: [], total: 0 };
|
|
105
|
+
return db.listDocumentVersions(organizationId, documentId, options);
|
|
106
|
+
}
|
|
107
|
+
async getVersion(db, organizationId, documentId, versionNumber) {
|
|
108
|
+
if (!db.getDocumentVersion)
|
|
109
|
+
return null;
|
|
110
|
+
return db.getDocumentVersion(organizationId, documentId, versionNumber);
|
|
111
|
+
}
|
|
112
|
+
async enforceRetention(db, documentId, organizationId) {
|
|
113
|
+
if (this.maxVersions <= 0)
|
|
114
|
+
return;
|
|
115
|
+
if (!db.listDocumentVersions || !db.deleteDocumentVersions)
|
|
116
|
+
return;
|
|
117
|
+
const { total, versions } = await db.listDocumentVersions(organizationId, documentId, {
|
|
118
|
+
limit: 1000,
|
|
119
|
+
offset: 0
|
|
120
|
+
});
|
|
121
|
+
if (total <= this.maxVersions)
|
|
122
|
+
return;
|
|
123
|
+
const toDelete = versions.slice(this.maxVersions);
|
|
124
|
+
if (toDelete.length > 0) {
|
|
125
|
+
await db.deleteDocumentVersions(documentId, toDelete.map((v) => v.id));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -72,6 +72,13 @@ export interface CMSConfig {
|
|
|
72
72
|
* - `CacheAdapter` instance: caches published-perspective reads, invalidated on publish/unpublish
|
|
73
73
|
*/
|
|
74
74
|
cache?: CacheAdapter | null;
|
|
75
|
+
/**
|
|
76
|
+
* Version history configuration.
|
|
77
|
+
* - `maxVersions`: Maximum versions to keep per document (rolling). Default: 25. Set to 0 for unlimited.
|
|
78
|
+
*/
|
|
79
|
+
versioning?: {
|
|
80
|
+
maxVersions?: number;
|
|
81
|
+
};
|
|
75
82
|
security?: {
|
|
76
83
|
/**
|
|
77
84
|
* Secret key for signing asset URLs (enables multi-tenant access without exposing API keys)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/types/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;KAAE,CAAC;IAC1E,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAC;AAEtE,MAAM,WAAW,SAAS;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE;QACf,QAAQ,CAAC,EAAE;YACV,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,KAAK,CAAC,EAAE;YACP,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC/B,CAAC;KACF,CAAC;IACF;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACxD,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE;QACN,QAAQ,EAAE,YAAY,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE;QACV;;;;WAIG;QACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/types/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;KAAE,CAAC;IAC1E,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAC;AAEtE,MAAM,WAAW,SAAS;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE;QACf,QAAQ,CAAC,EAAE;YACV,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,KAAK,CAAC,EAAE;YACP,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC/B,CAAC;KACF,CAAC;IACF;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACxD,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE;QACN,QAAQ,EAAE,YAAY,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,CAAC,EAAE;QACV;;;;WAIG;QACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACF"}
|
package/dist/types/document.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export interface Document {
|
|
|
6
6
|
id: string;
|
|
7
7
|
organizationId: string;
|
|
8
8
|
type: string;
|
|
9
|
-
status: 'draft' | 'published' | null;
|
|
9
|
+
status: 'draft' | 'published' | 'unpublished' | null;
|
|
10
10
|
draftData: any;
|
|
11
11
|
publishedData: any;
|
|
12
12
|
publishedHash: string | null;
|
|
@@ -22,7 +22,7 @@ export interface Document {
|
|
|
22
22
|
export interface NewDocument {
|
|
23
23
|
id?: string;
|
|
24
24
|
type: string;
|
|
25
|
-
status?: 'draft' | 'published' | null;
|
|
25
|
+
status?: 'draft' | 'published' | 'unpublished' | null;
|
|
26
26
|
draftData?: any;
|
|
27
27
|
publishedData?: any;
|
|
28
28
|
publishedHash?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/lib/types/document.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/lib/types/document.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,IAAI,CAAC;IACrD,SAAS,EAAE,GAAG,CAAC;IACf,aAAa,EAAE,GAAG,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,IAAI,CAAC;IACtD,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
package/dist/types/index.js
CHANGED
package/dist/types/schemas.d.ts
CHANGED
|
@@ -84,6 +84,9 @@ export interface ArrayField extends BaseField {
|
|
|
84
84
|
type: 'array';
|
|
85
85
|
of: TypeReference[];
|
|
86
86
|
initialValue?: any[] | (() => any[] | Promise<any[]>);
|
|
87
|
+
options?: {
|
|
88
|
+
layout?: 'grid' | 'list';
|
|
89
|
+
};
|
|
87
90
|
}
|
|
88
91
|
export interface ObjectField extends BaseField {
|
|
89
92
|
type: 'object';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/lib/types/schemas.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/lib/types/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface DocumentVersion {
|
|
2
|
+
id: string;
|
|
3
|
+
documentId: string;
|
|
4
|
+
organizationId: string;
|
|
5
|
+
versionNumber: number;
|
|
6
|
+
eventType: 'draft' | 'publish';
|
|
7
|
+
data: any;
|
|
8
|
+
createdBy: string | null;
|
|
9
|
+
createdAt: Date | null;
|
|
10
|
+
}
|
|
11
|
+
export interface DocumentVersionList {
|
|
12
|
+
versions: DocumentVersion[];
|
|
13
|
+
total: number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/types/version.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|