@forklaunch/core 1.5.16 → 1.5.18
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/lib/http/index.js +31 -20
- package/lib/http/index.js.map +1 -1
- package/lib/http/index.mjs +30 -20
- package/lib/http/index.mjs.map +1 -1
- package/lib/http/middleware/request/auth.middleware.d.ts.map +1 -1
- package/lib/http/router/expressLikeRouter.d.ts +3 -1
- package/lib/http/router/expressLikeRouter.d.ts.map +1 -1
- package/lib/persistence/complianceTypes.d.ts +51 -2
- package/lib/persistence/complianceTypes.d.ts.map +1 -1
- package/lib/persistence/defineComplianceEntity.d.ts +3 -3
- package/lib/persistence/defineComplianceEntity.d.ts.map +1 -1
- package/lib/persistence/encryptionSafeEm.d.ts +82 -0
- package/lib/persistence/encryptionSafeEm.d.ts.map +1 -0
- package/lib/persistence/forgivingDecryptionEm.d.ts +12 -0
- package/lib/persistence/forgivingDecryptionEm.d.ts.map +1 -0
- package/lib/persistence/index.d.ts +3 -1
- package/lib/persistence/index.d.ts.map +1 -1
- package/lib/persistence/index.js +88 -6
- package/lib/persistence/index.js.map +1 -1
- package/lib/persistence/index.mjs +86 -6
- package/lib/persistence/index.mjs.map +1 -1
- package/lib/persistence/mikroOrm.types.d.ts +7 -1
- package/lib/persistence/mikroOrm.types.d.ts.map +1 -1
- package/lib/services/configInjector.d.ts.map +1 -1
- package/lib/services/index.js +6 -0
- package/lib/services/index.js.map +1 -1
- package/lib/services/index.mjs +6 -0
- package/lib/services/index.mjs.map +1 -1
- package/lib/services/retentionService.d.ts +3 -2
- package/lib/services/retentionService.d.ts.map +1 -1
- package/lib/services/runRetentionEnforcement.d.ts +2 -1
- package/lib/services/runRetentionEnforcement.d.ts.map +1 -1
- package/package.json +11 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.middleware.d.ts","sourceRoot":"","sources":["../../../../src/http/middleware/request/auth.middleware.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAGnB,MAAM,uBAAuB,CAAC;AAW/B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EAGvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEL,IAAI,EACJ,aAAa,EACb,MAAM,EAEN,YAAY,EACZ,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACd,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.middleware.d.ts","sourceRoot":"","sources":["../../../../src/http/middleware/request/auth.middleware.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAGnB,MAAM,uBAAuB,CAAC;AAW/B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EAGvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEL,IAAI,EACJ,aAAa,EACb,MAAM,EAEN,YAAY,EACZ,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACd,MAAM,mCAAmC,CAAC;AAoe3C;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,SAAS,kBAAkB,EAC7B,cAAc,SAAS,MAAM,EAC7B,CAAC,SAAS,YAAY,CAAC,EAAE,CAAC,EAC1B,UAAU,SAAS,eAAe,CAAC,EAAE,CAAC,EACtC,OAAO,SAAS,IAAI,CAAC,EAAE,CAAC,EACxB,QAAQ,SAAS,WAAW,CAAC,EAAE,CAAC,EAChC,UAAU,SAAS,aAAa,CAAC,EAAE,CAAC,EACpC,UAAU,SAAS,aAAa,CAAC,EAAE,CAAC,EACpC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,YAAY,SAAS,aAAa,CAAC,EAAE,EAAE,cAAc,CAAC,EACtD,aAAa,SAAS,aAAa,CAAC,EAAE,CAAC,EAEvC,GAAG,EAAE,iBAAiB,CACpB,EAAE,EACF,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,EACtB,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,EAC7B,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC/B,mBAAmB,CAAC,EAAE,EAAE,UAAU,CAAC,EACnC,OAAO,CAAC,MAAM,sBAAsB,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,EAC/D,gBAAgB,CAAC,EAAE,EAAE,aAAa,CAAC,CACpC,EACD,GAAG,EAAE,kBAAkB,CACrB,OAAO,EACP,mBAAmB,CAAC,EAAE,EAAE,UAAU,CAAC,EACnC,mBAAmB,CAAC,EAAE,EAAE,UAAU,CAAC,EACnC,SAAS,EACT,OAAO,CAAC,MAAM,sBAAsB,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAChE,EACD,IAAI,CAAC,EAAE,sBAAsB,iBAsD9B"}
|
|
@@ -59,8 +59,10 @@ export declare function extractRouteHandlers<SV extends AnySchemaValidator, Name
|
|
|
59
59
|
controllerHandler: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, RouterSession, BaseRequest, BaseResponse, NextFunction>;
|
|
60
60
|
};
|
|
61
61
|
/**
|
|
62
|
-
*
|
|
62
|
+
* Test-only. Lets a suite assert the handlers install exactly once across many
|
|
63
|
+
* routers without leaking state into the next test.
|
|
63
64
|
*/
|
|
65
|
+
export declare function resetProcessHandlersForTesting(): void;
|
|
64
66
|
export declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePath extends `/${string}`, RouterHandler, Internal extends ExpressLikeRouter<RouterHandler, Internal>, BaseRequest, BaseResponse, NextFunction, RouterSession extends SessionObject<SV>, FetchMap extends Record<string, unknown> = EmptyObject, Sdk extends Record<string, unknown> = EmptyObject> implements ConstrainedForklaunchRouter<SV, RouterHandler> {
|
|
65
67
|
#private;
|
|
66
68
|
readonly basePath: BasePath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressLikeRouter.d.ts","sourceRoot":"","sources":["../../../src/http/router/expressLikeRouter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"expressLikeRouter.d.ts","sourceRoot":"","sources":["../../../src/http/router/expressLikeRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,9 +56,58 @@ declare module '@mikro-orm/core' {
|
|
|
56
56
|
compliance?: ComplianceLevel;
|
|
57
57
|
}
|
|
58
58
|
interface UniversalPropertyOptionsBuilder<Value, Options, IncludeKeys> {
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
/**
|
|
60
|
+
* The level is captured as a literal type parameter rather than widened to
|
|
61
|
+
* `ComplianceLevel`, so the marker records WHICH classification a property
|
|
62
|
+
* carries and not merely that it has one.
|
|
63
|
+
*
|
|
64
|
+
* That distinction is what makes {@link EncryptedKeysOf} possible: `pii`,
|
|
65
|
+
* `phi` and `pci` are encrypted at rest and `none` is not, and a `true`
|
|
66
|
+
* marker cannot tell them apart. See {@link RequiresEncryptionContext} for
|
|
67
|
+
* why the difference matters at a call site.
|
|
68
|
+
*/
|
|
69
|
+
compliance<const L extends ComplianceLevel>(level: L): Pick<UniversalPropertyOptionsBuilder<Value, Options & {
|
|
70
|
+
readonly '~c': L;
|
|
61
71
|
}, IncludeKeys>, IncludeKeys & keyof UniversalPropertyOptionsBuilder<never, never, never>>;
|
|
62
72
|
}
|
|
63
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* The classifications that cause a column to be encrypted at rest by
|
|
76
|
+
* `EncryptedType`. `none` is deliberately excluded — it is a real, deliberate
|
|
77
|
+
* classification, just not an encrypting one.
|
|
78
|
+
*/
|
|
79
|
+
export type EncryptedComplianceLevel = Extract<ComplianceLevel, 'pii' | 'phi' | 'pci'>;
|
|
80
|
+
/**
|
|
81
|
+
* The property names of `TProperties` whose classification means the column is
|
|
82
|
+
* encrypted at rest.
|
|
83
|
+
*
|
|
84
|
+
* Reading such a column requires the same encryption context it was written
|
|
85
|
+
* under, because `FieldEncryptor` derives its key per tenant. When a read
|
|
86
|
+
* happens BEFORE that context is known — a lookup whose whole purpose is to
|
|
87
|
+
* discover which organisation a row belongs to — hydrating these columns cannot
|
|
88
|
+
* succeed, and fails with "ciphertext is corrupted or the wrong key was used".
|
|
89
|
+
*
|
|
90
|
+
* The remedy at such a call site is a partial select that omits these keys, so
|
|
91
|
+
* hydration never touches them. This type is what lets that be checked rather
|
|
92
|
+
* than remembered.
|
|
93
|
+
*/
|
|
94
|
+
export type EncryptedKeysOf<TProperties> = {
|
|
95
|
+
[K in keyof TProperties]: TProperties[K] extends {
|
|
96
|
+
'~options': {
|
|
97
|
+
readonly '~c': infer L;
|
|
98
|
+
};
|
|
99
|
+
} ? L extends EncryptedComplianceLevel ? K : never : never;
|
|
100
|
+
}[keyof TProperties];
|
|
101
|
+
/**
|
|
102
|
+
* True when reading `TProperties` in full would decrypt something, and so
|
|
103
|
+
* requires an encryption context to already be established.
|
|
104
|
+
*/
|
|
105
|
+
export type RequiresEncryptionContext<TProperties> = [
|
|
106
|
+
EncryptedKeysOf<TProperties>
|
|
107
|
+
] extends [never] ? false : true;
|
|
108
|
+
/**
|
|
109
|
+
* True when `TFields` is a selection that provably avoids every encrypted
|
|
110
|
+
* column of `TProperties` — the shape that makes a context-free read safe.
|
|
111
|
+
*/
|
|
112
|
+
export type SelectionAvoidsEncryptedColumns<TProperties, TFields extends readonly PropertyKey[]> = [Extract<TFields[number], EncryptedKeysOf<TProperties>>] extends [never] ? true : false;
|
|
64
113
|
//# sourceMappingURL=complianceTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complianceTypes.d.ts","sourceRoot":"","sources":["../../src/persistence/complianceTypes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;aAC1B,GAAG,EAAE,KAAK;aACV,GAAG,EAAE,KAAK;aACV,GAAG,EAAE,KAAK;aACV,IAAI,EAAE,MAAM;CACJ,CAAC;AACX,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEzD,eAAO,MAAM,cAAc,EAAG,aAAsB,CAAC;AAQrD,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACnC,IAAI,CAEN;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,eAAe,CAEjB;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,GACjB,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,SAAS,CAE1C;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAOpE;AAMD,eAAO,MAAM,eAAe;aAC1B,MAAM,EAAE,QAAQ;aAChB,SAAS,EAAE,WAAW;CACd,CAAC;AACX,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB;aAC5B,IAAI,MAAM,MAAM,KAAG,MAAM;aACzB,MAAM,MAAM,MAAM,KAAG,MAAM;aAC3B,KAAK,MAAM,MAAM,KAAG,MAAM;CAClB,CAAC;AAEX,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAoBzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAM3E;AAWD,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,IAAI,CAEN;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,kBAAkB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhE;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,GACtB,IAAI,CAEN;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GACjB,eAAe,GAAG,SAAS,CAE7B;AAED,wBAAgB,uBAAuB,IAAI,WAAW,CACpD,MAAM,EACN,eAAe,CAChB,CAEA;AAMD;;;;;GAKG;AACH,OAAO,QAAQ,iBAAiB,CAAC;IAE/B,UAAU,eAAe,CAAC,KAAK;QAC7B,UAAU,CAAC,EAAE,eAAe,CAAC;KAC9B;IAED,UAAU,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW;QACnE,UAAU,
|
|
1
|
+
{"version":3,"file":"complianceTypes.d.ts","sourceRoot":"","sources":["../../src/persistence/complianceTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { type EntityMetadataWithProperties, type EntitySchemaWithMeta, type InferEntityFromProperties } from '@mikro-orm/core';
|
|
2
|
-
import { type RetentionPolicy } from './complianceTypes';
|
|
2
|
+
import { type ComplianceLevel, type RetentionPolicy } from './complianceTypes';
|
|
3
3
|
type ValidateProperties<T> = {
|
|
4
4
|
[K in keyof T]: T[K] extends {
|
|
5
5
|
'~options': {
|
|
6
|
-
readonly '~c':
|
|
6
|
+
readonly '~c': ComplianceLevel;
|
|
7
7
|
};
|
|
8
8
|
} | ((...args: never[]) => unknown) ? T[K] : {
|
|
9
9
|
'~options': {
|
|
10
|
-
readonly '~c':
|
|
10
|
+
readonly '~c': ComplianceLevel;
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineComplianceEntity.d.ts","sourceRoot":"","sources":["../../src/persistence/defineComplianceEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"defineComplianceEntity.d.ts","sourceRoot":"","sources":["../../src/persistence/defineComplianceEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAK3B,KAAK,kBAAkB,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAChB;QAAE,UAAU,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;SAAE,CAAA;KAAE,GAClD,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,GAC/B,CAAC,CAAC,CAAC,CAAC,GACJ;QAAE,UAAU,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;SAAE,CAAA;KAAE;CACvD,CAAC;AAQF,wBAAgB,sBAAsB,CACpC,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,KAAK,CAAC,UAAU,SAAS,MAAM,EAC/B,KAAK,CAAC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjD,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,EAC/D,KAAK,CAAC,KAAK,GAAG,KAAK,EACnB,KAAK,CAAC,WAAW,GAAG,KAAK,EACzB,KAAK,CAAC,YAAY,SAAS,OAAO,GAAG,KAAK,EAE1C,IAAI,EAAE,4BAA4B,CAChC,KAAK,EACL,UAAU,EACV,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,EAC7C,GAAG,EACH,KAAK,EACL,WAAW,EACX,YAAY,CACb,GAAG;IAAE,SAAS,CAAC,EAAE,eAAe,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,oBAAoB,CACrB,KAAK,EACL,UAAU,EACV,yBAAyB,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,EAC7E,KAAK,EACL,WAAW,CACZ,CAwEA"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { EncryptedKeysOf } from './complianceTypes';
|
|
2
|
+
/**
|
|
3
|
+
* Makes "this read would decrypt, and nothing has bound a context" a compile
|
|
4
|
+
* error instead of a production 500.
|
|
5
|
+
*
|
|
6
|
+
* The failure it prevents, twice seen in production: an entity carries columns
|
|
7
|
+
* encrypted under an ORGANISATION's key, and a lookup reads that row to
|
|
8
|
+
* discover which organisation it belongs to. The context needed to decrypt is
|
|
9
|
+
* exactly what the read is trying to find, so hydration cannot succeed and
|
|
10
|
+
* fails with "ciphertext is corrupted or the wrong key was used". The remedy is
|
|
11
|
+
* a partial select omitting those columns — easy to apply, easy to forget, and
|
|
12
|
+
* invisible until a tenant id is in play.
|
|
13
|
+
*
|
|
14
|
+
* Two things had to be true for a type to catch it, and both now are: the
|
|
15
|
+
* classification level is recorded in the type (see `EncryptedKeysOf`), and an
|
|
16
|
+
* entity schema exposes its properties as `readonly properties: TProperties`.
|
|
17
|
+
*
|
|
18
|
+
* Adoption is per call site by design. Wrapping an EntityManager here narrows
|
|
19
|
+
* only that reference, so a service can move over one file at a time rather
|
|
20
|
+
* than the whole repository failing to compile at once.
|
|
21
|
+
*/
|
|
22
|
+
/** The property map behind an entity schema from `defineComplianceEntity`. */
|
|
23
|
+
export type PropertiesOfSchema<TSchema> = TSchema extends {
|
|
24
|
+
readonly properties: infer TProperties;
|
|
25
|
+
} ? TProperties : never;
|
|
26
|
+
/** The encrypted-at-rest property names of an entity schema. */
|
|
27
|
+
export type EncryptedKeysOfSchema<TSchema> = EncryptedKeysOf<PropertiesOfSchema<TSchema>>;
|
|
28
|
+
/** True when reading this schema in full would decrypt something. */
|
|
29
|
+
export type SchemaRequiresEncryptionContext<TSchema> = [
|
|
30
|
+
EncryptedKeysOfSchema<TSchema>
|
|
31
|
+
] extends [never] ? false : true;
|
|
32
|
+
/** The property names of a schema that are safe to select without a context. */
|
|
33
|
+
export type ContextFreeKeysOfSchema<TSchema> = Exclude<keyof PropertiesOfSchema<TSchema>, EncryptedKeysOfSchema<TSchema>>;
|
|
34
|
+
/**
|
|
35
|
+
* Read options that provably avoid every encrypted column.
|
|
36
|
+
*
|
|
37
|
+
* `fields` is the same option MikroORM already takes; the constraint is only on
|
|
38
|
+
* which names may appear in it.
|
|
39
|
+
*/
|
|
40
|
+
export type ContextFreeReadOptions<TSchema> = {
|
|
41
|
+
fields: readonly ContextFreeKeysOfSchema<TSchema>[];
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Carried by a caller that has already bound an encryption context and so may
|
|
45
|
+
* decrypt. It is a type-level acknowledgement, not a runtime flag: nothing can
|
|
46
|
+
* observe an AsyncLocalStorage binding from a signature, so the honest design
|
|
47
|
+
* is to make the claim explicit and greppable rather than to pretend to check
|
|
48
|
+
* it.
|
|
49
|
+
*/
|
|
50
|
+
export type DecryptingReadOptions = {
|
|
51
|
+
/**
|
|
52
|
+
* Set only inside `withEncryptionContext(...)`, or where the EntityManager
|
|
53
|
+
* came from `wrapEmWithTenantContext(em, tenantId)` with a real tenant.
|
|
54
|
+
*/
|
|
55
|
+
encryptionContextIsBound: true;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* The options a read may pass, given what the schema carries.
|
|
59
|
+
*
|
|
60
|
+
* - nothing encrypted: options are unconstrained, exactly as before
|
|
61
|
+
* - something encrypted: either select around it, or declare a bound context
|
|
62
|
+
*/
|
|
63
|
+
export type EncryptionAwareReadOptions<TSchema, TOptions> = [
|
|
64
|
+
EncryptedKeysOfSchema<TSchema>
|
|
65
|
+
] extends [never] ? TOptions : TOptions & (ContextFreeReadOptions<TSchema> | DecryptingReadOptions);
|
|
66
|
+
/** Read methods that hydrate entities, and therefore decrypt. */
|
|
67
|
+
export type HydratingReadMethod = 'findOne' | 'findOneOrFail' | 'find' | 'findAll' | 'findAndCount';
|
|
68
|
+
/**
|
|
69
|
+
* An EntityManager whose hydrating reads carry the constraint above. Every
|
|
70
|
+
* other member is passed through untouched, so this stays a drop-in narrowing
|
|
71
|
+
* of an existing reference.
|
|
72
|
+
*/
|
|
73
|
+
export type EncryptionSafeEntityManager<TEntityManager> = Omit<TEntityManager, HydratingReadMethod> & {
|
|
74
|
+
[TMethod in HydratingReadMethod & keyof TEntityManager]: TEntityManager[TMethod] extends (entity: infer TSchema, where: infer TWhere, options?: infer TOptions) => infer TResult ? <TActualSchema extends TSchema>(entity: TActualSchema, where: TWhere, options: EncryptionAwareReadOptions<TActualSchema, TOptions>) => TResult : TEntityManager[TMethod];
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Narrows an EntityManager so its hydrating reads must account for encrypted
|
|
78
|
+
* columns. Purely a type-level change — the same object is returned, so there
|
|
79
|
+
* is no proxy, no allocation and no behavioural difference at runtime.
|
|
80
|
+
*/
|
|
81
|
+
export declare function asEncryptionSafe<TEntityManager extends object>(em: TEntityManager): EncryptionSafeEntityManager<TEntityManager>;
|
|
82
|
+
//# sourceMappingURL=encryptionSafeEm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryptionSafeEm.d.ts","sourceRoot":"","sources":["../../src/persistence/encryptionSafeEm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,8EAA8E;AAC9E,MAAM,MAAM,kBAAkB,CAAC,OAAO,IAAI,OAAO,SAAS;IACxD,QAAQ,CAAC,UAAU,EAAE,MAAM,WAAW,CAAC;CACxC,GACG,WAAW,GACX,KAAK,CAAC;AAEV,gEAAgE;AAChE,MAAM,MAAM,qBAAqB,CAAC,OAAO,IAAI,eAAe,CAC1D,kBAAkB,CAAC,OAAO,CAAC,CAC5B,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,+BAA+B,CAAC,OAAO,IAAI;IACrD,qBAAqB,CAAC,OAAO,CAAC;CAC/B,SAAS,CAAC,KAAK,CAAC,GACb,KAAK,GACL,IAAI,CAAC;AAET,gFAAgF;AAChF,MAAM,MAAM,uBAAuB,CAAC,OAAO,IAAI,OAAO,CACpD,MAAM,kBAAkB,CAAC,OAAO,CAAC,EACjC,qBAAqB,CAAC,OAAO,CAAC,CAC/B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,CAAC,OAAO,IAAI;IAC5C,MAAM,EAAE,SAAS,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;CACrD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,wBAAwB,EAAE,IAAI,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,CAAC,OAAO,EAAE,QAAQ,IAAI;IAC1D,qBAAqB,CAAC,OAAO,CAAC;CAC/B,SAAS,CAAC,KAAK,CAAC,GACb,QAAQ,GACR,QAAQ,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC,CAAC;AAEzE,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAC7B,SAAS,GAAG,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,CAAC,cAAc,IAAI,IAAI,CAC5D,cAAc,EACd,mBAAmB,CACpB,GAAG;KAEA,OAAO,IAAI,mBAAmB,GAAG,MAAM,cAAc,GACpD,cAAc,CAAC,OAAO,CAAC,SAAS,CACjC,MAAM,EAAE,MAAM,OAAO,EACrB,KAAK,EAAE,MAAM,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,QAAQ,KACrB,MAAM,OAAO,GACd,CAAC,aAAa,SAAS,OAAO,EAC5B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,0BAA0B,CAAC,aAAa,EAAE,QAAQ,CAAC,KACzD,OAAO,GACZ,cAAc,CAAC,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,SAAS,MAAM,EAC5D,EAAE,EAAE,cAAc,GACjB,2BAA2B,CAAC,cAAc,CAAC,CAE7C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Minimal logger shape, so this does not depend on the telemetry package. */
|
|
2
|
+
export interface ForgivingDecryptionLogger {
|
|
3
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Wraps an EntityManager so hydrating reads degrade instead of throwing.
|
|
7
|
+
*
|
|
8
|
+
* Returns a Proxy; every non-read member passes through untouched. Reads that
|
|
9
|
+
* succeed are unaffected and pay nothing.
|
|
10
|
+
*/
|
|
11
|
+
export declare function wrapEmWithForgivingDecryption<TEntityManager extends object>(em: TEntityManager, logger: ForgivingDecryptionLogger): TEntityManager;
|
|
12
|
+
//# sourceMappingURL=forgivingDecryptionEm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forgivingDecryptionEm.d.ts","sourceRoot":"","sources":["../../src/persistence/forgivingDecryptionEm.ts"],"names":[],"mappings":"AA2FA,8EAA8E;AAC9E,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7D;AAkBD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,cAAc,SAAS,MAAM,EACzE,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,yBAAyB,GAChC,cAAc,CAqDhB"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export { ComplianceLevel, type ComplianceLevel as ComplianceLevelType, getComplianceMetadata, getEntityComplianceFields, entityHasEncryptedFields, RetentionAction, type RetentionAction as RetentionActionType, type RetentionPolicy, RetentionDuration, parseDuration, subtractDuration, type ParsedDuration, getEntityRetention, getAllRetentionPolicies, getEntityUserIdField, getAllUserIdFields } from './complianceTypes';
|
|
1
|
+
export { ComplianceLevel, type ComplianceLevel as ComplianceLevelType, getComplianceMetadata, getEntityComplianceFields, entityHasEncryptedFields, RetentionAction, type RetentionAction as RetentionActionType, type RetentionPolicy, RetentionDuration, parseDuration, subtractDuration, type ParsedDuration, getEntityRetention, getAllRetentionPolicies, getEntityUserIdField, getAllUserIdFields, type EncryptedComplianceLevel, type EncryptedKeysOf, type RequiresEncryptionContext, type SelectionAvoidsEncryptedColumns } from './complianceTypes';
|
|
2
|
+
export { wrapEmWithForgivingDecryption, type ForgivingDecryptionLogger } from './forgivingDecryptionEm';
|
|
3
|
+
export { asEncryptionSafe, type ContextFreeKeysOfSchema, type ContextFreeReadOptions, type DecryptingReadOptions, type EncryptedKeysOfSchema, type EncryptionAwareReadOptions, type EncryptionSafeEntityManager, type HydratingReadMethod, type PropertiesOfSchema, type SchemaRequiresEncryptionContext } from './encryptionSafeEm';
|
|
2
4
|
export { fp } from './compliancePropertyBuilder';
|
|
3
5
|
export { defineComplianceEntity } from './defineComplianceEntity';
|
|
4
6
|
export { wrapEmWithNativeQueryBlocking } from './complianceEventSubscriber';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,KAAK,eAAe,IAAI,mBAAmB,EAC3C,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EAExB,eAAe,EACf,KAAK,eAAe,IAAI,mBAAmB,EAC3C,KAAK,eAAe,EACpB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,KAAK,cAAc,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,KAAK,eAAe,IAAI,mBAAmB,EAC3C,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EAExB,eAAe,EACf,KAAK,eAAe,IAAI,mBAAmB,EAC3C,KAAK,eAAe,EACpB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,KAAK,cAAc,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EACrC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,6BAA6B,EAC7B,KAAK,yBAAyB,EAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,+BAA+B,EACrC,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAGjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAG5E,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAErE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
|
package/lib/persistence/index.js
CHANGED
|
@@ -40,6 +40,7 @@ __export(persistence_exports, {
|
|
|
40
40
|
RetentionDuration: () => RetentionDuration,
|
|
41
41
|
RlsEventSubscriber: () => RlsEventSubscriber,
|
|
42
42
|
TENANT_FILTER_NAME: () => TENANT_FILTER_NAME,
|
|
43
|
+
asEncryptionSafe: () => asEncryptionSafe,
|
|
43
44
|
createTenantFilterDef: () => createTenantFilterDef,
|
|
44
45
|
defineComplianceEntity: () => defineComplianceEntity,
|
|
45
46
|
entityHasEncryptedFields: () => entityHasEncryptedFields,
|
|
@@ -59,6 +60,7 @@ __export(persistence_exports, {
|
|
|
59
60
|
setupTenantFilter: () => setupTenantFilter,
|
|
60
61
|
subtractDuration: () => subtractDuration,
|
|
61
62
|
withEncryptionContext: () => withEncryptionContext,
|
|
63
|
+
wrapEmWithForgivingDecryption: () => wrapEmWithForgivingDecryption,
|
|
62
64
|
wrapEmWithNativeQueryBlocking: () => wrapEmWithNativeQueryBlocking,
|
|
63
65
|
wrapEmWithTenantContext: () => wrapEmWithTenantContext
|
|
64
66
|
});
|
|
@@ -147,6 +149,84 @@ function getAllRetentionPolicies() {
|
|
|
147
149
|
return retentionRegistry;
|
|
148
150
|
}
|
|
149
151
|
|
|
152
|
+
// src/persistence/forgivingDecryptionEm.ts
|
|
153
|
+
var ENCRYPTED_LEVELS = /* @__PURE__ */ new Set([
|
|
154
|
+
"pii",
|
|
155
|
+
"phi",
|
|
156
|
+
"pci"
|
|
157
|
+
]);
|
|
158
|
+
var HYDRATING_READS = /* @__PURE__ */ new Set([
|
|
159
|
+
"findOne",
|
|
160
|
+
"findOneOrFail",
|
|
161
|
+
"find",
|
|
162
|
+
"findAll",
|
|
163
|
+
"findAndCount"
|
|
164
|
+
]);
|
|
165
|
+
var isDecryptionFailure = (error) => error instanceof Error && (error.message.includes("Failed to decrypt encrypted column value") || error.message.includes(
|
|
166
|
+
"Decryption failed: ciphertext is corrupted or the wrong key was used"
|
|
167
|
+
));
|
|
168
|
+
var resolveEntityName = (entity) => {
|
|
169
|
+
if (typeof entity === "string") return entity;
|
|
170
|
+
if (entity == null) return void 0;
|
|
171
|
+
if (typeof entity === "object") {
|
|
172
|
+
const named = entity;
|
|
173
|
+
if (typeof named.name === "string") return named.name;
|
|
174
|
+
if (typeof named.className === "string") return named.className;
|
|
175
|
+
}
|
|
176
|
+
if (typeof entity === "function") {
|
|
177
|
+
return entity.name;
|
|
178
|
+
}
|
|
179
|
+
return void 0;
|
|
180
|
+
};
|
|
181
|
+
var encryptedColumnsOf = (entityName) => {
|
|
182
|
+
const fields = getEntityComplianceFields(entityName);
|
|
183
|
+
if (!fields) return [];
|
|
184
|
+
return [...fields.entries()].filter(([, level]) => ENCRYPTED_LEVELS.has(level)).map(([field]) => field);
|
|
185
|
+
};
|
|
186
|
+
var buildWarning = (entityName, dropped) => [
|
|
187
|
+
`[encryption] Read of '${entityName}' could not decrypt ${dropped.length} column(s) and returned without them: ${dropped.join(", ")}. The row was NOT modified. Fix this properly by either (a) binding the owning tenant \u2014 wrapEmWithTenantContext(em, tenantId), or withEncryptionContext(tenantId, ...) \u2014 before the read, or (b) if the tenant genuinely is not known yet, because this read is what discovers it, selecting only the columns you need: findOne(${entityName}, where, { fields: [...] }). If the tenant WAS bound correctly, this is not a context problem \u2014 suspect real ciphertext corruption and investigate the row.`,
|
|
188
|
+
{ entity: entityName, droppedColumns: dropped }
|
|
189
|
+
];
|
|
190
|
+
function wrapEmWithForgivingDecryption(em, logger) {
|
|
191
|
+
return new Proxy(em, {
|
|
192
|
+
get(target, prop, receiver) {
|
|
193
|
+
const value = Reflect.get(target, prop, receiver);
|
|
194
|
+
if (typeof prop !== "string" || !HYDRATING_READS.has(prop)) {
|
|
195
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
196
|
+
}
|
|
197
|
+
if (typeof value !== "function") return value;
|
|
198
|
+
const read = value;
|
|
199
|
+
return async (...args) => {
|
|
200
|
+
try {
|
|
201
|
+
return await read.apply(target, args);
|
|
202
|
+
} catch (error) {
|
|
203
|
+
if (!isDecryptionFailure(error)) throw error;
|
|
204
|
+
const entityName = resolveEntityName(args[0]);
|
|
205
|
+
const dropped = entityName ? encryptedColumnsOf(entityName) : [];
|
|
206
|
+
if (!entityName || dropped.length === 0) throw error;
|
|
207
|
+
const metadata = target.getMetadata?.();
|
|
208
|
+
const meta = metadata?.find?.(entityName);
|
|
209
|
+
const allProps = meta?.props ? Object.keys(meta.props) : [];
|
|
210
|
+
const safeFields = allProps.filter((p3) => !dropped.includes(p3));
|
|
211
|
+
if (safeFields.length === 0) throw error;
|
|
212
|
+
const [message, meta_] = buildWarning(entityName, dropped);
|
|
213
|
+
logger.warn(message, meta_);
|
|
214
|
+
const [entity, where, options] = args;
|
|
215
|
+
return await read.call(target, entity, where, {
|
|
216
|
+
...options ?? {},
|
|
217
|
+
fields: safeFields
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// src/persistence/encryptionSafeEm.ts
|
|
226
|
+
function asEncryptionSafe(em) {
|
|
227
|
+
return em;
|
|
228
|
+
}
|
|
229
|
+
|
|
150
230
|
// src/persistence/compliancePropertyBuilder.ts
|
|
151
231
|
var import_common = require("@forklaunch/common");
|
|
152
232
|
var import_core2 = require("@mikro-orm/core");
|
|
@@ -358,7 +438,7 @@ function wrapUnclassified(builder) {
|
|
|
358
438
|
}
|
|
359
439
|
});
|
|
360
440
|
}
|
|
361
|
-
var
|
|
441
|
+
var ENCRYPTED_LEVELS2 = /* @__PURE__ */ new Set([
|
|
362
442
|
"pii",
|
|
363
443
|
"phi",
|
|
364
444
|
"pci"
|
|
@@ -377,7 +457,7 @@ function resolveEncryptedTypeArgs(options) {
|
|
|
377
457
|
return { elementRuntimeType: "string", isArray };
|
|
378
458
|
}
|
|
379
459
|
function wrapClassified(builder, level) {
|
|
380
|
-
if (
|
|
460
|
+
if (ENCRYPTED_LEVELS2.has(level)) {
|
|
381
461
|
const options = builder["~options"];
|
|
382
462
|
if (options) {
|
|
383
463
|
const { elementRuntimeType, isArray } = resolveEncryptedTypeArgs(options);
|
|
@@ -635,7 +715,7 @@ var FieldEncryptor = class {
|
|
|
635
715
|
};
|
|
636
716
|
|
|
637
717
|
// src/persistence/complianceEventSubscriber.ts
|
|
638
|
-
var
|
|
718
|
+
var ENCRYPTED_LEVELS3 = /* @__PURE__ */ new Set([
|
|
639
719
|
"pii",
|
|
640
720
|
"phi",
|
|
641
721
|
"pci"
|
|
@@ -650,12 +730,12 @@ function wrapEmWithNativeQueryBlocking(em) {
|
|
|
650
730
|
get(target, prop, receiver) {
|
|
651
731
|
if (typeof prop === "string" && BLOCKED_METHODS.includes(prop)) {
|
|
652
732
|
return (entityNameOrEntity, ...rest) => {
|
|
653
|
-
const entityName =
|
|
733
|
+
const entityName = resolveEntityName2(entityNameOrEntity);
|
|
654
734
|
if (entityName) {
|
|
655
735
|
const fields = getEntityComplianceFields(entityName);
|
|
656
736
|
if (fields) {
|
|
657
737
|
for (const [fieldName, level] of fields) {
|
|
658
|
-
if (
|
|
738
|
+
if (ENCRYPTED_LEVELS3.has(level)) {
|
|
659
739
|
throw new EncryptionRequiredError(
|
|
660
740
|
`${prop}() blocked on entity '${entityName}' because field '${fieldName}' has compliance level '${level}'. Use em.create() + em.flush() instead to ensure encryption.`
|
|
661
741
|
);
|
|
@@ -675,7 +755,7 @@ function wrapEmWithNativeQueryBlocking(em) {
|
|
|
675
755
|
}
|
|
676
756
|
});
|
|
677
757
|
}
|
|
678
|
-
function
|
|
758
|
+
function resolveEntityName2(entityNameOrEntity) {
|
|
679
759
|
if (typeof entityNameOrEntity === "string") {
|
|
680
760
|
return entityNameOrEntity;
|
|
681
761
|
}
|
|
@@ -864,6 +944,7 @@ function wrapEmWithTenantContext(em, tenantId) {
|
|
|
864
944
|
RetentionDuration,
|
|
865
945
|
RlsEventSubscriber,
|
|
866
946
|
TENANT_FILTER_NAME,
|
|
947
|
+
asEncryptionSafe,
|
|
867
948
|
createTenantFilterDef,
|
|
868
949
|
defineComplianceEntity,
|
|
869
950
|
entityHasEncryptedFields,
|
|
@@ -883,6 +964,7 @@ function wrapEmWithTenantContext(em, tenantId) {
|
|
|
883
964
|
setupTenantFilter,
|
|
884
965
|
subtractDuration,
|
|
885
966
|
withEncryptionContext,
|
|
967
|
+
wrapEmWithForgivingDecryption,
|
|
886
968
|
wrapEmWithNativeQueryBlocking,
|
|
887
969
|
wrapEmWithTenantContext
|
|
888
970
|
});
|