@valencets/cms 0.6.0 → 0.6.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"auth-routes.d.ts","sourceRoot":"","sources":["../../src/auth/auth-routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AA4BxD,wBAAgB,mBAAmB,CAAE,WAAW,EAAE,kBAAkB,GAAG,MAAM,CAS5E;AAUD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,kBAAkB,GAC9B,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAiG7B"}
1
+ {"version":3,"file":"auth-routes.d.ts","sourceRoot":"","sources":["../../src/auth/auth-routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AA4BxD,wBAAgB,mBAAmB,CAAE,WAAW,EAAE,kBAAkB,GAAG,MAAM,CAS5E;AAUD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,kBAAkB,GAC9B,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAoG7B"}
@@ -78,10 +78,13 @@ export function createAuthRoutes(pool, collections) {
78
78
  return;
79
79
  }
80
80
  const secure = isEncrypted(req);
81
- const cookie = buildSessionCookie(sessionResult.value, 7200, secure);
81
+ const sessionCookie = buildSessionCookie(sessionResult.value, 7200, secure);
82
+ // Set both the HttpOnly session cookie and a JS-readable indicator cookie
83
+ const secureFlag = secure ? '; Secure' : '';
84
+ const indicatorCookie = `cms_authed=1; Path=/; SameSite=Strict${secureFlag}; Max-Age=7200`;
82
85
  res.writeHead(200, {
83
86
  'Content-Type': 'application/json; charset=utf-8',
84
- 'Set-Cookie': cookie
87
+ 'Set-Cookie': [sessionCookie, indicatorCookie]
85
88
  });
86
89
  res.end(JSON.stringify({ user: { id: user.id, email: user.email, [displayField]: Reflect.get(user, displayField) ?? user.email } }));
87
90
  }
@@ -96,7 +99,7 @@ export function createAuthRoutes(pool, collections) {
96
99
  const secure = isEncrypted(req);
97
100
  res.writeHead(200, {
98
101
  'Content-Type': 'application/json; charset=utf-8',
99
- 'Set-Cookie': buildExpiredSessionCookie(secure)
102
+ 'Set-Cookie': [buildExpiredSessionCookie(secure), `cms_authed=; Path=/; SameSite=Strict${secure ? '; Secure' : ''}; Max-Age=0`]
100
103
  });
101
104
  res.end(JSON.stringify({ message: 'Logged out' }));
102
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth-routes.js","sourceRoot":"","sources":["../../src/auth/auth-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-routes.js","sourceRoot":"","sources":["../../src/auth/auth-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Column name utilities for custom SQL queries against CMS-managed tables.
3
+ *
4
+ * CMS system columns use snake_case in the database:
5
+ * id, created_at, updated_at, deleted_at
6
+ *
7
+ * User-defined field names are stored as-is (matching the name in valence.config.ts).
8
+ * If you define field.text({ name: 'avatarUrl' }), the column is "avatarUrl" (quoted).
9
+ * If you define field.text({ name: 'avatar_url' }), the column is avatar_url.
10
+ */
11
+ /** System columns present on every CMS-managed table. Always snake_case. */
12
+ export declare const SYSTEM_COLUMNS: {
13
+ readonly id: "id";
14
+ readonly createdAt: "created_at";
15
+ readonly updatedAt: "updated_at";
16
+ readonly deletedAt: "deleted_at";
17
+ };
18
+ /** Convert a camelCase field name to its DB column name. System columns map to snake_case. */
19
+ export declare function toColumn(fieldName: string): string;
20
+ /**
21
+ * Build a SELECT clause from field names, mapping system columns to snake_case.
22
+ * @example selectColumns('id', 'username', 'createdAt') => 'id, username, created_at'
23
+ */
24
+ export declare function selectColumns(...fields: string[]): string;
25
+ //# sourceMappingURL=column-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-helpers.d.ts","sourceRoot":"","sources":["../../src/db/column-helpers.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,cAAc;;;;;CAKjB,CAAA;AAEV,8FAA8F;AAC9F,wBAAgB,QAAQ,CAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAInD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1D"}
@@ -0,0 +1,34 @@
1
+ import { isValidIdentifier } from './sql-sanitize.js';
2
+ /**
3
+ * Column name utilities for custom SQL queries against CMS-managed tables.
4
+ *
5
+ * CMS system columns use snake_case in the database:
6
+ * id, created_at, updated_at, deleted_at
7
+ *
8
+ * User-defined field names are stored as-is (matching the name in valence.config.ts).
9
+ * If you define field.text({ name: 'avatarUrl' }), the column is "avatarUrl" (quoted).
10
+ * If you define field.text({ name: 'avatar_url' }), the column is avatar_url.
11
+ */
12
+ /** System columns present on every CMS-managed table. Always snake_case. */
13
+ export const SYSTEM_COLUMNS = {
14
+ id: 'id',
15
+ createdAt: 'created_at',
16
+ updatedAt: 'updated_at',
17
+ deletedAt: 'deleted_at'
18
+ };
19
+ /** Convert a camelCase field name to its DB column name. System columns map to snake_case. */
20
+ export function toColumn(fieldName) {
21
+ if (fieldName in SYSTEM_COLUMNS)
22
+ return SYSTEM_COLUMNS[fieldName];
23
+ if (!isValidIdentifier(fieldName))
24
+ return fieldName;
25
+ return /[A-Z]/.test(fieldName) ? `"${fieldName}"` : fieldName;
26
+ }
27
+ /**
28
+ * Build a SELECT clause from field names, mapping system columns to snake_case.
29
+ * @example selectColumns('id', 'username', 'createdAt') => 'id, username, created_at'
30
+ */
31
+ export function selectColumns(...fields) {
32
+ return fields.map(toColumn).join(', ');
33
+ }
34
+ //# sourceMappingURL=column-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-helpers.js","sourceRoot":"","sources":["../../src/db/column-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErD;;;;;;;;;GASG;AAEH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,IAAI;IACR,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;CACf,CAAA;AAEV,8FAA8F;AAC9F,MAAM,UAAU,QAAQ,CAAE,SAAiB;IACzC,IAAI,SAAS,IAAI,cAAc;QAAE,OAAO,cAAc,CAAC,SAAwC,CAAC,CAAA;IAChG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IACnD,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAE,GAAG,MAAgB;IAChD,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -20,4 +20,7 @@ export { buildCms } from './config/index.js';
20
20
  export type { CmsConfig, CmsInstance, Plugin, LocaleConfig, LocalizationConfig } from './config/index.js';
21
21
  export { startPublishScheduler } from './scheduler.js';
22
22
  export type { SchedulerHandle } from './scheduler.js';
23
+ export { startTelemetryScheduler } from './telemetry-scheduler.js';
24
+ export type { TelemetrySchedulerHandle } from './telemetry-scheduler.js';
25
+ export { SYSTEM_COLUMNS, toColumn, selectColumns } from './db/column-helpers.js';
23
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -11,4 +11,6 @@ export { renderLayout, renderDashboard, renderListView, renderEditView, renderFi
11
11
  export { isUploadEnabled, getMediaFields, getMimeType, getUploadConfig, createServeHandler, buildMediaUrl, createUploadHandler, createLocalStorage, processImageSizes } from './media/index.js';
12
12
  export { buildCms } from './config/index.js';
13
13
  export { startPublishScheduler } from './scheduler.js';
14
+ export { startTelemetryScheduler } from './telemetry-scheduler.js';
15
+ export { SYSTEM_COLUMNS, toColumn, selectColumns } from './db/column-helpers.js';
14
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAEzF,OAAO,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,KAAK,EACL,UAAU,EACV,MAAM,EACN,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,mBAAmB,CAAA;AAqC1B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,YAAY,EACb,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,eAAe,CAAA;AAgBtB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAQjD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAS3C,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGhE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGvH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACX,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAG/L,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAEzF,OAAO,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,KAAK,EACL,UAAU,EACV,MAAM,EACN,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,mBAAmB,CAAA;AAqC1B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,YAAY,EACb,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,eAAe,CAAA;AAgBtB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAQjD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAS3C,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGhE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGvH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACX,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAG/L,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAGlE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { DbPool } from '@valencets/db';
2
+ export interface TelemetrySchedulerHandle {
3
+ readonly stop: () => void;
4
+ }
5
+ /**
6
+ * Start a periodic telemetry aggregation scheduler.
7
+ * Runs session, event, and daily summary aggregation on the given interval.
8
+ *
9
+ * @param pool — database pool
10
+ * @param siteId — telemetry site identifier (matches daily_summaries.site_id)
11
+ * @param intervalMs — aggregation interval in ms (default 15 minutes)
12
+ */
13
+ export declare function startTelemetryScheduler(pool: DbPool, siteId?: string, intervalMs?: number): TelemetrySchedulerHandle;
14
+ //# sourceMappingURL=telemetry-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-scheduler.d.ts","sourceRoot":"","sources":["../src/telemetry-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAA;CAC1B;AAMD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAkB,EAC1B,UAAU,GAAE,MAAoB,GAC/B,wBAAwB,CA2D1B"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Start a periodic telemetry aggregation scheduler.
3
+ * Runs session, event, and daily summary aggregation on the given interval.
4
+ *
5
+ * @param pool — database pool
6
+ * @param siteId — telemetry site identifier (matches daily_summaries.site_id)
7
+ * @param intervalMs — aggregation interval in ms (default 15 minutes)
8
+ */
9
+ export function startTelemetryScheduler(pool, siteId = 'default', intervalMs = 15 * 60_000) {
10
+ function aggregate() {
11
+ const now = new Date();
12
+ const dayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate());
13
+ const dayEnd = new Date(dayStart.getTime() + 86_400_000);
14
+ const s = dayStart.toISOString();
15
+ const e = dayEnd.toISOString();
16
+ const dateOnly = s.slice(0, 10);
17
+ // Session summaries
18
+ pool.sql.unsafe(`
19
+ INSERT INTO session_summaries (period_start, period_end, total_sessions, unique_referrers, device_mobile, device_desktop, device_tablet)
20
+ SELECT $1::timestamptz, $2::timestamptz, COUNT(*)::int, COUNT(DISTINCT referrer)::int,
21
+ COUNT(*) FILTER (WHERE device_type = 'mobile')::int,
22
+ COUNT(*) FILTER (WHERE device_type = 'desktop')::int,
23
+ COUNT(*) FILTER (WHERE device_type = 'tablet')::int
24
+ FROM sessions WHERE created_at >= $1 AND created_at < $2
25
+ ON CONFLICT (period_start, period_end) DO UPDATE SET
26
+ total_sessions = EXCLUDED.total_sessions, unique_referrers = EXCLUDED.unique_referrers,
27
+ device_mobile = EXCLUDED.device_mobile, device_desktop = EXCLUDED.device_desktop, device_tablet = EXCLUDED.device_tablet
28
+ `, [s, e])
29
+ .then(() => pool.sql.unsafe(`
30
+ INSERT INTO event_summaries (period_start, period_end, event_category, total_count, unique_sessions)
31
+ SELECT $1::timestamptz, $2::timestamptz, event_category, COUNT(*)::int, COUNT(DISTINCT session_id)::int
32
+ FROM events WHERE created_at >= $1 AND created_at < $2
33
+ GROUP BY event_category
34
+ ON CONFLICT (period_start, period_end, event_category) DO UPDATE SET
35
+ total_count = EXCLUDED.total_count, unique_sessions = EXCLUDED.unique_sessions
36
+ `, [s, e]))
37
+ .then(() => Promise.all([
38
+ pool.sql.unsafe('SELECT COALESCE(SUM(total_sessions), 0)::int AS c FROM session_summaries WHERE period_start >= $1 AND period_end <= $2', [s, e]),
39
+ pool.sql.unsafe('SELECT COALESCE(SUM(total_count), 0)::int AS c FROM event_summaries WHERE period_start >= $1 AND period_end <= $2 AND event_category IN (\'CLICK\', \'VIEWPORT_INTERSECT\')', [s, e]),
40
+ pool.sql.unsafe('SELECT COALESCE(SUM(total_count), 0)::int AS c FROM event_summaries WHERE period_start >= $1 AND period_end <= $2 AND event_category IN (\'INTENT_LEAD\', \'LEAD_FORM\', \'LEAD_EMAIL\', \'LEAD_PHONE\')', [s, e])
41
+ ]))
42
+ .then(([sessions, pageviews, conversions]) => {
43
+ const sessionCount = sessions[0]?.c ?? 0;
44
+ const pageviewCount = pageviews[0]?.c ?? 0;
45
+ const conversionCount = conversions[0]?.c ?? 0;
46
+ return pool.sql.unsafe(`
47
+ INSERT INTO daily_summaries (site_id, date, business_type, schema_version, session_count, pageview_count, conversion_count, top_referrers, top_pages, intent_counts, avg_flush_ms, rejection_count, synced_at)
48
+ VALUES ($1, $2, 'webapp', 1, $3, $4, $5, '[]', '[]', '{}', 0, 0, NOW())
49
+ ON CONFLICT (site_id, date) DO UPDATE SET
50
+ session_count = EXCLUDED.session_count, pageview_count = EXCLUDED.pageview_count,
51
+ conversion_count = EXCLUDED.conversion_count, synced_at = NOW()
52
+ `, [siteId, dateOnly, sessionCount, pageviewCount, conversionCount]);
53
+ })
54
+ .catch(() => { });
55
+ }
56
+ // Run once immediately, then on interval
57
+ aggregate();
58
+ const timer = setInterval(aggregate, intervalMs);
59
+ return { stop: () => clearInterval(timer) };
60
+ }
61
+ //# sourceMappingURL=telemetry-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-scheduler.js","sourceRoot":"","sources":["../src/telemetry-scheduler.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,SAAiB,SAAS,EAC1B,aAAqB,EAAE,GAAG,MAAM;IAEhC,SAAS,SAAS;QAChB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QAC3E,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAA;QACxD,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAE/B,oBAAoB;QACpB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;;;;;;;;;;KAUf,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACP,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;;;;;;;OAO3B,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACV,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CACb,wHAAwH,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACjI;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,CACb,6KAA6K,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACtL;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,CACb,0MAA0M,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACnN;SACF,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE;YAC3C,MAAM,YAAY,GAAI,QAAQ,CAAC,CAAC,CAA0B,EAAE,CAAC,IAAI,CAAC,CAAA;YAClE,MAAM,aAAa,GAAI,SAAS,CAAC,CAAC,CAA0B,EAAE,CAAC,IAAI,CAAC,CAAA;YACpE,MAAM,eAAe,GAAI,WAAW,CAAC,CAAC,CAA0B,EAAE,CAAC,IAAI,CAAC,CAAA;YACxE,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;;;;;;SAMtB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAA;QACtE,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,GAAqE,CAAC,CAAC,CAAA;IACvF,CAAC;IAED,yCAAyC;IACzC,SAAS,EAAE,CAAA;IACX,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAChD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAA;AAC7C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@valencets/cms",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,9 +33,9 @@
33
33
  "sharp": "^0.34.5",
34
34
  "zod": "^4.3.6",
35
35
  "@valencets/core": "0.4.0",
36
- "@valencets/telemetry": "0.1.4",
37
36
  "@valencets/ui": "0.2.0",
38
- "@valencets/db": "0.1.2"
37
+ "@valencets/db": "0.1.2",
38
+ "@valencets/telemetry": "0.1.4"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/node": "^25.4.0",