@futdevpro/nts-dynamo 1.15.185 → 1.15.186
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/README.md +7 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-export-bundle.interface.d.ts +30 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-export-bundle.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-export-bundle.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-export-bundle.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/index.d.ts +2 -0
- package/build/_modules/privacy-lifecycle/index.d.ts.map +1 -1
- package/build/_modules/privacy-lifecycle/index.js +3 -1
- package/build/_modules/privacy-lifecycle/index.js.map +1 -1
- package/build/_modules/privacy-lifecycle/privacy-export-bundle.control-service.d.ts +37 -0
- package/build/_modules/privacy-lifecycle/privacy-export-bundle.control-service.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/privacy-export-bundle.control-service.js +241 -0
- package/build/_modules/privacy-lifecycle/privacy-export-bundle.control-service.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -366,6 +366,7 @@ GDPR-capable products:
|
|
|
366
366
|
- identity-gated, deadline-bearing data-subject requests;
|
|
367
367
|
- explicit `received → identity-verified → scoped → planned → executing → verifying` processing;
|
|
368
368
|
- deterministic product-domain contributors with resumable partial outcomes and documented retention bases;
|
|
369
|
+
- bounded deterministic assembly of completed, checksum-verified multi-contributor JSON export bundles;
|
|
369
370
|
- append-only, checksummed legal acceptances;
|
|
370
371
|
- versioned, purpose-specific consent grants and withdrawals.
|
|
371
372
|
|
|
@@ -373,6 +374,12 @@ The Bedrock module coordinates state and evidence only. Each consuming product m
|
|
|
373
374
|
implement hard-delete/anonymization/export behavior, and provide transaction-safe persistence. A request is
|
|
374
375
|
never reported complete while a registered contributor has a failed outcome.
|
|
375
376
|
|
|
377
|
+
The export-bundle assembler accepts only server-derived request, subject and organization authority. It reads
|
|
378
|
+
encrypted contributor artifacts through the existing exact-scope artifact boundary, validates each outcome and
|
|
379
|
+
checksum, sorts contributors deterministically and returns sensitive JSON only in memory. The consuming product
|
|
380
|
+
still owns step-up authorization, response delivery, filename policy and cache-prevention headers, and must never
|
|
381
|
+
log or persist the returned plaintext without equivalent encryption and expiry controls.
|
|
382
|
+
|
|
376
383
|
## Modules Overview
|
|
377
384
|
|
|
378
385
|
Dynamo-NTS is organized into focused modules, each providing specific functionality:
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { DyNTS_PrivacyContributorOutcome_Interface } from './privacy-contributor-outcome.interface';
|
|
2
|
+
import { DyNTS_PrivacyRequestRecord_Interface } from './privacy-request-record.interface';
|
|
3
|
+
import { DyNTS_PrivacyExportArtifactLookup_Interface, DyNTS_PrivacyExportArtifactReadResult_Interface } from './privacy-export-artifact.interface';
|
|
4
|
+
/** Exact trusted authority used to assemble one completed privacy export. */
|
|
5
|
+
export interface DyNTS_PrivacyExportBundleRequest_Interface {
|
|
6
|
+
contractVersion: 'dynts-privacy-export-bundle-request/1';
|
|
7
|
+
requestId: string;
|
|
8
|
+
subjectId: string;
|
|
9
|
+
organizationId: string;
|
|
10
|
+
}
|
|
11
|
+
/** Minimal persistence reads required by the reusable bundle assembler. */
|
|
12
|
+
export interface DyNTS_PrivacyExportBundleLifecycleReader_Interface {
|
|
13
|
+
findRequestById(requestId: string): Promise<DyNTS_PrivacyRequestRecord_Interface | null>;
|
|
14
|
+
listContributorOutcomes(requestId: string): Promise<DyNTS_PrivacyContributorOutcome_Interface[]>;
|
|
15
|
+
}
|
|
16
|
+
/** Exact-authority artifact read boundary required by the reusable bundle assembler. */
|
|
17
|
+
export interface DyNTS_PrivacyExportBundleArtifactReader_Interface {
|
|
18
|
+
read(request: DyNTS_PrivacyExportArtifactLookup_Interface): Promise<DyNTS_PrivacyExportArtifactReadResult_Interface>;
|
|
19
|
+
}
|
|
20
|
+
/** Content-free metadata plus sensitive in-memory JSON returned to an authorized delivery layer. */
|
|
21
|
+
export interface DyNTS_PrivacyExportBundleResult_Interface {
|
|
22
|
+
contractVersion: 'dynts-privacy-export-bundle-result/1';
|
|
23
|
+
contentType: 'application/json';
|
|
24
|
+
plaintext: string;
|
|
25
|
+
bundleChecksum: string;
|
|
26
|
+
plaintextBytes: number;
|
|
27
|
+
contributorCount: number;
|
|
28
|
+
earliestArtifactExpiresAt: string;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=privacy-export-bundle.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-export-bundle.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/privacy-lifecycle/_models/privacy-export-bundle.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yCAAyC,EAAE,MAAM,yCAAyC,CAAC;AACpG,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,EACL,2CAA2C,EAC3C,+CAA+C,EAChD,MAAM,qCAAqC,CAAC;AAE7C,6EAA6E;AAC7E,MAAM,WAAW,0CAA0C;IACzD,eAAe,EAAE,uCAAuC,CAAC;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,2EAA2E;AAC3E,MAAM,WAAW,kDAAkD;IACjE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAC;IACzF,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,yCAAyC,EAAE,CAAC,CAAC;CAClG;AAED,wFAAwF;AACxF,MAAM,WAAW,iDAAiD;IAChE,IAAI,CACF,OAAO,EAAE,2CAA2C,GACnD,OAAO,CAAC,+CAA+C,CAAC,CAAC;CAC7D;AAED,oGAAoG;AACpG,MAAM,WAAW,yCAAyC;IACxD,eAAe,EAAE,sCAAsC,CAAC;IACxD,WAAW,EAAE,kBAAkB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB,EAAE,MAAM,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-export-bundle.interface.js","sourceRoot":"","sources":["../../../../src/_modules/privacy-lifecycle/_models/privacy-export-bundle.interface.ts"],"names":[],"mappings":""}
|
|
@@ -3,6 +3,7 @@ export { DyNTS_PrivacyRequestCursor_ControlService } from './privacy-request-cur
|
|
|
3
3
|
export { DyNTS_PrivacyLedger_ControlService } from './privacy-ledger.control-service';
|
|
4
4
|
export { DyNTS_PrivacyExportArtifact_ControlService } from './privacy-export-artifact.control-service';
|
|
5
5
|
export { DyNTS_PrivacyExportArtifact_MongoStore } from './privacy-export-artifact.mongo-store';
|
|
6
|
+
export { DyNTS_PrivacyExportBundle_ControlService } from './privacy-export-bundle.control-service';
|
|
6
7
|
export { DyNTS_PrivacyConsentDecision_Type } from './_enums/privacy-consent-decision.type-enum';
|
|
7
8
|
export { DyNTS_PrivacyContributorAction_Type } from './_enums/privacy-contributor-action.type-enum';
|
|
8
9
|
export { DyNTS_PrivacyContributorOutcome_Type } from './_enums/privacy-contributor-outcome.type-enum';
|
|
@@ -39,4 +40,5 @@ export { DyNTS_PrivacyRequestListResult_Interface, DyNTS_PrivacyRequestPersisten
|
|
|
39
40
|
export { DyNTS_PrivacyRequestResult_Interface } from './_models/privacy-request-result.interface';
|
|
40
41
|
export { DyNTS_PrivacyRequestView_Interface } from './_models/privacy-request-view.interface';
|
|
41
42
|
export { DyNTS_PrivacyExportArtifactAuthority_Interface, DyNTS_PrivacyExportArtifactCipher_Interface, DyNTS_PrivacyExportArtifactContext_Interface, DyNTS_PrivacyExportArtifactCreateResult_Interface, DyNTS_PrivacyExportArtifactLookup_Interface, DyNTS_PrivacyExportArtifactReadResult_Interface, DyNTS_PrivacyExportArtifactRecord_Interface, DyNTS_PrivacyExportArtifactSealed_Interface, DyNTS_PrivacyExportArtifactStore_Interface, DyNTS_PrivacyExportArtifactView_Interface, DyNTS_PrivacyExportArtifactWrite_Interface } from './_models/privacy-export-artifact.interface';
|
|
43
|
+
export { DyNTS_PrivacyExportBundleArtifactReader_Interface, DyNTS_PrivacyExportBundleLifecycleReader_Interface, DyNTS_PrivacyExportBundleRequest_Interface, DyNTS_PrivacyExportBundleResult_Interface } from './_models/privacy-export-bundle.interface';
|
|
42
44
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/privacy-lifecycle/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/privacy-lifecycle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qCAAqC,EAAE,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AACrG,OAAO,EAAE,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAE,0CAA0C,EAAE,MAAM,2CAA2C,CAAC;AACvG,OAAO,EAAE,sCAAsC,EAAE,MAAM,uCAAuC,CAAC;AAC/F,OAAO,EAAE,wCAAwC,EAAE,MAAM,yCAAyC,CAAC;AACnG,OAAO,EAAE,iCAAiC,EAAE,MAAM,6CAA6C,CAAC;AAChG,OAAO,EAAE,mCAAmC,EAAE,MAAM,+CAA+C,CAAC;AACpG,OAAO,EAAE,oCAAoC,EAAE,MAAM,gDAAgD,CAAC;AACtG,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,yCAAyC,EAAE,MAAM,iDAAiD,CAAC;AAC5G,OAAO,EAAE,yCAAyC,EAAE,MAAM,iDAAiD,CAAC;AAC5G,OAAO,EAAE,sCAAsC,EAAE,MAAM,8CAA8C,CAAC;AACtG,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,wCAAwC,EAAE,MAAM,gDAAgD,CAAC;AAC1G,OAAO,EAAE,mCAAmC,EAAE,MAAM,2CAA2C,CAAC;AAChG,OAAO,EACL,+CAA+C,EAChD,MAAM,wDAAwD,CAAC;AAChE,OAAO,EAAE,oCAAoC,EAAE,MAAM,4CAA4C,CAAC;AAClG,OAAO,EAAE,oCAAoC,EAAE,MAAM,4CAA4C,CAAC;AAClG,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAC9F,OAAO,EAAE,oCAAoC,EAAE,MAAM,4CAA4C,CAAC;AAClG,OAAO,EAAE,mCAAmC,EAAE,MAAM,2CAA2C,CAAC;AAChG,OAAO,EAAE,qCAAqC,EAAE,MAAM,6CAA6C,CAAC;AACpG,OAAO,EACL,6CAA6C,EAC7C,uCAAuC,EACvC,sCAAsC,EACtC,uCAAuC,EACxC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,wCAAwC,EACxC,gDAAgD,EACjD,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,2CAA2C,EAAE,MAAM,oDAAoD,CAAC;AACjH,OAAO,EACL,uDAAuD,EACxD,MAAM,iEAAiE,CAAC;AACzE,OAAO,EAAE,4CAA4C,EAAE,MAAM,qDAAqD,CAAC;AACnH,OAAO,EACL,0CAA0C,EAC3C,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,sCAAsC,EAAE,MAAM,8CAA8C,CAAC;AACtG,OAAO,EAAE,0CAA0C,EAAE,MAAM,mDAAmD,CAAC;AAC/G,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAC9F,OAAO,EACL,qDAAqD,EACtD,MAAM,+DAA+D,CAAC;AACvE,OAAO,EAAE,oCAAoC,EAAE,MAAM,4CAA4C,CAAC;AAClG,OAAO,EACL,yCAAyC,EAC1C,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EACL,kCAAkC,EAClC,uCAAuC,EACxC,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,wCAAwC,EACxC,mDAAmD,EACpD,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,oCAAoC,EAAE,MAAM,4CAA4C,CAAC;AAClG,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAC9F,OAAO,EACL,8CAA8C,EAC9C,2CAA2C,EAC3C,4CAA4C,EAC5C,iDAAiD,EACjD,2CAA2C,EAC3C,+CAA+C,EAC/C,2CAA2C,EAC3C,2CAA2C,EAC3C,0CAA0C,EAC1C,yCAAyC,EACzC,0CAA0C,EAC3C,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,iDAAiD,EACjD,kDAAkD,EAClD,0CAA0C,EAC1C,yCAAyC,EAC1C,MAAM,2CAA2C,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DyNTS_PrivacyRequest_Type = exports.DyNTS_PrivacyRequestState_Type = exports.DyNTS_PrivacyContributorOutcome_Type = exports.DyNTS_PrivacyContributorAction_Type = exports.DyNTS_PrivacyConsentDecision_Type = exports.DyNTS_PrivacyExportArtifact_MongoStore = exports.DyNTS_PrivacyExportArtifact_ControlService = exports.DyNTS_PrivacyLedger_ControlService = exports.DyNTS_PrivacyRequestCursor_ControlService = exports.DyNTS_PrivacyLifecycle_ControlService = void 0;
|
|
3
|
+
exports.DyNTS_PrivacyRequest_Type = exports.DyNTS_PrivacyRequestState_Type = exports.DyNTS_PrivacyContributorOutcome_Type = exports.DyNTS_PrivacyContributorAction_Type = exports.DyNTS_PrivacyConsentDecision_Type = exports.DyNTS_PrivacyExportBundle_ControlService = exports.DyNTS_PrivacyExportArtifact_MongoStore = exports.DyNTS_PrivacyExportArtifact_ControlService = exports.DyNTS_PrivacyLedger_ControlService = exports.DyNTS_PrivacyRequestCursor_ControlService = exports.DyNTS_PrivacyLifecycle_ControlService = void 0;
|
|
4
4
|
var privacy_lifecycle_control_service_1 = require("./privacy-lifecycle.control-service");
|
|
5
5
|
Object.defineProperty(exports, "DyNTS_PrivacyLifecycle_ControlService", { enumerable: true, get: function () { return privacy_lifecycle_control_service_1.DyNTS_PrivacyLifecycle_ControlService; } });
|
|
6
6
|
var privacy_request_cursor_control_service_1 = require("./privacy-request-cursor.control-service");
|
|
@@ -11,6 +11,8 @@ var privacy_export_artifact_control_service_1 = require("./privacy-export-artifa
|
|
|
11
11
|
Object.defineProperty(exports, "DyNTS_PrivacyExportArtifact_ControlService", { enumerable: true, get: function () { return privacy_export_artifact_control_service_1.DyNTS_PrivacyExportArtifact_ControlService; } });
|
|
12
12
|
var privacy_export_artifact_mongo_store_1 = require("./privacy-export-artifact.mongo-store");
|
|
13
13
|
Object.defineProperty(exports, "DyNTS_PrivacyExportArtifact_MongoStore", { enumerable: true, get: function () { return privacy_export_artifact_mongo_store_1.DyNTS_PrivacyExportArtifact_MongoStore; } });
|
|
14
|
+
var privacy_export_bundle_control_service_1 = require("./privacy-export-bundle.control-service");
|
|
15
|
+
Object.defineProperty(exports, "DyNTS_PrivacyExportBundle_ControlService", { enumerable: true, get: function () { return privacy_export_bundle_control_service_1.DyNTS_PrivacyExportBundle_ControlService; } });
|
|
14
16
|
var privacy_consent_decision_type_enum_1 = require("./_enums/privacy-consent-decision.type-enum");
|
|
15
17
|
Object.defineProperty(exports, "DyNTS_PrivacyConsentDecision_Type", { enumerable: true, get: function () { return privacy_consent_decision_type_enum_1.DyNTS_PrivacyConsentDecision_Type; } });
|
|
16
18
|
var privacy_contributor_action_type_enum_1 = require("./_enums/privacy-contributor-action.type-enum");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/privacy-lifecycle/index.ts"],"names":[],"mappings":";;;AAAA,yFAA4F;AAAnF,0JAAA,qCAAqC,OAAA;AAC9C,mGAAqG;AAA5F,mKAAA,yCAAyC,OAAA;AAClD,mFAAsF;AAA7E,oJAAA,kCAAkC,OAAA;AAC3C,qGAAuG;AAA9F,qKAAA,0CAA0C,OAAA;AACnD,6FAA+F;AAAtF,6JAAA,sCAAsC,OAAA;AAC/C,kGAAgG;AAAvF,uJAAA,iCAAiC,OAAA;AAC1C,sGAAoG;AAA3F,2JAAA,mCAAmC,OAAA;AAC5C,wGAAsG;AAA7F,6JAAA,oCAAoC,OAAA;AAC7C,4FAA0F;AAAjF,iJAAA,8BAA8B,OAAA;AACvC,gFAA+E;AAAtE,sIAAA,yBAAyB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/privacy-lifecycle/index.ts"],"names":[],"mappings":";;;AAAA,yFAA4F;AAAnF,0JAAA,qCAAqC,OAAA;AAC9C,mGAAqG;AAA5F,mKAAA,yCAAyC,OAAA;AAClD,mFAAsF;AAA7E,oJAAA,kCAAkC,OAAA;AAC3C,qGAAuG;AAA9F,qKAAA,0CAA0C,OAAA;AACnD,6FAA+F;AAAtF,6JAAA,sCAAsC,OAAA;AAC/C,iGAAmG;AAA1F,iKAAA,wCAAwC,OAAA;AACjD,kGAAgG;AAAvF,uJAAA,iCAAiC,OAAA;AAC1C,sGAAoG;AAA3F,2JAAA,mCAAmC,OAAA;AAC5C,wGAAsG;AAA7F,6JAAA,oCAAoC,OAAA;AAC7C,4FAA0F;AAAjF,iJAAA,8BAA8B,OAAA;AACvC,gFAA+E;AAAtE,sIAAA,yBAAyB,OAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DyNTS_PrivacyExportBundleArtifactReader_Interface, DyNTS_PrivacyExportBundleLifecycleReader_Interface, DyNTS_PrivacyExportBundleRequest_Interface, DyNTS_PrivacyExportBundleResult_Interface } from './_models/privacy-export-bundle.interface';
|
|
2
|
+
/**
|
|
3
|
+
* Assembles verified contributor artifacts for one completed privacy export.
|
|
4
|
+
* The returned plaintext is sensitive and must never be logged, cached or persisted unencrypted.
|
|
5
|
+
*/
|
|
6
|
+
export declare class DyNTS_PrivacyExportBundle_ControlService {
|
|
7
|
+
private static readonly absoluteMaxContributors;
|
|
8
|
+
private static readonly absoluteMaxBundleBytes;
|
|
9
|
+
private static readonly bundlePrefix;
|
|
10
|
+
private static readonly bundleSuffix;
|
|
11
|
+
private readonly lifecycleReader;
|
|
12
|
+
private readonly artifactReader;
|
|
13
|
+
private readonly maxContributors;
|
|
14
|
+
private readonly maxBundleBytes;
|
|
15
|
+
/** Creates a bounded assembler without owning authentication, persistence, delivery or retention policy. */
|
|
16
|
+
constructor(set: {
|
|
17
|
+
lifecycleReader: DyNTS_PrivacyExportBundleLifecycleReader_Interface;
|
|
18
|
+
artifactReader: DyNTS_PrivacyExportBundleArtifactReader_Interface;
|
|
19
|
+
maxContributors: number;
|
|
20
|
+
maxBundleBytes: number;
|
|
21
|
+
});
|
|
22
|
+
/** Builds a deterministic JSON envelope after exact lifecycle, authority and artifact-integrity validation. */
|
|
23
|
+
assemble(request: DyNTS_PrivacyExportBundleRequest_Interface): Promise<DyNTS_PrivacyExportBundleResult_Interface>;
|
|
24
|
+
private requireCompletedRequest;
|
|
25
|
+
private requireOutcomes;
|
|
26
|
+
private readArtifact;
|
|
27
|
+
private validateArtifact;
|
|
28
|
+
private validOutcome;
|
|
29
|
+
private validateRequest;
|
|
30
|
+
private boundedText;
|
|
31
|
+
private hasExactKeys;
|
|
32
|
+
private validDate;
|
|
33
|
+
private validJson;
|
|
34
|
+
private checksum;
|
|
35
|
+
private error;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=privacy-export-bundle.control-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-export-bundle.control-service.d.ts","sourceRoot":"","sources":["../../../src/_modules/privacy-lifecycle/privacy-export-bundle.control-service.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,iDAAiD,EACjD,kDAAkD,EAClD,0CAA0C,EAC1C,yCAAyC,EAC1C,MAAM,2CAA2C,CAAC;AAInD;;;GAGG;AACH,qBAAa,wCAAwC;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAe;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAsB;IACpE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAiF;IACrH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqD;IACrF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoD;IACnF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,4GAA4G;gBAChG,GAAG,EAAE;QACf,eAAe,EAAE,kDAAkD,CAAC;QACpE,cAAc,EAAE,iDAAiD,CAAC;QAClE,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;KACxB;IAoBD,+GAA+G;IAClG,QAAQ,CACnB,OAAO,EAAE,0CAA0C,GAClD,OAAO,CAAC,yCAAyC,CAAC;YA+DvC,uBAAuB;YA8BvB,eAAe;YAiCf,YAAY;IAmB1B,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,KAAK;CAiBd"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyNTS_PrivacyExportBundle_ControlService = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
6
|
+
const privacy_contributor_action_type_enum_1 = require("./_enums/privacy-contributor-action.type-enum");
|
|
7
|
+
const privacy_contributor_outcome_type_enum_1 = require("./_enums/privacy-contributor-outcome.type-enum");
|
|
8
|
+
const privacy_request_state_type_enum_1 = require("./_enums/privacy-request-state.type-enum");
|
|
9
|
+
const privacy_request_type_enum_1 = require("./_enums/privacy-request.type-enum");
|
|
10
|
+
/**
|
|
11
|
+
* Assembles verified contributor artifacts for one completed privacy export.
|
|
12
|
+
* The returned plaintext is sensitive and must never be logged, cached or persisted unencrypted.
|
|
13
|
+
*/
|
|
14
|
+
class DyNTS_PrivacyExportBundle_ControlService {
|
|
15
|
+
static absoluteMaxContributors = 256;
|
|
16
|
+
static absoluteMaxBundleBytes = 33_554_432;
|
|
17
|
+
static bundlePrefix = '{"contractVersion":"dynts-privacy-export-bundle/1","contributors":[';
|
|
18
|
+
static bundleSuffix = ']}';
|
|
19
|
+
lifecycleReader;
|
|
20
|
+
artifactReader;
|
|
21
|
+
maxContributors;
|
|
22
|
+
maxBundleBytes;
|
|
23
|
+
/** Creates a bounded assembler without owning authentication, persistence, delivery or retention policy. */
|
|
24
|
+
constructor(set) {
|
|
25
|
+
if (!set.lifecycleReader
|
|
26
|
+
|| !set.artifactReader
|
|
27
|
+
|| !Number.isSafeInteger(set.maxContributors)
|
|
28
|
+
|| set.maxContributors < 1
|
|
29
|
+
|| set.maxContributors > DyNTS_PrivacyExportBundle_ControlService.absoluteMaxContributors
|
|
30
|
+
|| !Number.isSafeInteger(set.maxBundleBytes)
|
|
31
|
+
|| set.maxBundleBytes < 1
|
|
32
|
+
|| set.maxBundleBytes > DyNTS_PrivacyExportBundle_ControlService.absoluteMaxBundleBytes) {
|
|
33
|
+
throw this.error('SETTINGS_INVALID', 500);
|
|
34
|
+
}
|
|
35
|
+
this.lifecycleReader = set.lifecycleReader;
|
|
36
|
+
this.artifactReader = set.artifactReader;
|
|
37
|
+
this.maxContributors = set.maxContributors;
|
|
38
|
+
this.maxBundleBytes = set.maxBundleBytes;
|
|
39
|
+
}
|
|
40
|
+
/** Builds a deterministic JSON envelope after exact lifecycle, authority and artifact-integrity validation. */
|
|
41
|
+
async assemble(request) {
|
|
42
|
+
this.validateRequest(request);
|
|
43
|
+
const privacyRequest = await this.requireCompletedRequest(request);
|
|
44
|
+
const outcomes = await this.requireOutcomes(privacyRequest);
|
|
45
|
+
const exportOutcomes = outcomes
|
|
46
|
+
.filter((outcome) => (outcome.action === privacy_contributor_action_type_enum_1.DyNTS_PrivacyContributorAction_Type.export
|
|
47
|
+
&& outcome.outcome === privacy_contributor_outcome_type_enum_1.DyNTS_PrivacyContributorOutcome_Type.succeeded))
|
|
48
|
+
.sort((first, second) => first.contributorId < second.contributorId
|
|
49
|
+
? -1
|
|
50
|
+
: first.contributorId > second.contributorId
|
|
51
|
+
? 1
|
|
52
|
+
: 0);
|
|
53
|
+
const contributorJson = [];
|
|
54
|
+
const expiries = [];
|
|
55
|
+
let assembledBytes = Buffer.byteLength(DyNTS_PrivacyExportBundle_ControlService.bundlePrefix
|
|
56
|
+
+ DyNTS_PrivacyExportBundle_ControlService.bundleSuffix, 'utf8');
|
|
57
|
+
for (const outcome of exportOutcomes) {
|
|
58
|
+
const artifact = await this.readArtifact(request, outcome);
|
|
59
|
+
this.validateArtifact(outcome, artifact);
|
|
60
|
+
const contributor = `{"contributorId":${JSON.stringify(outcome.contributorId)},"payload":${artifact.plaintext}}`;
|
|
61
|
+
assembledBytes += Buffer.byteLength(contributor, 'utf8') + (contributorJson.length ? 1 : 0);
|
|
62
|
+
if (assembledBytes > this.maxBundleBytes) {
|
|
63
|
+
throw this.error('BUNDLE_TOO_LARGE', 413);
|
|
64
|
+
}
|
|
65
|
+
contributorJson.push(contributor);
|
|
66
|
+
expiries.push(new Date(artifact.artifact.expiresAt).getTime());
|
|
67
|
+
}
|
|
68
|
+
const plaintext = DyNTS_PrivacyExportBundle_ControlService.bundlePrefix
|
|
69
|
+
+ contributorJson.join(',')
|
|
70
|
+
+ DyNTS_PrivacyExportBundle_ControlService.bundleSuffix;
|
|
71
|
+
const plaintextBytes = Buffer.byteLength(plaintext, 'utf8');
|
|
72
|
+
if (plaintextBytes > this.maxBundleBytes) {
|
|
73
|
+
throw this.error('BUNDLE_TOO_LARGE', 413);
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
contractVersion: 'dynts-privacy-export-bundle-result/1',
|
|
77
|
+
contentType: 'application/json',
|
|
78
|
+
plaintext: plaintext,
|
|
79
|
+
bundleChecksum: this.checksum(plaintext),
|
|
80
|
+
plaintextBytes: plaintextBytes,
|
|
81
|
+
contributorCount: exportOutcomes.length,
|
|
82
|
+
earliestArtifactExpiresAt: expiries.length ? new Date(Math.min(...expiries)).toISOString() : '',
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
async requireCompletedRequest(request) {
|
|
86
|
+
let privacyRequest;
|
|
87
|
+
try {
|
|
88
|
+
privacyRequest = await this.lifecycleReader.findRequestById(request.requestId);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
throw this.error('LIFECYCLE_UNAVAILABLE', 503);
|
|
92
|
+
}
|
|
93
|
+
if (privacyRequest?.requestId !== request.requestId
|
|
94
|
+
|| privacyRequest.subjectId !== request.subjectId
|
|
95
|
+
|| privacyRequest.organizationId !== request.organizationId) {
|
|
96
|
+
throw this.error('REQUEST_NOT_FOUND', 404);
|
|
97
|
+
}
|
|
98
|
+
if (privacyRequest.type !== privacy_request_type_enum_1.DyNTS_PrivacyRequest_Type.export
|
|
99
|
+
|| privacyRequest.state !== privacy_request_state_type_enum_1.DyNTS_PrivacyRequestState_Type.completed
|
|
100
|
+
|| !this.validDate(privacyRequest.completedAt)) {
|
|
101
|
+
throw this.error('REQUEST_NOT_READY', 409);
|
|
102
|
+
}
|
|
103
|
+
return privacyRequest;
|
|
104
|
+
}
|
|
105
|
+
async requireOutcomes(request) {
|
|
106
|
+
let outcomes;
|
|
107
|
+
try {
|
|
108
|
+
outcomes = await this.lifecycleReader.listContributorOutcomes(request.requestId);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
throw this.error('LIFECYCLE_UNAVAILABLE', 503);
|
|
112
|
+
}
|
|
113
|
+
if (!Array.isArray(outcomes)
|
|
114
|
+
|| outcomes.length > this.maxContributors
|
|
115
|
+
|| new Set(outcomes.map((outcome) => (outcome?.contributorId))).size !== outcomes.length
|
|
116
|
+
|| outcomes.some((outcome) => (!this.validOutcome(outcome)))) {
|
|
117
|
+
throw this.error('OUTCOMES_INVALID', 503);
|
|
118
|
+
}
|
|
119
|
+
if (outcomes.some((outcome) => (outcome.outcome === privacy_contributor_outcome_type_enum_1.DyNTS_PrivacyContributorOutcome_Type.failed))) {
|
|
120
|
+
throw this.error('REQUEST_NOT_READY', 409);
|
|
121
|
+
}
|
|
122
|
+
return outcomes;
|
|
123
|
+
}
|
|
124
|
+
async readArtifact(request, outcome) {
|
|
125
|
+
const lookup = {
|
|
126
|
+
contractVersion: 'dynts-privacy-export-artifact-lookup/1',
|
|
127
|
+
requestId: request.requestId,
|
|
128
|
+
contributorId: outcome.contributorId,
|
|
129
|
+
subjectId: request.subjectId,
|
|
130
|
+
organizationId: request.organizationId,
|
|
131
|
+
};
|
|
132
|
+
try {
|
|
133
|
+
return await this.artifactReader.read(lookup);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
throw this.error('ARTIFACT_UNAVAILABLE', 503);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
validateArtifact(outcome, result) {
|
|
140
|
+
const plaintextBytes = typeof result?.plaintext === 'string'
|
|
141
|
+
? Buffer.byteLength(result.plaintext, 'utf8')
|
|
142
|
+
: 0;
|
|
143
|
+
if (!result?.artifact
|
|
144
|
+
|| typeof result.artifact !== 'object'
|
|
145
|
+
|| result.artifact.contractVersion !== 'dynts-privacy-export-artifact-view/1'
|
|
146
|
+
|| result.artifact.contentType !== 'application/json'
|
|
147
|
+
|| typeof result.plaintext !== 'string'
|
|
148
|
+
|| result.artifact.artifactChecksum !== outcome.artifactChecksum
|
|
149
|
+
|| result.artifact.plaintextBytes !== plaintextBytes
|
|
150
|
+
|| this.checksum(result.plaintext) !== outcome.artifactChecksum
|
|
151
|
+
|| !this.validDate(result.artifact.expiresAt)
|
|
152
|
+
|| !this.validJson(result.plaintext)) {
|
|
153
|
+
throw this.error('ARTIFACT_INVALID', 503);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
validOutcome(outcome) {
|
|
157
|
+
if (!outcome
|
|
158
|
+
|| !this.boundedText(outcome.contributorId, 128)
|
|
159
|
+
|| !Object.values(privacy_contributor_action_type_enum_1.DyNTS_PrivacyContributorAction_Type).includes(outcome.action)
|
|
160
|
+
|| !Object.values(privacy_contributor_outcome_type_enum_1.DyNTS_PrivacyContributorOutcome_Type).includes(outcome.outcome)
|
|
161
|
+
|| !Number.isSafeInteger(outcome.processedRecordCount)
|
|
162
|
+
|| outcome.processedRecordCount < 0
|
|
163
|
+
|| !this.validDate(outcome.completedAt)
|
|
164
|
+
|| (outcome.outcome === privacy_contributor_outcome_type_enum_1.DyNTS_PrivacyContributorOutcome_Type.failed && !outcome.errorCode)
|
|
165
|
+
|| (outcome.outcome !== privacy_contributor_outcome_type_enum_1.DyNTS_PrivacyContributorOutcome_Type.failed && !!outcome.errorCode)
|
|
166
|
+
|| (outcome.outcome === privacy_contributor_outcome_type_enum_1.DyNTS_PrivacyContributorOutcome_Type.retainedWithBasis
|
|
167
|
+
&& !this.boundedText(outcome.retentionBasisCode, 128))
|
|
168
|
+
|| (outcome.outcome !== privacy_contributor_outcome_type_enum_1.DyNTS_PrivacyContributorOutcome_Type.retainedWithBasis
|
|
169
|
+
&& !!outcome.retentionBasisCode)
|
|
170
|
+
|| (outcome.action === privacy_contributor_action_type_enum_1.DyNTS_PrivacyContributorAction_Type.retainWithBasis
|
|
171
|
+
&& outcome.outcome !== privacy_contributor_outcome_type_enum_1.DyNTS_PrivacyContributorOutcome_Type.retainedWithBasis
|
|
172
|
+
&& outcome.outcome !== privacy_contributor_outcome_type_enum_1.DyNTS_PrivacyContributorOutcome_Type.failed)
|
|
173
|
+
|| (outcome.action !== privacy_contributor_action_type_enum_1.DyNTS_PrivacyContributorAction_Type.retainWithBasis
|
|
174
|
+
&& outcome.outcome === privacy_contributor_outcome_type_enum_1.DyNTS_PrivacyContributorOutcome_Type.retainedWithBasis)) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
if (outcome.action === privacy_contributor_action_type_enum_1.DyNTS_PrivacyContributorAction_Type.export
|
|
178
|
+
&& outcome.outcome === privacy_contributor_outcome_type_enum_1.DyNTS_PrivacyContributorOutcome_Type.succeeded) {
|
|
179
|
+
return /^[a-f0-9]{64}$/u.test(outcome.artifactChecksum);
|
|
180
|
+
}
|
|
181
|
+
return outcome.artifactChecksum === '';
|
|
182
|
+
}
|
|
183
|
+
validateRequest(request) {
|
|
184
|
+
if (!this.hasExactKeys(request, ['contractVersion', 'requestId', 'subjectId', 'organizationId'])
|
|
185
|
+
|| request.contractVersion !== 'dynts-privacy-export-bundle-request/1'
|
|
186
|
+
|| !this.boundedText(request.requestId, 128)
|
|
187
|
+
|| !this.boundedText(request.subjectId, 128)
|
|
188
|
+
|| !this.boundedText(request.organizationId, 128)) {
|
|
189
|
+
throw this.error('REQUEST_INVALID', 400);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
boundedText(value, maximum) {
|
|
193
|
+
return typeof value === 'string'
|
|
194
|
+
&& !!value
|
|
195
|
+
&& value.trim() === value
|
|
196
|
+
&& value.length <= maximum
|
|
197
|
+
&& !/[\u0000-\u001f\u007f]/u.test(value);
|
|
198
|
+
}
|
|
199
|
+
hasExactKeys(value, expected) {
|
|
200
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
const actual = Object.keys(value).sort();
|
|
204
|
+
return actual.length === expected.length
|
|
205
|
+
&& expected.slice().sort().every((key, index) => key === actual[index]);
|
|
206
|
+
}
|
|
207
|
+
validDate(value) {
|
|
208
|
+
return typeof value === 'string' && !!value && Number.isFinite(new Date(value).getTime());
|
|
209
|
+
}
|
|
210
|
+
validJson(value) {
|
|
211
|
+
try {
|
|
212
|
+
JSON.parse(value);
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
checksum(value) {
|
|
220
|
+
return (0, node_crypto_1.createHash)('sha256').update(value, 'utf8').digest('hex');
|
|
221
|
+
}
|
|
222
|
+
error(code, status) {
|
|
223
|
+
return new fsm_dynamo_1.DyFM_Error({
|
|
224
|
+
status: status,
|
|
225
|
+
errorCode: `DYNTS|PRIVACY_EXPORT_BUNDLE|${code}`,
|
|
226
|
+
message: 'The privacy export bundle operation failed.',
|
|
227
|
+
userMessage: status === 400
|
|
228
|
+
? 'The privacy export bundle request is invalid.'
|
|
229
|
+
: status === 404
|
|
230
|
+
? 'The privacy export request was not found.'
|
|
231
|
+
: status === 409
|
|
232
|
+
? 'The privacy export request is not ready for download.'
|
|
233
|
+
: status === 413
|
|
234
|
+
? 'The privacy export bundle is too large to deliver.'
|
|
235
|
+
: 'The privacy export bundle is temporarily unavailable.',
|
|
236
|
+
issuerService: this.constructor.name,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
exports.DyNTS_PrivacyExportBundle_ControlService = DyNTS_PrivacyExportBundle_ControlService;
|
|
241
|
+
//# sourceMappingURL=privacy-export-bundle.control-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-export-bundle.control-service.js","sourceRoot":"","sources":["../../../src/_modules/privacy-lifecycle/privacy-export-bundle.control-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/nts-dynamo",
|
|
3
|
-
"version": "01.15.
|
|
3
|
+
"version": "01.15.186",
|
|
4
4
|
"description": "Dynamic NodeTS (NodeJS-Typescript), MongoDB Backend System Framework by Future Development Program Ltd.",
|
|
5
5
|
"DyBu_settings": {
|
|
6
6
|
"packageType": "server-package",
|