@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 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=privacy-export-bundle.interface.js.map
@@ -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":"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,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/privacy-lifecycle/index.ts"],"names":[],"mappings":"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"}
@@ -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":";;;AAAA,6CAAyC;AAEzC,sDAAmD;AAEnD,wGAAoG;AACpG,0GAAsG;AACtG,8FAA0F;AAC1F,kFAA+E;AAc/E;;;GAGG;AACH,MAAa,wCAAwC;IAC3C,MAAM,CAAU,uBAAuB,GAAW,GAAG,CAAC;IACtD,MAAM,CAAU,sBAAsB,GAAW,UAAU,CAAC;IAC5D,MAAM,CAAU,YAAY,GAAW,qEAAqE,CAAC;IAC7G,MAAM,CAAU,YAAY,GAAW,IAAI,CAAC;IACnC,eAAe,CAAqD;IACpE,cAAc,CAAoD;IAClE,eAAe,CAAS;IACxB,cAAc,CAAS;IAExC,4GAA4G;IAC5G,YAAY,GAKX;QACC,IACE,CAAC,GAAG,CAAC,eAAe;eACjB,CAAC,GAAG,CAAC,cAAc;eACnB,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC;eAC1C,GAAG,CAAC,eAAe,GAAG,CAAC;eACvB,GAAG,CAAC,eAAe,GAAG,wCAAwC,CAAC,uBAAuB;eACtF,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;eACzC,GAAG,CAAC,cAAc,GAAG,CAAC;eACtB,GAAG,CAAC,cAAc,GAAG,wCAAwC,CAAC,sBAAsB,EACvF,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;IAC3C,CAAC;IAED,+GAA+G;IACxG,KAAK,CAAC,QAAQ,CACnB,OAAmD;QAEnD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,cAAc,GAAyC,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACzG,MAAM,QAAQ,GAAgD,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACzG,MAAM,cAAc,GAAgD,QAAQ;aACzE,MAAM,CAAC,CAAC,OAAkD,EAAW,EAAE,CAAC,CACvE,OAAO,CAAC,MAAM,KAAK,0EAAmC,CAAC,MAAM;eAC1D,OAAO,CAAC,OAAO,KAAK,4EAAoC,CAAC,SAAS,CACtE,CAAC;aACD,IAAI,CAAC,CACJ,KAAgD,EAChD,MAAiD,EACzC,EAAE,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa;YACrD,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa;gBAC1C,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC,CAAC,CAAC;QACX,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,cAAc,GAAW,MAAM,CAAC,UAAU,CAC5C,wCAAwC,CAAC,YAAY;cACjD,wCAAwC,CAAC,YAAY,EACzD,MAAM,CACP,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAoD,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE5G,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACzC,MAAM,WAAW,GAAW,oBAAoB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,cACnF,QAAQ,CAAC,SACX,GAAG,CAAC;YAEJ,cAAc,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5F,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;YAED,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,SAAS,GAAW,wCAAwC,CAAC,YAAY;cAC3E,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;cACzB,wCAAwC,CAAC,YAAY,CAAC;QAC1D,MAAM,cAAc,GAAW,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEpE,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO;YACL,eAAe,EAAE,sCAAsC;YACvD,WAAW,EAAE,kBAAkB;YAC/B,SAAS,EAAE,SAAS;YACpB,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACxC,cAAc,EAAE,cAAc;YAC9B,gBAAgB,EAAE,cAAc,CAAC,MAAM;YACvC,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;SAChG,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,OAAmD;QAEnD,IAAI,cAA2D,CAAC;QAEhE,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjF,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;QAED,IACE,cAAc,EAAE,SAAS,KAAK,OAAO,CAAC,SAAS;eAC5C,cAAc,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;eAC9C,cAAc,CAAC,cAAc,KAAK,OAAO,CAAC,cAAc,EAC3D,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,IACE,cAAc,CAAC,IAAI,KAAK,qDAAyB,CAAC,MAAM;eACrD,cAAc,CAAC,KAAK,KAAK,gEAA8B,CAAC,SAAS;eACjE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,EAC9C,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,OAA6C;QAE7C,IAAI,QAAqD,CAAC;QAE1D,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnF,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;QAED,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;eACrB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe;eACtC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAkD,EAAU,EAAE,CAAC,CACtF,OAAO,EAAE,aAAa,CACvB,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM;eACzB,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAkD,EAAW,EAAE,CAAC,CAChF,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAC5B,CAAC,EACF,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAkD,EAAW,EAAE,CAAC,CACjF,OAAO,CAAC,OAAO,KAAK,4EAAoC,CAAC,MAAM,CAChE,CAAC,EAAE,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,OAAmD,EACnD,OAAkD;QAElD,MAAM,MAAM,GAAgD;YAC1D,eAAe,EAAE,wCAAwC;YACzD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAEO,gBAAgB,CACtB,OAAkD,EAClD,MAAuD;QAEvD,MAAM,cAAc,GAAW,OAAO,MAAM,EAAE,SAAS,KAAK,QAAQ;YAClE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;YAC7C,CAAC,CAAC,CAAC,CAAC;QAEN,IACE,CAAC,MAAM,EAAE,QAAQ;eACd,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;eACnC,MAAM,CAAC,QAAQ,CAAC,eAAe,KAAK,sCAAsC;eAC1E,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,kBAAkB;eAClD,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;eACpC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,KAAK,OAAO,CAAC,gBAAgB;eAC7D,MAAM,CAAC,QAAQ,CAAC,cAAc,KAAK,cAAc;eACjD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,gBAAgB;eAC5D,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;eAC1C,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EACpC,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,OAAkD;QACrE,IACE,CAAC,OAAO;eACL,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;eAC7C,CAAC,MAAM,CAAC,MAAM,CAAC,0EAAmC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;eAC5E,CAAC,MAAM,CAAC,MAAM,CAAC,4EAAoC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;eAC9E,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC;eACnD,OAAO,CAAC,oBAAoB,GAAG,CAAC;eAChC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC;eACpC,CAAC,OAAO,CAAC,OAAO,KAAK,4EAAoC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;eACvF,CAAC,OAAO,CAAC,OAAO,KAAK,4EAAoC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;eACxF,CAAC,OAAO,CAAC,OAAO,KAAK,4EAAoC,CAAC,iBAAiB;mBACzE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;eACrD,CAAC,OAAO,CAAC,OAAO,KAAK,4EAAoC,CAAC,iBAAiB;mBACzE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;eAC/B,CAAC,OAAO,CAAC,MAAM,KAAK,0EAAmC,CAAC,eAAe;mBACrE,OAAO,CAAC,OAAO,KAAK,4EAAoC,CAAC,iBAAiB;mBAC1E,OAAO,CAAC,OAAO,KAAK,4EAAoC,CAAC,MAAM,CAAC;eAClE,CAAC,OAAO,CAAC,MAAM,KAAK,0EAAmC,CAAC,eAAe;mBACrE,OAAO,CAAC,OAAO,KAAK,4EAAoC,CAAC,iBAAiB,CAAC,EAChF,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IACE,OAAO,CAAC,MAAM,KAAK,0EAAmC,CAAC,MAAM;eAC1D,OAAO,CAAC,OAAO,KAAK,4EAAoC,CAAC,SAAS,EACrE,CAAC;YACD,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,OAAO,CAAC,gBAAgB,KAAK,EAAE,CAAC;IACzC,CAAC;IAEO,eAAe,CAAC,OAAmD;QACzE,IACE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,CAAE,CAAC;eAC3F,OAAO,CAAC,eAAe,KAAK,uCAAuC;eACnE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;eACzC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;eACzC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,EACjD,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,KAAa,EAAE,OAAe;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ;eAC3B,CAAC,CAAC,KAAK;eACP,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK;eACtB,KAAK,CAAC,MAAM,IAAI,OAAO;eACvB,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEO,YAAY,CAAC,KAAc,EAAE,QAAkB;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GAAa,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAEnD,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;eACnC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAW,EAAE,KAAa,EAAW,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrG,CAAC;IAEO,SAAS,CAAC,KAAa;QAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5F,CAAC;IAEO,SAAS,CAAC,KAAa;QAC7B,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAElB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,KAAa;QAC5B,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,IAAY,EAAE,MAAc;QACxC,OAAO,IAAI,uBAAU,CAAC;YACpB,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,+BAA+B,IAAI,EAAE;YAChD,OAAO,EAAE,6CAA6C;YACtD,WAAW,EAAE,MAAM,KAAK,GAAG;gBACzB,CAAC,CAAC,+CAA+C;gBACjD,CAAC,CAAC,MAAM,KAAK,GAAG;oBACd,CAAC,CAAC,2CAA2C;oBAC7C,CAAC,CAAC,MAAM,KAAK,GAAG;wBACd,CAAC,CAAC,uDAAuD;wBACzD,CAAC,CAAC,MAAM,KAAK,GAAG;4BACd,CAAC,CAAC,oDAAoD;4BACtD,CAAC,CAAC,uDAAuD;YACjE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;SACrC,CAAC,CAAC;IACL,CAAC;;AAnTH,4FAoTC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/nts-dynamo",
3
- "version": "01.15.185",
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",