@bernierllc/content-storage-adapter 3.0.1 → 3.0.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bernierllc/content-storage-adapter",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "Type-safe CRUD operations for content management with soft-delete, version tracking, and optimistic locking",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  "LICENSE"
21
21
  ],
22
22
  "dependencies": {
23
- "@bernierllc/database-adapter-core": "3.0.1",
23
+ "@bernierllc/database-adapter-core": "3.0.2",
24
24
  "@bernierllc/slug-generator": "1.3.0"
25
25
  },
26
26
  "devDependencies": {
@@ -1,22 +0,0 @@
1
- import { ContentStorageAdapter } from './ContentStorageAdapter';
2
- import { ContentStatus } from './models/IContent';
3
- /**
4
- * Batch operations for content management
5
- */
6
- export declare class ContentBatchOperations {
7
- private adapter;
8
- constructor(adapter: ContentStorageAdapter);
9
- /**
10
- * Bulk update status for multiple content items
11
- */
12
- bulkUpdateStatus(ids: string[], status: ContentStatus): Promise<number>;
13
- /**
14
- * Bulk soft delete
15
- */
16
- bulkDelete(ids: string[]): Promise<number>;
17
- /**
18
- * Bulk restore
19
- */
20
- bulkRestore(ids: string[]): Promise<number>;
21
- }
22
- //# sourceMappingURL=ContentBatchOperations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContentBatchOperations.d.ts","sourceRoot":"","sources":["../src/ContentBatchOperations.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,qBAAa,sBAAsB;IACrB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAElD;;OAEG;IACG,gBAAgB,CACpB,GAAG,EAAE,MAAM,EAAE,EACb,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC;IAelB;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAchD;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAalD"}
@@ -1,61 +0,0 @@
1
- "use strict";
2
- /*
3
- Copyright (c) 2025 Bernier LLC
4
-
5
- This file is licensed to the client under a limited-use license.
6
- The client may use and modify this code *only within the scope of the project it was delivered for*.
7
- Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ContentBatchOperations = void 0;
11
- /**
12
- * Batch operations for content management
13
- */
14
- class ContentBatchOperations {
15
- adapter;
16
- constructor(adapter) {
17
- this.adapter = adapter;
18
- }
19
- /**
20
- * Bulk update status for multiple content items
21
- */
22
- async bulkUpdateStatus(ids, status) {
23
- let updated = 0;
24
- for (const id of ids) {
25
- try {
26
- await this.adapter.update(id, { status });
27
- updated++;
28
- }
29
- catch (error) {
30
- // Continue on individual failures
31
- }
32
- }
33
- return updated;
34
- }
35
- /**
36
- * Bulk soft delete
37
- */
38
- async bulkDelete(ids) {
39
- const db = this.adapter.db;
40
- const result = await db.query(`
41
- UPDATE content
42
- SET deleted_at = NOW()
43
- WHERE id = ANY($1) AND deleted_at IS NULL
44
- `, [ids]);
45
- return result.rowCount;
46
- }
47
- /**
48
- * Bulk restore
49
- */
50
- async bulkRestore(ids) {
51
- const db = this.adapter.db;
52
- const result = await db.query(`
53
- UPDATE content
54
- SET deleted_at = NULL
55
- WHERE id = ANY($1) AND deleted_at IS NOT NULL
56
- `, [ids]);
57
- return result.rowCount;
58
- }
59
- }
60
- exports.ContentBatchOperations = ContentBatchOperations;
61
- //# sourceMappingURL=ContentBatchOperations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContentBatchOperations.js","sourceRoot":"","sources":["../src/ContentBatchOperations.ts"],"names":[],"mappings":";AAAA;;;;;;EAME;;;AAKF;;GAEG;AACH,MAAa,sBAAsB;IACb;IAApB,YAAoB,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;IAAG,CAAC;IAEtD;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,GAAa,EACb,MAAqB;QAErB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1C,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,kCAAkC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,GAAa;QAC5B,MAAM,EAAE,GAAI,IAAI,CAAC,OAA2G,CAAC,EAAE,CAAC;QAChI,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B;;;;OAIC,EACD,CAAC,GAAG,CAAC,CACN,CAAC;QAEF,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,GAAa;QAC7B,MAAM,EAAE,GAAI,IAAI,CAAC,OAA2G,CAAC,EAAE,CAAC;QAChI,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B;;;;OAIC,EACD,CAAC,GAAG,CAAC,CACN,CAAC;QAEF,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;CACF;AAzDD,wDAyDC"}
@@ -1,75 +0,0 @@
1
- import { IDatabaseAdapter } from '@bernierllc/database-adapter-core';
2
- import { IContent, IContentCreateData, IContentUpdateData } from './models/IContent';
3
- import { IContentVersion } from './models/IContentVersion';
4
- import { IContentFilters, IPaginatedResult } from './models/IContentFilters';
5
- /**
6
- * Content storage adapter
7
- * Provides type-safe CRUD operations for content management
8
- */
9
- export declare class ContentStorageAdapter {
10
- private db;
11
- constructor(db: IDatabaseAdapter);
12
- /**
13
- * Create new content with automatic slug generation
14
- */
15
- create(data: IContentCreateData): Promise<IContent>;
16
- /**
17
- * Get content by ID (with soft-delete check)
18
- */
19
- getById(id: string, options?: {
20
- includeDeleted?: boolean;
21
- }): Promise<IContent | null>;
22
- /**
23
- * Get content by slug
24
- */
25
- getBySlug(slug: string): Promise<IContent | null>;
26
- /**
27
- * Update content with optimistic locking
28
- */
29
- update(id: string, data: IContentUpdateData, expectedUpdatedAt?: Date): Promise<IContent>;
30
- /**
31
- * Soft delete content
32
- */
33
- delete(id: string): Promise<void>;
34
- /**
35
- * Permanently delete content (use sparingly)
36
- */
37
- hardDelete(id: string): Promise<void>;
38
- /**
39
- * Restore soft-deleted content
40
- */
41
- restore(id: string): Promise<IContent>;
42
- /**
43
- * List content with filters and pagination
44
- */
45
- list(filters?: IContentFilters): Promise<IPaginatedResult<IContent>>;
46
- /**
47
- * Get content versions
48
- */
49
- getVersions(contentId: string): Promise<IContentVersion[]>;
50
- /**
51
- * Get specific version
52
- */
53
- getVersion(contentId: string, versionNumber: number): Promise<IContentVersion | null>;
54
- /**
55
- * Ensure slug is unique by appending number if needed
56
- */
57
- private ensureUniqueSlug;
58
- /**
59
- * Check if slug exists
60
- */
61
- private slugExists;
62
- /**
63
- * Map database row to content model
64
- */
65
- private mapRowToContent;
66
- /**
67
- * Map database row to version model
68
- */
69
- private mapRowToVersion;
70
- /**
71
- * Map order field to database column
72
- */
73
- private mapOrderField;
74
- }
75
- //# sourceMappingURL=ContentStorageAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContentStorageAdapter.d.ts","sourceRoot":"","sources":["../src/ContentStorageAdapter.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAInB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG7E;;;GAGG;AACH,qBAAa,qBAAqB;IACpB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,gBAAgB;IAExC;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsCzD;;OAEG;IACG,OAAO,CACX,EAAE,EAAE,MAAM,EACV,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GACzC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAe3B;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAWvD;;OAEG;IACG,MAAM,CACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,kBAAkB,EACxB,iBAAiB,CAAC,EAAE,IAAI,GACvB,OAAO,CAAC,QAAQ,CAAC;IAoFpB;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAevC;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkB5C;;OAEG;IACG,IAAI,CACR,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAqGtC;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAahE;;OAEG;IACG,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAclC;;OAEG;YACW,gBAAgB;IAY9B;;OAEG;YACW,UAAU;IAQxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgCvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,aAAa;CAStB"}
@@ -1,382 +0,0 @@
1
- "use strict";
2
- /*
3
- Copyright (c) 2025 Bernier LLC
4
-
5
- This file is licensed to the client under a limited-use license.
6
- The client may use and modify this code *only within the scope of the project it was delivered for*.
7
- Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ContentStorageAdapter = void 0;
11
- const slug_generator_1 = require("@bernierllc/slug-generator");
12
- const IContent_1 = require("./models/IContent");
13
- const errors_1 = require("./errors");
14
- /**
15
- * Content storage adapter
16
- * Provides type-safe CRUD operations for content management
17
- */
18
- class ContentStorageAdapter {
19
- db;
20
- constructor(db) {
21
- this.db = db;
22
- }
23
- /**
24
- * Create new content with automatic slug generation
25
- */
26
- async create(data) {
27
- // Generate unique slug from title
28
- const baseSlug = (0, slug_generator_1.generateSlug)(data.title);
29
- const slug = await this.ensureUniqueSlug(baseSlug);
30
- const result = await this.db.query(`
31
- INSERT INTO content (
32
- user_id, title, slug, body, excerpt, type, format, status,
33
- meta_title, meta_description, keywords,
34
- ai_reviewed, view_count, share_count, generated_from_commit
35
- ) VALUES (
36
- $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15
37
- )
38
- RETURNING *
39
- `, [
40
- data.userId,
41
- data.title,
42
- slug,
43
- data.body,
44
- data.excerpt || null,
45
- data.type || IContent_1.ContentType.BLOG,
46
- data.format || IContent_1.ContentFormat.MARKDOWN,
47
- data.status || IContent_1.ContentStatus.DRAFT,
48
- data.metaTitle || null,
49
- data.metaDescription || null,
50
- data.keywords || [],
51
- false, // ai_reviewed
52
- 0, // view_count
53
- 0, // share_count
54
- false // generated_from_commit
55
- ]);
56
- return this.mapRowToContent(result.rows[0]);
57
- }
58
- /**
59
- * Get content by ID (with soft-delete check)
60
- */
61
- async getById(id, options = {}) {
62
- const whereClause = options.includeDeleted
63
- ? 'id = $1'
64
- : 'id = $1 AND deleted_at IS NULL';
65
- const result = await this.db.query(`SELECT * FROM content WHERE ${whereClause}`, [id]);
66
- return result.rows.length > 0
67
- ? this.mapRowToContent(result.rows[0])
68
- : null;
69
- }
70
- /**
71
- * Get content by slug
72
- */
73
- async getBySlug(slug) {
74
- const result = await this.db.query('SELECT * FROM content WHERE slug = $1 AND deleted_at IS NULL', [slug]);
75
- return result.rows.length > 0
76
- ? this.mapRowToContent(result.rows[0])
77
- : null;
78
- }
79
- /**
80
- * Update content with optimistic locking
81
- */
82
- async update(id, data, expectedUpdatedAt) {
83
- // Build dynamic UPDATE query
84
- const updates = [];
85
- const params = [];
86
- let paramIndex = 1;
87
- if (data.title !== undefined) {
88
- updates.push(`title = $${paramIndex++}`);
89
- params.push(data.title);
90
- }
91
- if (data.body !== undefined) {
92
- updates.push(`body = $${paramIndex++}`);
93
- params.push(data.body);
94
- }
95
- if (data.excerpt !== undefined) {
96
- updates.push(`excerpt = $${paramIndex++}`);
97
- params.push(data.excerpt);
98
- }
99
- if (data.status !== undefined) {
100
- updates.push(`status = $${paramIndex++}`);
101
- params.push(data.status);
102
- }
103
- if (data.workflowStage !== undefined) {
104
- updates.push(`workflow_stage = $${paramIndex++}`);
105
- params.push(data.workflowStage);
106
- }
107
- if (data.assignedTo !== undefined) {
108
- updates.push(`assigned_to = $${paramIndex++}`);
109
- params.push(data.assignedTo);
110
- }
111
- if (data.publishedAt !== undefined) {
112
- updates.push(`published_at = $${paramIndex++}`);
113
- params.push(data.publishedAt);
114
- }
115
- if (data.scheduledFor !== undefined) {
116
- updates.push(`scheduled_for = $${paramIndex++}`);
117
- params.push(data.scheduledFor);
118
- }
119
- if (data.metaTitle !== undefined) {
120
- updates.push(`meta_title = $${paramIndex++}`);
121
- params.push(data.metaTitle);
122
- }
123
- if (data.metaDescription !== undefined) {
124
- updates.push(`meta_description = $${paramIndex++}`);
125
- params.push(data.metaDescription);
126
- }
127
- if (data.keywords !== undefined) {
128
- updates.push(`keywords = $${paramIndex++}`);
129
- params.push(data.keywords);
130
- }
131
- if (updates.length === 0) {
132
- throw new Error('No fields to update');
133
- }
134
- // Add optimistic locking check
135
- params.push(id);
136
- const idParam = paramIndex++;
137
- let whereClause = `id = $${idParam} AND deleted_at IS NULL`;
138
- if (expectedUpdatedAt) {
139
- params.push(expectedUpdatedAt);
140
- whereClause += ` AND updated_at = $${paramIndex++}`;
141
- }
142
- const sql = `
143
- UPDATE content
144
- SET ${updates.join(', ')}, updated_at = NOW()
145
- WHERE ${whereClause}
146
- RETURNING *
147
- `;
148
- const result = await this.db.query(sql, params);
149
- if (result.rows.length === 0) {
150
- if (expectedUpdatedAt) {
151
- throw new errors_1.OptimisticLockError(id);
152
- }
153
- throw new errors_1.ContentNotFoundError(id);
154
- }
155
- return this.mapRowToContent(result.rows[0]);
156
- }
157
- /**
158
- * Soft delete content
159
- */
160
- async delete(id) {
161
- const result = await this.db.query(`
162
- UPDATE content
163
- SET deleted_at = NOW()
164
- WHERE id = $1 AND deleted_at IS NULL
165
- `, [id]);
166
- if (result.rowCount === 0) {
167
- throw new errors_1.ContentNotFoundError(id);
168
- }
169
- }
170
- /**
171
- * Permanently delete content (use sparingly)
172
- */
173
- async hardDelete(id) {
174
- await this.db.query('DELETE FROM content WHERE id = $1', [id]);
175
- }
176
- /**
177
- * Restore soft-deleted content
178
- */
179
- async restore(id) {
180
- const result = await this.db.query(`
181
- UPDATE content
182
- SET deleted_at = NULL
183
- WHERE id = $1 AND deleted_at IS NOT NULL
184
- RETURNING *
185
- `, [id]);
186
- if (result.rows.length === 0) {
187
- throw new Error('Content not found or not deleted');
188
- }
189
- return this.mapRowToContent(result.rows[0]);
190
- }
191
- /**
192
- * List content with filters and pagination
193
- */
194
- async list(filters = {}) {
195
- // Build WHERE clause
196
- const conditions = [];
197
- const params = [];
198
- let paramIndex = 1;
199
- if (!filters.includeDeleted) {
200
- conditions.push('deleted_at IS NULL');
201
- }
202
- if (filters.userId) {
203
- conditions.push(`user_id = $${paramIndex++}`);
204
- params.push(filters.userId);
205
- }
206
- if (filters.status) {
207
- if (Array.isArray(filters.status)) {
208
- conditions.push(`status = ANY($${paramIndex++})`);
209
- params.push(filters.status);
210
- }
211
- else {
212
- conditions.push(`status = $${paramIndex++}`);
213
- params.push(filters.status);
214
- }
215
- }
216
- if (filters.type) {
217
- if (Array.isArray(filters.type)) {
218
- conditions.push(`type = ANY($${paramIndex++})`);
219
- params.push(filters.type);
220
- }
221
- else {
222
- conditions.push(`type = $${paramIndex++}`);
223
- params.push(filters.type);
224
- }
225
- }
226
- if (filters.workflowStage) {
227
- conditions.push(`workflow_stage = $${paramIndex++}`);
228
- params.push(filters.workflowStage);
229
- }
230
- if (filters.publishedAfter) {
231
- conditions.push(`published_at >= $${paramIndex++}`);
232
- params.push(filters.publishedAfter);
233
- }
234
- if (filters.publishedBefore) {
235
- conditions.push(`published_at <= $${paramIndex++}`);
236
- params.push(filters.publishedBefore);
237
- }
238
- if (filters.searchQuery) {
239
- conditions.push(`(
240
- title ILIKE $${paramIndex} OR
241
- body ILIKE $${paramIndex} OR
242
- excerpt ILIKE $${paramIndex}
243
- )`);
244
- params.push(`%${filters.searchQuery}%`);
245
- paramIndex++;
246
- }
247
- const whereClause = conditions.length > 0
248
- ? `WHERE ${conditions.join(' AND ')}`
249
- : '';
250
- // Build ORDER BY
251
- const orderBy = filters.orderBy || 'createdAt';
252
- const orderDirection = filters.orderDirection || 'DESC';
253
- const orderClause = `ORDER BY ${this.mapOrderField(orderBy)} ${orderDirection}`;
254
- // Pagination
255
- const limit = filters.limit || 20;
256
- const offset = filters.offset || 0;
257
- // Get total count
258
- const countResult = await this.db.query(`SELECT COUNT(*) as count FROM content ${whereClause}`, params);
259
- const total = parseInt(countResult.rows[0].count);
260
- // Get data
261
- params.push(limit, offset);
262
- const dataResult = await this.db.query(`
263
- SELECT * FROM content
264
- ${whereClause}
265
- ${orderClause}
266
- LIMIT $${paramIndex++} OFFSET $${paramIndex++}
267
- `, params);
268
- return {
269
- data: dataResult.rows.map(row => this.mapRowToContent(row)),
270
- total,
271
- limit,
272
- offset,
273
- hasMore: offset + limit < total
274
- };
275
- }
276
- /**
277
- * Get content versions
278
- */
279
- async getVersions(contentId) {
280
- const result = await this.db.query(`
281
- SELECT * FROM content_versions
282
- WHERE content_id = $1
283
- ORDER BY version_number DESC
284
- `, [contentId]);
285
- return result.rows.map(row => this.mapRowToVersion(row));
286
- }
287
- /**
288
- * Get specific version
289
- */
290
- async getVersion(contentId, versionNumber) {
291
- const result = await this.db.query(`
292
- SELECT * FROM content_versions
293
- WHERE content_id = $1 AND version_number = $2
294
- `, [contentId, versionNumber]);
295
- return result.rows.length > 0
296
- ? this.mapRowToVersion(result.rows[0])
297
- : null;
298
- }
299
- /**
300
- * Ensure slug is unique by appending number if needed
301
- */
302
- async ensureUniqueSlug(baseSlug) {
303
- let slug = baseSlug;
304
- let counter = 1;
305
- while (await this.slugExists(slug)) {
306
- slug = `${baseSlug}-${counter}`;
307
- counter++;
308
- }
309
- return slug;
310
- }
311
- /**
312
- * Check if slug exists
313
- */
314
- async slugExists(slug) {
315
- const result = await this.db.query('SELECT EXISTS(SELECT 1 FROM content WHERE slug = $1 AND deleted_at IS NULL) as exists', [slug]);
316
- return result.rows[0].exists;
317
- }
318
- /**
319
- * Map database row to content model
320
- */
321
- mapRowToContent(row) {
322
- return {
323
- id: row.id,
324
- userId: row.user_id,
325
- title: row.title,
326
- slug: row.slug,
327
- body: row.body,
328
- excerpt: row.excerpt,
329
- type: row.type,
330
- format: row.format,
331
- status: row.status,
332
- workflowStage: row.workflow_stage,
333
- assignedTo: row.assigned_to,
334
- aiReviewed: row.ai_reviewed,
335
- aiReviewScore: row.ai_review_score,
336
- aiProvider: row.ai_provider,
337
- publishedAt: row.published_at,
338
- scheduledFor: row.scheduled_for,
339
- deletedAt: row.deleted_at,
340
- metaTitle: row.meta_title,
341
- metaDescription: row.meta_description,
342
- keywords: row.keywords,
343
- viewCount: row.view_count,
344
- shareCount: row.share_count,
345
- generatedFromCommit: row.generated_from_commit,
346
- sourceCommitSha: row.source_commit_sha,
347
- sourceRepository: row.source_repository,
348
- createdAt: row.created_at,
349
- updatedAt: row.updated_at
350
- };
351
- }
352
- /**
353
- * Map database row to version model
354
- */
355
- mapRowToVersion(row) {
356
- return {
357
- id: row.id,
358
- contentId: row.content_id,
359
- versionNumber: row.version_number,
360
- title: row.title,
361
- body: row.body,
362
- changeSummary: row.change_summary,
363
- isAutosave: row.is_autosave,
364
- createdAt: row.created_at,
365
- createdBy: row.created_by
366
- };
367
- }
368
- /**
369
- * Map order field to database column
370
- */
371
- mapOrderField(field) {
372
- const fieldMap = {
373
- createdAt: 'created_at',
374
- updatedAt: 'updated_at',
375
- publishedAt: 'published_at',
376
- title: 'title'
377
- };
378
- return fieldMap[field] || 'created_at';
379
- }
380
- }
381
- exports.ContentStorageAdapter = ContentStorageAdapter;
382
- //# sourceMappingURL=ContentStorageAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContentStorageAdapter.js","sourceRoot":"","sources":["../src/ContentStorageAdapter.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts DELETED
@@ -1,39 +0,0 @@
1
- export type ContentStorageAdapterErrorCode = 'CONTENT_STORAGE_ADAPTER_ERROR' | 'CONTENT_NOT_FOUND' | 'DUPLICATE_SLUG' | 'OPTIMISTIC_LOCK_FAILED' | 'STORAGE_OPERATION_FAILED' | 'INVALID_INPUT';
2
- export interface ContentStorageAdapterErrorOptions {
3
- cause?: Error;
4
- code?: ContentStorageAdapterErrorCode;
5
- context?: Record<string, unknown>;
6
- }
7
- export declare class ContentStorageAdapterError extends Error {
8
- readonly code: ContentStorageAdapterErrorCode;
9
- readonly context?: Record<string, unknown>;
10
- constructor(message: string, options?: ContentStorageAdapterErrorOptions);
11
- }
12
- /**
13
- * Error thrown when content is not found or already deleted.
14
- */
15
- export declare class ContentNotFoundError extends ContentStorageAdapterError {
16
- constructor(id: string, options?: {
17
- cause?: Error;
18
- context?: Record<string, unknown>;
19
- });
20
- }
21
- /**
22
- * Error thrown when a slug already exists.
23
- */
24
- export declare class DuplicateSlugError extends ContentStorageAdapterError {
25
- constructor(slug: string, options?: {
26
- cause?: Error;
27
- context?: Record<string, unknown>;
28
- });
29
- }
30
- /**
31
- * Error thrown when optimistic locking fails.
32
- */
33
- export declare class OptimisticLockError extends ContentStorageAdapterError {
34
- constructor(id: string, options?: {
35
- cause?: Error;
36
- context?: Record<string, unknown>;
37
- });
38
- }
39
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,8BAA8B,GACtC,+BAA+B,GAC/B,mBAAmB,GACnB,gBAAgB,GAChB,wBAAwB,GACxB,0BAA0B,GAC1B,eAAe,CAAC;AAEpB,MAAM,WAAW,iCAAiC;IAChD,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,8BAA8B,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iCAAiC;CASzE;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,0BAA0B;gBAEhE,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE;CASjE;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,0BAA0B;gBAE9D,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE;CASjE;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,0BAA0B;gBAE/D,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE;CAYjE"}
package/dist/errors.js DELETED
@@ -1,67 +0,0 @@
1
- "use strict";
2
- /*
3
- Copyright (c) 2025 Bernier LLC
4
-
5
- This file is licensed to the client under a limited-use license.
6
- The client may use and modify this code *only within the scope of the project it was delivered for*.
7
- Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.OptimisticLockError = exports.DuplicateSlugError = exports.ContentNotFoundError = exports.ContentStorageAdapterError = void 0;
11
- class ContentStorageAdapterError extends Error {
12
- code;
13
- context;
14
- constructor(message, options) {
15
- super(message, options?.cause ? { cause: options.cause } : undefined);
16
- this.name = 'ContentStorageAdapterError';
17
- this.code = options?.code ?? 'CONTENT_STORAGE_ADAPTER_ERROR';
18
- if (options?.context !== undefined) {
19
- this.context = options.context;
20
- }
21
- Error.captureStackTrace?.(this, this.constructor);
22
- }
23
- }
24
- exports.ContentStorageAdapterError = ContentStorageAdapterError;
25
- /**
26
- * Error thrown when content is not found or already deleted.
27
- */
28
- class ContentNotFoundError extends ContentStorageAdapterError {
29
- constructor(id, options) {
30
- super(`Content not found or already deleted: ${id}`, {
31
- ...options,
32
- code: 'CONTENT_NOT_FOUND',
33
- context: { id, ...options?.context }
34
- });
35
- this.name = 'ContentNotFoundError';
36
- }
37
- }
38
- exports.ContentNotFoundError = ContentNotFoundError;
39
- /**
40
- * Error thrown when a slug already exists.
41
- */
42
- class DuplicateSlugError extends ContentStorageAdapterError {
43
- constructor(slug, options) {
44
- super(`Slug already exists: ${slug}`, {
45
- ...options,
46
- code: 'DUPLICATE_SLUG',
47
- context: { slug, ...options?.context }
48
- });
49
- this.name = 'DuplicateSlugError';
50
- }
51
- }
52
- exports.DuplicateSlugError = DuplicateSlugError;
53
- /**
54
- * Error thrown when optimistic locking fails.
55
- */
56
- class OptimisticLockError extends ContentStorageAdapterError {
57
- constructor(id, options) {
58
- super(`Optimistic lock failed for content ${id}: Content was modified by another user`, {
59
- ...options,
60
- code: 'OPTIMISTIC_LOCK_FAILED',
61
- context: { id, ...options?.context }
62
- });
63
- this.name = 'OptimisticLockError';
64
- }
65
- }
66
- exports.OptimisticLockError = OptimisticLockError;
67
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";AAAA;;;;;;EAME;;;AAgBF,MAAa,0BAA2B,SAAQ,KAAK;IAC1C,IAAI,CAAiC;IACrC,OAAO,CAA2B;IAE3C,YAAY,OAAe,EAAE,OAA2C;QACtE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,+BAA+B,CAAC;QAC7D,IAAI,OAAO,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,CAAC;QACD,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACF;AAbD,gEAaC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,0BAA0B;IAClE,YACE,EAAU,EACV,OAA8D;QAE9D,KAAK,CAAC,yCAAyC,EAAE,EAAE,EAAE;YACnD,GAAG,OAAO;YACV,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAZD,oDAYC;AAED;;GAEG;AACH,MAAa,kBAAmB,SAAQ,0BAA0B;IAChE,YACE,IAAY,EACZ,OAA8D;QAE9D,KAAK,CAAC,wBAAwB,IAAI,EAAE,EAAE;YACpC,GAAG,OAAO;YACV,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE;SACvC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAZD,gDAYC;AAED;;GAEG;AACH,MAAa,mBAAoB,SAAQ,0BAA0B;IACjE,YACE,EAAU,EACV,OAA8D;QAE9D,KAAK,CACH,sCAAsC,EAAE,wCAAwC,EAChF;YACE,GAAG,OAAO;YACV,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE;SACrC,CACF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAfD,kDAeC"}
package/dist/index.d.ts DELETED
@@ -1,9 +0,0 @@
1
- export { ContentStorageAdapter } from './ContentStorageAdapter';
2
- export { ContentBatchOperations } from './ContentBatchOperations';
3
- export type { IContent, IContentCreateData, IContentUpdateData } from './models/IContent';
4
- export { ContentType, ContentFormat, ContentStatus } from './models/IContent';
5
- export type { IContentVersion } from './models/IContentVersion';
6
- export type { IContentFilters, IPaginatedResult } from './models/IContentFilters';
7
- export { ContentStorageAdapterError, ContentNotFoundError, OptimisticLockError, DuplicateSlugError } from './errors';
8
- export type { ContentStorageAdapterErrorCode, ContentStorageAdapterErrorOptions } from './errors';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,YAAY,EACV,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,YAAY,EACV,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,8BAA8B,EAC9B,iCAAiC,EAClC,MAAM,UAAU,CAAC"}
package/dist/index.js DELETED
@@ -1,26 +0,0 @@
1
- "use strict";
2
- /*
3
- Copyright (c) 2025 Bernier LLC
4
-
5
- This file is licensed to the client under a limited-use license.
6
- The client may use and modify this code *only within the scope of the project it was delivered for*.
7
- Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.DuplicateSlugError = exports.OptimisticLockError = exports.ContentNotFoundError = exports.ContentStorageAdapterError = exports.ContentStatus = exports.ContentFormat = exports.ContentType = exports.ContentBatchOperations = exports.ContentStorageAdapter = void 0;
11
- // Main classes
12
- var ContentStorageAdapter_1 = require("./ContentStorageAdapter");
13
- Object.defineProperty(exports, "ContentStorageAdapter", { enumerable: true, get: function () { return ContentStorageAdapter_1.ContentStorageAdapter; } });
14
- var ContentBatchOperations_1 = require("./ContentBatchOperations");
15
- Object.defineProperty(exports, "ContentBatchOperations", { enumerable: true, get: function () { return ContentBatchOperations_1.ContentBatchOperations; } });
16
- var IContent_1 = require("./models/IContent");
17
- Object.defineProperty(exports, "ContentType", { enumerable: true, get: function () { return IContent_1.ContentType; } });
18
- Object.defineProperty(exports, "ContentFormat", { enumerable: true, get: function () { return IContent_1.ContentFormat; } });
19
- Object.defineProperty(exports, "ContentStatus", { enumerable: true, get: function () { return IContent_1.ContentStatus; } });
20
- // Errors
21
- var errors_1 = require("./errors");
22
- Object.defineProperty(exports, "ContentStorageAdapterError", { enumerable: true, get: function () { return errors_1.ContentStorageAdapterError; } });
23
- Object.defineProperty(exports, "ContentNotFoundError", { enumerable: true, get: function () { return errors_1.ContentNotFoundError; } });
24
- Object.defineProperty(exports, "OptimisticLockError", { enumerable: true, get: function () { return errors_1.OptimisticLockError; } });
25
- Object.defineProperty(exports, "DuplicateSlugError", { enumerable: true, get: function () { return errors_1.DuplicateSlugError; } });
26
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;EAME;;;AAEF,eAAe;AACf,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAQ/B,8CAI2B;AAHzB,uGAAA,WAAW,OAAA;AACX,yGAAA,aAAa,OAAA;AACb,yGAAA,aAAa,OAAA;AAQf,SAAS;AACT,mCAKkB;AAJhB,oHAAA,0BAA0B,OAAA;AAC1B,8GAAA,oBAAoB,OAAA;AACpB,6GAAA,mBAAmB,OAAA;AACnB,4GAAA,kBAAkB,OAAA"}
@@ -1,92 +0,0 @@
1
- /**
2
- * Content type enum
3
- */
4
- export declare enum ContentType {
5
- BLOG = "blog",
6
- ARTICLE = "article",
7
- PAGE = "page",
8
- SOCIAL = "social"
9
- }
10
- /**
11
- * Content format enum
12
- */
13
- export declare enum ContentFormat {
14
- MARKDOWN = "markdown",
15
- HTML = "html",
16
- PLAINTEXT = "plaintext"
17
- }
18
- /**
19
- * Content status enum
20
- */
21
- export declare enum ContentStatus {
22
- DRAFT = "draft",
23
- IN_REVIEW = "in_review",
24
- APPROVED = "approved",
25
- SCHEDULED = "scheduled",
26
- PUBLISHED = "published",
27
- ARCHIVED = "archived"
28
- }
29
- /**
30
- * Core content model
31
- */
32
- export interface IContent {
33
- id: string;
34
- userId: string;
35
- title: string;
36
- slug: string;
37
- body: string;
38
- excerpt?: string;
39
- type: ContentType;
40
- format: ContentFormat;
41
- status: ContentStatus;
42
- workflowStage?: string;
43
- assignedTo?: string;
44
- aiReviewed: boolean;
45
- aiReviewScore?: number;
46
- aiProvider?: string;
47
- publishedAt?: Date;
48
- scheduledFor?: Date;
49
- deletedAt?: Date;
50
- metaTitle?: string;
51
- metaDescription?: string;
52
- keywords?: string[];
53
- viewCount: number;
54
- shareCount: number;
55
- generatedFromCommit: boolean;
56
- sourceCommitSha?: string;
57
- sourceRepository?: string;
58
- createdAt: Date;
59
- updatedAt: Date;
60
- }
61
- /**
62
- * Content creation data
63
- */
64
- export interface IContentCreateData {
65
- userId: string;
66
- title: string;
67
- body: string;
68
- excerpt?: string;
69
- type?: ContentType;
70
- format?: ContentFormat;
71
- status?: ContentStatus;
72
- metaTitle?: string;
73
- metaDescription?: string;
74
- keywords?: string[];
75
- }
76
- /**
77
- * Content update data
78
- */
79
- export interface IContentUpdateData {
80
- title?: string;
81
- body?: string;
82
- excerpt?: string;
83
- status?: ContentStatus;
84
- workflowStage?: string;
85
- assignedTo?: string;
86
- publishedAt?: Date;
87
- scheduledFor?: Date;
88
- metaTitle?: string;
89
- metaDescription?: string;
90
- keywords?: string[];
91
- }
92
- //# sourceMappingURL=IContent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IContent.d.ts","sourceRoot":"","sources":["../../src/models/IContent.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,oBAAY,WAAW;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IAGf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;IAGtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IAGjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAGpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAGnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- /*
3
- Copyright (c) 2025 Bernier LLC
4
-
5
- This file is licensed to the client under a limited-use license.
6
- The client may use and modify this code *only within the scope of the project it was delivered for*.
7
- Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ContentStatus = exports.ContentFormat = exports.ContentType = void 0;
11
- /**
12
- * Content type enum
13
- */
14
- var ContentType;
15
- (function (ContentType) {
16
- ContentType["BLOG"] = "blog";
17
- ContentType["ARTICLE"] = "article";
18
- ContentType["PAGE"] = "page";
19
- ContentType["SOCIAL"] = "social";
20
- })(ContentType || (exports.ContentType = ContentType = {}));
21
- /**
22
- * Content format enum
23
- */
24
- var ContentFormat;
25
- (function (ContentFormat) {
26
- ContentFormat["MARKDOWN"] = "markdown";
27
- ContentFormat["HTML"] = "html";
28
- ContentFormat["PLAINTEXT"] = "plaintext";
29
- })(ContentFormat || (exports.ContentFormat = ContentFormat = {}));
30
- /**
31
- * Content status enum
32
- */
33
- var ContentStatus;
34
- (function (ContentStatus) {
35
- ContentStatus["DRAFT"] = "draft";
36
- ContentStatus["IN_REVIEW"] = "in_review";
37
- ContentStatus["APPROVED"] = "approved";
38
- ContentStatus["SCHEDULED"] = "scheduled";
39
- ContentStatus["PUBLISHED"] = "published";
40
- ContentStatus["ARCHIVED"] = "archived";
41
- })(ContentStatus || (exports.ContentStatus = ContentStatus = {}));
42
- //# sourceMappingURL=IContent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IContent.js","sourceRoot":"","sources":["../../src/models/IContent.ts"],"names":[],"mappings":";AAAA;;;;;;EAME;;;AAEF;;GAEG;AACH,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,kCAAmB,CAAA;IACnB,4BAAa,CAAA;IACb,gCAAiB,CAAA;AACnB,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAED;;GAEG;AACH,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,8BAAa,CAAA;IACb,wCAAuB,CAAA;AACzB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED;;GAEG;AACH,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,wCAAuB,CAAA;IACvB,sCAAqB,CAAA;IACrB,wCAAuB,CAAA;IACvB,wCAAuB,CAAA;IACvB,sCAAqB,CAAA;AACvB,CAAC,EAPW,aAAa,6BAAb,aAAa,QAOxB"}
@@ -1,29 +0,0 @@
1
- import { ContentStatus, ContentType } from './IContent';
2
- /**
3
- * Content query filters
4
- */
5
- export interface IContentFilters {
6
- userId?: string;
7
- status?: ContentStatus | ContentStatus[];
8
- type?: ContentType | ContentType[];
9
- workflowStage?: string;
10
- publishedAfter?: Date;
11
- publishedBefore?: Date;
12
- searchQuery?: string;
13
- limit?: number;
14
- offset?: number;
15
- orderBy?: 'createdAt' | 'updatedAt' | 'publishedAt' | 'title';
16
- orderDirection?: 'ASC' | 'DESC';
17
- includeDeleted?: boolean;
18
- }
19
- /**
20
- * Paginated results
21
- */
22
- export interface IPaginatedResult<T> {
23
- data: T[];
24
- total: number;
25
- limit: number;
26
- offset: number;
27
- hasMore: boolean;
28
- }
29
- //# sourceMappingURL=IContentFilters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IContentFilters.d.ts","sourceRoot":"","sources":["../../src/models/IContentFilters.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;IACzC,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC;IAC9D,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- /*
3
- Copyright (c) 2025 Bernier LLC
4
-
5
- This file is licensed to the client under a limited-use license.
6
- The client may use and modify this code *only within the scope of the project it was delivered for*.
7
- Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- //# sourceMappingURL=IContentFilters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IContentFilters.js","sourceRoot":"","sources":["../../src/models/IContentFilters.ts"],"names":[],"mappings":";AAAA;;;;;;EAME"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Content version model
3
- */
4
- export interface IContentVersion {
5
- id: string;
6
- contentId: string;
7
- versionNumber: number;
8
- title: string;
9
- body: string;
10
- changeSummary?: string;
11
- isAutosave: boolean;
12
- createdAt: Date;
13
- createdBy: string;
14
- }
15
- //# sourceMappingURL=IContentVersion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IContentVersion.d.ts","sourceRoot":"","sources":["../../src/models/IContentVersion.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- /*
3
- Copyright (c) 2025 Bernier LLC
4
-
5
- This file is licensed to the client under a limited-use license.
6
- The client may use and modify this code *only within the scope of the project it was delivered for*.
7
- Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- //# sourceMappingURL=IContentVersion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IContentVersion.js","sourceRoot":"","sources":["../../src/models/IContentVersion.ts"],"names":[],"mappings":";AAAA;;;;;;EAME"}