@futdevpro/nts-dynamo 1.15.229 → 1.15.232
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/LICENSE +21 -21
- package/README.md +789 -789
- package/build/_modules/privacy-lifecycle/_enums/privacy-rights-value.type-enum.d.ts +7 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-rights-value.type-enum.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-rights-value.type-enum.js +11 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-rights-value.type-enum.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-rights-input.interface.d.ts +48 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-rights-input.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-rights-input.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-rights-input.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_types/privacy-rights-input.type.d.ts +4 -0
- package/build/_modules/privacy-lifecycle/_types/privacy-rights-input.type.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_types/privacy-rights-input.type.js +3 -0
- package/build/_modules/privacy-lifecycle/_types/privacy-rights-input.type.js.map +1 -0
- package/build/_modules/privacy-lifecycle/index.d.ts +4 -0
- package/build/_modules/privacy-lifecycle/index.d.ts.map +1 -1
- package/build/_modules/privacy-lifecycle/index.js +5 -1
- package/build/_modules/privacy-lifecycle/index.js.map +1 -1
- package/build/_modules/privacy-lifecycle/privacy-rights-input.control-service.d.ts +30 -0
- package/build/_modules/privacy-lifecycle/privacy-rights-input.control-service.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/privacy-rights-input.control-service.js +202 -0
- package/build/_modules/privacy-lifecycle/privacy-rights-input.control-service.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-rights-value.type-enum.d.ts","sourceRoot":"","sources":["../../../../src/_modules/privacy-lifecycle/_enums/privacy-rights-value.type-enum.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,oBAAY,6BAA6B;IACvC,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyNTS_PrivacyRightsValue_Type = void 0;
|
|
4
|
+
/** Closed scalar kinds accepted by the confidential rights-input schema. */
|
|
5
|
+
var DyNTS_PrivacyRightsValue_Type;
|
|
6
|
+
(function (DyNTS_PrivacyRightsValue_Type) {
|
|
7
|
+
DyNTS_PrivacyRightsValue_Type["string"] = "string";
|
|
8
|
+
DyNTS_PrivacyRightsValue_Type["number"] = "number";
|
|
9
|
+
DyNTS_PrivacyRightsValue_Type["boolean"] = "boolean";
|
|
10
|
+
})(DyNTS_PrivacyRightsValue_Type || (exports.DyNTS_PrivacyRightsValue_Type = DyNTS_PrivacyRightsValue_Type = {}));
|
|
11
|
+
//# sourceMappingURL=privacy-rights-value.type-enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-rights-value.type-enum.js","sourceRoot":"","sources":["../../../../src/_modules/privacy-lifecycle/_enums/privacy-rights-value.type-enum.ts"],"names":[],"mappings":";;;AAAA,4EAA4E;AAC5E,IAAY,6BAIX;AAJD,WAAY,6BAA6B;IACvC,kDAAiB,CAAA;IACjB,kDAAiB,CAAA;IACjB,oDAAmB,CAAA;AACrB,CAAC,EAJW,6BAA6B,6CAA7B,6BAA6B,QAIxC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { DyNTS_PrivacyRequest_Type } from '../_enums/privacy-request.type-enum';
|
|
2
|
+
import { DyNTS_PrivacyRightsValue_Type } from '../_enums/privacy-rights-value.type-enum';
|
|
3
|
+
/** One proposed revision. Values are confidential execution input, never lifecycle evidence. */
|
|
4
|
+
export interface DyNTS_PrivacyRightsReplacement_Interface {
|
|
5
|
+
readonly fieldCode: string;
|
|
6
|
+
readonly expectedRevision: number;
|
|
7
|
+
readonly value: string | number | boolean | null;
|
|
8
|
+
}
|
|
9
|
+
/** Trusted product field schema. It validates but never transforms the previewed value. */
|
|
10
|
+
export interface DyNTS_PrivacyRightsFieldPolicy_Interface {
|
|
11
|
+
readonly fieldCode: string;
|
|
12
|
+
readonly valueType: DyNTS_PrivacyRightsValue_Type;
|
|
13
|
+
readonly nullable: boolean;
|
|
14
|
+
readonly maxStringBytes: number;
|
|
15
|
+
readonly validate: (value: string | number | boolean | null) => boolean;
|
|
16
|
+
}
|
|
17
|
+
/** No defaults: product-approved fields, purposes and limits must be supplied explicitly. */
|
|
18
|
+
export interface DyNTS_PrivacyRightsInputPolicy_Interface {
|
|
19
|
+
readonly policyVersion: string;
|
|
20
|
+
readonly maxInputBytes: number;
|
|
21
|
+
readonly maxEntries: number;
|
|
22
|
+
readonly fields: readonly DyNTS_PrivacyRightsFieldPolicy_Interface[];
|
|
23
|
+
readonly purposeCodes: readonly string[];
|
|
24
|
+
}
|
|
25
|
+
/** Server-derived request binding; this parser does not create or consume step-up credentials. */
|
|
26
|
+
export interface DyNTS_PrivacyRightsInputContext_Interface {
|
|
27
|
+
readonly requestId: string;
|
|
28
|
+
readonly type: DyNTS_PrivacyRequest_Type;
|
|
29
|
+
readonly revision: number;
|
|
30
|
+
}
|
|
31
|
+
/** Common immutable envelope binding a preview to one request revision and policy. */
|
|
32
|
+
export interface DyNTS_PrivacyRightsInputBase_Interface {
|
|
33
|
+
readonly contractVersion: 'dynts-privacy-rights-input/1';
|
|
34
|
+
readonly requestId: string;
|
|
35
|
+
readonly policyVersion: string;
|
|
36
|
+
readonly expectedRequestRevision: number;
|
|
37
|
+
}
|
|
38
|
+
/** Structured replacements, including immutable-field proposals for a later explicit decision. */
|
|
39
|
+
export interface DyNTS_PrivacyRightsRectificationInput_Interface extends DyNTS_PrivacyRightsInputBase_Interface {
|
|
40
|
+
readonly type: DyNTS_PrivacyRequest_Type.rectification;
|
|
41
|
+
readonly replacements: readonly DyNTS_PrivacyRightsReplacement_Interface[];
|
|
42
|
+
}
|
|
43
|
+
/** Purpose selection carries neither a caller-declared legal basis nor an exception grant. */
|
|
44
|
+
export interface DyNTS_PrivacyRightsPurposeInput_Interface extends DyNTS_PrivacyRightsInputBase_Interface {
|
|
45
|
+
readonly type: DyNTS_PrivacyRequest_Type.restriction | DyNTS_PrivacyRequest_Type.objection;
|
|
46
|
+
readonly purposeCodes: readonly string[];
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=privacy-rights-input.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-rights-input.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/privacy-lifecycle/_models/privacy-rights-input.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAEzF,gGAAgG;AAChG,MAAM,WAAW,wCAAwC;IACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CAClD;AAED,2FAA2F;AAC3F,MAAM,WAAW,wCAAwC;IACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC;CACzE;AAED,6FAA6F;AAC7F,MAAM,WAAW,wCAAwC;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,wCAAwC,EAAE,CAAC;IACrE,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,kGAAkG;AAClG,MAAM,WAAW,yCAAyC;IACxD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,sFAAsF;AACtF,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,eAAe,EAAE,8BAA8B,CAAC;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C;AAED,kGAAkG;AAClG,MAAM,WAAW,+CAAgD,SAAQ,sCAAsC;IAC7G,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC,aAAa,CAAC;IACvD,QAAQ,CAAC,YAAY,EAAE,SAAS,wCAAwC,EAAE,CAAC;CAC5E;AAED,8FAA8F;AAC9F,MAAM,WAAW,yCAA0C,SAAQ,sCAAsC;IACvG,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC,WAAW,GAAG,yBAAyB,CAAC,SAAS,CAAC;IAC3F,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-rights-input.interface.js","sourceRoot":"","sources":["../../../../src/_modules/privacy-lifecycle/_models/privacy-rights-input.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DyNTS_PrivacyRightsPurposeInput_Interface, DyNTS_PrivacyRightsRectificationInput_Interface } from '../_models/privacy-rights-input.interface';
|
|
2
|
+
/** Confidential normalized input; do not expose it through request views, logs or audit records. */
|
|
3
|
+
export type DyNTS_PrivacyRightsInput_Type = DyNTS_PrivacyRightsRectificationInput_Interface | DyNTS_PrivacyRightsPurposeInput_Interface;
|
|
4
|
+
//# sourceMappingURL=privacy-rights-input.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-rights-input.type.d.ts","sourceRoot":"","sources":["../../../../src/_modules/privacy-lifecycle/_types/privacy-rights-input.type.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,EACzC,+CAA+C,EAChD,MAAM,2CAA2C,CAAC;AAEnD,oGAAoG;AACpG,MAAM,MAAM,6BAA6B,GACvC,+CAA+C,GAAG,yCAAyC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-rights-input.type.js","sourceRoot":"","sources":["../../../../src/_modules/privacy-lifecycle/_types/privacy-rights-input.type.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export { DyNTS_PrivacyLifecycle_ControlService } from './privacy-lifecycle.control-service';
|
|
2
|
+
export { DyNTS_PrivacyRightsInput_ControlService } from './privacy-rights-input.control-service';
|
|
3
|
+
export { DyNTS_PrivacyRightsValue_Type } from './_enums/privacy-rights-value.type-enum';
|
|
4
|
+
export { DyNTS_PrivacyRightsInput_Type } from './_types/privacy-rights-input.type';
|
|
5
|
+
export { DyNTS_PrivacyRightsFieldPolicy_Interface, DyNTS_PrivacyRightsInputBase_Interface, DyNTS_PrivacyRightsInputContext_Interface, DyNTS_PrivacyRightsInputPolicy_Interface, DyNTS_PrivacyRightsPurposeInput_Interface, DyNTS_PrivacyRightsRectificationInput_Interface, DyNTS_PrivacyRightsReplacement_Interface } from './_models/privacy-rights-input.interface';
|
|
2
6
|
export { DyNTS_PrivacyMutationGate_MongoStore } from './privacy-mutation-gate.mongo-store';
|
|
3
7
|
export { DyNTS_PrivacyMutationGateClosure_Interface, DyNTS_PrivacyMutationGateIdentity_Interface, DyNTS_PrivacyMutationGateSettings_Interface } from './_models/privacy-mutation-gate.interface';
|
|
4
8
|
export { DyNTS_PrivacyRequestCursor_ControlService } from './privacy-request-cursor.control-service';
|
|
@@ -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":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
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_PrivacyContributorExecutionMode_Type = exports.DyNTS_PrivacyContributorAction_Type = exports.DyNTS_PrivacyConsentAuthorizationReason_Type = exports.DyNTS_PrivacyConsentDecision_Type = exports.DyNTS_PrivacyExportBundle_ControlService = exports.DyNTS_PrivacyExportArtifact_MongoStore = exports.DyNTS_privacyExportArtifactContributorId = exports.DyNTS_PrivacyExportArtifactPrivacyContributor_ControlService = exports.DyNTS_PrivacyExportArtifact_ControlService = exports.DyNTS_PrivacyConsentAuthorization_ControlService = exports.DyNTS_PrivacyLedger_ControlService = exports.DyNTS_PrivacyRequestCursor_ControlService = exports.DyNTS_PrivacyMutationGate_MongoStore = exports.DyNTS_PrivacyLifecycle_ControlService = void 0;
|
|
3
|
+
exports.DyNTS_PrivacyRequest_Type = exports.DyNTS_PrivacyRequestState_Type = exports.DyNTS_PrivacyContributorOutcome_Type = exports.DyNTS_PrivacyContributorExecutionMode_Type = exports.DyNTS_PrivacyContributorAction_Type = exports.DyNTS_PrivacyConsentAuthorizationReason_Type = exports.DyNTS_PrivacyConsentDecision_Type = exports.DyNTS_PrivacyExportBundle_ControlService = exports.DyNTS_PrivacyExportArtifact_MongoStore = exports.DyNTS_privacyExportArtifactContributorId = exports.DyNTS_PrivacyExportArtifactPrivacyContributor_ControlService = exports.DyNTS_PrivacyExportArtifact_ControlService = exports.DyNTS_PrivacyConsentAuthorization_ControlService = exports.DyNTS_PrivacyLedger_ControlService = exports.DyNTS_PrivacyRequestCursor_ControlService = exports.DyNTS_PrivacyMutationGate_MongoStore = exports.DyNTS_PrivacyRightsValue_Type = exports.DyNTS_PrivacyRightsInput_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
|
+
var privacy_rights_input_control_service_1 = require("./privacy-rights-input.control-service");
|
|
7
|
+
Object.defineProperty(exports, "DyNTS_PrivacyRightsInput_ControlService", { enumerable: true, get: function () { return privacy_rights_input_control_service_1.DyNTS_PrivacyRightsInput_ControlService; } });
|
|
8
|
+
var privacy_rights_value_type_enum_1 = require("./_enums/privacy-rights-value.type-enum");
|
|
9
|
+
Object.defineProperty(exports, "DyNTS_PrivacyRightsValue_Type", { enumerable: true, get: function () { return privacy_rights_value_type_enum_1.DyNTS_PrivacyRightsValue_Type; } });
|
|
6
10
|
var privacy_mutation_gate_mongo_store_1 = require("./privacy-mutation-gate.mongo-store");
|
|
7
11
|
Object.defineProperty(exports, "DyNTS_PrivacyMutationGate_MongoStore", { enumerable: true, get: function () { return privacy_mutation_gate_mongo_store_1.DyNTS_PrivacyMutationGate_MongoStore; } });
|
|
8
12
|
var privacy_request_cursor_control_service_1 = require("./privacy-request-cursor.control-service");
|
|
@@ -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,yFAA2F;AAAlF,yJAAA,oCAAoC,OAAA;AAM7C,mGAAqG;AAA5F,mKAAA,yCAAyC,OAAA;AAClD,mFAAsF;AAA7E,oJAAA,kCAAkC,OAAA;AAC3C,iHAEyD;AADvD,iLAAA,gDAAgD,OAAA;AAElD,qGAAuG;AAA9F,qKAAA,0CAA0C,OAAA;AACnD,6IAGuE;AAFrE,2MAAA,4DAA4D,OAAA;AAC5D,uLAAA,wCAAwC,OAAA;AAE1C,6FAA+F;AAAtF,6JAAA,sCAAsC,OAAA;AAC/C,iGAAmG;AAA1F,iKAAA,wCAAwC,OAAA;AACjD,kGAAgG;AAAvF,uJAAA,iCAAiC,OAAA;AAC1C,0HAEiE;AAD/D,8KAAA,4CAA4C,OAAA;AAE9C,sGAAoG;AAA3F,2JAAA,mCAAmC,OAAA;AAC5C,sHAE+D;AAD7D,0KAAA,0CAA0C,OAAA;AAE5C,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,+FAAiG;AAAxF,+JAAA,uCAAuC,OAAA;AAChD,0FAAwF;AAA/E,+IAAA,6BAA6B,OAAA;AAWtC,yFAA2F;AAAlF,yJAAA,oCAAoC,OAAA;AAM7C,mGAAqG;AAA5F,mKAAA,yCAAyC,OAAA;AAClD,mFAAsF;AAA7E,oJAAA,kCAAkC,OAAA;AAC3C,iHAEyD;AADvD,iLAAA,gDAAgD,OAAA;AAElD,qGAAuG;AAA9F,qKAAA,0CAA0C,OAAA;AACnD,6IAGuE;AAFrE,2MAAA,4DAA4D,OAAA;AAC5D,uLAAA,wCAAwC,OAAA;AAE1C,6FAA+F;AAAtF,6JAAA,sCAAsC,OAAA;AAC/C,iGAAmG;AAA1F,iKAAA,wCAAwC,OAAA;AACjD,kGAAgG;AAAvF,uJAAA,iCAAiC,OAAA;AAC1C,0HAEiE;AAD/D,8KAAA,4CAA4C,OAAA;AAE9C,sGAAoG;AAA3F,2JAAA,mCAAmC,OAAA;AAC5C,sHAE+D;AAD7D,0KAAA,0CAA0C,OAAA;AAE5C,wGAAsG;AAA7F,6JAAA,oCAAoC,OAAA;AAC7C,4FAA0F;AAAjF,iJAAA,8BAA8B,OAAA;AACvC,gFAA+E;AAAtE,sIAAA,yBAAyB,OAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { DyNTS_PrivacyRightsInputContext_Interface, DyNTS_PrivacyRightsInputPolicy_Interface } from './_models/privacy-rights-input.interface';
|
|
2
|
+
import { DyNTS_PrivacyRightsInput_Type } from './_types/privacy-rights-input.type';
|
|
3
|
+
/**
|
|
4
|
+
* Validates confidential rights input against a trusted, configure-once product schema.
|
|
5
|
+
* Validation is NOT authorization: the caller must consume exact-purpose step-up, derive subject/organization
|
|
6
|
+
* server-side and atomically bind persistence to the same request revision before any execution can occur.
|
|
7
|
+
* No plaintext persistence, hash, logging, authorization grant or field mutation is performed here.
|
|
8
|
+
*/
|
|
9
|
+
export declare class DyNTS_PrivacyRightsInput_ControlService {
|
|
10
|
+
private readonly policyVersion;
|
|
11
|
+
private readonly maxInputBytes;
|
|
12
|
+
private readonly maxEntries;
|
|
13
|
+
private readonly fields;
|
|
14
|
+
private readonly purposeCodes;
|
|
15
|
+
/** Captures bounded product schemas so later configuration mutation cannot silently widen acceptance. */
|
|
16
|
+
constructor(policy: DyNTS_PrivacyRightsInputPolicy_Interface);
|
|
17
|
+
/** Returns a detached, deeply frozen envelope, or a content-free rejection without reflecting the input. */
|
|
18
|
+
parse(value: unknown, context: DyNTS_PrivacyRightsInputContext_Interface): DyNTS_PrivacyRightsInput_Type;
|
|
19
|
+
private parseInput;
|
|
20
|
+
private parseReplacements;
|
|
21
|
+
private parsePurposes;
|
|
22
|
+
private entries;
|
|
23
|
+
private exactRecord;
|
|
24
|
+
private safeCode;
|
|
25
|
+
private isScalar;
|
|
26
|
+
private revision;
|
|
27
|
+
private positiveInteger;
|
|
28
|
+
private error;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=privacy-rights-input.control-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-rights-input.control-service.d.ts","sourceRoot":"","sources":["../../../src/_modules/privacy-lifecycle/privacy-rights-input.control-service.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,yCAAyC,EACzC,wCAAwC,EAEzC,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF;;;;;GAKG;AACH,qBAAa,uCAAuC;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgE;IACvF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IAEnD,yGAAyG;gBAC7F,MAAM,EAAE,wCAAwC;IA8C5D,4GAA4G;IACrG,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,yCAAyC,GAAG,6BAA6B;IAS/G,OAAO,CAAC,UAAU;IAoDlB,OAAO,CAAC,iBAAiB;IAwCzB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,OAAO;IAyBf,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,KAAK;CASd"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyNTS_PrivacyRightsInput_ControlService = void 0;
|
|
4
|
+
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
5
|
+
const privacy_request_type_enum_1 = require("./_enums/privacy-request.type-enum");
|
|
6
|
+
const privacy_rights_value_type_enum_1 = require("./_enums/privacy-rights-value.type-enum");
|
|
7
|
+
/**
|
|
8
|
+
* Validates confidential rights input against a trusted, configure-once product schema.
|
|
9
|
+
* Validation is NOT authorization: the caller must consume exact-purpose step-up, derive subject/organization
|
|
10
|
+
* server-side and atomically bind persistence to the same request revision before any execution can occur.
|
|
11
|
+
* No plaintext persistence, hash, logging, authorization grant or field mutation is performed here.
|
|
12
|
+
*/
|
|
13
|
+
class DyNTS_PrivacyRightsInput_ControlService {
|
|
14
|
+
policyVersion;
|
|
15
|
+
maxInputBytes;
|
|
16
|
+
maxEntries;
|
|
17
|
+
fields;
|
|
18
|
+
purposeCodes;
|
|
19
|
+
/** Captures bounded product schemas so later configuration mutation cannot silently widen acceptance. */
|
|
20
|
+
constructor(policy) {
|
|
21
|
+
try {
|
|
22
|
+
if (!policy || !this.safeCode(policy.policyVersion)
|
|
23
|
+
|| !this.positiveInteger(policy.maxInputBytes, 65_536)
|
|
24
|
+
|| !this.positiveInteger(policy.maxEntries, 64)
|
|
25
|
+
|| !Array.isArray(policy.fields) || policy.fields.length > 128
|
|
26
|
+
|| !Array.isArray(policy.purposeCodes) || policy.purposeCodes.length > 128) {
|
|
27
|
+
throw this.error('SETTINGS_INVALID');
|
|
28
|
+
}
|
|
29
|
+
const fields = new Map();
|
|
30
|
+
const purposes = new Set();
|
|
31
|
+
for (const field of policy.fields) {
|
|
32
|
+
if (!field || !this.safeCode(field.fieldCode) || fields.has(field.fieldCode)
|
|
33
|
+
|| !Object.values(privacy_rights_value_type_enum_1.DyNTS_PrivacyRightsValue_Type).includes(field.valueType)
|
|
34
|
+
|| typeof field.nullable !== 'boolean' || !this.positiveInteger(field.maxStringBytes, 16_384)
|
|
35
|
+
|| typeof field.validate !== 'function') {
|
|
36
|
+
throw this.error('SETTINGS_INVALID');
|
|
37
|
+
}
|
|
38
|
+
fields.set(field.fieldCode, Object.freeze({ ...field }));
|
|
39
|
+
}
|
|
40
|
+
for (const purpose of policy.purposeCodes) {
|
|
41
|
+
if (!this.safeCode(purpose) || purposes.has(purpose)) {
|
|
42
|
+
throw this.error('SETTINGS_INVALID');
|
|
43
|
+
}
|
|
44
|
+
purposes.add(purpose);
|
|
45
|
+
}
|
|
46
|
+
this.policyVersion = policy.policyVersion;
|
|
47
|
+
this.maxInputBytes = policy.maxInputBytes;
|
|
48
|
+
this.maxEntries = policy.maxEntries;
|
|
49
|
+
this.fields = fields;
|
|
50
|
+
this.purposeCodes = purposes;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
throw this.error('SETTINGS_INVALID');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Returns a detached, deeply frozen envelope, or a content-free rejection without reflecting the input. */
|
|
57
|
+
parse(value, context) {
|
|
58
|
+
try {
|
|
59
|
+
return this.parseInput(value, context);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// Schema callbacks and malformed objects can throw sensitive values. Never attach their cause or message.
|
|
63
|
+
throw this.error('INPUT_INVALID');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
parseInput(value, context) {
|
|
67
|
+
const isRectification = context?.type === privacy_request_type_enum_1.DyNTS_PrivacyRequest_Type.rectification;
|
|
68
|
+
const payloadKey = isRectification ? 'replacements' : 'purposeCodes';
|
|
69
|
+
if (!context || !this.safeCode(context.requestId) || !this.revision(context.revision)
|
|
70
|
+
|| (context.type !== privacy_request_type_enum_1.DyNTS_PrivacyRequest_Type.rectification
|
|
71
|
+
&& context.type !== privacy_request_type_enum_1.DyNTS_PrivacyRequest_Type.restriction
|
|
72
|
+
&& context.type !== privacy_request_type_enum_1.DyNTS_PrivacyRequest_Type.objection)
|
|
73
|
+
|| !this.exactRecord(value, ['contractVersion', 'requestId', 'policyVersion',
|
|
74
|
+
'expectedRequestRevision', 'type', payloadKey])
|
|
75
|
+
|| value.contractVersion !== 'dynts-privacy-rights-input/1'
|
|
76
|
+
|| value.requestId !== context.requestId || value.type !== context.type
|
|
77
|
+
|| value.policyVersion !== this.policyVersion || !this.revision(value.expectedRequestRevision)
|
|
78
|
+
|| value.expectedRequestRevision !== context.revision) {
|
|
79
|
+
throw this.error('INPUT_INVALID');
|
|
80
|
+
}
|
|
81
|
+
const base = {
|
|
82
|
+
contractVersion: 'dynts-privacy-rights-input/1',
|
|
83
|
+
requestId: context.requestId,
|
|
84
|
+
policyVersion: this.policyVersion,
|
|
85
|
+
expectedRequestRevision: context.revision,
|
|
86
|
+
};
|
|
87
|
+
let result;
|
|
88
|
+
if (context.type === privacy_request_type_enum_1.DyNTS_PrivacyRequest_Type.rectification) {
|
|
89
|
+
result = Object.freeze({
|
|
90
|
+
...base,
|
|
91
|
+
type: context.type,
|
|
92
|
+
replacements: this.parseReplacements(value.replacements),
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
result = Object.freeze({
|
|
97
|
+
...base,
|
|
98
|
+
type: context.type,
|
|
99
|
+
purposeCodes: this.parsePurposes(value.purposeCodes),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// Only our reconstructed primitives are serialized: no attacker-controlled toJSON/getters are executed.
|
|
103
|
+
if (Buffer.byteLength(JSON.stringify(result), 'utf8') > this.maxInputBytes) {
|
|
104
|
+
throw this.error('INPUT_INVALID');
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
parseReplacements(value) {
|
|
109
|
+
const entries = this.entries(value);
|
|
110
|
+
const seen = new Set();
|
|
111
|
+
const replacements = [];
|
|
112
|
+
for (const entry of entries) {
|
|
113
|
+
if (!this.exactRecord(entry, ['fieldCode', 'expectedRevision', 'value'])
|
|
114
|
+
|| typeof entry.fieldCode !== 'string' || !this.revision(entry.expectedRevision)
|
|
115
|
+
|| seen.has(entry.fieldCode)) {
|
|
116
|
+
throw this.error('INPUT_INVALID');
|
|
117
|
+
}
|
|
118
|
+
const field = this.fields.get(entry.fieldCode);
|
|
119
|
+
const replacement = entry.value;
|
|
120
|
+
if (!this.isScalar(replacement) || !field
|
|
121
|
+
|| (replacement === null ? !field.nullable : typeof replacement !== field.valueType)
|
|
122
|
+
|| (typeof replacement === 'number' && (!Number.isFinite(replacement) || Object.is(replacement, -0)))
|
|
123
|
+
|| (typeof replacement === 'string' && (replacement.includes('\u0000')
|
|
124
|
+
|| Buffer.byteLength(replacement, 'utf8') > field.maxStringBytes))) {
|
|
125
|
+
throw this.error('INPUT_INVALID');
|
|
126
|
+
}
|
|
127
|
+
if (field.validate(replacement) !== true) {
|
|
128
|
+
throw this.error('INPUT_INVALID');
|
|
129
|
+
}
|
|
130
|
+
seen.add(entry.fieldCode);
|
|
131
|
+
replacements.push(Object.freeze({
|
|
132
|
+
fieldCode: entry.fieldCode, expectedRevision: entry.expectedRevision, value: replacement,
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
return Object.freeze(replacements);
|
|
136
|
+
}
|
|
137
|
+
parsePurposes(value) {
|
|
138
|
+
const entries = this.entries(value);
|
|
139
|
+
const purposes = new Set();
|
|
140
|
+
for (const entry of entries) {
|
|
141
|
+
if (typeof entry !== 'string' || !this.purposeCodes.has(entry) || purposes.has(entry)) {
|
|
142
|
+
throw this.error('INPUT_INVALID');
|
|
143
|
+
}
|
|
144
|
+
purposes.add(entry);
|
|
145
|
+
}
|
|
146
|
+
return Object.freeze([...purposes]);
|
|
147
|
+
}
|
|
148
|
+
entries(value) {
|
|
149
|
+
if (!Array.isArray(value) || !this.positiveInteger(value.length, this.maxEntries)) {
|
|
150
|
+
throw this.error('INPUT_INVALID');
|
|
151
|
+
}
|
|
152
|
+
// Reject sparse arrays, accessors and hidden/symbol properties before reading any element.
|
|
153
|
+
if (Reflect.ownKeys(value).length !== value.length + 1) {
|
|
154
|
+
throw this.error('INPUT_INVALID');
|
|
155
|
+
}
|
|
156
|
+
const entries = [];
|
|
157
|
+
for (let index = 0; index < value.length; index++) {
|
|
158
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
|
|
159
|
+
if (!descriptor || !('value' in descriptor) || !descriptor.enumerable) {
|
|
160
|
+
throw this.error('INPUT_INVALID');
|
|
161
|
+
}
|
|
162
|
+
entries.push(descriptor.value);
|
|
163
|
+
}
|
|
164
|
+
return entries;
|
|
165
|
+
}
|
|
166
|
+
exactRecord(value, keys) {
|
|
167
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
const prototype = Object.getPrototypeOf(value);
|
|
171
|
+
const ownKeys = Reflect.ownKeys(value);
|
|
172
|
+
return (prototype === Object.prototype || prototype === null)
|
|
173
|
+
&& ownKeys.length === keys.length && ownKeys.every((key) => {
|
|
174
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
175
|
+
return typeof key === 'string' && keys.includes(key)
|
|
176
|
+
&& !!descriptor && 'value' in descriptor && descriptor.enumerable === true;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
safeCode(value) {
|
|
180
|
+
return typeof value === 'string' && /^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,127}$/u.test(value);
|
|
181
|
+
}
|
|
182
|
+
isScalar(value) {
|
|
183
|
+
return value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';
|
|
184
|
+
}
|
|
185
|
+
revision(value) {
|
|
186
|
+
return Number.isSafeInteger(value) && Number(value) >= 0 && !Object.is(value, -0);
|
|
187
|
+
}
|
|
188
|
+
positiveInteger(value, maximum) {
|
|
189
|
+
return Number.isSafeInteger(value) && Number(value) > 0 && Number(value) <= maximum;
|
|
190
|
+
}
|
|
191
|
+
error(code) {
|
|
192
|
+
return new fsm_dynamo_1.DyFM_Error({
|
|
193
|
+
status: code === 'INPUT_INVALID' ? 400 : 500,
|
|
194
|
+
errorCode: `DYNTS|PRIVACY_RIGHTS_INPUT|${code}`,
|
|
195
|
+
message: 'The privacy rights input or its policy is invalid.',
|
|
196
|
+
userMessage: 'The privacy request input could not be accepted.',
|
|
197
|
+
issuerService: 'DyNTS_PrivacyRightsInput_ControlService',
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
exports.DyNTS_PrivacyRightsInput_ControlService = DyNTS_PrivacyRightsInput_ControlService;
|
|
202
|
+
//# sourceMappingURL=privacy-rights-input.control-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy-rights-input.control-service.js","sourceRoot":"","sources":["../../../src/_modules/privacy-lifecycle/privacy-rights-input.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.232",
|
|
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",
|
|
@@ -433,7 +433,7 @@
|
|
|
433
433
|
"@anthropic-ai/sdk": "~0.39.0",
|
|
434
434
|
"@modelcontextprotocol/sdk": "~1.29.0",
|
|
435
435
|
"better-sqlite3": "~12.4.1",
|
|
436
|
-
"@futdevpro/fsm-dynamo": "1.20.
|
|
436
|
+
"@futdevpro/fsm-dynamo": "1.20.35",
|
|
437
437
|
"@types/express": "4.17.21",
|
|
438
438
|
"@types/geoip-lite": "~1.4.4",
|
|
439
439
|
"@types/node": "~24.1.0",
|
|
@@ -472,7 +472,7 @@
|
|
|
472
472
|
}
|
|
473
473
|
},
|
|
474
474
|
"devDependencies": {
|
|
475
|
-
"@futdevpro/fsm-dynamo": "1.20.
|
|
475
|
+
"@futdevpro/fsm-dynamo": "1.20.35",
|
|
476
476
|
"@futdevpro/dynamo-eslint": "1.20.18",
|
|
477
477
|
"@discordjs/opus": "^0.10.0",
|
|
478
478
|
"@discordjs/voice": "^0.18.0",
|