pipework 0.285.0 → 0.286.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 (58) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/REFERENCE.md +6 -0
  3. package/dist/core/config/load.d.ts +1 -1
  4. package/dist/core/config/load.d.ts.map +1 -1
  5. package/dist/core/config/load.js +6 -1
  6. package/dist/core/config/load.js.map +1 -1
  7. package/dist/core/config/namespace.d.ts +1 -0
  8. package/dist/core/config/namespace.d.ts.map +1 -1
  9. package/dist/core/config/schema.d.ts +3 -1
  10. package/dist/core/config/schema.d.ts.map +1 -1
  11. package/dist/core/config/schema.js +3 -0
  12. package/dist/core/config/schema.js.map +1 -1
  13. package/dist/core/config/statement-observer.d.ts +12 -0
  14. package/dist/core/config/statement-observer.d.ts.map +1 -1
  15. package/dist/core/config/statement-observer.js +26 -1
  16. package/dist/core/config/statement-observer.js.map +1 -1
  17. package/dist/data/db/expressions.d.ts +10 -0
  18. package/dist/data/db/expressions.d.ts.map +1 -1
  19. package/dist/data/db/expressions.js +14 -0
  20. package/dist/data/db/expressions.js.map +1 -1
  21. package/dist/data/db/filter.d.ts +4 -2
  22. package/dist/data/db/filter.d.ts.map +1 -1
  23. package/dist/data/db/filter.js +4 -2
  24. package/dist/data/db/filter.js.map +1 -1
  25. package/dist/data/db/namespace.d.ts +2 -0
  26. package/dist/data/db/namespace.d.ts.map +1 -1
  27. package/dist/data/jsonb/namespace.d.ts +3 -1
  28. package/dist/data/jsonb/namespace.d.ts.map +1 -1
  29. package/dist/data/jsonb/namespace.js +3 -1
  30. package/dist/data/jsonb/namespace.js.map +1 -1
  31. package/dist/data/jsonb/query.d.ts +8 -0
  32. package/dist/data/jsonb/query.d.ts.map +1 -1
  33. package/dist/data/jsonb/query.js +19 -3
  34. package/dist/data/jsonb/query.js.map +1 -1
  35. package/dist/index.d.ts +1 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/infra/alerts/index.d.ts +1 -0
  38. package/dist/infra/alerts/index.d.ts.map +1 -1
  39. package/dist/infra/alerts/namespace.d.ts +3 -0
  40. package/dist/infra/alerts/namespace.d.ts.map +1 -1
  41. package/dist/infra/alerts/namespace.js +3 -0
  42. package/dist/infra/alerts/namespace.js.map +1 -1
  43. package/dist/infra/alerts/statement-sources.d.ts +27 -0
  44. package/dist/infra/alerts/statement-sources.d.ts.map +1 -0
  45. package/dist/infra/alerts/statement-sources.js +84 -0
  46. package/dist/infra/alerts/statement-sources.js.map +1 -0
  47. package/package.json +1 -1
  48. package/src/core/config/load.ts +7 -2
  49. package/src/core/config/schema.ts +4 -1
  50. package/src/core/config/statement-observer.ts +32 -0
  51. package/src/data/db/expressions.ts +15 -0
  52. package/src/data/db/filter.ts +4 -2
  53. package/src/data/jsonb/namespace.ts +3 -1
  54. package/src/data/jsonb/query.ts +22 -3
  55. package/src/index.ts +1 -1
  56. package/src/infra/alerts/index.ts +1 -0
  57. package/src/infra/alerts/namespace.ts +3 -0
  58. package/src/infra/alerts/statement-sources.ts +94 -0
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/data/db/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAM,MAAM,EACjF,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAe,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAC9F,UAAU,EAAE,OAAO,EAAE,EAAE,EACxB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAE9M,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACviB,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACtI,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,QAAQ,IAAI,gBAAgB,EAAE,QAAQ,IAAI,aAAa,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC7J,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4ET,CAAA"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/data/db/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAM,MAAM,EACjF,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAe,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAC9F,UAAU,EAAE,OAAO,EAAE,EAAE,EACxB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAE9M,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAChjB,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACtI,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,QAAQ,IAAI,gBAAgB,EAAE,QAAQ,IAAI,aAAa,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpL,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ET,CAAA"}
@@ -1,9 +1,9 @@
1
1
  import { and, arrayContained, arrayContains, arrayOverlaps, asc, between, desc, eq, exists, gt, gte, ilike, inArray, is, isNotNull, isNull, like, lt, lte, ne, not, notBetween, notExists, notIlike, notInArray, notLike, or, } from '../query/index.js';
2
2
  import { countAgg, countDistinctAgg, sumAgg, sumDistinctAgg, avgAgg, avgDistinctAgg, maxAgg, minAgg, boolAnd, boolOr, arrayAgg, stringAgg, jsonbAgg, jsonbObjectAgg, jsonbBuildObject } from './aggregates.js';
3
3
  import { except, exceptAll, intersect, intersectAll, union, unionAll } from '../query/pg-core/index.js';
4
- import { increment, decrement, add, subtract, coalesce, now, scalar, cast, collate, interval, clockTimestamp, strpos, textContains, startsWith, left, right, length, concat, arrayReplace, arrayHas, splitPart, lower, upper, trim, replace, substring, reverse, lpad, rpad, regexpReplace, regexpMatch, stringToArray, cardinality, arrayAt, arrayPosition, arraySlice, arrayToString, arrayAppend, arrayRemove, dateTrunc, rowNumber, rank, denseRank, over, identifier, withRecursive, caseWhen, walCurrentLsn, walReplayLsn, replicaFresh } from './expressions.js';
4
+ import { increment, decrement, add, subtract, coalesce, now, scalar, cast, collate, interval, clockTimestamp, strpos, textContains, startsWith, left, right, length, concat, arrayReplace, arrayHas, splitPart, lower, upper, trim, replace, substring, reverse, lpad, rpad, regexpReplace, regexpMatch, stringToArray, cardinality, arrayAt, arrayPosition, arraySlice, arrayToString, arrayAppend, arrayOf, arrayRemove, dateTrunc, rowNumber, rank, denseRank, over, identifier, withRecursive, caseWhen, walCurrentLsn, walReplayLsn, replicaFresh } from './expressions.js';
5
5
  import { ago, castUuid, castJsonb, castTimestamp, castBoolean, castNumeric, castInteger, castText, nextSequence } from './composed.js';
6
- import { json as jsonbExtract, pathText as jsonbExtractText, contains as jsonbContains, merge as jsonbMerge, remove as jsonbRemove } from '../jsonb/query.js';
6
+ import { json as jsonbExtract, pathText as jsonbExtractText, contains as jsonbContains, merge as jsonbMerge, concat as jsonbConcat, remove as jsonbRemove } from '../jsonb/query.js';
7
7
  import { arrayAny, arrayAll, jsonbElements } from './array-elements.js';
8
8
  import { inList, notInList } from './in-list.js';
9
9
  export const filter = {
@@ -51,6 +51,7 @@ export const filter = {
51
51
  arraySlice,
52
52
  arrayToString,
53
53
  arrayAppend,
54
+ arrayOf,
54
55
  arrayRemove,
55
56
  dateTrunc,
56
57
  rowNumber,
@@ -76,6 +77,7 @@ export const filter = {
76
77
  jsonbExtractText,
77
78
  jsonbContains,
78
79
  jsonbMerge,
80
+ jsonbConcat,
79
81
  jsonbRemove,
80
82
  arrayAny,
81
83
  arrayAll,
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/data/db/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/data/db/filter.ts"],"names":[],"mappings":"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"}
@@ -112,6 +112,7 @@ export declare const pipe: typeof getDb & {
112
112
  readonly arraySlice: typeof import("./expressions.js").arraySlice;
113
113
  readonly arrayToString: typeof import("./expressions.js").arrayToString;
114
114
  readonly arrayAppend: typeof import("./expressions.js").arrayAppend;
115
+ readonly arrayOf: typeof import("./expressions.js").arrayOf;
115
116
  readonly arrayRemove: typeof import("./expressions.js").arrayRemove;
116
117
  readonly dateTrunc: typeof import("./expressions.js").dateTrunc;
117
118
  readonly rowNumber: typeof import("./expressions.js").rowNumber;
@@ -137,6 +138,7 @@ export declare const pipe: typeof getDb & {
137
138
  readonly jsonbExtractText: typeof import("../jsonb/query.js").pathText;
138
139
  readonly jsonbContains: typeof import("../jsonb/query.js").contains;
139
140
  readonly jsonbMerge: typeof import("../jsonb/query.js").merge;
141
+ readonly jsonbConcat: typeof import("../jsonb/query.js").concat;
140
142
  readonly jsonbRemove: typeof import("../jsonb/query.js").remove;
141
143
  readonly arrayAny: typeof import("./array-elements.js").arrayAny;
142
144
  readonly arrayAll: typeof import("./array-elements.js").arrayAll;
@@ -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,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGnM,OAAO,EAAS,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGzE,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;IACf,iQAAiQ;;IAGjQ,6QAA6Q;;IAG7Q,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAG7E,wSAAwS;;IAGxS,+RAA+R;;;;;;;;;;;;;IAkB/R,oDAAoD;;IAEpD,mDAAmD;;IAGnD,6EAA6E;;IAG7E,gFAAgF;;IAGhF,qHAAqH;;IAGrH,kHAAkH;;IAGlH,oMAAoM;;IAGpM,2GAA2G;;IAG3G,0GAA0G;;IAG1G,uVAAuV;;IAGvV,uNAAuN;;IAGvN,8EAA8E;;;;;;;;;;;;;;;;;;;;;;;IAE9E,qMAAqM;;IAErM,6DAA6D;;IAE7D,+LAA+L;;IAG/L,2GAA2G;;IAE3G,kNAAkN;;IAElN,gHAAgH;;IAEhH,kQAAkQ;;CAElQ,CAAA"}
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/data/db/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGnM,OAAO,EAAS,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGzE,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;IACf,iQAAiQ;;IAGjQ,6QAA6Q;;IAG7Q,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAG7E,wSAAwS;;IAGxS,+RAA+R;;;;;;;;;;;;;IAkB/R,oDAAoD;;IAEpD,mDAAmD;;IAGnD,6EAA6E;;IAG7E,gFAAgF;;IAGhF,qHAAqH;;IAGrH,kHAAkH;;IAGlH,oMAAoM;;IAGpM,2GAA2G;;IAG3G,0GAA0G;;IAG1G,uVAAuV;;IAGvV,uNAAuN;;IAGvN,8EAA8E;;;;;;;;;;;;;;;;;;;;;;;IAE9E,qMAAqM;;IAErM,6DAA6D;;IAE7D,+LAA+L;;IAG/L,2GAA2G;;IAE3G,kNAAkN;;IAElN,gHAAgH;;IAEhH,kQAAkQ;;CAElQ,CAAA"}
@@ -1,4 +1,4 @@
1
- import { contains, merge, remove, containedBy, hasKey, text, json, path, pathText } from './query.js';
1
+ import { contains, merge, concat, remove, containedBy, hasKey, text, json, path, pathText } from './query.js';
2
2
  import { boolean, number, integer } from './composed.js';
3
3
  /** JSONB query operators — typed helpers for PostgreSQL JSONB containment, key checks, and field extraction. */
4
4
  export declare const jsonb: {
@@ -6,6 +6,8 @@ export declare const jsonb: {
6
6
  contains: typeof contains;
7
7
  /** Merges an object into a JSONB column in `.set()`: `coalesce(col, '{}') || value`. Top-level keys overwrite; others are kept. */
8
8
  merge: typeof merge;
9
+ /** Appends to a JSONB column in `.set()`: `col || $1::jsonb`, value bound as jsonb. An array appends its elements; a null column stays null. */
10
+ concat: typeof concat;
9
11
  /** Removes top-level keys from a JSONB column in `.set()`: `col - 'key'`. Composes as the column of `jsonb.merge`. */
10
12
  remove: typeof remove;
11
13
  /** The <@ contained-by operator — tests whether a JSONB column is contained by the given value. */
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/data/jsonb/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAExD,gHAAgH;AAChH,eAAO,MAAM,KAAK;IAChB,2FAA2F;;IAE3F,mIAAmI;;IAEnI,sHAAsH;;IAEtH,mGAAmG;;IAEnG,+FAA+F;;IAE/F,sFAAsF;;IAEtF,8FAA8F;;IAE9F,wEAAwE;;IAExE,uGAAuG;;IAEvG,8EAA8E;;IAE9E,6EAA6E;;IAE7E,+EAA+E;;CAEhF,CAAA"}
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/data/jsonb/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC7G,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAExD,gHAAgH;AAChH,eAAO,MAAM,KAAK;IAChB,2FAA2F;;IAE3F,mIAAmI;;IAEnI,gJAAgJ;;IAEhJ,sHAAsH;;IAEtH,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,4 @@
1
- import { contains, merge, remove, containedBy, hasKey, text, json, path, pathText } from './query.js';
1
+ import { contains, merge, concat, remove, containedBy, hasKey, text, json, path, pathText } from './query.js';
2
2
  import { boolean, number, integer } from './composed.js';
3
3
  /** JSONB query operators — typed helpers for PostgreSQL JSONB containment, key checks, and field extraction. */
4
4
  export const jsonb = {
@@ -6,6 +6,8 @@ export const jsonb = {
6
6
  contains,
7
7
  /** Merges an object into a JSONB column in `.set()`: `coalesce(col, '{}') || value`. Top-level keys overwrite; others are kept. */
8
8
  merge,
9
+ /** Appends to a JSONB column in `.set()`: `col || $1::jsonb`, value bound as jsonb. An array appends its elements; a null column stays null. */
10
+ concat,
9
11
  /** Removes top-level keys from a JSONB column in `.set()`: `col - 'key'`. Composes as the column of `jsonb.merge`. */
10
12
  remove,
11
13
  /** The <@ contained-by operator — tests whether a JSONB column is contained by the given value. */
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/data/jsonb/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAExD,gHAAgH;AAChH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,2FAA2F;IAC3F,QAAQ;IACR,mIAAmI;IACnI,KAAK;IACL,sHAAsH;IACtH,MAAM;IACN,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"}
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/data/jsonb/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC7G,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAExD,gHAAgH;AAChH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,2FAA2F;IAC3F,QAAQ;IACR,mIAAmI;IACnI,KAAK;IACL,gJAAgJ;IAChJ,MAAM;IACN,sHAAsH;IACtH,MAAM;IACN,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"}
@@ -10,6 +10,14 @@ export declare function json(column: Column | SQL, key: string): SQL;
10
10
  export declare function path(column: Column | SQL, ...keys: string[]): SQL;
11
11
  /** Extracts a nested text value: `column->'a'->>'b'`. Intermediate keys use `->`, final key uses `->>`. */
12
12
  export declare function pathText(column: Column | SQL, ...keys: string[]): SQL<string>;
13
+ /**
14
+ * Appends to a JSONB column for `.set()`, typically in `onConflictDoUpdate`: `col || $1::jsonb`, with `value`
15
+ * serialized and bound as jsonb. Appending an array to an array column adds its elements (`[1] || [2]` is `[1, 2]`);
16
+ * an object merges its top-level keys. The append happens in the statement, so concurrent upserts each
17
+ * add their element and none is lost. A null column stays null (SQL `||`): seed the column on insert, or
18
+ * wrap it in `coalesce(col, '[]'::jsonb)`.
19
+ */
20
+ export declare function concat(column: Column | SQL, value: unknown): SQL;
13
21
  /**
14
22
  * Merges `value` into a JSONB column for `.set()`: `coalesce(col, '{}'::jsonb) || value::jsonb`. Top-level keys
15
23
  * in `value` overwrite; others are kept; a null column becomes `value`. The merge happens in the statement,
@@ -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;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;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAU/E;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAmBnE"}
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;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,CAUhE;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAU/E;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAmBnE"}
@@ -37,6 +37,22 @@ export function pathText(column, ...keys) {
37
37
  const intermediate = path(column, ...intermediateKeys);
38
38
  return text(intermediate, finalKey);
39
39
  }
40
+ /**
41
+ * Appends to a JSONB column for `.set()`, typically in `onConflictDoUpdate`: `col || $1::jsonb`, with `value`
42
+ * serialized and bound as jsonb. Appending an array to an array column adds its elements (`[1] || [2]` is `[1, 2]`);
43
+ * an object merges its top-level keys. The append happens in the statement, so concurrent upserts each
44
+ * add their element and none is lost. A null column stays null (SQL `||`): seed the column on insert, or
45
+ * wrap it in `coalesce(col, '[]'::jsonb)`.
46
+ */
47
+ export function concat(column, value) {
48
+ const json = JSON.stringify(value);
49
+ if (typeof json !== 'string') {
50
+ throw new Error('[pipework] jsonb.concat() needs a JSON-serializable value, got ' + typeof value + '.\n\n' +
51
+ ' undefined, functions and symbols have no JSON form.\n' +
52
+ " Fix: pass a value JSON can hold: jsonb.concat(col, [{ id: 1 }]).\n");
53
+ }
54
+ return sql `(${column} || ${json}::jsonb)`;
55
+ }
40
56
  /**
41
57
  * Merges `value` into a JSONB column for `.set()`: `coalesce(col, '{}'::jsonb) || value::jsonb`. Top-level keys
42
58
  * in `value` overwrite; others are kept; a null column becomes `value`. The merge happens in the statement,
@@ -49,7 +65,7 @@ export function merge(column, value) {
49
65
  ' Only an object can be merged into an object.\n' +
50
66
  " Fix: pass an object: jsonb.merge(col, { key: 'value' }).\n");
51
67
  }
52
- return sql `coalesce(${column}, '{}'::jsonb) || ${JSON.stringify(value)}::jsonb`;
68
+ return sql `(coalesce(${column}, '{}'::jsonb) || ${JSON.stringify(value)}::jsonb)`;
53
69
  }
54
70
  /**
55
71
  * Removes top-level keys from a JSONB column for `.set()`: `col - key`, or `col - array[k1, k2]::text[]` for
@@ -69,7 +85,7 @@ export function remove(column, ...keys) {
69
85
  }
70
86
  }
71
87
  if (keys.length === 1)
72
- return sql `${column} - ${keys[0]}::text`;
73
- return sql `${column} - array[${sql.join(keys.map(k => sql `${k}`), sql `, `)}]::text[]`;
88
+ return sql `(${column} - ${keys[0]}::text)`;
89
+ return sql `(${column} - array[${sql.join(keys.map(k => sql `${k}`), sql `, `)}]::text[])`;
74
90
  }
75
91
  //# sourceMappingURL=query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/data/jsonb/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/data/jsonb/query.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -16,7 +16,7 @@ export { StatementTimeoutError, LockTimeoutError } from './data/db/timeouts.js';
16
16
  export type { TimeoutOptions } from './data/db/timeouts.js';
17
17
  export { tap } from './data/db/pool.js';
18
18
  export type { ManagedConnection, ConnectOptions } from './data/db/pool.js';
19
- export type { StatementObserver, StatementEvent, StatementSettledObserver, StatementSettledEvent, StatementSettledError } from './core/config/statement-observer.js';
19
+ export type { StatementObserver, StatementEvent, StatementSettledObserver, StatementSettledEvent, StatementSettledError, StatementSettledFeed } from './core/config/statement-observer.js';
20
20
  export type { DefinedTable, ExternalTable, DomainDefinition, DefinitionMethods, FieldDescriptor, FieldModifiers, FieldMeta, DefineOptions, FactoryBuilder, FactoryOptions, TraitDefinition, FieldColumn, ProjectedColumns, EffectiveDatedFields, AppendOnlyVersionsFields, AuditedFields, SoftDeletedFields, FieldKind, FieldFlags, FieldRecord, ForeignKeyAction, CompositeForeignKey, PartitionSpec, InsertProjection, SelectProjection, UpdateProjection, Branded, Brand, InferSelect, InferFieldOutput } from './data/domain/index.js';
21
21
  export { schema } from './data/schema/namespace.js';
22
22
  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":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC/G,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAExI,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAC/D,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACvF,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACnF,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACtG,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC3F,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AACxF,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACtG,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC/E,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAK3D,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC1E,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAE1L,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EACvI,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAC9E,oBAAoB,EAAE,wBAAwB,EAAE,aAAa,EAAE,iBAAiB,EAChF,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,aAAa,EACxF,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EACpD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC5D,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvM,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAEtL,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACnS,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC3G,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAExF,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACxF,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EACrE,sBAAsB,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAC7F,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAChG,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE5E,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAExE,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC5F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACzF,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAClF,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAChH,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACtG,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC/F,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAChE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAErH,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAClD,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAEzF,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAEjG,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,EACtE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEpG,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAClF,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAClF,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,kBAAkB,EACtF,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EACtM,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAC/E,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAC/G,cAAc,EAAE,cAAc,IAAI,kBAAkB,EAAE,aAAa,IAAI,iBAAiB,EAAE,WAAW,IAAI,eAAe,EACxH,UAAU,IAAI,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,IAAI,aAAa,EAAE,OAAO,IAAI,WAAW,EAAE,SAAS,IAAI,aAAa,EAAE,QAAQ,IAAI,YAAY,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,aAAa,IAAI,iBAAiB,EAC1O,gBAAgB,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,gBAAgB,IAAI,oBAAoB,EACtG,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAC/E,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EACpF,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,sBAAsB,EACvE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAEvI,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AACjD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EACnF,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAC/D,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EACtE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAC9C,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EACrE,oBAAoB,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAC5F,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EACtE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEzG,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AACxD,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EACzE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE/E,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAClF,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAAE,qBAAqB,EAC1E,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAEjE,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACzD,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EACnE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAEjI,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AACtF,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,iBAAiB,EAC1E,qBAAqB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EACxE,aAAa,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAC9E,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EACnG,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAC1E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAC9H,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE7G,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAC5G,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AACtI,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAC7D,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAC7G,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EACpG,aAAa,EAAE,mBAAmB,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACxH,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EACzG,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AACpD,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,IAAI,iBAAiB,EAAE,WAAW,IAAI,gBAAgB,EACxI,UAAU,IAAI,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,EAC/J,cAAc,EAAE,WAAW,EAAE,SAAS,IAAI,cAAc,EAAE,eAAe,EAAE,IAAI,IAAI,SAAS,EAAE,WAAW,EAAE,cAAc,IAAI,mBAAmB,EAChJ,cAAc,IAAI,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAC7E,WAAW,IAAI,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,IAAI,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACxI,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAClE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,IAAI,aAAa,EAAE,aAAa,IAAI,cAAc,EAC3H,UAAU,IAAI,WAAW,EAAE,YAAY,IAAI,mBAAmB,EAAE,WAAW,IAAI,kBAAkB,EAAE,WAAW,IAAI,kBAAkB,EACpI,QAAQ,IAAI,eAAe,EAAE,UAAU,IAAI,iBAAiB,EAAE,aAAa,IAAI,oBAAoB,EAAE,YAAY,IAAI,mBAAmB,EACxI,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC9I,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,IAAI,iBAAiB,EAAE,WAAW,IAAI,kBAAkB,EAAE,gBAAgB,IAAI,uBAAuB,EAC/J,YAAY,IAAI,mBAAmB,EAAE,WAAW,IAAI,kBAAkB,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAC9G,WAAW,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC1F,YAAY,EACV,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC9J,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,YAAY,EACV,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EACxH,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EACrI,eAAe,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAChF,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAChG,UAAU,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACjE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,IAAI,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAE/J,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAC5F,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EACjD,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAC9E,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,EAC9G,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAEhK,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,SAAS,EAAE,cAAc,EAC9F,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAC7E,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC9E,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChF,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAElH,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAC1F,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA"}
@@ -7,4 +7,5 @@ export type { AlertsHttpOptions } from './http.js';
7
7
  export { clientFaults } from './client-faults.js';
8
8
  export type { ClientFaultsOptions, ClientFaultReport } from './client-faults.js';
9
9
  export type { RequestFaultsOptions } from './request-faults.js';
10
+ export type { StatementTimingOptions, StatementTimingSource } from './statement-sources.js';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infra/alerts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,YAAY,EACV,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAC5G,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,GAC3F,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACpJ,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAChF,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infra/alerts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,YAAY,EACV,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAC5G,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,GAC3F,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACpJ,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAChF,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA"}
@@ -8,6 +8,7 @@ import { recordFault, recordFaultFor, useFaultTarget, faultsSource } from './fau
8
8
  import { recordBeatFor } from './beat.js';
9
9
  import { deliveryFailedSource, webhookFailedSource, creditsSource } from './subsystem-sources.js';
10
10
  import { emailSource, storageSource, accessLinksSource, lockoutsSource } from './infra-sources.js';
11
+ import { statementTimingSource } from './statement-sources.js';
11
12
  import { schedulesSource, stepsSource, pipelinesSource, tracesSource } from './async-sources.js';
12
13
  /** Alerts namespace — raise and resolve keyed conditions, grouped, delivered to sinks through an outbox, traced. */
13
14
  export declare const alerts: {
@@ -74,6 +75,8 @@ export declare const alerts: {
74
75
  readonly traces: typeof tracesSource;
75
76
  /** Raises `fault:<kind>` per kind of swallowed failure recorded by `recordFault` since the last tick (the pipework subsystems record audit-write, quota-record, credits-callback, trace-steps-lost, queue-* and scheduler faults). `kinds` limits it. */
76
77
  readonly faults: typeof faultsSource;
78
+ /** Raises `statement-slow:<label>` while the p90 of a `pipe.labelled` label's last `window` settled statements is over that label's budget; give the returned source to `observability.statementTiming` too. */
79
+ readonly statementTiming: typeof statementTimingSource;
77
80
  /** Raises `loop-stalled:<name>` while a background loop (scheduler, reaper, claim loop, support drain) has not run or succeeded within its allowance; the tick itself is covered by `pipework alerts stale`. */
78
81
  readonly loopStalled: typeof loopStalledSource;
79
82
  };
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/infra/alerts/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAChM,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACjG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhG,oHAAoH;AACpH,eAAO,MAAM,MAAM;IACjB,gCAAgC;;IAEhC,0HAA0H;;IAE1H,wLAAwL;;IAExL,oHAAoH;;IAEpH,2DAA2D;;IAE3D,+DAA+D;;IAE/D,kJAAkJ;;IAElJ,yRAAyR;;IAEzR,oJAAoJ;;IAEpJ,6QAA6Q;;IAE7Q,6NAA6N;;;QAG3N,4EAA4E;;QAE5E,iFAAiF;;QAEjF,mGAAmG;;QAEnG,yGAAyG;;QAEzG,yDAAyD;;QAEzD,6IAA6I;;QAE7I,2HAA2H;;QAE3H,iIAAiI;;QAEjI,0IAA0I;;QAE1I,yJAAyJ;;QAEzJ,gIAAgI;;QAEhI,4JAA4J;;QAE5J,+EAA+E;;QAE/E,gGAAgG;;QAEhG,oHAAoH;;QAEpH,kIAAkI;;QAElI,iKAAiK;;QAEjK,qLAAqL;;QAErL,qKAAqK;;QAErK,yPAAyP;;QAEzP,gNAAgN;;;CAG1M,CAAA"}
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/infra/alerts/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAChM,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACjG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhG,oHAAoH;AACpH,eAAO,MAAM,MAAM;IACjB,gCAAgC;;IAEhC,0HAA0H;;IAE1H,wLAAwL;;IAExL,oHAAoH;;IAEpH,2DAA2D;;IAE3D,+DAA+D;;IAE/D,kJAAkJ;;IAElJ,yRAAyR;;IAEzR,oJAAoJ;;IAEpJ,6QAA6Q;;IAE7Q,6NAA6N;;;QAG3N,4EAA4E;;QAE5E,iFAAiF;;QAEjF,mGAAmG;;QAEnG,yGAAyG;;QAEzG,yDAAyD;;QAEzD,6IAA6I;;QAE7I,2HAA2H;;QAE3H,iIAAiI;;QAEjI,0IAA0I;;QAE1I,yJAAyJ;;QAEzJ,gIAAgI;;QAEhI,4JAA4J;;QAE5J,+EAA+E;;QAE/E,gGAAgG;;QAEhG,oHAAoH;;QAEpH,kIAAkI;;QAElI,iKAAiK;;QAEjK,qLAAqL;;QAErL,qKAAqK;;QAErK,yPAAyP;;QAEzP,gNAAgN;;QAEhN,gNAAgN;;;CAG1M,CAAA"}
@@ -8,6 +8,7 @@ import { recordFault, recordFaultFor, useFaultTarget, faultsSource } from './fau
8
8
  import { recordBeatFor } from './beat.js';
9
9
  import { deliveryFailedSource, webhookFailedSource, creditsSource } from './subsystem-sources.js';
10
10
  import { emailSource, storageSource, accessLinksSource, lockoutsSource } from './infra-sources.js';
11
+ import { statementTimingSource } from './statement-sources.js';
11
12
  import { schedulesSource, stepsSource, pipelinesSource, tracesSource } from './async-sources.js';
12
13
  /** Alerts namespace — raise and resolve keyed conditions, grouped, delivered to sinks through an outbox, traced. */
13
14
  export const alerts = {
@@ -74,6 +75,8 @@ export const alerts = {
74
75
  traces: tracesSource,
75
76
  /** Raises `fault:<kind>` per kind of swallowed failure recorded by `recordFault` since the last tick (the pipework subsystems record audit-write, quota-record, credits-callback, trace-steps-lost, queue-* and scheduler faults). `kinds` limits it. */
76
77
  faults: faultsSource,
78
+ /** Raises `statement-slow:<label>` while the p90 of a `pipe.labelled` label's last `window` settled statements is over that label's budget; give the returned source to `observability.statementTiming` too. */
79
+ statementTiming: statementTimingSource,
77
80
  /** Raises `loop-stalled:<name>` while a background loop (scheduler, reaper, claim loop, support drain) has not run or succeeded within its allowance; the tick itself is covered by `pipework alerts stale`. */
78
81
  loopStalled: loopStalledSource,
79
82
  },
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/infra/alerts/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAChM,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACjG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhG,oHAAoH;AACpH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,gCAAgC;IAChC,MAAM,EAAE,YAAY;IACpB,0HAA0H;IAC1H,IAAI,EAAE,UAAU;IAChB,wLAAwL;IACxL,YAAY;IACZ,oHAAoH;IACpH,aAAa,EAAE,iBAAiB;IAChC,2DAA2D;IAC3D,OAAO,EAAE,WAAW;IACpB,+DAA+D;IAC/D,MAAM,EAAE,UAAU;IAClB,kJAAkJ;IAClJ,SAAS;IACT,yRAAyR;IACzR,WAAW;IACX,oJAAoJ;IACpJ,cAAc;IACd,6QAA6Q;IAC7Q,cAAc;IACd,6NAA6N;IAC7N,UAAU,EAAE,aAAa;IACzB,MAAM,EAAE;QACN,4EAA4E;QAC5E,UAAU,EAAE,gBAAgB;QAC5B,iFAAiF;QACjF,WAAW,EAAE,iBAAiB;QAC9B,mGAAmG;QACnG,OAAO,EAAE,aAAa;QACtB,yGAAyG;QACzG,cAAc,EAAE,oBAAoB;QACpC,yDAAyD;QACzD,MAAM,EAAE,YAAY;QACpB,6IAA6I;QAC7I,SAAS,EAAE,eAAe;QAC1B,2HAA2H;QAC3H,KAAK,EAAE,WAAW;QAClB,iIAAiI;QACjI,OAAO,EAAE,aAAa;QACtB,0IAA0I;QAC1I,cAAc,EAAE,oBAAoB;QACpC,yJAAyJ;QACzJ,aAAa,EAAE,mBAAmB;QAClC,gIAAgI;QAChI,OAAO,EAAE,aAAa;QACtB,4JAA4J;QAC5J,KAAK,EAAE,WAAW;QAClB,+EAA+E;QAC/E,OAAO,EAAE,aAAa;QACtB,gGAAgG;QAChG,WAAW,EAAE,iBAAiB;QAC9B,oHAAoH;QACpH,QAAQ,EAAE,cAAc;QACxB,kIAAkI;QAClI,SAAS,EAAE,eAAe;QAC1B,iKAAiK;QACjK,KAAK,EAAE,WAAW;QAClB,qLAAqL;QACrL,SAAS,EAAE,eAAe;QAC1B,qKAAqK;QACrK,MAAM,EAAE,YAAY;QACpB,yPAAyP;QACzP,MAAM,EAAE,YAAY;QACpB,gNAAgN;QAChN,WAAW,EAAE,iBAAiB;KAC/B;CACO,CAAA"}
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/infra/alerts/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAChM,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACjG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhG,oHAAoH;AACpH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,gCAAgC;IAChC,MAAM,EAAE,YAAY;IACpB,0HAA0H;IAC1H,IAAI,EAAE,UAAU;IAChB,wLAAwL;IACxL,YAAY;IACZ,oHAAoH;IACpH,aAAa,EAAE,iBAAiB;IAChC,2DAA2D;IAC3D,OAAO,EAAE,WAAW;IACpB,+DAA+D;IAC/D,MAAM,EAAE,UAAU;IAClB,kJAAkJ;IAClJ,SAAS;IACT,yRAAyR;IACzR,WAAW;IACX,oJAAoJ;IACpJ,cAAc;IACd,6QAA6Q;IAC7Q,cAAc;IACd,6NAA6N;IAC7N,UAAU,EAAE,aAAa;IACzB,MAAM,EAAE;QACN,4EAA4E;QAC5E,UAAU,EAAE,gBAAgB;QAC5B,iFAAiF;QACjF,WAAW,EAAE,iBAAiB;QAC9B,mGAAmG;QACnG,OAAO,EAAE,aAAa;QACtB,yGAAyG;QACzG,cAAc,EAAE,oBAAoB;QACpC,yDAAyD;QACzD,MAAM,EAAE,YAAY;QACpB,6IAA6I;QAC7I,SAAS,EAAE,eAAe;QAC1B,2HAA2H;QAC3H,KAAK,EAAE,WAAW;QAClB,iIAAiI;QACjI,OAAO,EAAE,aAAa;QACtB,0IAA0I;QAC1I,cAAc,EAAE,oBAAoB;QACpC,yJAAyJ;QACzJ,aAAa,EAAE,mBAAmB;QAClC,gIAAgI;QAChI,OAAO,EAAE,aAAa;QACtB,4JAA4J;QAC5J,KAAK,EAAE,WAAW;QAClB,+EAA+E;QAC/E,OAAO,EAAE,aAAa;QACtB,gGAAgG;QAChG,WAAW,EAAE,iBAAiB;QAC9B,oHAAoH;QACpH,QAAQ,EAAE,cAAc;QACxB,kIAAkI;QAClI,SAAS,EAAE,eAAe;QAC1B,iKAAiK;QACjK,KAAK,EAAE,WAAW;QAClB,qLAAqL;QACrL,SAAS,EAAE,eAAe;QAC1B,qKAAqK;QACrK,MAAM,EAAE,YAAY;QACpB,yPAAyP;QACzP,MAAM,EAAE,YAAY;QACpB,gNAAgN;QAChN,eAAe,EAAE,qBAAqB;QACtC,gNAAgN;QAChN,WAAW,EAAE,iBAAiB;KAC/B;CACO,CAAA"}
@@ -0,0 +1,27 @@
1
+ import type { StatementSettledFeed } from '../../core/config/statement-observer.js';
2
+ import type { AlertSeverity } from './handle.js';
3
+ import type { AlertSource } from './sources.js';
4
+ export interface StatementTimingOptions {
5
+ /** Budget in ms per label: `{ 'gate-read': 1000 }`. A label not named here is never recorded. At least one. */
6
+ readonly budgets: Readonly<Record<string, number>>;
7
+ /** N: statements per label the p90 is taken over. The source stays quiet for a label until N have settled. */
8
+ readonly window: number;
9
+ /** Default `warning`, as the backlog source. */
10
+ readonly severity?: AlertSeverity;
11
+ readonly owner?: string;
12
+ readonly runbook?: string;
13
+ }
14
+ /** What `alerts.source.statementTiming` returns: an `AlertSource` that is also passed as `observability.statementTiming`. */
15
+ export type StatementTimingSource = AlertSource & StatementSettledFeed;
16
+ /**
17
+ * Raises `statement-slow:<label>` while the p90 duration of a label's last `window` settled statements is over
18
+ * that label's budget; resolves when it is back under. Statements are fed in-process by
19
+ * `observability.statementTiming` (pass the returned source there as well as to `alerts.create({ sources })`;
20
+ * the app's own `onStatementSettled` still fires). Only the labels in `budgets` are recorded, each in a ring of
21
+ * `window` numbers, so memory is bounded by `window` times the labels named; unlabelled statements and other
22
+ * labels are ignored. Failed statements count, with the time they took. The window is this process's: a tick sees
23
+ * only statements that settled in its own process, and a label that stops being called keeps its last window.
24
+ * Context carries `label`, `p90Ms`, `window` and `budgetMs`.
25
+ */
26
+ export declare function statementTimingSource(options: StatementTimingOptions): StatementTimingSource;
27
+ //# sourceMappingURL=statement-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statement-sources.d.ts","sourceRoot":"","sources":["../../../src/infra/alerts/statement-sources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAyB,oBAAoB,EAAE,MAAM,yCAAyC,CAAA;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/D,MAAM,WAAW,sBAAsB;IACrC,+GAA+G;IAC/G,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAClD,8GAA8G;IAC9G,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,6HAA6H;AAC7H,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,oBAAoB,CAAA;AAUtE;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAuD5F"}
@@ -0,0 +1,84 @@
1
+ // An alert source over settled statements: per `pipe.labelled` label, the p90 of its last N durations against a budget.
2
+ /** Nearest rank: the smallest sample that at least 90% of the samples are at or under. */
3
+ function p90(samples) {
4
+ const sorted = [...samples].sort((a, b) => a - b);
5
+ return sorted[Math.ceil(sorted.length * 0.9) - 1];
6
+ }
7
+ /**
8
+ * Raises `statement-slow:<label>` while the p90 duration of a label's last `window` settled statements is over
9
+ * that label's budget; resolves when it is back under. Statements are fed in-process by
10
+ * `observability.statementTiming` (pass the returned source there as well as to `alerts.create({ sources })`;
11
+ * the app's own `onStatementSettled` still fires). Only the labels in `budgets` are recorded, each in a ring of
12
+ * `window` numbers, so memory is bounded by `window` times the labels named; unlabelled statements and other
13
+ * labels are ignored. Failed statements count, with the time they took. The window is this process's: a tick sees
14
+ * only statements that settled in its own process, and a label that stops being called keeps its last window.
15
+ * Context carries `label`, `p90Ms`, `window` and `budgetMs`.
16
+ */
17
+ export function statementTimingSource(options) {
18
+ const who = 'alerts.source.statementTiming';
19
+ if (!Number.isInteger(options.window) || options.window < 1) {
20
+ throw new Error(`[pipework] ${who} window must be a positive integer number of statements, got ${String(options.window)}.`);
21
+ }
22
+ const entries = Object.entries(options.budgets);
23
+ if (entries.length === 0)
24
+ throw new Error(`[pipework] ${who} needs budgets: at least one label and its budget in ms.`);
25
+ const budgets = new Map();
26
+ for (const [label, budget] of entries) {
27
+ if (label === '')
28
+ throw new Error(`[pipework] ${who} budgets: a label must not be empty.`);
29
+ if (typeof budget !== 'number' || !Number.isFinite(budget) || budget <= 0) {
30
+ throw new Error(`[pipework] ${who} budget for "${label}" must be a positive number of milliseconds, got ${String(budget)}.`);
31
+ }
32
+ budgets.set(label, budget);
33
+ }
34
+ const size = options.window;
35
+ const severity = options.severity ?? 'warning';
36
+ const rings = new Map();
37
+ let attached = false;
38
+ const prefix = 'statement-slow:';
39
+ return {
40
+ name: 'statement-slow',
41
+ owns: key => key.startsWith(prefix),
42
+ observe(event) {
43
+ if (event.label === null || !budgets.has(event.label))
44
+ return;
45
+ let ring = rings.get(event.label);
46
+ if (ring === undefined) {
47
+ ring = { samples: [], next: 0 };
48
+ rings.set(event.label, ring);
49
+ }
50
+ if (ring.samples.length < size)
51
+ ring.samples.push(event.durationMs);
52
+ else {
53
+ ring.samples[ring.next] = event.durationMs;
54
+ ring.next = (ring.next + 1) % size;
55
+ }
56
+ },
57
+ attach() { attached = true; },
58
+ evaluate() {
59
+ if (!attached) {
60
+ return Promise.reject(new Error(`[pipework] ${who} was never given to the blueprint: set observability.statementTiming to this source, or it sees no statements.`));
61
+ }
62
+ const out = [];
63
+ for (const [label, budget] of budgets) {
64
+ const ring = rings.get(label);
65
+ if (ring === undefined || ring.samples.length < size)
66
+ continue;
67
+ const value = p90(ring.samples);
68
+ if (value <= budget)
69
+ continue;
70
+ out.push({
71
+ key: `${prefix}${label}`,
72
+ severity,
73
+ message: `p90 of the last ${String(size)} "${label}" statements is ${String(value)} ms, over its ${String(budget)} ms budget`,
74
+ subject: { entity: 'statement-label', entityId: label },
75
+ ...(options.owner !== undefined ? { owner: options.owner } : {}),
76
+ ...(options.runbook !== undefined ? { runbook: options.runbook } : {}),
77
+ context: { label, p90Ms: value, window: size, budgetMs: budget },
78
+ });
79
+ }
80
+ return Promise.resolve(out);
81
+ },
82
+ };
83
+ }
84
+ //# sourceMappingURL=statement-sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statement-sources.js","sourceRoot":"","sources":["../../../src/infra/alerts/statement-sources.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipework",
3
- "version": "0.285.0",
3
+ "version": "0.286.0",
4
4
  "description": "TypeScript framework for multi-tenant SaaS applications. PostgreSQL-only.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -4,7 +4,7 @@ import { resolveEnvironment, resolveEnvironmentStrict, resolveDbUrl, resolveTest
4
4
  import { ConfigError } from './errors.js'
5
5
  import { resolveEnvVars } from './env-resolve.js'
6
6
  import { consumeConfigBaseDir } from './base-dir.js'
7
- import type { StatementObserver, StatementSettledObserver } from './statement-observer.js'
7
+ import { composeSettledObservers, type StatementObserver, type StatementSettledObserver } from './statement-observer.js'
8
8
 
9
9
  export interface ResolvedObservability {
10
10
  readonly slowQueryMs: number
@@ -247,6 +247,8 @@ function buildResolved(config: Blueprint, environment: Environment, baseDir: str
247
247
 
248
248
  const env = Object.freeze(resolveEnvVars((config.env ?? {}) as import('./env-types.js').EnvDefs, environment))
249
249
 
250
+ config.observability?.statementTiming?.attach()
251
+
250
252
  return {
251
253
  raw: config,
252
254
  environment,
@@ -261,7 +263,10 @@ function buildResolved(config: Blueprint, environment: Environment, baseDir: str
261
263
  logAllQueries: config.observability?.logAllQueries ?? false,
262
264
  poolMetricsInterval: config.observability?.poolMetricsInterval ?? 0,
263
265
  onStatement: config.observability?.onStatement,
264
- onStatementSettled: config.observability?.onStatementSettled,
266
+ onStatementSettled: composeSettledObservers([
267
+ ...(config.observability?.onStatementSettled !== undefined ? [config.observability.onStatementSettled] : []),
268
+ ...(config.observability?.statementTiming !== undefined ? [config.observability.statementTiming.observe] : []),
269
+ ]),
265
270
  },
266
271
  trace: {
267
272
  hotRetentionDays: config.trace?.hotRetentionDays ?? 7,
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod/v4'
2
- import type { StatementObserver, StatementSettledObserver } from './statement-observer.js'
2
+ import type { StatementObserver, StatementSettledObserver, StatementSettledFeed } from './statement-observer.js'
3
3
 
4
4
  const SETTING_NAME = /^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?$/
5
5
 
@@ -188,6 +188,9 @@ const observabilitySchema = z.object({
188
188
  onStatementSettled: z.custom<StatementSettledObserver>(v => typeof v === 'function', { message: 'Expected a function' })
189
189
  .optional()
190
190
  .describe('Per-statement completion hook — fires once per statement when it settles, with label, statementId, statementPrefix, durationMs, rows, connectionId and (on failure) a sanitized error. Covers every statement through pipework\'s query path (pipe(), pipe.* writes, connection.drizzle, transactions, savepoints, the test harness), not the driver\'s own BEGIN/COMMIT, the raw client door or the migration runner\'s connection'),
191
+ statementTiming: z.custom<StatementSettledFeed>(v => typeof v === 'object' && v !== null && typeof (v as { observe?: unknown }).observe === 'function' && typeof (v as { attach?: unknown }).attach === 'function', { message: 'Expected the value returned by alerts.source.statementTiming' })
192
+ .optional()
193
+ .describe('Feeds alerts.source.statementTiming from every settled statement; fires alongside onStatementSettled, which keeps working'),
191
194
  })
192
195
 
193
196
  const envVarDefSchema = z.discriminatedUnion('type', [
@@ -131,3 +131,35 @@ export interface StatementSettledEvent {
131
131
  * A returned promise is not awaited.
132
132
  */
133
133
  export type StatementSettledObserver = (event: StatementSettledEvent) => void | Promise<void>
134
+
135
+ /**
136
+ * Something fed by every settled statement in addition to `observability.onStatementSettled`, passed as
137
+ * `observability.statementTiming` (`alerts.source.statementTiming` returns one). Both it and the app's own hook
138
+ * fire for each statement; neither replaces the other. `attach` is called once when the blueprint resolves, so the
139
+ * feed can tell that it was wired in.
140
+ */
141
+ export interface StatementSettledFeed {
142
+ readonly observe: StatementSettledObserver
143
+ attach(): void
144
+ }
145
+
146
+ /** The hooks that fire for each settled statement, in order, one throwing never keeping the next from running. */
147
+ export function composeSettledObservers(observers: readonly StatementSettledObserver[]): StatementSettledObserver | undefined {
148
+ if (observers.length === 0) return undefined
149
+ if (observers.length === 1) return observers[0]
150
+ return (event) => {
151
+ const pending: Promise<void>[] = []
152
+ const thrown: unknown[] = []
153
+ for (const observer of observers) {
154
+ try {
155
+ const out = observer(event)
156
+ if (out !== undefined) pending.push(out)
157
+ } catch (err) {
158
+ thrown.push(err)
159
+ }
160
+ }
161
+ if (thrown.length > 0) throw thrown[0]
162
+ if (pending.length > 0) return Promise.all(pending).then(() => undefined)
163
+ return undefined
164
+ }
165
+ }
@@ -341,6 +341,21 @@ export function arrayAppend<C extends Column>(col: C, value: ElementOf<C>): SQL<
341
341
  return sql<C['_']['data']>`array_append(${col}, ${element(col, value)}::${el})`
342
342
  }
343
343
 
344
+ /**
345
+ * An array built from expressions: `ARRAY[e1, e2, ...]::<element>[]`, for the second argument of
346
+ * `arrayOverlaps` / `arrayContains` / `arrayContained`:
347
+ * `arrayOverlaps(t.keys, arrayOf(t.keys, concat(o.key, ':x'), concat(o.key, ':*')))`.
348
+ * `like` is an array column that supplies the element type (the one the result is compared with, or any
349
+ * column of the same type); it is read for its type only and does not appear in the SQL.
350
+ * A column or SQL expression element is used as is; a JS value is bound and converted by the element
351
+ * column's driver mapping. With no elements the result is the empty array `ARRAY[]::<element>[]`.
352
+ */
353
+ export function arrayOf<C extends Column>(like: C, ...elements: Array<ElementOf<C> | Column | SQL>): SQL<C['_']['data']> {
354
+ const el = sql.raw(elementType(like, 'arrayOf'))
355
+ const parts = elements.map(e => (is(e, DrizzleColumn) || is(e, DrizzleSQL) ? e : element(like, e)))
356
+ return sql<C['_']['data']>`ARRAY[${sql.join(parts.map(p => sql`${p}`), sql`, `)}]::${el}[]`
357
+ }
358
+
344
359
  /** PostgreSQL `array_remove(col, value)` — drops every element equal to `value`. `value` is bound and cast to the element type. */
345
360
  export function arrayRemove<C extends Column>(col: C, value: ElementOf<C>): SQL<C['_']['data']> {
346
361
  const el = sql.raw(elementType(col, 'arrayRemove'))