hierarchical-approval 0.9.0 → 1.0.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.
- package/CHANGELOG.md +42 -0
- package/README.md +34 -0
- package/dist/{ApprovalEngine-mD-qyxcZ.d.ts → ApprovalEngine-DB62pkEk.d.ts} +37 -6
- package/dist/{ApprovalEngine-pfQ2v-J9.d.cts → ApprovalEngine-DzHUWix1.d.cts} +37 -6
- package/dist/{IAuditAdapter-nlIK1em0.d.ts → IAuditAdapter-RKagmrfi.d.ts} +1 -1
- package/dist/{IAuditAdapter-0frLfzRq.d.cts → IAuditAdapter-zVO7XpWm.d.cts} +1 -1
- package/dist/{IAuthorizationPolicy-DG8vmD5j.d.ts → IAuthorizationPolicy-DEDQnNzq.d.ts} +1 -1
- package/dist/{IAuthorizationPolicy-DXEMaoxF.d.cts → IAuthorizationPolicy-Dx9NzWx8.d.cts} +1 -1
- package/dist/{INotificationAdapter-CFedkDQe.d.cts → INotificationAdapter-Dld84ihs.d.cts} +1 -1
- package/dist/{INotificationAdapter-COeQ5kEv.d.ts → INotificationAdapter-u5ZE7wS6.d.ts} +1 -1
- package/dist/{IOperationMiddleware-CYXTV_TI.d.cts → IOperationMiddleware-BSfjsnTe.d.cts} +1 -1
- package/dist/{IOperationMiddleware-Bx4_U0ca.d.ts → IOperationMiddleware-DndObWfg.d.ts} +1 -1
- package/dist/{IStorageAdapter-ecVYcA0z.d.ts → IStorageAdapter-BYlHnm7_.d.ts} +1 -1
- package/dist/{IStorageAdapter-qKgtuTY1.d.cts → IStorageAdapter-D-yIRiET.d.cts} +1 -1
- package/dist/adapters/MemoryAdapter.d.cts +2 -2
- package/dist/adapters/MemoryAdapter.d.ts +2 -2
- package/dist/adapters/PostgresAdapter.d.cts +2 -2
- package/dist/adapters/PostgresAdapter.d.ts +2 -2
- package/dist/index.cjs +198 -40
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +198 -40
- package/dist/index.js.map +1 -1
- package/dist/{instance-BxUwmrEi.d.cts → instance-iaAIdMbs.d.cts} +13 -0
- package/dist/{instance-BxUwmrEi.d.ts → instance-iaAIdMbs.d.ts} +13 -0
- package/dist/nestjs.cjs +198 -40
- package/dist/nestjs.cjs.map +1 -1
- package/dist/nestjs.d.cts +7 -7
- package/dist/nestjs.d.ts +7 -7
- package/dist/nestjs.js +198 -40
- package/dist/nestjs.js.map +1 -1
- package/dist/plugins/audit.d.cts +2 -2
- package/dist/plugins/audit.d.ts +2 -2
- package/dist/plugins/notify.d.cts +2 -2
- package/dist/plugins/notify.d.ts +2 -2
- package/dist/plugins/resilience.d.cts +3 -3
- package/dist/plugins/resilience.d.ts +3 -3
- package/dist/plugins/tracing.d.cts +2 -2
- package/dist/plugins/tracing.d.ts +2 -2
- package/dist/plugins/webhook.d.cts +2 -2
- package/dist/plugins/webhook.d.ts +2 -2
- package/dist/testing.cjs +198 -40
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +7 -7
- package/dist/testing.d.ts +7 -7
- package/dist/testing.js +198 -40
- package/dist/testing.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,48 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
7
7
|
|
|
8
8
|
_Nothing yet._
|
|
9
9
|
|
|
10
|
+
## [1.0.0] - 2026-09-04
|
|
11
|
+
|
|
12
|
+
First stable release. The public API is now considered settled: breaking changes
|
|
13
|
+
from here get a major version.
|
|
14
|
+
|
|
15
|
+
### Added — parallel branch groups
|
|
16
|
+
|
|
17
|
+
- **Levels sharing a `group` name activate together and join before the chain
|
|
18
|
+
advances.** Approvals were strictly sequential, so "Finance and Legal review
|
|
19
|
+
concurrently, then it goes to the CEO" could only be modelled by picking an
|
|
20
|
+
arbitrary order and making one wait on the other — inflating cycle time for no
|
|
21
|
+
business reason. This was the last item on the roadmap in `IMPROVEMENTS.md`.
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
levels: [
|
|
25
|
+
{ level: 1, name: 'Manager', ... },
|
|
26
|
+
{ level: 2, name: 'Finance', group: 'review', ... },
|
|
27
|
+
{ level: 3, name: 'Legal', group: 'review', ... },
|
|
28
|
+
{ level: 4, name: 'CEO', ... },
|
|
29
|
+
]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Both branches open at once, decisions arrive in any order, and level 4 stays
|
|
33
|
+
`waiting` until every branch is approved. Rejecting any branch rejects the
|
|
34
|
+
instance, as a rejection always has. A group may also lead the chain, in which
|
|
35
|
+
case it opens at submit.
|
|
36
|
+
|
|
37
|
+
- **`approve()` and `reject()` take an optional `level`.** Inside a parallel
|
|
38
|
+
group one person can sit on several open branches; recording their decision
|
|
39
|
+
against a guessed branch would be silently wrong, so the engine throws and
|
|
40
|
+
asks which branch is meant. Sequential templates never see this.
|
|
41
|
+
|
|
42
|
+
- **`getCurrentApprovers()` returns the union across every open branch.**
|
|
43
|
+
`canApprove()` likewise considers any open branch the user is assigned to.
|
|
44
|
+
|
|
45
|
+
- **`validateTemplate()` rejects a non-contiguous group** — a group's levels must
|
|
46
|
+
occupy consecutive level numbers, so that "advance past the group" and
|
|
47
|
+
"advance past a level" cannot disagree about what comes next.
|
|
48
|
+
|
|
49
|
+
**Backward compatible.** A level without a `group` is its own group of one, and
|
|
50
|
+
all 673 pre-existing tests pass unchanged against the new engine.
|
|
51
|
+
|
|
10
52
|
## [0.9.0] - 2026-09-04
|
|
11
53
|
|
|
12
54
|
### Added — `updateData()`: edit a pending document and recompute its chain
|
package/README.md
CHANGED
|
@@ -399,6 +399,40 @@ engine.registerConditionOperator('between', (actual, expected) => {
|
|
|
399
399
|
});
|
|
400
400
|
```
|
|
401
401
|
|
|
402
|
+
### Parallel branch groups
|
|
403
|
+
|
|
404
|
+
Give levels the same `group` name and they activate together, joining before
|
|
405
|
+
the chain moves on — "Finance and Legal review concurrently, then it goes to the
|
|
406
|
+
CEO":
|
|
407
|
+
|
|
408
|
+
```ts
|
|
409
|
+
levels: [
|
|
410
|
+
{ level: 1, name: 'Manager', approvers: [{ type: 'user', userId: 'mgr' }], mode: 'any' },
|
|
411
|
+
{ level: 2, name: 'Finance', group: 'review', approvers: [{ type: 'role', role: 'finance' }], mode: 'any' },
|
|
412
|
+
{ level: 3, name: 'Legal', group: 'review', approvers: [{ type: 'role', role: 'legal' }], mode: 'any' },
|
|
413
|
+
{ level: 4, name: 'CEO', approvers: [{ type: 'user', userId: 'ceo' }], mode: 'any' },
|
|
414
|
+
]
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
Both branches open at once when the group is reached, decisions can arrive in
|
|
418
|
+
either order, and level 4 stays `waiting` until every branch is approved.
|
|
419
|
+
Rejecting any branch rejects the instance. A group may also lead the chain, in
|
|
420
|
+
which case it opens at submit.
|
|
421
|
+
|
|
422
|
+
`getCurrentApprovers()` returns the union across every open branch. A level
|
|
423
|
+
without a `group` is its own group of one, so existing sequential templates
|
|
424
|
+
behave exactly as before.
|
|
425
|
+
|
|
426
|
+
**When one person sits on two open branches**, `approve()` refuses to guess and
|
|
427
|
+
throws — pass `level` to say which branch the decision is for:
|
|
428
|
+
|
|
429
|
+
```ts
|
|
430
|
+
await engine.approve(id, { approverId: 'cfo', level: 2 });
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
A group's levels must occupy a contiguous run of level numbers;
|
|
434
|
+
`validateTemplate()` rejects an interleaved group.
|
|
435
|
+
|
|
402
436
|
### Editing a document mid-flight
|
|
403
437
|
|
|
404
438
|
Documents change after submission — a line item is corrected, a vendor
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from './IStorageAdapter-
|
|
2
|
-
import { k as ConditionExpression, o as ResolverFn, g as ApprovalTemplateConfig, A as ApprovalTemplate, j as AuditContext, a as ApprovalInstance, e as ApprovalMode, b as AuditEntry } from './instance-
|
|
3
|
-
import { I as INotificationAdapter, b as ApprovalEventName, a as ApprovalEventMap } from './INotificationAdapter-
|
|
1
|
+
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from './IStorageAdapter-BYlHnm7_.js';
|
|
2
|
+
import { k as ConditionExpression, o as ResolverFn, g as ApprovalTemplateConfig, A as ApprovalTemplate, j as AuditContext, a as ApprovalInstance, e as ApprovalMode, b as AuditEntry } from './instance-iaAIdMbs.js';
|
|
3
|
+
import { I as INotificationAdapter, b as ApprovalEventName, a as ApprovalEventMap } from './INotificationAdapter-u5ZE7wS6.js';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { L as Logger } from './Logger-BplhlU7l.js';
|
|
6
6
|
import { C as Clock } from './Clock-3FnOczFJ.js';
|
|
7
|
-
import { I as IOperationMiddleware, a as ApprovalError } from './IOperationMiddleware-
|
|
8
|
-
import { I as IAuditAdapter } from './IAuditAdapter-
|
|
7
|
+
import { I as IOperationMiddleware, a as ApprovalError } from './IOperationMiddleware-DndObWfg.js';
|
|
8
|
+
import { I as IAuditAdapter } from './IAuditAdapter-RKagmrfi.js';
|
|
9
9
|
import { I as IMetricsAdapter } from './IMetricsAdapter-t7QpfA1I.js';
|
|
10
10
|
import { I as ISchedulerAdapter } from './ISchedulerAdapter-DKv_QjVN.js';
|
|
11
|
-
import { I as IAuthorizationPolicy } from './IAuthorizationPolicy-
|
|
11
|
+
import { I as IAuthorizationPolicy } from './IAuthorizationPolicy-DEDQnNzq.js';
|
|
12
12
|
|
|
13
13
|
declare const SubmitOptionsSchema: z.ZodObject<{
|
|
14
14
|
templateName: z.ZodString;
|
|
@@ -26,6 +26,7 @@ declare const SubmitOptionsSchema: z.ZodObject<{
|
|
|
26
26
|
declare const ApproveOptionsSchema: z.ZodObject<{
|
|
27
27
|
approverId: z.ZodString;
|
|
28
28
|
comment: z.ZodOptional<z.ZodString>;
|
|
29
|
+
level: z.ZodOptional<z.ZodNumber>;
|
|
29
30
|
}, z.core.$strip>;
|
|
30
31
|
declare const RejectOptionsSchema: z.ZodObject<{
|
|
31
32
|
approverId: z.ZodString;
|
|
@@ -34,6 +35,7 @@ declare const RejectOptionsSchema: z.ZodObject<{
|
|
|
34
35
|
originator: "originator";
|
|
35
36
|
previous: "previous";
|
|
36
37
|
}>>;
|
|
38
|
+
level: z.ZodOptional<z.ZodNumber>;
|
|
37
39
|
}, z.core.$strip>;
|
|
38
40
|
declare const DelegateOptionsSchema: z.ZodObject<{
|
|
39
41
|
fromApprover: z.ZodString;
|
|
@@ -489,7 +491,36 @@ declare class ApprovalEngine {
|
|
|
489
491
|
/** Compute a deadline `days` from `from`, honouring the business calendar if one is configured. */
|
|
490
492
|
private deadlineFrom;
|
|
491
493
|
private requireInstance;
|
|
494
|
+
/**
|
|
495
|
+
* Identity of the parallel branch group a level belongs to.
|
|
496
|
+
*
|
|
497
|
+
* An ungrouped level is its own group of one, keyed by its level number, so
|
|
498
|
+
* sequential and parallel levels can be handled by the same code paths. The
|
|
499
|
+
* `#` prefix keeps a synthetic key from ever colliding with a real group
|
|
500
|
+
* name a template author chose.
|
|
501
|
+
*/
|
|
502
|
+
private static groupKeyOf;
|
|
503
|
+
/** Every level currently collecting decisions — more than one inside a parallel group. */
|
|
504
|
+
private pendingLevels;
|
|
505
|
+
/** All levels sharing a group with the given level, including it. */
|
|
506
|
+
private groupMembers;
|
|
507
|
+
/**
|
|
508
|
+
* Pick which pending level an actor is operating on.
|
|
509
|
+
*
|
|
510
|
+
* With sequential levels there is only ever one candidate. Inside a parallel
|
|
511
|
+
* group an approver may sit on several branches at once, and guessing which
|
|
512
|
+
* one they meant would silently record the decision against the wrong branch —
|
|
513
|
+
* so that case demands an explicit `level`.
|
|
514
|
+
*/
|
|
515
|
+
private resolveActorLevel;
|
|
492
516
|
private currentLevelInstance;
|
|
517
|
+
/**
|
|
518
|
+
* The next group of levels to activate: every level sharing the group of the
|
|
519
|
+
* lowest-numbered waiting level.
|
|
520
|
+
*/
|
|
521
|
+
private findNextGroup;
|
|
522
|
+
/** Resolve approvers for a group, set its deadlines, and mark it pending. */
|
|
523
|
+
private activateGroup;
|
|
493
524
|
private findNextLevel;
|
|
494
525
|
private findPreviousLevel;
|
|
495
526
|
private guardBulkSize;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from './IStorageAdapter-
|
|
2
|
-
import { k as ConditionExpression, o as ResolverFn, g as ApprovalTemplateConfig, A as ApprovalTemplate, j as AuditContext, a as ApprovalInstance, e as ApprovalMode, b as AuditEntry } from './instance-
|
|
3
|
-
import { I as INotificationAdapter, b as ApprovalEventName, a as ApprovalEventMap } from './INotificationAdapter-
|
|
1
|
+
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from './IStorageAdapter-D-yIRiET.cjs';
|
|
2
|
+
import { k as ConditionExpression, o as ResolverFn, g as ApprovalTemplateConfig, A as ApprovalTemplate, j as AuditContext, a as ApprovalInstance, e as ApprovalMode, b as AuditEntry } from './instance-iaAIdMbs.cjs';
|
|
3
|
+
import { I as INotificationAdapter, b as ApprovalEventName, a as ApprovalEventMap } from './INotificationAdapter-Dld84ihs.cjs';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { L as Logger } from './Logger-BplhlU7l.cjs';
|
|
6
6
|
import { C as Clock } from './Clock-3FnOczFJ.cjs';
|
|
7
|
-
import { I as IOperationMiddleware, a as ApprovalError } from './IOperationMiddleware-
|
|
8
|
-
import { I as IAuditAdapter } from './IAuditAdapter-
|
|
7
|
+
import { I as IOperationMiddleware, a as ApprovalError } from './IOperationMiddleware-BSfjsnTe.cjs';
|
|
8
|
+
import { I as IAuditAdapter } from './IAuditAdapter-zVO7XpWm.cjs';
|
|
9
9
|
import { I as IMetricsAdapter } from './IMetricsAdapter-t7QpfA1I.cjs';
|
|
10
10
|
import { I as ISchedulerAdapter } from './ISchedulerAdapter-DKv_QjVN.cjs';
|
|
11
|
-
import { I as IAuthorizationPolicy } from './IAuthorizationPolicy-
|
|
11
|
+
import { I as IAuthorizationPolicy } from './IAuthorizationPolicy-Dx9NzWx8.cjs';
|
|
12
12
|
|
|
13
13
|
declare const SubmitOptionsSchema: z.ZodObject<{
|
|
14
14
|
templateName: z.ZodString;
|
|
@@ -26,6 +26,7 @@ declare const SubmitOptionsSchema: z.ZodObject<{
|
|
|
26
26
|
declare const ApproveOptionsSchema: z.ZodObject<{
|
|
27
27
|
approverId: z.ZodString;
|
|
28
28
|
comment: z.ZodOptional<z.ZodString>;
|
|
29
|
+
level: z.ZodOptional<z.ZodNumber>;
|
|
29
30
|
}, z.core.$strip>;
|
|
30
31
|
declare const RejectOptionsSchema: z.ZodObject<{
|
|
31
32
|
approverId: z.ZodString;
|
|
@@ -34,6 +35,7 @@ declare const RejectOptionsSchema: z.ZodObject<{
|
|
|
34
35
|
originator: "originator";
|
|
35
36
|
previous: "previous";
|
|
36
37
|
}>>;
|
|
38
|
+
level: z.ZodOptional<z.ZodNumber>;
|
|
37
39
|
}, z.core.$strip>;
|
|
38
40
|
declare const DelegateOptionsSchema: z.ZodObject<{
|
|
39
41
|
fromApprover: z.ZodString;
|
|
@@ -489,7 +491,36 @@ declare class ApprovalEngine {
|
|
|
489
491
|
/** Compute a deadline `days` from `from`, honouring the business calendar if one is configured. */
|
|
490
492
|
private deadlineFrom;
|
|
491
493
|
private requireInstance;
|
|
494
|
+
/**
|
|
495
|
+
* Identity of the parallel branch group a level belongs to.
|
|
496
|
+
*
|
|
497
|
+
* An ungrouped level is its own group of one, keyed by its level number, so
|
|
498
|
+
* sequential and parallel levels can be handled by the same code paths. The
|
|
499
|
+
* `#` prefix keeps a synthetic key from ever colliding with a real group
|
|
500
|
+
* name a template author chose.
|
|
501
|
+
*/
|
|
502
|
+
private static groupKeyOf;
|
|
503
|
+
/** Every level currently collecting decisions — more than one inside a parallel group. */
|
|
504
|
+
private pendingLevels;
|
|
505
|
+
/** All levels sharing a group with the given level, including it. */
|
|
506
|
+
private groupMembers;
|
|
507
|
+
/**
|
|
508
|
+
* Pick which pending level an actor is operating on.
|
|
509
|
+
*
|
|
510
|
+
* With sequential levels there is only ever one candidate. Inside a parallel
|
|
511
|
+
* group an approver may sit on several branches at once, and guessing which
|
|
512
|
+
* one they meant would silently record the decision against the wrong branch —
|
|
513
|
+
* so that case demands an explicit `level`.
|
|
514
|
+
*/
|
|
515
|
+
private resolveActorLevel;
|
|
492
516
|
private currentLevelInstance;
|
|
517
|
+
/**
|
|
518
|
+
* The next group of levels to activate: every level sharing the group of the
|
|
519
|
+
* lowest-numbered waiting level.
|
|
520
|
+
*/
|
|
521
|
+
private findNextGroup;
|
|
522
|
+
/** Resolve approvers for a group, set its deadlines, and mark it pending. */
|
|
523
|
+
private activateGroup;
|
|
493
524
|
private findNextLevel;
|
|
494
525
|
private findPreviousLevel;
|
|
495
526
|
private guardBulkSize;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as ApprovalInstance, d as ApprovalLevelInstance } from './instance-
|
|
1
|
+
import { a as ApprovalInstance, d as ApprovalLevelInstance } from './instance-iaAIdMbs.js';
|
|
2
2
|
|
|
3
3
|
interface AuthorizationContext {
|
|
4
4
|
operation: 'submit' | 'approve' | 'reject' | 'delegate' | 'reassign' | 'cancel' | 'escalate' | 'override' | 'resubmit' | 'addComment' | 'updateData';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as ApprovalInstance, d as ApprovalLevelInstance } from './instance-
|
|
1
|
+
import { a as ApprovalInstance, d as ApprovalLevelInstance } from './instance-iaAIdMbs.cjs';
|
|
2
2
|
|
|
3
3
|
interface AuthorizationContext {
|
|
4
4
|
operation: 'submit' | 'approve' | 'reject' | 'delegate' | 'reassign' | 'cancel' | 'escalate' | 'override' | 'resubmit' | 'addComment' | 'updateData';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as ApprovalTemplate, a as ApprovalInstance, f as ApprovalStatus, b as AuditEntry } from './instance-
|
|
1
|
+
import { A as ApprovalTemplate, a as ApprovalInstance, f as ApprovalStatus, b as AuditEntry } from './instance-iaAIdMbs.js';
|
|
2
2
|
|
|
3
3
|
interface PaginationOpts {
|
|
4
4
|
limit: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as ApprovalTemplate, a as ApprovalInstance, f as ApprovalStatus, b as AuditEntry } from './instance-
|
|
1
|
+
import { A as ApprovalTemplate, a as ApprovalInstance, f as ApprovalStatus, b as AuditEntry } from './instance-iaAIdMbs.cjs';
|
|
2
2
|
|
|
3
3
|
interface PaginationOpts {
|
|
4
4
|
limit: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from '../IStorageAdapter-
|
|
2
|
-
import { A as ApprovalTemplate, a as ApprovalInstance, b as AuditEntry } from '../instance-
|
|
1
|
+
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from '../IStorageAdapter-D-yIRiET.cjs';
|
|
2
|
+
import { A as ApprovalTemplate, a as ApprovalInstance, b as AuditEntry } from '../instance-iaAIdMbs.cjs';
|
|
3
3
|
|
|
4
4
|
declare class MemoryAdapter implements IStorageAdapter {
|
|
5
5
|
private templates;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from '../IStorageAdapter-
|
|
2
|
-
import { A as ApprovalTemplate, a as ApprovalInstance, b as AuditEntry } from '../instance-
|
|
1
|
+
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from '../IStorageAdapter-BYlHnm7_.js';
|
|
2
|
+
import { A as ApprovalTemplate, a as ApprovalInstance, b as AuditEntry } from '../instance-iaAIdMbs.js';
|
|
3
3
|
|
|
4
4
|
declare class MemoryAdapter implements IStorageAdapter {
|
|
5
5
|
private templates;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as tls from 'tls';
|
|
2
2
|
import * as pg from 'pg';
|
|
3
|
-
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from '../IStorageAdapter-
|
|
4
|
-
import { A as ApprovalTemplate, a as ApprovalInstance, b as AuditEntry } from '../instance-
|
|
3
|
+
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from '../IStorageAdapter-D-yIRiET.cjs';
|
|
4
|
+
import { A as ApprovalTemplate, a as ApprovalInstance, b as AuditEntry } from '../instance-iaAIdMbs.cjs';
|
|
5
5
|
|
|
6
6
|
interface PostgresAdapterOptions {
|
|
7
7
|
connectionString?: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as tls from 'tls';
|
|
2
2
|
import * as pg from 'pg';
|
|
3
|
-
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from '../IStorageAdapter-
|
|
4
|
-
import { A as ApprovalTemplate, a as ApprovalInstance, b as AuditEntry } from '../instance-
|
|
3
|
+
import { I as IStorageAdapter, P as PaginationOpts, a as PaginatedResult, b as InstanceFilter, C as CursorPaginationOpts, c as CursorPaginatedResult } from '../IStorageAdapter-BYlHnm7_.js';
|
|
4
|
+
import { A as ApprovalTemplate, a as ApprovalInstance, b as AuditEntry } from '../instance-iaAIdMbs.js';
|
|
5
5
|
|
|
6
6
|
interface PostgresAdapterOptions {
|
|
7
7
|
connectionString?: string;
|