@nodii/approval 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/metric-vocab.d.ts +9 -0
- package/dist/metric-vocab.d.ts.map +1 -0
- package/dist/metric-vocab.js +96 -0
- package/dist/metric-vocab.js.map +1 -0
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { defineApprovalKinds, KindRegistry, RequesterRegistry, validateCrossOwne
|
|
|
4
4
|
export { initApproval, requireApproval, getApprovalOrNull, requireKindRegistry, requireHandlers, requesterRegistry, defineApprovalRequester, registerKinds, _resetForTests, } from "./init";
|
|
5
5
|
export { bindApprovalHandlers, type BindApprovalHandlersOpts, } from "./handlers";
|
|
6
6
|
export { requestApproval } from "./request";
|
|
7
|
+
export { APPROVAL_METRIC_VOCABULARY } from "./metric-vocab";
|
|
7
8
|
export { validatePreviewSummary, PII_PATTERNS, } from "./preview-validation";
|
|
8
9
|
export { startApprovalConsumer, stopApprovalConsumer, defaultQueueName, _resetConsumerForTests, type StartApprovalConsumerOpts, type ApprovalConsumerHandle, } from "./consumer";
|
|
9
10
|
export { getApprovalMigrationSQL, splitStatements, type GetMigrationSQLOpts, } from "./migrations";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,cAAc,GACf,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,oBAAoB,EACpB,KAAK,wBAAwB,GAC9B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,cAAc,GACf,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,oBAAoB,EACpB,KAAK,wBAAwB,GAC9B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAK5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,sBAAsB,EACtB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,GAC5B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,GACpC,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,0BAA0B,GAChC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,8BAA8B,GACpC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,2BAA2B,EAC3B,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,4BAA4B,EAC5B,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EACtB,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,10 @@ export { defineApprovalKinds, KindRegistry, RequesterRegistry, validateCrossOwne
|
|
|
8
8
|
export { initApproval, requireApproval, getApprovalOrNull, requireKindRegistry, requireHandlers, requesterRegistry, defineApprovalRequester, registerKinds, _resetForTests, } from "./init";
|
|
9
9
|
export { bindApprovalHandlers, } from "./handlers";
|
|
10
10
|
export { requestApproval } from "./request";
|
|
11
|
+
// The 8 locked approval metrics (`approval.md § 5.15`). Adopters merge
|
|
12
|
+
// this into `initTelemetry({ vocabularyRegistry })` so the names emitted
|
|
13
|
+
// by the telemetry shim register cleanly (request 23c449a7).
|
|
14
|
+
export { APPROVAL_METRIC_VOCABULARY } from "./metric-vocab";
|
|
11
15
|
export { validatePreviewSummary, PII_PATTERNS, } from "./preview-validation";
|
|
12
16
|
export { startApprovalConsumer, stopApprovalConsumer, defaultQueueName, _resetConsumerForTests, } from "./consumer";
|
|
13
17
|
export { getApprovalMigrationSQL, splitStatements, } from "./migrations";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAE1E,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,cAAc,GACf,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,oBAAoB,GAErB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EACL,sBAAsB,EACtB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GAGvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,uBAAuB,EACvB,eAAe,GAEhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,GAG1B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,GAExB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,UAAU,CAAC;AA+BlB,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EACtB,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAE1E,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,cAAc,GACf,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,oBAAoB,GAErB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,uEAAuE;AACvE,yEAAyE;AACzE,6DAA6D;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,sBAAsB,EACtB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GAGvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,uBAAuB,EACvB,eAAe,GAEhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,GAG1B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,GAExB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,UAAU,CAAC;AA+BlB,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EACtB,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MetricVocabularyRegistry } from "@nodii/telemetry";
|
|
2
|
+
/**
|
|
3
|
+
* The 8 locked `@nodii/approval` metric names (5 counters + 3 histograms)
|
|
4
|
+
* under families `request_handler` (request path) and `async_worker`
|
|
5
|
+
* (consumer path), per `approval.md § 5.15`. Merge into
|
|
6
|
+
* `initTelemetry({ vocabularyRegistry })`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const APPROVAL_METRIC_VOCABULARY: MetricVocabularyRegistry;
|
|
9
|
+
//# sourceMappingURL=metric-vocab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric-vocab.d.ts","sourceRoot":"","sources":["../src/metric-vocab.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAKjE;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,wBA8DxC,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// The 8 locked `@nodii/approval` metrics per `approval.md § 5.15`. Wired
|
|
2
|
+
// through `@nodii/telemetry`'s vocabulary-bound `metrics.counter` /
|
|
3
|
+
// `metrics.histogram` API (see `telemetry-shim.ts`).
|
|
4
|
+
//
|
|
5
|
+
// Adopters merge this registry into their `initTelemetry({
|
|
6
|
+
// vocabularyRegistry })` call so the metric names `@nodii/approval` emits
|
|
7
|
+
// pass vocabulary validation instead of hand-authoring the entries:
|
|
8
|
+
//
|
|
9
|
+
// import { APPROVAL_METRIC_VOCABULARY } from "@nodii/approval";
|
|
10
|
+
// import { REPLICA_CONSUMER_VOCABULARY } from "@nodii/telemetry";
|
|
11
|
+
//
|
|
12
|
+
// initTelemetry({
|
|
13
|
+
// ...,
|
|
14
|
+
// vocabularyRegistry: {
|
|
15
|
+
// ...serviceVocab,
|
|
16
|
+
// ...APPROVAL_METRIC_VOCABULARY,
|
|
17
|
+
// ...REPLICA_CONSUMER_VOCABULARY,
|
|
18
|
+
// },
|
|
19
|
+
// });
|
|
20
|
+
//
|
|
21
|
+
// Without the registration `metrics.counter/histogram` throws
|
|
22
|
+
// `MetricVocabularyError`; the shim catches + warn-logs once per metric so
|
|
23
|
+
// the gap is visible (see `telemetry-shim.ts`). This export removes the
|
|
24
|
+
// per-adopter toil of re-declaring the names (request 23c449a7 from
|
|
25
|
+
// nodii-ticketing). Mirrors the lib-owned-vocab precedent in
|
|
26
|
+
// `ts/db-rls/src/metrics.ts` (`DB_RLS_METRIC_VOCABULARY`) and the locked
|
|
27
|
+
// `REPLICA_CONSUMER_VOCABULARY` in `ts/telemetry/src/types.ts`.
|
|
28
|
+
//
|
|
29
|
+
// `request_handler` (request-path) + `async_worker` (consumer-path) are
|
|
30
|
+
// both locked D18 `MetricFamily` values. The five counters + three
|
|
31
|
+
// histograms below match the `inc({...})` / `observe({...})` call sites in
|
|
32
|
+
// `request.ts` + `consumer.ts` byte-for-byte (name + family).
|
|
33
|
+
/** The ADR/spec section that gates these 8 metrics into the vocabulary. */
|
|
34
|
+
const DECISION = "approval.md § 5.15";
|
|
35
|
+
/**
|
|
36
|
+
* The 8 locked `@nodii/approval` metric names (5 counters + 3 histograms)
|
|
37
|
+
* under families `request_handler` (request path) and `async_worker`
|
|
38
|
+
* (consumer path), per `approval.md § 5.15`. Merge into
|
|
39
|
+
* `initTelemetry({ vocabularyRegistry })`.
|
|
40
|
+
*/
|
|
41
|
+
export const APPROVAL_METRIC_VOCABULARY = {
|
|
42
|
+
// ── request path (family: request_handler) ──
|
|
43
|
+
approval_requested_total: {
|
|
44
|
+
family: "request_handler",
|
|
45
|
+
kind: "counter",
|
|
46
|
+
description: "Approval requests created via requestApproval(), labeled by service + kind (+ owner_service/requester_service for cross-owner requests per D231).",
|
|
47
|
+
decision: DECISION,
|
|
48
|
+
},
|
|
49
|
+
approval_self_action_total: {
|
|
50
|
+
family: "request_handler",
|
|
51
|
+
kind: "counter",
|
|
52
|
+
description: "Approval requests short-circuited because the requester is also the approver (self-action), labeled by service + kind.",
|
|
53
|
+
decision: DECISION,
|
|
54
|
+
},
|
|
55
|
+
approval_opt_in_disabled_total: {
|
|
56
|
+
family: "request_handler",
|
|
57
|
+
kind: "counter",
|
|
58
|
+
description: "Approval requests skipped because the tenant has approval opt-in disabled for the kind, labeled by service + kind.",
|
|
59
|
+
decision: DECISION,
|
|
60
|
+
},
|
|
61
|
+
approval_decision_duration_seconds: {
|
|
62
|
+
family: "request_handler",
|
|
63
|
+
kind: "histogram",
|
|
64
|
+
unit: "seconds",
|
|
65
|
+
description: "Wall-clock seconds from approval request creation to the decision outcome on the request path.",
|
|
66
|
+
decision: DECISION,
|
|
67
|
+
},
|
|
68
|
+
// ── consumer / async-worker path (family: async_worker) ──
|
|
69
|
+
approval_handler_failures_total: {
|
|
70
|
+
family: "async_worker",
|
|
71
|
+
kind: "counter",
|
|
72
|
+
description: "Approval handler failures on the request + consumer paths, labeled by service + kind + reason.",
|
|
73
|
+
decision: DECISION,
|
|
74
|
+
},
|
|
75
|
+
approval_completion_unknown_total: {
|
|
76
|
+
family: "async_worker",
|
|
77
|
+
kind: "counter",
|
|
78
|
+
description: "Completion events received by the consumer for an unknown/missing deferred-action id, labeled by service.",
|
|
79
|
+
decision: DECISION,
|
|
80
|
+
},
|
|
81
|
+
approval_consumer_lag_seconds: {
|
|
82
|
+
family: "async_worker",
|
|
83
|
+
kind: "histogram",
|
|
84
|
+
unit: "seconds",
|
|
85
|
+
description: "Wall-clock lag (seconds) between completion-event emission and consumer processing, labeled by service.",
|
|
86
|
+
decision: DECISION,
|
|
87
|
+
},
|
|
88
|
+
approval_execution_duration_seconds: {
|
|
89
|
+
family: "async_worker",
|
|
90
|
+
kind: "histogram",
|
|
91
|
+
unit: "seconds",
|
|
92
|
+
description: "Wall-clock seconds to execute the deferred action in the async consumer, labeled by service + kind.",
|
|
93
|
+
decision: DECISION,
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=metric-vocab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric-vocab.js","sourceRoot":"","sources":["../src/metric-vocab.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,oEAAoE;AACpE,qDAAqD;AACrD,EAAE;AACF,2DAA2D;AAC3D,0EAA0E;AAC1E,oEAAoE;AACpE,EAAE;AACF,kEAAkE;AAClE,oEAAoE;AACpE,EAAE;AACF,oBAAoB;AACpB,WAAW;AACX,4BAA4B;AAC5B,yBAAyB;AACzB,uCAAuC;AACvC,wCAAwC;AACxC,SAAS;AACT,QAAQ;AACR,EAAE;AACF,8DAA8D;AAC9D,2EAA2E;AAC3E,wEAAwE;AACxE,oEAAoE;AACpE,6DAA6D;AAC7D,yEAAyE;AACzE,gEAAgE;AAChE,EAAE;AACF,wEAAwE;AACxE,mEAAmE;AACnE,2EAA2E;AAC3E,8DAA8D;AAI9D,2EAA2E;AAC3E,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAA6B;IAClE,+CAA+C;IAC/C,wBAAwB,EAAE;QACxB,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,mJAAmJ;QACrJ,QAAQ,EAAE,QAAQ;KACnB;IACD,0BAA0B,EAAE;QAC1B,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,wHAAwH;QAC1H,QAAQ,EAAE,QAAQ;KACnB;IACD,8BAA8B,EAAE;QAC9B,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,oHAAoH;QACtH,QAAQ,EAAE,QAAQ;KACnB;IACD,kCAAkC,EAAE;QAClC,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,gGAAgG;QAClG,QAAQ,EAAE,QAAQ;KACnB;IACD,4DAA4D;IAC5D,+BAA+B,EAAE;QAC/B,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,gGAAgG;QAClG,QAAQ,EAAE,QAAQ;KACnB;IACD,iCAAiC,EAAE;QACjC,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,2GAA2G;QAC7G,QAAQ,EAAE,QAAQ;KACnB;IACD,6BAA6B,EAAE;QAC7B,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,yGAAyG;QAC3G,QAAQ,EAAE,QAAQ;KACnB;IACD,mCAAmC,EAAE;QACnC,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,qGAAqG;QACvG,QAAQ,EAAE,QAAQ;KACnB;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nodii/approval",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Approval library for the Nodii microservice stack — defineApprovalKinds + requestApproval + bindApprovalHandlers + per-tenant policies + completion-event consumer + migrate-gen. Polyglot ship: TS + Python + Go in parity. Spec: planning hub docKey=approval.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@nodii/audit-chain": "0.4.2",
|
|
42
42
|
"@nodii/grpc-auth": "0.5.1",
|
|
43
|
-
"@nodii/idempotency": "0.
|
|
43
|
+
"@nodii/idempotency": "0.4.0",
|
|
44
44
|
"@nodii/role-catalog": "0.1.7",
|
|
45
45
|
"@nodii/telemetry": "0.5.2",
|
|
46
46
|
"@grpc/grpc-js": "^1.13.0",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@nodii/audit-chain": "0.4.2",
|
|
60
60
|
"@nodii/grpc-auth": "0.5.1",
|
|
61
|
-
"@nodii/idempotency": "0.
|
|
61
|
+
"@nodii/idempotency": "0.4.0",
|
|
62
62
|
"@nodii/role-catalog": "0.1.7",
|
|
63
63
|
"@nodii/telemetry": "0.5.2"
|
|
64
64
|
}
|