@weave-kit/engine 2.0.0 → 2.1.0

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.
Files changed (83) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +3 -3
  3. package/dist/adapters/events/index.js +2 -2
  4. package/dist/adapters/events/index.js.map +1 -1
  5. package/dist/adapters/mcp/http.d.ts +7 -0
  6. package/dist/adapters/mcp/http.d.ts.map +1 -1
  7. package/dist/adapters/mcp/http.js +56 -20
  8. package/dist/adapters/mcp/http.js.map +1 -1
  9. package/dist/adapters/mcp/index.d.ts +6 -0
  10. package/dist/adapters/mcp/index.d.ts.map +1 -1
  11. package/dist/adapters/mcp/index.js +1 -0
  12. package/dist/adapters/mcp/index.js.map +1 -1
  13. package/dist/adapters/rest/audit.js +2 -2
  14. package/dist/adapters/rest/audit.js.map +1 -1
  15. package/dist/cli/commands/deploy.js +1 -1
  16. package/dist/cli/commands/deploy.js.map +1 -1
  17. package/dist/core/i18n/ar.js +1 -1
  18. package/dist/core/i18n/ar.js.map +1 -1
  19. package/dist/core/i18n/de.js +1 -1
  20. package/dist/core/i18n/de.js.map +1 -1
  21. package/dist/core/i18n/es.js +1 -1
  22. package/dist/core/i18n/es.js.map +1 -1
  23. package/dist/core/i18n/fr.js +1 -1
  24. package/dist/core/i18n/fr.js.map +1 -1
  25. package/dist/core/i18n/hi.js +1 -1
  26. package/dist/core/i18n/hi.js.map +1 -1
  27. package/dist/core/i18n/id.js +1 -1
  28. package/dist/core/i18n/ja.js +1 -1
  29. package/dist/core/i18n/ko.js +1 -1
  30. package/dist/core/i18n/ko.js.map +1 -1
  31. package/dist/core/i18n/pt.js +1 -1
  32. package/dist/core/i18n/pt.js.map +1 -1
  33. package/dist/core/i18n/ru.js +1 -1
  34. package/dist/core/i18n/ru.js.map +1 -1
  35. package/dist/core/i18n/vi.js +1 -1
  36. package/dist/core/i18n/vi.js.map +1 -1
  37. package/dist/core/i18n/zh-hant.js +1 -1
  38. package/dist/core/i18n/zh.js +1 -1
  39. package/dist/core/i18n/zh.js.map +1 -1
  40. package/dist/core/limiter/index.d.ts +1 -1
  41. package/dist/core/limiter/index.d.ts.map +1 -1
  42. package/dist/core/limiter/index.js +1 -1
  43. package/dist/core/limiter/index.js.map +1 -1
  44. package/dist/core/limiter/quota.d.ts +1 -3
  45. package/dist/core/limiter/quota.d.ts.map +1 -1
  46. package/dist/core/limiter/quota.js +1 -3
  47. package/dist/core/limiter/quota.js.map +1 -1
  48. package/dist/core/rbac/rls.d.ts +1 -1
  49. package/dist/core/rbac/rls.js +1 -1
  50. package/dist/core/rbac/rowScope.d.ts.map +1 -1
  51. package/dist/core/rbac/rowScope.js +2 -3
  52. package/dist/core/rbac/rowScope.js.map +1 -1
  53. package/dist/runtime/config-types.d.ts +434 -0
  54. package/dist/runtime/config-types.d.ts.map +1 -0
  55. package/dist/runtime/config-types.js +2 -0
  56. package/dist/runtime/config-types.js.map +1 -0
  57. package/dist/runtime/data-access/query-helpers.d.ts +74 -0
  58. package/dist/runtime/data-access/query-helpers.d.ts.map +1 -0
  59. package/dist/runtime/data-access/query-helpers.js +238 -0
  60. package/dist/runtime/data-access/query-helpers.js.map +1 -0
  61. package/dist/runtime/data-access/query.d.ts.map +1 -1
  62. package/dist/runtime/data-access/query.js +4 -232
  63. package/dist/runtime/data-access/query.js.map +1 -1
  64. package/dist/runtime/engine.d.ts +4 -452
  65. package/dist/runtime/engine.d.ts.map +1 -1
  66. package/dist/runtime/engine.js +22 -195
  67. package/dist/runtime/engine.js.map +1 -1
  68. package/dist/runtime/guards.d.ts +31 -0
  69. package/dist/runtime/guards.d.ts.map +1 -0
  70. package/dist/runtime/guards.js +70 -0
  71. package/dist/runtime/guards.js.map +1 -0
  72. package/dist/runtime/register-http-routes.d.ts +40 -0
  73. package/dist/runtime/register-http-routes.d.ts.map +1 -0
  74. package/dist/runtime/register-http-routes.js +138 -0
  75. package/dist/runtime/register-http-routes.js.map +1 -0
  76. package/dist/subsystems/audit/store.js +3 -3
  77. package/dist/subsystems/audit/store.js.map +1 -1
  78. package/dist/subsystems/script/bridge.d.ts.map +1 -1
  79. package/dist/subsystems/script/bridge.js +1 -2
  80. package/dist/subsystems/script/bridge.js.map +1 -1
  81. package/dist/version.d.ts +1 -1
  82. package/dist/version.js +1 -1
  83. package/package.json +1 -1
@@ -0,0 +1,238 @@
1
+ import { SchemaError, primaryFieldsOf, encodeRecordKey, decodeRecordKey, canonicalizePrimaryValue, principalActorId, DETAILS_COLUMNS, FIELD_TYPES, isSideTableVirtualField, recordKeySql, } from '../../core/index.js';
2
+ import { AUDIT_ACTOR_TYPES } from '../../core/audit/index.js';
3
+ import { subjectOf, scopeOf } from './types.js';
4
+ /**
5
+ * Pure helpers for the object data-access layer — extracted from `query.ts` so
6
+ * the `DefaultObjectDataAccess` class stays focused on orchestration. None of
7
+ * these touch instance state; they operate on their arguments only.
8
+ */
9
+ export const q = (id) => `"${id}"`;
10
+ /** cross-object formula authorization derived from the request context */
11
+ export function formulaAuth(ctx) {
12
+ const subject = subjectOf(ctx);
13
+ return { subject, roles: subject?.roles ?? [], locale: ctx.locale };
14
+ }
15
+ /** PG error 42703 = undefined_column: a query referenced a column that doesn't exist */
16
+ function isUndefinedColumn(error) {
17
+ return typeof error === 'object' && error !== null && error.code === '42703';
18
+ }
19
+ /** parse `column "X" of relation "Y" does not exist` → the column/field name */
20
+ function undefinedColumnOf(error) {
21
+ const message = error?.message;
22
+ if (typeof message !== 'string')
23
+ return undefined;
24
+ const m = /column "([^"]+)" of relation/.exec(message);
25
+ return m?.[1];
26
+ }
27
+ /** PG error 23505 = unique_violation: a unique constraint (column or object constraint) was hit */
28
+ function isUniqueViolation(error) {
29
+ return typeof error === 'object' && error !== null && error.code === '23505';
30
+ }
31
+ /** readable field list behind a unique violation (from the detail `Key (a, b)=(...)`) */
32
+ function uniqueFieldsOf(error) {
33
+ const detail = error?.detail;
34
+ if (typeof detail === 'string') {
35
+ const m = /Key \(([^)]+)\)/.exec(detail);
36
+ if (m?.[1] !== undefined)
37
+ return m[1];
38
+ }
39
+ const constraint = error?.constraint;
40
+ return typeof constraint === 'string' ? constraint : '?';
41
+ }
42
+ /**
43
+ * Run a SQL statement against an object's table, mapping PG `undefined_column`
44
+ * (42703) — a schema/DB drift (schema declares a field the table lacks) — to an
45
+ * actionable error instead of a raw 500.
46
+ */
47
+ export async function runTableQuery(q, objectName, sql, params, locale) {
48
+ try {
49
+ return await q.query(sql, params);
50
+ }
51
+ catch (error) {
52
+ if (isUndefinedColumn(error)) {
53
+ const field = undefinedColumnOf(error);
54
+ throw new SchemaError('data.schemaDrift', { object: objectName, field: field ?? '' }, locale);
55
+ }
56
+ if (isUniqueViolation(error)) {
57
+ throw new SchemaError('data.unique', { object: objectName, fields: uniqueFieldsOf(error) }, locale);
58
+ }
59
+ throw error;
60
+ }
61
+ }
62
+ /** emit a write-audit event (transaction-aware: in-tx when a tx-capable sink is active) */
63
+ export async function auditWrite(sink, ctx, action, objectName, objectId, changes, error, before, after, client) {
64
+ if (sink === undefined)
65
+ return;
66
+ const principal = ctx.principal;
67
+ const scopeValue = scopeOf(ctx);
68
+ const event = {
69
+ actorType: principal.kind === 'user' ? AUDIT_ACTOR_TYPES.USER : AUDIT_ACTOR_TYPES.SYSTEM,
70
+ actorId: principalActorId(principal),
71
+ action,
72
+ objectName,
73
+ objectId,
74
+ changes,
75
+ isError: error !== undefined,
76
+ errorCode: error instanceof SchemaError ? error.code : undefined,
77
+ ...(principal.kind === 'system' ? { meta: { capability: principal.capability } } : {}),
78
+ ...(ctx.requestId === undefined ? {} : { requestId: ctx.requestId }),
79
+ ...(ctx.traceId === undefined ? {} : { traceId: ctx.traceId }),
80
+ ...(scopeValue === undefined ? {} : { scopeId: scopeValue }),
81
+ timestamp: new Date(),
82
+ };
83
+ if (before !== undefined)
84
+ event.before = before;
85
+ if (after !== undefined)
86
+ event.after = after;
87
+ // transactional/durable sinks write inside the business transaction; a throw
88
+ // here rolls the business write back (deliberate)
89
+ if (client !== undefined && sink.recordInTx !== undefined) {
90
+ await sink.recordInTx(event, client);
91
+ return;
92
+ }
93
+ void sink.record(event);
94
+ }
95
+ /** rebuild `this.user` for hooks from the authenticated subject */
96
+ export function scriptUserOf(ctx) {
97
+ const subject = subjectOf(ctx);
98
+ return {
99
+ id: subject?.id ?? 'system',
100
+ roles: subject?.roles ?? [],
101
+ departmentId: subject?.departmentId,
102
+ ...(subject?.scopeId === undefined ? {} : { scopeId: subject.scopeId }),
103
+ };
104
+ }
105
+ /** details child auto columns (`parent_id`/`parent_type`/`parent_idx`) */
106
+ export const PARENT_COLUMNS = new Set([
107
+ DETAILS_COLUMNS.PARENT_ID,
108
+ DETAILS_COLUMNS.PARENT_TYPE,
109
+ DETAILS_COLUMNS.PARENT_IDX,
110
+ ]);
111
+ export function isDetailsChild(registry, name) {
112
+ return registry
113
+ .list()
114
+ .some((o) => o.fields.some((f) => f.type === FIELD_TYPES.DETAILS && f.target === name));
115
+ }
116
+ export function requireDef(ctx, objectName) {
117
+ const def = ctx.registry.get(objectName);
118
+ if (def === undefined)
119
+ throw new SchemaError('data.objectUnknown', { object: objectName }, ctx.locale);
120
+ return def;
121
+ }
122
+ export function bctx(ctx, objectName) {
123
+ const subject = subjectOf(ctx);
124
+ return {
125
+ object: objectName,
126
+ locale: ctx.locale,
127
+ allowParentCols: isDetailsChild(ctx.registry, objectName),
128
+ lookup: ctx.registry,
129
+ ...(subject === undefined ? {} : { subject }),
130
+ };
131
+ }
132
+ /** hidden select column carrying the SQL-computed record_key for a fetched row */
133
+ export const META_KEY_COL = '__weave_record_key';
134
+ /** select expression for the SQL-computed record_key (lossless for temporal keys) */
135
+ export function recordKeySelect(def) {
136
+ return `${recordKeySql(def, (name) => q(name))} AS ${q(META_KEY_COL)}`;
137
+ }
138
+ /** the record_key of a row, from its declared primary fields (declaration order) */
139
+ export function recordKeyOfRow(def, record) {
140
+ return encodeRecordKey(primaryFieldsOf(def).map((f) => canonicalizePrimaryValue(record[f.name])));
141
+ }
142
+ /** declared primary field names, in declaration order */
143
+ export function primaryNames(def) {
144
+ return primaryFieldsOf(def).map((f) => f.name);
145
+ }
146
+ /** decode an external id (the record_key, for single and composite keys alike) into primary values */
147
+ export function pkValuesOf(def, id, ctx) {
148
+ const names = primaryNames(def);
149
+ let values;
150
+ try {
151
+ values = decodeRecordKey(id);
152
+ }
153
+ catch {
154
+ throw new SchemaError('recordKey.invalid', { key: id }, ctx.locale);
155
+ }
156
+ if (values.length !== names.length) {
157
+ throw new SchemaError('recordKey.invalid', { key: id }, ctx.locale);
158
+ }
159
+ return values;
160
+ }
161
+ /** reject a malformed external id up front (keyed objects only; key-less objects 404 later) */
162
+ export function validateId(def, id, ctx) {
163
+ if (primaryNames(def).length > 0)
164
+ pkValuesOf(def, id, ctx);
165
+ }
166
+ /** primary-key filter object for `find` (declared names zipped with values) */
167
+ export function pkFilter(def, values) {
168
+ const filter = {};
169
+ primaryNames(def).forEach((name, i) => {
170
+ filter[name] = values[i];
171
+ });
172
+ return filter;
173
+ }
174
+ /** `"a" = $1 AND "b" = $2` predicate for the primary names, starting at `startIndex` */
175
+ export function pkWhereSql(def, startIndex) {
176
+ return primaryNames(def)
177
+ .map((name, i) => `${q(name)} = $${startIndex + i}`)
178
+ .join(' AND ');
179
+ }
180
+ /** the external id of a record: always its record_key (single and composite keys alike) */
181
+ export function externalIdOf(def, record) {
182
+ return recordKeyOfRow(def, record);
183
+ }
184
+ /** true when the query references a side-table virtual field (`weave_*` minus the derived `weave_id`) */
185
+ export function needsSideTable(opts) {
186
+ if ((opts.fields ?? []).some((f) => isSideTableVirtualField(f)))
187
+ return true;
188
+ if ((opts.sort ?? []).some((s) => isSideTableVirtualField(s.field)))
189
+ return true;
190
+ const filter = opts.filter;
191
+ if (filter !== undefined) {
192
+ for (const [key, value] of Object.entries(filter)) {
193
+ if (key === '$or') {
194
+ if (Array.isArray(value) &&
195
+ value.some((group) => group !== null &&
196
+ typeof group === 'object' &&
197
+ Object.keys(group).some((k) => isSideTableVirtualField(k)))) {
198
+ return true;
199
+ }
200
+ }
201
+ else if (isSideTableVirtualField(key)) {
202
+ return true;
203
+ }
204
+ }
205
+ }
206
+ return false;
207
+ }
208
+ /**
209
+ * Narrow `ToolDataAccess` over this data-access for guardrail policies: a policy
210
+ * calls `ctx.dataAccess.find(obj, opts, { subject? })` with no pool/registry, so
211
+ * those are injected from the execution context (mirrors the tool executor's
212
+ * wrapper; `...c` lets a policy override the subject per call).
213
+ */
214
+ export function toolDataAccessOver(inner, base) {
215
+ return {
216
+ find: (n, o, c) => inner.find(n, o, { ...base, ...c }),
217
+ findOne: (n, id, c) => inner.findOne(n, id, { ...base, ...c }),
218
+ create: (n, d, c) => inner.create(n, d, { ...base, ...c }),
219
+ update: (n, id, changes, c) => inner.update(n, id, changes, { ...base, ...c }),
220
+ delete: (n, id, c) => inner.delete(n, id, { ...base, ...c }),
221
+ };
222
+ }
223
+ /**
224
+ * Serialize a value for binding to a DB column. pg (node-postgres) auto-stringifies
225
+ * JSON *objects* but serializes JSON *arrays* as a PG array literal (`{"a"}`) which
226
+ * is invalid as `json` — so we explicitly `JSON.stringify` non-string json values
227
+ * (arrays/objects/numbers/booleans) to valid JSON text. `null` stays SQL NULL.
228
+ */
229
+ export function dbJsonValue(field, value) {
230
+ if (field !== undefined &&
231
+ (field.type === FIELD_TYPES.JSON || field.type === FIELD_TYPES.JSONB) &&
232
+ value !== null &&
233
+ typeof value !== 'string') {
234
+ return JSON.stringify(value);
235
+ }
236
+ return value;
237
+ }
238
+ //# sourceMappingURL=query-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-helpers.js","sourceRoot":"","sources":["../../../src/runtime/data-access/query-helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/runtime/data-access/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/runtime/data-access/query.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { SchemaError, METRIC_NAMES, isSafeRlsRole, primaryFieldsOf, encodeRecordKey, decodeRecordKey, canonicalizePrimaryValue, principalActorId } from '../../core/index.js';
2
- import { DETAILS_COLUMNS, FIELD_TYPES, isSideTableVirtualField, RECORD_META_ID_FIELD, recordKeySql, recordMetaTableName, scopeFieldName } from '../../core/index.js';
3
- import { AUDIT_ACTOR_TYPES, DATA_ACTIONS } from '../../core/audit/index.js';
1
+ import { SchemaError, METRIC_NAMES, isSafeRlsRole, primaryFieldsOf, principalActorId } from '../../core/index.js';
2
+ import { DETAILS_COLUMNS, FIELD_TYPES, RECORD_META_ID_FIELD, recordKeySql, recordMetaTableName, scopeFieldName } from '../../core/index.js';
3
+ import { DATA_ACTIONS } from '../../core/audit/index.js';
4
4
  import { NOOP_SCRIPT_DISPATCHER, SCRIPT_HOOKS } from '../../core/index.js';
5
5
  import { evaluateTransition } from '../tools/policies.js';
6
6
  import { buildCountSql, buildEstimateSql, buildFindSql, resolvePagination, scopeSuffix } from './builder.js';
@@ -19,235 +19,7 @@ import { runPipeline } from '../execution/index.js';
19
19
  import { upsertRecordMeta, deleteRecordMeta } from '../record-meta/index.js';
20
20
  import { SYSTEM_TABLES } from '../../core/storage/system-tables.js';
21
21
  import { asRlsRole } from './rls-session.js';
22
- const q = (id) => `"${id}"`;
23
- /** cross-object formula authorization derived from the request context */
24
- function formulaAuth(ctx) {
25
- const subject = subjectOf(ctx);
26
- return { subject, roles: subject?.roles ?? [], locale: ctx.locale };
27
- }
28
- /** PG error 42703 = undefined_column: a query referenced a column that doesn't exist */
29
- function isUndefinedColumn(error) {
30
- return typeof error === 'object' && error !== null && error.code === '42703';
31
- }
32
- /** parse `column "X" of relation "Y" does not exist` → the column/field name */
33
- function undefinedColumnOf(error) {
34
- const message = error?.message;
35
- if (typeof message !== 'string')
36
- return undefined;
37
- const m = /column "([^"]+)" of relation/.exec(message);
38
- return m?.[1];
39
- }
40
- /** PG error 23505 = unique_violation: a unique constraint (column or object constraint) was hit */
41
- function isUniqueViolation(error) {
42
- return typeof error === 'object' && error !== null && error.code === '23505';
43
- }
44
- /** readable field list behind a unique violation (from the detail `Key (a, b)=(...)`) */
45
- function uniqueFieldsOf(error) {
46
- const detail = error?.detail;
47
- if (typeof detail === 'string') {
48
- const m = /Key \(([^)]+)\)/.exec(detail);
49
- if (m?.[1] !== undefined)
50
- return m[1];
51
- }
52
- const constraint = error?.constraint;
53
- return typeof constraint === 'string' ? constraint : '?';
54
- }
55
- /**
56
- * Run a SQL statement against an object's table, mapping PG `undefined_column`
57
- * (42703) — a schema/DB drift (schema declares a field the table lacks) — to an
58
- * actionable error instead of a raw 500.
59
- */
60
- async function runTableQuery(q, objectName, sql, params, locale) {
61
- try {
62
- return await q.query(sql, params);
63
- }
64
- catch (error) {
65
- if (isUndefinedColumn(error)) {
66
- const field = undefinedColumnOf(error);
67
- throw new SchemaError('data.schemaDrift', { object: objectName, field: field ?? '' }, locale);
68
- }
69
- if (isUniqueViolation(error)) {
70
- throw new SchemaError('data.unique', { object: objectName, fields: uniqueFieldsOf(error) }, locale);
71
- }
72
- throw error;
73
- }
74
- }
75
- /** emit a write-audit event (transaction-aware: in-tx when a tx-capable sink is active) */
76
- async function auditWrite(sink, ctx, action, objectName, objectId, changes, error, before, after, client) {
77
- if (sink === undefined)
78
- return;
79
- const principal = ctx.principal;
80
- const scopeValue = scopeOf(ctx);
81
- const event = {
82
- actorType: principal.kind === 'user' ? AUDIT_ACTOR_TYPES.USER : AUDIT_ACTOR_TYPES.SYSTEM,
83
- actorId: principalActorId(principal),
84
- action,
85
- objectName,
86
- objectId,
87
- changes,
88
- isError: error !== undefined,
89
- errorCode: error instanceof SchemaError ? error.code : undefined,
90
- ...(principal.kind === 'system' ? { meta: { capability: principal.capability } } : {}),
91
- ...(ctx.requestId === undefined ? {} : { requestId: ctx.requestId }),
92
- ...(ctx.traceId === undefined ? {} : { traceId: ctx.traceId }),
93
- ...(scopeValue === undefined ? {} : { scopeId: scopeValue }),
94
- timestamp: new Date(),
95
- };
96
- if (before !== undefined)
97
- event.before = before;
98
- if (after !== undefined)
99
- event.after = after;
100
- // transactional/durable sinks write inside the business transaction; a throw
101
- // here rolls the business write back (deliberate)
102
- if (client !== undefined && sink.recordInTx !== undefined) {
103
- await sink.recordInTx(event, client);
104
- return;
105
- }
106
- void sink.record(event);
107
- }
108
- /** rebuild `this.user` for hooks from the authenticated subject */
109
- function scriptUserOf(ctx) {
110
- const subject = subjectOf(ctx);
111
- return {
112
- id: subject?.id ?? 'system',
113
- roles: subject?.roles ?? [],
114
- departmentId: subject?.departmentId,
115
- ...(subject?.scopeId === undefined ? {} : { scopeId: subject.scopeId }),
116
- ...(subject?.scopeId === undefined ? {} : { scopeId: subject.scopeId }),
117
- };
118
- }
119
- const PARENT_COLUMNS = new Set([
120
- DETAILS_COLUMNS.PARENT_ID,
121
- DETAILS_COLUMNS.PARENT_TYPE,
122
- DETAILS_COLUMNS.PARENT_IDX,
123
- ]);
124
- function isDetailsChild(registry, name) {
125
- return registry
126
- .list()
127
- .some((o) => o.fields.some((f) => f.type === FIELD_TYPES.DETAILS && f.target === name));
128
- }
129
- function requireDef(ctx, objectName) {
130
- const def = ctx.registry.get(objectName);
131
- if (def === undefined)
132
- throw new SchemaError('data.objectUnknown', { object: objectName }, ctx.locale);
133
- return def;
134
- }
135
- function bctx(ctx, objectName) {
136
- const subject = subjectOf(ctx);
137
- return {
138
- object: objectName,
139
- locale: ctx.locale,
140
- allowParentCols: isDetailsChild(ctx.registry, objectName),
141
- lookup: ctx.registry,
142
- ...(subject === undefined ? {} : { subject }),
143
- };
144
- }
145
- /** hidden select column carrying the SQL-computed record_key for a fetched row */
146
- const META_KEY_COL = '__weave_record_key';
147
- /** select expression for the SQL-computed record_key (lossless for temporal keys) */
148
- function recordKeySelect(def) {
149
- return `${recordKeySql(def, (name) => q(name))} AS ${q(META_KEY_COL)}`;
150
- }
151
- /** the record_key of a row, from its declared primary fields (declaration order) */
152
- function recordKeyOfRow(def, record) {
153
- return encodeRecordKey(primaryFieldsOf(def).map((f) => canonicalizePrimaryValue(record[f.name])));
154
- }
155
- /** declared primary field names, in declaration order */
156
- function primaryNames(def) {
157
- return primaryFieldsOf(def).map((f) => f.name);
158
- }
159
- /** decode an external id (the record_key, for single and composite keys alike) into primary values */
160
- function pkValuesOf(def, id, ctx) {
161
- const names = primaryNames(def);
162
- let values;
163
- try {
164
- values = decodeRecordKey(id);
165
- }
166
- catch {
167
- throw new SchemaError('recordKey.invalid', { key: id }, ctx.locale);
168
- }
169
- if (values.length !== names.length) {
170
- throw new SchemaError('recordKey.invalid', { key: id }, ctx.locale);
171
- }
172
- return values;
173
- }
174
- /** reject a malformed external id up front (keyed objects only; key-less objects 404 later) */
175
- function validateId(def, id, ctx) {
176
- if (primaryNames(def).length > 0)
177
- pkValuesOf(def, id, ctx);
178
- }
179
- /** primary-key filter object for `find` (declared names zipped with values) */
180
- function pkFilter(def, values) {
181
- const filter = {};
182
- primaryNames(def).forEach((name, i) => {
183
- filter[name] = values[i];
184
- });
185
- return filter;
186
- }
187
- /** `"a" = $1 AND "b" = $2` predicate for the primary names, starting at `startIndex` */
188
- function pkWhereSql(def, startIndex) {
189
- return primaryNames(def)
190
- .map((name, i) => `${q(name)} = $${startIndex + i}`)
191
- .join(' AND ');
192
- }
193
- /** the external id of a record: always its record_key (single and composite keys alike) */
194
- function externalIdOf(def, record) {
195
- return recordKeyOfRow(def, record);
196
- }
197
- /** true when the query references a side-table virtual field (`weave_*` minus the derived `weave_id`) */
198
- function needsSideTable(opts) {
199
- if ((opts.fields ?? []).some((f) => isSideTableVirtualField(f)))
200
- return true;
201
- if ((opts.sort ?? []).some((s) => isSideTableVirtualField(s.field)))
202
- return true;
203
- const filter = opts.filter;
204
- if (filter !== undefined) {
205
- for (const [key, value] of Object.entries(filter)) {
206
- if (key === '$or') {
207
- if (Array.isArray(value) &&
208
- value.some((group) => group !== null &&
209
- typeof group === 'object' &&
210
- Object.keys(group).some((k) => isSideTableVirtualField(k)))) {
211
- return true;
212
- }
213
- }
214
- else if (isSideTableVirtualField(key)) {
215
- return true;
216
- }
217
- }
218
- }
219
- return false;
220
- }
221
- /**
222
- * Narrow `ToolDataAccess` over this data-access for guardrail policies: a policy
223
- * calls `ctx.dataAccess.find(obj, opts, { subject? })` with no pool/registry, so
224
- * those are injected from the execution context (mirrors the tool executor's
225
- * wrapper; `...c` lets a policy override the subject per call).
226
- */
227
- function toolDataAccessOver(inner, base) {
228
- return {
229
- find: (n, o, c) => inner.find(n, o, { ...base, ...c }),
230
- findOne: (n, id, c) => inner.findOne(n, id, { ...base, ...c }),
231
- create: (n, d, c) => inner.create(n, d, { ...base, ...c }),
232
- update: (n, id, changes, c) => inner.update(n, id, changes, { ...base, ...c }),
233
- delete: (n, id, c) => inner.delete(n, id, { ...base, ...c }),
234
- };
235
- }
236
- /**
237
- * Serialize a value for binding to a DB column. pg (node-postgres) auto-stringifies
238
- * JSON *objects* but serializes JSON *arrays* as a PG array literal (`{"a"}`) which
239
- * is invalid as `json` — so we explicitly `JSON.stringify` non-string json values
240
- * (arrays/objects/numbers/booleans) to valid JSON text. `null` stays SQL NULL.
241
- */
242
- function dbJsonValue(field, value) {
243
- if (field !== undefined &&
244
- (field.type === FIELD_TYPES.JSON || field.type === FIELD_TYPES.JSONB) &&
245
- value !== null &&
246
- typeof value !== 'string') {
247
- return JSON.stringify(value);
248
- }
249
- return value;
250
- }
22
+ import { q, formulaAuth, runTableQuery, auditWrite, scriptUserOf, PARENT_COLUMNS, isDetailsChild, requireDef, bctx, META_KEY_COL, recordKeySelect, primaryNames, pkValuesOf, validateId, pkFilter, pkWhereSql, externalIdOf, needsSideTable, toolDataAccessOver, dbJsonValue } from './query-helpers.js';
251
23
  /** controlled object data-access implementation (PG-backed) */
252
24
  export class DefaultObjectDataAccess {
253
25
  audit;