pipework 0.7.21 → 0.7.22

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 (59) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/REFERENCE.md +66 -2
  3. package/dist/REFERENCE.md +66 -2
  4. package/dist/data/db/advisory-lock.d.ts +6 -1
  5. package/dist/data/db/advisory-lock.d.ts.map +1 -1
  6. package/dist/data/db/advisory-lock.js +20 -7
  7. package/dist/data/db/advisory-lock.js.map +1 -1
  8. package/dist/data/db/bulk-set.d.ts.map +1 -1
  9. package/dist/data/db/bulk-set.js +12 -20
  10. package/dist/data/db/bulk-set.js.map +1 -1
  11. package/dist/data/db/composed.d.ts +23 -0
  12. package/dist/data/db/composed.d.ts.map +1 -0
  13. package/dist/data/db/composed.js +42 -0
  14. package/dist/data/db/composed.js.map +1 -0
  15. package/dist/data/db/expressions.d.ts +32 -0
  16. package/dist/data/db/expressions.d.ts.map +1 -1
  17. package/dist/data/db/expressions.js +67 -0
  18. package/dist/data/db/expressions.js.map +1 -1
  19. package/dist/data/db/filter.d.ts +22 -1
  20. package/dist/data/db/filter.d.ts.map +1 -1
  21. package/dist/data/db/filter.js +22 -1
  22. package/dist/data/db/filter.js.map +1 -1
  23. package/dist/data/db/namespace.d.ts +26 -0
  24. package/dist/data/db/namespace.d.ts.map +1 -1
  25. package/dist/data/db/namespace.js +6 -0
  26. package/dist/data/db/namespace.js.map +1 -1
  27. package/dist/data/db/serializable.d.ts +8 -0
  28. package/dist/data/db/serializable.d.ts.map +1 -0
  29. package/dist/data/db/serializable.js +44 -0
  30. package/dist/data/db/serializable.js.map +1 -0
  31. package/dist/data/db/values.d.ts +10 -0
  32. package/dist/data/db/values.d.ts.map +1 -0
  33. package/dist/data/db/values.js +20 -0
  34. package/dist/data/db/values.js.map +1 -0
  35. package/dist/data/jsonb/composed.d.ts +8 -0
  36. package/dist/data/jsonb/composed.d.ts.map +1 -0
  37. package/dist/data/jsonb/composed.js +15 -0
  38. package/dist/data/jsonb/composed.js.map +1 -0
  39. package/dist/data/jsonb/namespace.d.ts +12 -1
  40. package/dist/data/jsonb/namespace.d.ts.map +1 -1
  41. package/dist/data/jsonb/namespace.js +12 -1
  42. package/dist/data/jsonb/namespace.js.map +1 -1
  43. package/dist/data/jsonb/query.d.ts +4 -0
  44. package/dist/data/jsonb/query.d.ts.map +1 -1
  45. package/dist/data/jsonb/query.js +21 -0
  46. package/dist/data/jsonb/query.js.map +1 -1
  47. package/dist/data/temporal/close.d.ts.map +1 -1
  48. package/dist/data/temporal/close.js +3 -2
  49. package/dist/data/temporal/close.js.map +1 -1
  50. package/dist/data/temporal/get-current.d.ts.map +1 -1
  51. package/dist/data/temporal/get-current.js +2 -1
  52. package/dist/data/temporal/get-current.js.map +1 -1
  53. package/dist/data/temporal/revise.d.ts.map +1 -1
  54. package/dist/data/temporal/revise.js +8 -11
  55. package/dist/data/temporal/revise.js.map +1 -1
  56. package/dist/index.d.ts +3 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js.map +1 -1
  59. package/package.json +1 -1
@@ -1,15 +1,36 @@
1
1
  import * as operators from './generated/drizzle-orm/operator.js';
2
2
  import * as aggregates from './generated/drizzle-orm/aggregate.js';
3
3
  import * as setOps from './generated/pg-core/set-operation.js';
4
- import { increment, decrement, coalesce, now, scalar } from './expressions.js';
4
+ import { increment, decrement, add, subtract, coalesce, now, scalar, cast, interval, dateTrunc, rowNumber, rank, denseRank, over, identifier, withRecursive } from './expressions.js';
5
+ import { ago, castUuid, castJsonb, castTimestamp, castBoolean, castNumeric, castInteger, castText, nextSequence } from './composed.js';
5
6
  export const filter = {
6
7
  ...operators,
7
8
  ...aggregates,
8
9
  ...setOps,
9
10
  increment,
10
11
  decrement,
12
+ add,
13
+ subtract,
11
14
  coalesce,
12
15
  now,
13
16
  scalar,
17
+ cast,
18
+ interval,
19
+ dateTrunc,
20
+ rowNumber,
21
+ rank,
22
+ denseRank,
23
+ over,
24
+ identifier,
25
+ withRecursive,
26
+ ago,
27
+ castUuid,
28
+ castJsonb,
29
+ castTimestamp,
30
+ castBoolean,
31
+ castNumeric,
32
+ castInteger,
33
+ castText,
34
+ nextSequence,
14
35
  };
15
36
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/data/db/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,qCAAqC,CAAA;AAChE,OAAO,KAAK,UAAU,MAAM,sCAAsC,CAAA;AAClE,OAAO,KAAK,MAAM,MAAM,sCAAsC,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9E,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,SAAS;IACZ,GAAG,UAAU;IACb,GAAG,MAAM;IACT,SAAS;IACT,SAAS;IACT,QAAQ;IACR,GAAG;IACH,MAAM;CACE,CAAA"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/data/db/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,qCAAqC,CAAA;AAChE,OAAO,KAAK,UAAU,MAAM,sCAAsC,CAAA;AAClE,OAAO,KAAK,MAAM,MAAM,sCAAsC,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrL,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEtI,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,SAAS;IACZ,GAAG,UAAU;IACb,GAAG,MAAM;IACT,SAAS;IACT,SAAS;IACT,GAAG;IACH,QAAQ;IACR,QAAQ;IACR,GAAG;IACH,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,SAAS;IACT,SAAS;IACT,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,UAAU;IACV,aAAa;IACb,GAAG;IACH,QAAQ;IACR,SAAS;IACT,aAAa;IACb,WAAW;IACX,WAAW;IACX,WAAW;IACX,QAAQ;IACR,YAAY;CACJ,CAAA"}
@@ -2,7 +2,9 @@ import { pipe as getDb } from './db.js';
2
2
  import { migrateAll, migrateOne } from '../migrate/index.js';
3
3
  import { excluded } from './excluded.js';
4
4
  import { advisoryLock } from './advisory-lock.js';
5
+ import { serializable } from './serializable.js';
5
6
  import { bulkSet } from './bulk-set.js';
7
+ import { values } from './values.js';
6
8
  import * as introspection from './generated/drizzle-orm/introspection.js';
7
9
  import * as relationOps from './generated/drizzle-orm/relation.js';
8
10
  import { define, definitions } from '../domain/index.js';
@@ -21,8 +23,12 @@ export declare const pipe: typeof getDb & {
21
23
  excluded: typeof excluded;
22
24
  /** Acquires a transaction-scoped advisory lock. Released at commit/rollback. */
23
25
  advisoryLock: typeof advisoryLock;
26
+ /** Runs a function in a SERIALIZABLE transaction with automatic retry on serialization failures and deadlocks. */
27
+ serializable: typeof serializable;
24
28
  /** Bulk UPDATE ... FROM (VALUES ...) — updates multiple rows with per-row values in a single statement. */
25
29
  bulkSet: typeof bulkSet;
30
+ /** Produces a typed VALUES clause for bulk operations — the base primitive for bulkSet and bulkUpsert. */
31
+ values: typeof values;
26
32
  /** Field builders for domain definitions — uuid(), text(), integer(), etc. */
27
33
  field: {
28
34
  uuid(): import("../domain/types.js").FieldDescriptor<string> & import("../domain/field.js").FieldModifiers<string>;
@@ -56,9 +62,29 @@ export declare const pipe: typeof getDb & {
56
62
  filter: {
57
63
  readonly increment: typeof import("./expressions.js").increment;
58
64
  readonly decrement: typeof import("./expressions.js").decrement;
65
+ readonly add: typeof import("./expressions.js").add;
66
+ readonly subtract: typeof import("./expressions.js").subtract;
59
67
  readonly coalesce: typeof import("./expressions.js").coalesce;
60
68
  readonly now: typeof import("./expressions.js").now;
61
69
  readonly scalar: typeof import("./expressions.js").scalar;
70
+ readonly cast: typeof import("./expressions.js").cast;
71
+ readonly interval: typeof import("./expressions.js").interval;
72
+ readonly dateTrunc: typeof import("./expressions.js").dateTrunc;
73
+ readonly rowNumber: typeof import("./expressions.js").rowNumber;
74
+ readonly rank: typeof import("./expressions.js").rank;
75
+ readonly denseRank: typeof import("./expressions.js").denseRank;
76
+ readonly over: typeof import("./expressions.js").over;
77
+ readonly identifier: typeof import("./expressions.js").identifier;
78
+ readonly withRecursive: typeof import("./expressions.js").withRecursive;
79
+ readonly ago: typeof import("./composed.js").ago;
80
+ readonly castUuid: typeof import("./composed.js").castUuid;
81
+ readonly castJsonb: typeof import("./composed.js").castJsonb;
82
+ readonly castTimestamp: typeof import("./composed.js").castTimestamp;
83
+ readonly castBoolean: typeof import("./composed.js").castBoolean;
84
+ readonly castNumeric: typeof import("./composed.js").castNumeric;
85
+ readonly castInteger: typeof import("./composed.js").castInteger;
86
+ readonly castText: typeof import("./composed.js").castText;
87
+ readonly nextSequence: typeof import("./composed.js").nextSequence;
62
88
  readonly except: import("./generated/pg-core/type.js").PgCreateSetOperatorFn;
63
89
  readonly exceptAll: import("./generated/pg-core/type.js").PgCreateSetOperatorFn;
64
90
  readonly intersect: import("./generated/pg-core/type.js").PgCreateSetOperatorFn;
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/data/db/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,aAAa,MAAM,0CAA0C,CAAA;AACzE,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAA;AAGlE,OAAO,EAAS,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAG/D,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE3E,6EAA6E;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,6EAA6E;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,mJAAmJ;AACnJ,eAAO,MAAM,IAAI;IAUf,oDAAoD;;IAEpD,mDAAmD;;IAGnD,6EAA6E;;IAG7E,gFAAgF;;IAGhF,2GAA2G;;IAG3G,8EAA8E;;;;;;;;;;;;;;IAE9E,qFAAqF;;IAErF,6DAA6D;;;;;;;;;;;;;IA3B7D,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B7E,CAAA"}
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/data/db/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,KAAK,aAAa,MAAM,0CAA0C,CAAA;AACzE,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAA;AAGlE,OAAO,EAAS,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAG/D,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE3E,6EAA6E;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,6EAA6E;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,mJAAmJ;AACnJ,eAAO,MAAM,IAAI;IAUf,oDAAoD;;IAEpD,mDAAmD;;IAGnD,6EAA6E;;IAG7E,gFAAgF;;IAGhF,kHAAkH;;IAGlH,2GAA2G;;IAG3G,0GAA0G;;IAG1G,8EAA8E;;;;;;;;;;;;;;IAE9E,qFAAqF;;IAErF,6DAA6D;;;;;;;;;;;;;IAjC7D,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC7E,CAAA"}
@@ -3,7 +3,9 @@ import { migrateAll, migrateOne } from '../migrate/index.js';
3
3
  import { filter } from './filter.js';
4
4
  import { excluded } from './excluded.js';
5
5
  import { advisoryLock } from './advisory-lock.js';
6
+ import { serializable } from './serializable.js';
6
7
  import { bulkSet } from './bulk-set.js';
8
+ import { values } from './values.js';
7
9
  // Auto-generated re-export layers (scaffold-namespace tool)
8
10
  import * as introspection from './generated/drizzle-orm/introspection.js';
9
11
  import * as relationOps from './generated/drizzle-orm/relation.js';
@@ -29,8 +31,12 @@ export const pipe = Object.assign(getDb, {
29
31
  excluded,
30
32
  /** Acquires a transaction-scoped advisory lock. Released at commit/rollback. */
31
33
  advisoryLock,
34
+ /** Runs a function in a SERIALIZABLE transaction with automatic retry on serialization failures and deadlocks. */
35
+ serializable,
32
36
  /** Bulk UPDATE ... FROM (VALUES ...) — updates multiple rows with per-row values in a single statement. */
33
37
  bulkSet,
38
+ /** Produces a typed VALUES clause for bulk operations — the base primitive for bulkSet and bulkUpsert. */
39
+ values,
34
40
  /** Field builders for domain definitions — uuid(), text(), integer(), etc. */
35
41
  field,
36
42
  /** Registers a domain definition with table, validators, and factory projections. */
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/data/db/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,4DAA4D;AAC5D,OAAO,KAAK,aAAa,MAAM,0CAA0C,CAAA;AACzE,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAA;AAElE,qBAAqB;AACrB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAK/D,6EAA6E;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,6EAA6E;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,mJAAmJ;AACnJ,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;IACvC,6EAA6E;IAC7E,MAAM;IAEN,kGAAkG;IAClG,GAAG,aAAa;IAEhB,qDAAqD;IACrD,GAAG,WAAW;IAEd,oDAAoD;IACpD,OAAO,EAAE,UAAU;IACnB,mDAAmD;IACnD,UAAU;IAEV,6EAA6E;IAC7E,QAAQ;IAER,gFAAgF;IAChF,YAAY;IAEZ,2GAA2G;IAC3G,OAAO;IAEP,8EAA8E;IAC9E,KAAK;IACL,qFAAqF;IACrF,MAAM;IACN,6DAA6D;IAC7D,WAAW;CACZ,CAAC,CAAA"}
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/data/db/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,4DAA4D;AAC5D,OAAO,KAAK,aAAa,MAAM,0CAA0C,CAAA;AACzE,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAA;AAElE,qBAAqB;AACrB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAK/D,6EAA6E;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,6EAA6E;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,mJAAmJ;AACnJ,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;IACvC,6EAA6E;IAC7E,MAAM;IAEN,kGAAkG;IAClG,GAAG,aAAa;IAEhB,qDAAqD;IACrD,GAAG,WAAW;IAEd,oDAAoD;IACpD,OAAO,EAAE,UAAU;IACnB,mDAAmD;IACnD,UAAU;IAEV,6EAA6E;IAC7E,QAAQ;IAER,gFAAgF;IAChF,YAAY;IAEZ,kHAAkH;IAClH,YAAY;IAEZ,2GAA2G;IAC3G,OAAO;IAEP,0GAA0G;IAC1G,MAAM;IAEN,8EAA8E;IAC9E,KAAK;IACL,qFAAqF;IACrF,MAAM;IACN,6DAA6D;IAC7D,WAAW;CACZ,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { DB } from './types.js';
2
+ export interface SerializableOptions {
3
+ readonly maxAttempts?: number;
4
+ readonly backoffMs?: number;
5
+ }
6
+ /** Runs `fn` in a SERIALIZABLE transaction, retrying on serialization failures (40001) and deadlocks (40P01) with exponential backoff. */
7
+ export declare function serializable<T>(db: DB, fn: (tx: DB) => Promise<T>, options?: SerializableOptions): Promise<T>;
8
+ //# sourceMappingURL=serializable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable.d.ts","sourceRoot":"","sources":["../../../src/data/db/serializable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAiBD,0IAA0I;AAC1I,wBAAsB,YAAY,CAAC,CAAC,EAClC,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,CAAC,CAAC,CA6BZ"}
@@ -0,0 +1,44 @@
1
+ const PG_SERIALIZATION_FAILURE = '40001';
2
+ const PG_DEADLOCK_DETECTED = '40P01';
3
+ function extractPgCode(err) {
4
+ if (typeof err !== 'object' || err === null)
5
+ return undefined;
6
+ if ('code' in err)
7
+ return err.code;
8
+ if ('cause' in err)
9
+ return extractPgCode(err.cause);
10
+ return undefined;
11
+ }
12
+ function isTransientConcurrencyError(err) {
13
+ const code = extractPgCode(err);
14
+ return code === PG_SERIALIZATION_FAILURE || code === PG_DEADLOCK_DETECTED;
15
+ }
16
+ /** Runs `fn` in a SERIALIZABLE transaction, retrying on serialization failures (40001) and deadlocks (40P01) with exponential backoff. */
17
+ export async function serializable(db, fn, options) {
18
+ const maxAttempts = options?.maxAttempts ?? 3;
19
+ const backoffMs = options?.backoffMs ?? 50;
20
+ if (maxAttempts < 1) {
21
+ throw new Error('[pipework] serializable() requires maxAttempts >= 1.\n\n' +
22
+ ' pipe.serializable(db, fn) — default 3 attempts\n' +
23
+ ' pipe.serializable(db, fn, { maxAttempts: 5 }) — custom attempts\n');
24
+ }
25
+ let lastError;
26
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
27
+ if (attempt > 0) {
28
+ await new Promise(resolve => setTimeout(resolve, backoffMs * 2 ** (attempt - 1)));
29
+ }
30
+ try {
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- drizzle's transaction generic requires concrete schema types; the DB alias erases them
32
+ return await db.transaction(fn, { isolationLevel: 'serializable' });
33
+ }
34
+ catch (err) {
35
+ if (isTransientConcurrencyError(err) && attempt < maxAttempts - 1) {
36
+ lastError = err;
37
+ continue;
38
+ }
39
+ throw err;
40
+ }
41
+ }
42
+ throw lastError;
43
+ }
44
+ //# sourceMappingURL=serializable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable.js","sourceRoot":"","sources":["../../../src/data/db/serializable.ts"],"names":[],"mappings":"AAOA,MAAM,wBAAwB,GAAG,OAAO,CAAA;AACxC,MAAM,oBAAoB,GAAG,OAAO,CAAA;AAEpC,SAAS,aAAa,CAAC,GAAY;IACjC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAC7D,IAAI,MAAM,IAAI,GAAG;QAAE,OAAQ,GAAyB,CAAC,IAAI,CAAA;IACzD,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,aAAa,CAAE,GAA0B,CAAC,KAAK,CAAC,CAAA;IAC3E,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,2BAA2B,CAAC,GAAY;IAC/C,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAC/B,OAAO,IAAI,KAAK,wBAAwB,IAAI,IAAI,KAAK,oBAAoB,CAAA;AAC3E,CAAC;AAED,0IAA0I;AAC1I,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAM,EACN,EAA0B,EAC1B,OAA6B;IAE7B,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,EAAE,CAAA;IAE1C,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,0DAA0D;YAC1D,wEAAwE;YACxE,qEAAqE,CACtE,CAAA;IACH,CAAC;IAED,IAAI,SAAkB,CAAA;IACtB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACzF,CAAC;QACD,IAAI,CAAC;YACH,wJAAwJ;YACxJ,OAAO,MAAO,EAAU,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAA;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,2BAA2B,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC;gBAClE,SAAS,GAAG,GAAG,CAAA;gBACf,SAAQ;YACV,CAAC;YACD,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAA;AACjB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { SQL } from './types.js';
2
+ type PgCastType = 'uuid' | 'text' | 'integer' | 'bigint' | 'boolean' | 'jsonb' | 'timestamptz' | 'timestamp' | 'date' | 'numeric' | 'real' | 'double precision' | 'smallint' | 'interval';
3
+ export interface ValueColumnDef {
4
+ readonly name: string;
5
+ readonly type: PgCastType;
6
+ }
7
+ /** Produces a typed VALUES clause: `(VALUES ($1::uuid, $2::text), ($3::uuid, $4::text))`. Each value is cast to its declared type. JSONB values are JSON-stringified before casting. */
8
+ export declare function values(rows: ReadonlyArray<readonly unknown[]>, columns: readonly ValueColumnDef[]): SQL;
9
+ export {};
10
+ //# sourceMappingURL=values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../../src/data/db/values.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAErC,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,kBAAkB,GAAG,UAAU,GAAG,UAAU,CAAA;AAEzL,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAC1B;AAED,wLAAwL;AACxL,wBAAgB,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,GAAG,CAgBvG"}
@@ -0,0 +1,20 @@
1
+ import { sql } from './sql.js';
2
+ /** Produces a typed VALUES clause: `(VALUES ($1::uuid, $2::text), ($3::uuid, $4::text))`. Each value is cast to its declared type. JSONB values are JSON-stringified before casting. */
3
+ export function values(rows, columns) {
4
+ if (rows.length === 0)
5
+ throw new Error('[pipework] values() requires at least one row');
6
+ if (columns.length === 0)
7
+ throw new Error('[pipework] values() requires at least one column definition');
8
+ const valueRows = rows.map(row => {
9
+ const cells = columns.map((col, i) => {
10
+ const val = row[i];
11
+ if (col.type === 'jsonb') {
12
+ return sql `${JSON.stringify(val)}::jsonb`;
13
+ }
14
+ return sql `${val}::${sql.raw(col.type)}`;
15
+ });
16
+ return sql `(${sql.join(cells, sql `, `)})`;
17
+ });
18
+ return sql `(VALUES ${sql.join(valueRows, sql `, `)})`;
19
+ }
20
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../../src/data/db/values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAU9B,wLAAwL;AACxL,MAAM,UAAU,MAAM,CAAC,IAAuC,EAAE,OAAkC;IAChG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IACvF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAExG,MAAM,SAAS,GAAU,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YAClB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACzB,OAAO,GAAG,CAAA,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAA;YAC3C,CAAC;YACD,OAAO,GAAG,CAAA,GAAG,GAAuC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;QAC9E,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,CAAA,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAA,IAAI,CAAC,GAAG,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA,WAAW,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAA,IAAI,CAAC,GAAG,CAAA;AACtD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SQL, Column } from '../db/types.js';
2
+ /** Extracts a boolean from a JSONB column: `(column->>'key')::boolean`. Supports nested paths. */
3
+ export declare function boolean(column: Column | SQL, ...keys: string[]): SQL<boolean>;
4
+ /** Extracts a number from a JSONB column: `(column->>'key')::numeric`. Supports nested paths. */
5
+ export declare function number(column: Column | SQL, ...keys: string[]): SQL<number>;
6
+ /** Extracts an integer from a JSONB column: `(column->>'key')::integer`. Supports nested paths. */
7
+ export declare function integer(column: Column | SQL, ...keys: string[]): SQL<number>;
8
+ //# sourceMappingURL=composed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composed.d.ts","sourceRoot":"","sources":["../../../src/data/jsonb/composed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAIjD,kGAAkG;AAClG,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAE7E;AAED,iGAAiG;AACjG,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAE3E;AAED,mGAAmG;AACnG,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAE5E"}
@@ -0,0 +1,15 @@
1
+ import { cast } from '../db/expressions.js';
2
+ import { pathText } from './query.js';
3
+ /** Extracts a boolean from a JSONB column: `(column->>'key')::boolean`. Supports nested paths. */
4
+ export function boolean(column, ...keys) {
5
+ return cast(pathText(column, ...keys), 'boolean');
6
+ }
7
+ /** Extracts a number from a JSONB column: `(column->>'key')::numeric`. Supports nested paths. */
8
+ export function number(column, ...keys) {
9
+ return cast(pathText(column, ...keys), 'numeric');
10
+ }
11
+ /** Extracts an integer from a JSONB column: `(column->>'key')::integer`. Supports nested paths. */
12
+ export function integer(column, ...keys) {
13
+ return cast(pathText(column, ...keys), 'integer');
14
+ }
15
+ //# sourceMappingURL=composed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composed.js","sourceRoot":"","sources":["../../../src/data/jsonb/composed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,kGAAkG;AAClG,MAAM,UAAU,OAAO,CAAC,MAAoB,EAAE,GAAG,IAAc;IAC7D,OAAO,IAAI,CAAU,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAA;AAC5D,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,MAAM,CAAC,MAAoB,EAAE,GAAG,IAAc;IAC5D,OAAO,IAAI,CAAS,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAA;AAC3D,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,OAAO,CAAC,MAAoB,EAAE,GAAG,IAAc;IAC7D,OAAO,IAAI,CAAS,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAA;AAC3D,CAAC"}
@@ -1,4 +1,5 @@
1
- import { contains, containedBy, hasKey, text, json } from './query.js';
1
+ import { contains, containedBy, hasKey, text, json, path, pathText } from './query.js';
2
+ import { boolean, number, integer } from './composed.js';
2
3
  /** JSONB query operators — typed helpers for PostgreSQL JSONB containment, key checks, and field extraction. */
3
4
  export declare const jsonb: {
4
5
  /** The @> containment operator — tests whether a JSONB column contains the given value. */
@@ -11,5 +12,15 @@ export declare const jsonb: {
11
12
  text: typeof text;
12
13
  /** Extracts a JSONB value: `column->'key'`. Returns JSONB — use with jsonb.contains() etc. */
13
14
  json: typeof json;
15
+ /** Extracts a nested JSONB value: `column->'a'->'b'`. Returns JSONB. */
16
+ path: typeof path;
17
+ /** Extracts a nested text value: `column->'a'->>'b'`. Intermediate keys use `->`, final uses `->>`. */
18
+ pathText: typeof pathText;
19
+ /** Extracts a boolean: `(column->>'key')::boolean`. Supports nested paths. */
20
+ boolean: typeof boolean;
21
+ /** Extracts a number: `(column->>'key')::numeric`. Supports nested paths. */
22
+ number: typeof number;
23
+ /** Extracts an integer: `(column->>'key')::integer`. Supports nested paths. */
24
+ integer: typeof integer;
14
25
  };
15
26
  //# sourceMappingURL=namespace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/data/jsonb/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEtE,gHAAgH;AAChH,eAAO,MAAM,KAAK;IAChB,2FAA2F;;IAE3F,mGAAmG;;IAEnG,+FAA+F;;IAE/F,sFAAsF;;IAEtF,8FAA8F;;CAE/F,CAAA"}
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/data/jsonb/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAExD,gHAAgH;AAChH,eAAO,MAAM,KAAK;IAChB,2FAA2F;;IAE3F,mGAAmG;;IAEnG,+FAA+F;;IAE/F,sFAAsF;;IAEtF,8FAA8F;;IAE9F,wEAAwE;;IAExE,uGAAuG;;IAEvG,8EAA8E;;IAE9E,6EAA6E;;IAE7E,+EAA+E;;CAEhF,CAAA"}
@@ -1,4 +1,5 @@
1
- import { contains, containedBy, hasKey, text, json } from './query.js';
1
+ import { contains, containedBy, hasKey, text, json, path, pathText } from './query.js';
2
+ import { boolean, number, integer } from './composed.js';
2
3
  /** JSONB query operators — typed helpers for PostgreSQL JSONB containment, key checks, and field extraction. */
3
4
  export const jsonb = {
4
5
  /** The @> containment operator — tests whether a JSONB column contains the given value. */
@@ -11,5 +12,15 @@ export const jsonb = {
11
12
  text,
12
13
  /** Extracts a JSONB value: `column->'key'`. Returns JSONB — use with jsonb.contains() etc. */
13
14
  json,
15
+ /** Extracts a nested JSONB value: `column->'a'->'b'`. Returns JSONB. */
16
+ path,
17
+ /** Extracts a nested text value: `column->'a'->>'b'`. Intermediate keys use `->`, final uses `->>`. */
18
+ pathText,
19
+ /** Extracts a boolean: `(column->>'key')::boolean`. Supports nested paths. */
20
+ boolean,
21
+ /** Extracts a number: `(column->>'key')::numeric`. Supports nested paths. */
22
+ number,
23
+ /** Extracts an integer: `(column->>'key')::integer`. Supports nested paths. */
24
+ integer,
14
25
  };
15
26
  //# sourceMappingURL=namespace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/data/jsonb/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEtE,gHAAgH;AAChH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,2FAA2F;IAC3F,QAAQ;IACR,mGAAmG;IACnG,WAAW;IACX,+FAA+F;IAC/F,MAAM;IACN,sFAAsF;IACtF,IAAI;IACJ,8FAA8F;IAC9F,IAAI;CACL,CAAA"}
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/data/jsonb/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAExD,gHAAgH;AAChH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,2FAA2F;IAC3F,QAAQ;IACR,mGAAmG;IACnG,WAAW;IACX,+FAA+F;IAC/F,MAAM;IACN,sFAAsF;IACtF,IAAI;IACJ,8FAA8F;IAC9F,IAAI;IACJ,wEAAwE;IACxE,IAAI;IACJ,uGAAuG;IACvG,QAAQ;IACR,8EAA8E;IAC9E,OAAO;IACP,6EAA6E;IAC7E,MAAM;IACN,+EAA+E;IAC/E,OAAO;CACR,CAAA"}
@@ -6,4 +6,8 @@ export declare function hasKey(column: Column | SQL, key: string): SQL<boolean>;
6
6
  export declare function text(column: Column | SQL, key: string): SQL<string>;
7
7
  /** Extracts a JSONB value from a JSONB column: `column->'key'`. Returns JSONB, not text — use with jsonb.contains() etc. */
8
8
  export declare function json(column: Column | SQL, key: string): SQL;
9
+ /** Extracts a nested JSONB value: `column->'a'->'b'`. Returns JSONB. For text output, use `pathText`. */
10
+ export declare function path(column: Column | SQL, ...keys: string[]): SQL;
11
+ /** Extracts a nested text value: `column->'a'->>'b'`. Intermediate keys use `->`, final key uses `->>`. */
12
+ export declare function pathText(column: Column | SQL, ...keys: string[]): SQL<string>;
9
13
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/data/jsonb/query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEjD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAE3E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAE9E;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAEtE;AAED,4HAA4H;AAC5H,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAEnE;AAED,4HAA4H;AAC5H,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAE3D"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/data/jsonb/query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEjD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAE3E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAE9E;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAEtE;AAED,4HAA4H;AAC5H,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAEnE;AAED,4HAA4H;AAC5H,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAE3D;AAED,yGAAyG;AACzG,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAOjE;AAED,2GAA2G;AAC3G,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAO7E"}
@@ -16,4 +16,25 @@ export function text(column, key) {
16
16
  export function json(column, key) {
17
17
  return sql `${column}->${key}`;
18
18
  }
19
+ /** Extracts a nested JSONB value: `column->'a'->'b'`. Returns JSONB. For text output, use `pathText`. */
20
+ export function path(column, ...keys) {
21
+ if (keys.length === 0)
22
+ return sql `${column}`;
23
+ let result = sql `${column}`;
24
+ for (const key of keys) {
25
+ result = sql `${result}->${key}`;
26
+ }
27
+ return result;
28
+ }
29
+ /** Extracts a nested text value: `column->'a'->>'b'`. Intermediate keys use `->`, final key uses `->>`. */
30
+ export function pathText(column, ...keys) {
31
+ if (keys.length === 0)
32
+ return sql `${column}`;
33
+ if (keys.length === 1)
34
+ return text(column, keys[0]);
35
+ const intermediateKeys = keys.slice(0, -1);
36
+ const finalKey = keys[keys.length - 1];
37
+ const intermediate = path(column, ...intermediateKeys);
38
+ return text(intermediate, finalKey);
39
+ }
19
40
  //# sourceMappingURL=query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/data/jsonb/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAGlC,MAAM,UAAU,QAAQ,CAAC,MAAoB,EAAE,KAAc;IAC3D,OAAO,GAAG,CAAS,GAAG,MAAM,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAoB,EAAE,KAAc;IAC9D,OAAO,GAAG,CAAS,GAAG,MAAM,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,MAAoB,EAAE,GAAW;IACtD,OAAO,GAAG,CAAS,GAAG,MAAM,MAAM,GAAG,EAAE,CAAA;AACzC,CAAC;AAED,4HAA4H;AAC5H,MAAM,UAAU,IAAI,CAAC,MAAoB,EAAE,GAAW;IACpD,OAAO,GAAG,CAAQ,GAAG,MAAM,MAAM,GAAG,EAAE,CAAA;AACxC,CAAC;AAED,4HAA4H;AAC5H,MAAM,UAAU,IAAI,CAAC,MAAoB,EAAE,GAAW;IACpD,OAAO,GAAG,CAAA,GAAG,MAAM,KAAK,GAAG,EAAE,CAAA;AAC/B,CAAC"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/data/jsonb/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAGlC,MAAM,UAAU,QAAQ,CAAC,MAAoB,EAAE,KAAc;IAC3D,OAAO,GAAG,CAAS,GAAG,MAAM,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAoB,EAAE,KAAc;IAC9D,OAAO,GAAG,CAAS,GAAG,MAAM,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,MAAoB,EAAE,GAAW;IACtD,OAAO,GAAG,CAAS,GAAG,MAAM,MAAM,GAAG,EAAE,CAAA;AACzC,CAAC;AAED,4HAA4H;AAC5H,MAAM,UAAU,IAAI,CAAC,MAAoB,EAAE,GAAW;IACpD,OAAO,GAAG,CAAQ,GAAG,MAAM,MAAM,GAAG,EAAE,CAAA;AACxC,CAAC;AAED,4HAA4H;AAC5H,MAAM,UAAU,IAAI,CAAC,MAAoB,EAAE,GAAW;IACpD,OAAO,GAAG,CAAA,GAAG,MAAM,KAAK,GAAG,EAAE,CAAA;AAC/B,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,IAAI,CAAC,MAAoB,EAAE,GAAG,IAAc;IAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAA,GAAG,MAAM,EAAE,CAAA;IAC5C,IAAI,MAAM,GAAQ,GAAG,CAAA,GAAG,MAAM,EAAE,CAAA;IAChC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,CAAA,GAAG,MAAM,KAAK,GAAG,EAAE,CAAA;IACjC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,QAAQ,CAAC,MAAoB,EAAE,GAAG,IAAc;IAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAQ,GAAG,MAAM,EAAE,CAAA;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,CAAA;IACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAA;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAA;IACtD,OAAO,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;AACrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../../src/data/temporal/close.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAGjD,wBAAsB,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BrE"}
1
+ {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../../src/data/temporal/close.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAGjD,wBAAsB,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BrE"}
@@ -1,10 +1,11 @@
1
1
  import { sql } from '../db/sql.js';
2
2
  import { getTableName } from '../db/generated/drizzle-orm/introspection.js';
3
+ import { identifier, now } from '../db/expressions.js';
3
4
  import { TemporalIntegrityError } from './errors.js';
4
5
  export async function close(options) {
5
6
  const { tx, where } = options;
6
7
  const table = typeof options.table === 'string' ? options.table : getTableName(options.table);
7
- const rows = await tx.execute(sql `SELECT id FROM ${sql.identifier(table)} WHERE ${where} AND effective_to IS NULL FOR UPDATE`);
8
+ const rows = await tx.execute(sql `SELECT id FROM ${identifier(table)} WHERE ${where} AND effective_to IS NULL FOR UPDATE`);
8
9
  if (rows.length === 0) {
9
10
  return 0;
10
11
  }
@@ -13,7 +14,7 @@ export async function close(options) {
13
14
  `Expected at most one row with effective_to IS NULL, found ${rows.length}.`, { table, count: rows.length });
14
15
  }
15
16
  const currentId = rows[0]['id'];
16
- await tx.execute(sql `UPDATE ${sql.identifier(table)} SET effective_to = now() WHERE id = ${currentId}::uuid`);
17
+ await tx.execute(sql `UPDATE ${identifier(table)} SET effective_to = ${now()} WHERE id = ${currentId}::uuid`);
17
18
  return 1;
18
19
  }
19
20
  //# sourceMappingURL=close.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"close.js","sourceRoot":"","sources":["../../../src/data/temporal/close.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAA;AAE3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAwB;IAClD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAC7B,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAE7F,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAC3B,GAAG,CAAA,kBAAkB,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,KAAK,sCAAsC,CAChG,CAAA;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,CAAA;IACV,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,sBAAsB,CAC9B,uCAAuC,KAAK,gCAAgC;YAC5E,6DAA6D,IAAI,CAAC,MAAM,GAAG,EAC3E,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAC9B,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,CAAW,CAAA;IAE1C,MAAM,EAAE,CAAC,OAAO,CACd,GAAG,CAAA,UAAU,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,wCAAwC,SAAS,QAAQ,CAC5F,CAAA;IAED,OAAO,CAAC,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"close.js","sourceRoot":"","sources":["../../../src/data/temporal/close.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAwB;IAClD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAC7B,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAE7F,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAC3B,GAAG,CAAA,kBAAkB,UAAU,CAAC,KAAK,CAAC,UAAU,KAAK,sCAAsC,CAC5F,CAAA;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,CAAA;IACV,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,sBAAsB,CAC9B,uCAAuC,KAAK,gCAAgC;YAC5E,6DAA6D,IAAI,CAAC,MAAM,GAAG,EAC3E,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAC9B,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,CAAW,CAAA;IAE1C,MAAM,EAAE,CAAC,OAAO,CACd,GAAG,CAAA,UAAU,UAAU,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,eAAe,SAAS,QAAQ,CAC3F,CAAA;IAED,OAAO,CAAC,CAAA;AACV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-current.d.ts","sourceRoot":"","sources":["../../../src/data/temporal/get-current.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAGnE,wBAAsB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAsB3F"}
1
+ {"version":3,"file":"get-current.d.ts","sourceRoot":"","sources":["../../../src/data/temporal/get-current.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAGnE,wBAAsB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAsB3F"}
@@ -1,10 +1,11 @@
1
1
  import { sql } from '../db/sql.js';
2
2
  import { getTableName } from '../db/generated/drizzle-orm/introspection.js';
3
+ import { identifier } from '../db/expressions.js';
3
4
  import { TemporalIntegrityError } from './errors.js';
4
5
  export async function getCurrent(options) {
5
6
  const { tx, where } = options;
6
7
  const table = typeof options.table === 'string' ? options.table : getTableName(options.table);
7
- const rows = await tx.execute(sql `SELECT id::text, version FROM ${sql.identifier(table)} WHERE ${where} AND effective_to IS NULL`);
8
+ const rows = await tx.execute(sql `SELECT id::text, version FROM ${identifier(table)} WHERE ${where} AND effective_to IS NULL`);
8
9
  if (rows.length === 0) {
9
10
  return null;
10
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-current.js","sourceRoot":"","sources":["../../../src/data/temporal/get-current.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAA;AAE3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAwB;IACvD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAC7B,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAE7F,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAC3B,GAAG,CAAA,iCAAiC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,KAAK,2BAA2B,CACpG,CAAA;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,sBAAsB,CAC9B,uCAAuC,KAAK,gCAAgC;YAC5E,6DAA6D,IAAI,CAAC,MAAM,GAAG,EAC3E,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAC9B,CAAA;IACH,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;IACpB,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAW,EAAE,CAAA;AACvE,CAAC"}
1
+ {"version":3,"file":"get-current.js","sourceRoot":"","sources":["../../../src/data/temporal/get-current.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAwB;IACvD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAC7B,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAE7F,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAC3B,GAAG,CAAA,iCAAiC,UAAU,CAAC,KAAK,CAAC,UAAU,KAAK,2BAA2B,CAChG,CAAA;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,sBAAsB,CAC9B,uCAAuC,KAAK,gCAAgC;YAC5E,6DAA6D,IAAI,CAAC,MAAM,GAAG,EAC3E,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAC9B,CAAA;IACH,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;IACpB,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAW,EAAE,CAAA;AACvE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"revise.d.ts","sourceRoot":"","sources":["../../../src/data/temporal/revise.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI7D,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAoE1E"}
1
+ {"version":3,"file":"revise.d.ts","sourceRoot":"","sources":["../../../src/data/temporal/revise.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI7D,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAiE1E"}
@@ -1,11 +1,12 @@
1
1
  import { sql } from '../db/sql.js';
2
2
  import { getTableName } from '../db/generated/drizzle-orm/introspection.js';
3
+ import { identifier, now } from '../db/expressions.js';
3
4
  import { TemporalIntegrityError } from './errors.js';
4
- import { assertValidIdentifier, quoteIdentifier } from '../db/identifiers.js';
5
+ import { assertValidIdentifier } from '../db/identifiers.js';
5
6
  export async function revise(options) {
6
7
  const { tx, where, data, userId } = options;
7
8
  const table = typeof options.table === 'string' ? options.table : getTableName(options.table);
8
- const current = await tx.execute(sql `SELECT id, version FROM ${sql.identifier(table)} WHERE ${where} AND effective_to IS NULL FOR UPDATE`);
9
+ const current = await tx.execute(sql `SELECT id, version FROM ${identifier(table)} WHERE ${where} AND effective_to IS NULL FOR UPDATE`);
9
10
  if (current.length === 0) {
10
11
  throw new TemporalIntegrityError(`No current version found. Cannot revise a record in "${table}" — ` +
11
12
  `ensure the entity exists and has an open version (effective_to IS NULL).`, { table });
@@ -17,14 +18,14 @@ export async function revise(options) {
17
18
  const currentRow = current[0];
18
19
  const currentId = currentRow['id'];
19
20
  const currentVersion = currentRow['version'];
20
- await tx.execute(sql `UPDATE ${sql.identifier(table)} SET effective_to = now() WHERE id = ${currentId}::uuid`);
21
+ await tx.execute(sql `UPDATE ${identifier(table)} SET effective_to = ${now()} WHERE id = ${currentId}::uuid`);
21
22
  const columns = Object.keys(data);
22
23
  const values = Object.values(data);
23
24
  for (const col of columns) {
24
25
  assertValidIdentifier(col, 'column');
25
26
  }
26
27
  const allColumns = [...columns, 'effective_from', 'effective_to', 'version', 'created_by'];
27
- const colListRaw = allColumns.map((c) => quoteIdentifier(c, 'column')).join(', ');
28
+ const colIdentifiers = allColumns.map(c => identifier(c));
28
29
  const serializedValues = values.map((v) => {
29
30
  if (v === null || v === undefined)
30
31
  return null;
@@ -34,18 +35,14 @@ export async function revise(options) {
34
35
  });
35
36
  const valueParts = [
36
37
  ...serializedValues.map((v) => sql `${v ?? null}`),
37
- sql `now()`,
38
+ now(),
38
39
  sql `NULL`,
39
40
  sql `${currentVersion + 1}`,
40
41
  sql `${userId ?? null}`,
41
42
  ];
42
- const valuesList = valueParts.reduce((acc, part, i) => {
43
- if (i === 0)
44
- return part;
45
- return sql `${acc}, ${part}`;
46
- });
43
+ const valuesList = sql.join(valueParts, sql `, `);
47
44
  assertValidIdentifier(table, 'table');
48
- const result = await tx.execute(sql `INSERT INTO ${sql.raw(quoteIdentifier(table, 'table'))} (${sql.raw(colListRaw)}) VALUES (${valuesList}) RETURNING id::text, version`);
45
+ const result = await tx.execute(sql `INSERT INTO ${identifier(table)} (${sql.join(colIdentifiers, sql `, `)}) VALUES (${valuesList}) RETURNING id::text, version`);
49
46
  const row = result[0];
50
47
  return { id: row['id'], version: row['version'] };
51
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"revise.js","sourceRoot":"","sources":["../../../src/data/temporal/revise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAA;AAE3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE7E,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC3C,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAE7F,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAC9B,GAAG,CAAA,2BAA2B,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,KAAK,sCAAsC,CACzG,CAAA;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,sBAAsB,CAC9B,wDAAwD,KAAK,MAAM;YACnE,0EAA0E,EAC1E,EAAE,KAAK,EAAE,CACV,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,sBAAsB,CAC9B,uCAAuC,KAAK,gCAAgC;YAC5E,6DAA6D,OAAO,CAAC,MAAM,GAAG,EAC9E,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CACjC,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;IAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAW,CAAA;IAC5C,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAW,CAAA;IAEtD,MAAM,EAAE,CAAC,OAAO,CACd,GAAG,CAAA,UAAU,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,wCAAwC,SAAS,QAAQ,CAC5F,CAAA;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAElC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC,CAAA;IAC1F,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEjF,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAC9C,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACnD,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG;QACjB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACjD,GAAG,CAAA,OAAO;QACV,GAAG,CAAA,MAAM;QACT,GAAG,CAAA,GAAG,cAAc,GAAG,CAAC,EAAE;QAC1B,GAAG,CAAA,GAAG,MAAM,IAAI,IAAI,EAAE;KACvB,CAAA;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;QACpD,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACxB,OAAO,GAAG,CAAA,GAAG,GAAG,KAAK,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAC7B,GAAG,CAAA,eAAe,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,UAAU,+BAA+B,CACzI,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;IACtB,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAW,EAAE,CAAA;AACvE,CAAC"}
1
+ {"version":3,"file":"revise.js","sourceRoot":"","sources":["../../../src/data/temporal/revise.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,9 @@ export { createManifold } from './core/pipework.js';
2
2
  export type { Manifold, PoolState, IsolationState, ConnectionTracker, SeedOptions } from './core/pipework.js';
3
3
  export { pipe, filter, excluded } from './data/db/namespace.js';
4
4
  export type { DB, SQL, Table, Column, TransactionConfig } from './data/db/namespace.js';
5
+ export type { WindowSpec } from './data/db/expressions.js';
6
+ export type { ValueColumnDef } from './data/db/values.js';
7
+ export type { SerializableOptions } from './data/db/serializable.js';
5
8
  export type { DefinedTable, DomainDefinition, DefinitionMethods, FieldDescriptor, FieldModifiers, FieldMeta, DefineOptions, FactoryBuilder, FactoryOptions, TraitDefinition, FieldColumn, ProjectedColumns, EffectiveDatedFields, AuditedFields, SoftDeletedFields, Branded, Brand, InferSelect, InferFieldOutput } from './data/domain/index.js';
6
9
  export { schema } from './data/schema/namespace.js';
7
10
  export type { JsonSchema } from './data/schema/namespace.js';
@@ -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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAQ/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAIxD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAOlD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAQ/C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAI/C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGlD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AAKhD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAIlD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAKxD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAIxD,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAI1D,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAI1D,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGhE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAKtF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAMrD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EACtE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAW/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAIxD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAOlD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAQ/C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAI/C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGlD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AAKhD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAIlD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAKxD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAIxD,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAI1D,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAI1D,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGhE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAKtF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAMrD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EACtE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipework",
3
- "version": "0.7.21",
3
+ "version": "0.7.22",
4
4
  "description": "TypeScript framework for multi-tenant SaaS applications. PostgreSQL-only.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@9.15.4",