@kya-os/consent 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants/auth-modes.d.ts +54 -0
- package/dist/constants/auth-modes.d.ts.map +1 -0
- package/dist/constants/auth-modes.js +128 -0
- package/dist/constants/auth-modes.js.map +1 -0
- package/dist/constants/colors.d.ts +38 -0
- package/dist/constants/colors.d.ts.map +1 -0
- package/dist/constants/colors.js +40 -0
- package/dist/constants/colors.js.map +1 -0
- package/dist/constants/defaults.d.ts +112 -0
- package/dist/constants/defaults.d.ts.map +1 -0
- package/dist/constants/defaults.js +146 -0
- package/dist/constants/defaults.js.map +1 -0
- package/dist/constants/index.d.ts +11 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +37 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/resolution/index.d.ts +12 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +28 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/resolve-branding.d.ts +70 -0
- package/dist/resolution/resolve-branding.d.ts.map +1 -0
- package/dist/resolution/resolve-branding.js +159 -0
- package/dist/resolution/resolve-branding.js.map +1 -0
- package/dist/resolution/resolve-config.d.ts +81 -0
- package/dist/resolution/resolve-config.d.ts.map +1 -0
- package/dist/resolution/resolve-config.js +254 -0
- package/dist/resolution/resolve-config.js.map +1 -0
- package/dist/resolution/resolve-copy.d.ts +53 -0
- package/dist/resolution/resolve-copy.d.ts.map +1 -0
- package/dist/resolution/resolve-copy.js +136 -0
- package/dist/resolution/resolve-copy.js.map +1 -0
- package/dist/schemas/api.schemas.d.ts +984 -0
- package/dist/schemas/api.schemas.d.ts.map +1 -0
- package/dist/schemas/api.schemas.js +153 -0
- package/dist/schemas/api.schemas.js.map +1 -0
- package/dist/schemas/branding.schemas.d.ts +100 -0
- package/dist/schemas/branding.schemas.d.ts.map +1 -0
- package/dist/schemas/branding.schemas.js +57 -0
- package/dist/schemas/branding.schemas.js.map +1 -0
- package/dist/schemas/config.schemas.d.ts +1182 -0
- package/dist/schemas/config.schemas.d.ts.map +1 -0
- package/dist/schemas/config.schemas.js +147 -0
- package/dist/schemas/config.schemas.js.map +1 -0
- package/dist/schemas/index.d.ts +13 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +29 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/modes.schemas.d.ts +406 -0
- package/dist/schemas/modes.schemas.d.ts.map +1 -0
- package/dist/schemas/modes.schemas.js +107 -0
- package/dist/schemas/modes.schemas.js.map +1 -0
- package/dist/security/escape.d.ts +114 -0
- package/dist/security/escape.d.ts.map +1 -0
- package/dist/security/escape.js +202 -0
- package/dist/security/escape.js.map +1 -0
- package/dist/security/index.d.ts +10 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +26 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/validators.d.ts +98 -0
- package/dist/security/validators.d.ts.map +1 -0
- package/dist/security/validators.js +210 -0
- package/dist/security/validators.js.map +1 -0
- package/dist/styles/css-variables.d.ts +78 -0
- package/dist/styles/css-variables.d.ts.map +1 -0
- package/dist/styles/css-variables.js +129 -0
- package/dist/styles/css-variables.js.map +1 -0
- package/dist/styles/index.d.ts +12 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/index.js +28 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/styles/stylesheet.d.ts +57 -0
- package/dist/styles/stylesheet.d.ts.map +1 -0
- package/dist/styles/stylesheet.js +204 -0
- package/dist/styles/stylesheet.js.map +1 -0
- package/dist/styles/tokens.d.ts +141 -0
- package/dist/styles/tokens.d.ts.map +1 -0
- package/dist/styles/tokens.js +183 -0
- package/dist/styles/tokens.js.map +1 -0
- package/dist/templates/base/base-template.d.ts +81 -0
- package/dist/templates/base/base-template.d.ts.map +1 -0
- package/dist/templates/base/base-template.js +282 -0
- package/dist/templates/base/base-template.js.map +1 -0
- package/dist/templates/base/components.d.ts +120 -0
- package/dist/templates/base/components.d.ts.map +1 -0
- package/dist/templates/base/components.js +295 -0
- package/dist/templates/base/components.js.map +1 -0
- package/dist/templates/base/index.d.ts +8 -0
- package/dist/templates/base/index.d.ts.map +1 -0
- package/dist/templates/base/index.js +26 -0
- package/dist/templates/base/index.js.map +1 -0
- package/dist/templates/index.d.ts +18 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +34 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/modes/consent-only.template.d.ts +36 -0
- package/dist/templates/modes/consent-only.template.d.ts.map +1 -0
- package/dist/templates/modes/consent-only.template.js +74 -0
- package/dist/templates/modes/consent-only.template.js.map +1 -0
- package/dist/templates/modes/credentials.template.d.ts +65 -0
- package/dist/templates/modes/credentials.template.d.ts.map +1 -0
- package/dist/templates/modes/credentials.template.js +414 -0
- package/dist/templates/modes/credentials.template.js.map +1 -0
- package/dist/templates/modes/index.d.ts +14 -0
- package/dist/templates/modes/index.d.ts.map +1 -0
- package/dist/templates/modes/index.js +24 -0
- package/dist/templates/modes/index.js.map +1 -0
- package/dist/templates/modes/magic-link.template.d.ts +33 -0
- package/dist/templates/modes/magic-link.template.d.ts.map +1 -0
- package/dist/templates/modes/magic-link.template.js +196 -0
- package/dist/templates/modes/magic-link.template.js.map +1 -0
- package/dist/templates/modes/oauth.template.d.ts +40 -0
- package/dist/templates/modes/oauth.template.d.ts.map +1 -0
- package/dist/templates/modes/oauth.template.js +153 -0
- package/dist/templates/modes/oauth.template.js.map +1 -0
- package/dist/templates/modes/otp.template.d.ts +35 -0
- package/dist/templates/modes/otp.template.d.ts.map +1 -0
- package/dist/templates/modes/otp.template.js +316 -0
- package/dist/templates/modes/otp.template.js.map +1 -0
- package/dist/templates/modes/success.template.d.ts +41 -0
- package/dist/templates/modes/success.template.d.ts.map +1 -0
- package/dist/templates/modes/success.template.js +140 -0
- package/dist/templates/modes/success.template.js.map +1 -0
- package/dist/templates/registry.d.ts +62 -0
- package/dist/templates/registry.d.ts.map +1 -0
- package/dist/templates/registry.js +135 -0
- package/dist/templates/registry.js.map +1 -0
- package/dist/types/api.types.d.ts +134 -0
- package/dist/types/api.types.d.ts.map +1 -0
- package/dist/types/api.types.js +10 -0
- package/dist/types/api.types.js.map +1 -0
- package/dist/types/branding.types.d.ts +53 -0
- package/dist/types/branding.types.d.ts.map +1 -0
- package/dist/types/branding.types.js +10 -0
- package/dist/types/branding.types.js.map +1 -0
- package/dist/types/config.types.d.ts +201 -0
- package/dist/types/config.types.d.ts.map +1 -0
- package/dist/types/config.types.js +10 -0
- package/dist/types/config.types.js.map +1 -0
- package/dist/types/copy.types.d.ts +109 -0
- package/dist/types/copy.types.d.ts.map +1 -0
- package/dist/types/copy.types.js +10 -0
- package/dist/types/copy.types.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +31 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/modes.types.d.ts +197 -0
- package/dist/types/modes.types.d.ts.map +1 -0
- package/dist/types/modes.types.js +35 -0
- package/dist/types/modes.types.js.map +1 -0
- package/dist/types/page.types.d.ts +120 -0
- package/dist/types/page.types.d.ts.map +1 -0
- package/dist/types/page.types.js +10 -0
- package/dist/types/page.types.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;AAEH,sBAAsB;AACtB,0CAAwB;AAExB,wBAAwB;AACxB,4CAA0B;AAE1B,0BAA0B;AAC1B,8CAA4B;AAE5B,uBAAuB;AACvB,2CAAyB;AAEzB,qCAAqC;AACrC,+CAA6B;AAE7B,mCAAmC;AACnC,6CAA2B;AAE3B,0BAA0B;AAC1B,8CAA4B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consent Resolution Utilities
|
|
3
|
+
*
|
|
4
|
+
* Functions to resolve partial config into complete render-ready config.
|
|
5
|
+
* Applies defaults and placeholder substitution.
|
|
6
|
+
*
|
|
7
|
+
* @module @kya-os/consent/resolution
|
|
8
|
+
*/
|
|
9
|
+
export * from "./resolve-copy";
|
|
10
|
+
export * from "./resolve-branding";
|
|
11
|
+
export * from "./resolve-config";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Consent Resolution Utilities
|
|
4
|
+
*
|
|
5
|
+
* Functions to resolve partial config into complete render-ready config.
|
|
6
|
+
* Applies defaults and placeholder substitution.
|
|
7
|
+
*
|
|
8
|
+
* @module @kya-os/consent/resolution
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
22
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
__exportStar(require("./resolve-copy"), exports);
|
|
26
|
+
__exportStar(require("./resolve-branding"), exports);
|
|
27
|
+
__exportStar(require("./resolve-config"), exports);
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;AAEH,iDAA+B;AAC/B,qDAAmC;AACnC,mDAAiC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branding Resolution
|
|
3
|
+
*
|
|
4
|
+
* Resolves branding config with defaults and generates CSS variables.
|
|
5
|
+
*
|
|
6
|
+
* @module @kya-os/consent/resolution/resolve-branding
|
|
7
|
+
*/
|
|
8
|
+
import type { ConsentBranding, ResolvedConsentBranding, ConsentCSSVars } from "../types/branding.types";
|
|
9
|
+
/**
|
|
10
|
+
* Validate hex color format
|
|
11
|
+
*
|
|
12
|
+
* @param color - Color string to validate
|
|
13
|
+
* @returns True if valid hex color
|
|
14
|
+
*/
|
|
15
|
+
export declare function isValidHexColor(color: string | undefined): color is string;
|
|
16
|
+
/**
|
|
17
|
+
* Sanitize a color value, returning default if invalid
|
|
18
|
+
*
|
|
19
|
+
* @param color - Color to sanitize
|
|
20
|
+
* @param defaultColor - Default if invalid
|
|
21
|
+
* @returns Valid hex color
|
|
22
|
+
*/
|
|
23
|
+
export declare function sanitizeColor(color: string | undefined, defaultColor: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Validate URL format
|
|
26
|
+
*
|
|
27
|
+
* @param url - URL string to validate
|
|
28
|
+
* @returns True if valid http/https URL
|
|
29
|
+
*/
|
|
30
|
+
export declare function isValidUrl(url: string | undefined): url is string;
|
|
31
|
+
/**
|
|
32
|
+
* Sanitize a URL value, returning undefined if invalid
|
|
33
|
+
*
|
|
34
|
+
* @param url - URL to sanitize
|
|
35
|
+
* @returns Valid URL or undefined
|
|
36
|
+
*/
|
|
37
|
+
export declare function sanitizeUrl(url: string | undefined): string | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Generate CSS variables from branding
|
|
40
|
+
*
|
|
41
|
+
* @param branding - Resolved branding config
|
|
42
|
+
* @returns CSS variable object
|
|
43
|
+
*/
|
|
44
|
+
export declare function generateBrandingCSSVars(branding: {
|
|
45
|
+
primaryColor: string;
|
|
46
|
+
secondaryColor: string;
|
|
47
|
+
}): ConsentCSSVars;
|
|
48
|
+
/**
|
|
49
|
+
* Resolve branding config with defaults and validation
|
|
50
|
+
*
|
|
51
|
+
* @param branding - Partial branding config
|
|
52
|
+
* @returns Fully resolved branding with CSS variables
|
|
53
|
+
*/
|
|
54
|
+
export declare function resolveConsentBranding(branding?: ConsentBranding): ResolvedConsentBranding;
|
|
55
|
+
/**
|
|
56
|
+
* Check if branding has custom values (non-default)
|
|
57
|
+
*
|
|
58
|
+
* @param branding - Branding config
|
|
59
|
+
* @returns True if any custom values are set
|
|
60
|
+
*/
|
|
61
|
+
export declare function hasCustomBranding(branding?: ConsentBranding): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Merge branding configs (later values override earlier)
|
|
64
|
+
*
|
|
65
|
+
* @param base - Base branding config
|
|
66
|
+
* @param override - Override values
|
|
67
|
+
* @returns Merged branding
|
|
68
|
+
*/
|
|
69
|
+
export declare function mergeBranding(base: ConsentBranding, override?: ConsentBranding): ConsentBranding;
|
|
70
|
+
//# sourceMappingURL=resolve-branding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-branding.d.ts","sourceRoot":"","sources":["../../src/resolution/resolve-branding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIxG;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAG1E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,IAAI,MAAM,CAQjE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKvE;AAoBD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,cAAc,CAOjB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,CAAC,EAAE,eAAe,GACzB,uBAAuB,CA2BzB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAWrE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,eAAe,EACrB,QAAQ,CAAC,EAAE,eAAe,GACzB,eAAe,CASjB"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Branding Resolution
|
|
4
|
+
*
|
|
5
|
+
* Resolves branding config with defaults and generates CSS variables.
|
|
6
|
+
*
|
|
7
|
+
* @module @kya-os/consent/resolution/resolve-branding
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.isValidHexColor = isValidHexColor;
|
|
11
|
+
exports.sanitizeColor = sanitizeColor;
|
|
12
|
+
exports.isValidUrl = isValidUrl;
|
|
13
|
+
exports.sanitizeUrl = sanitizeUrl;
|
|
14
|
+
exports.generateBrandingCSSVars = generateBrandingCSSVars;
|
|
15
|
+
exports.resolveConsentBranding = resolveConsentBranding;
|
|
16
|
+
exports.hasCustomBranding = hasCustomBranding;
|
|
17
|
+
exports.mergeBranding = mergeBranding;
|
|
18
|
+
const defaults_1 = require("../constants/defaults");
|
|
19
|
+
const colors_1 = require("../constants/colors");
|
|
20
|
+
/**
|
|
21
|
+
* Validate hex color format
|
|
22
|
+
*
|
|
23
|
+
* @param color - Color string to validate
|
|
24
|
+
* @returns True if valid hex color
|
|
25
|
+
*/
|
|
26
|
+
function isValidHexColor(color) {
|
|
27
|
+
if (!color)
|
|
28
|
+
return false;
|
|
29
|
+
return /^#[0-9A-Fa-f]{6}$/.test(color);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Sanitize a color value, returning default if invalid
|
|
33
|
+
*
|
|
34
|
+
* @param color - Color to sanitize
|
|
35
|
+
* @param defaultColor - Default if invalid
|
|
36
|
+
* @returns Valid hex color
|
|
37
|
+
*/
|
|
38
|
+
function sanitizeColor(color, defaultColor) {
|
|
39
|
+
if (isValidHexColor(color)) {
|
|
40
|
+
return color;
|
|
41
|
+
}
|
|
42
|
+
return defaultColor;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Validate URL format
|
|
46
|
+
*
|
|
47
|
+
* @param url - URL string to validate
|
|
48
|
+
* @returns True if valid http/https URL
|
|
49
|
+
*/
|
|
50
|
+
function isValidUrl(url) {
|
|
51
|
+
if (!url)
|
|
52
|
+
return false;
|
|
53
|
+
try {
|
|
54
|
+
const parsed = new URL(url);
|
|
55
|
+
return parsed.protocol === "http:" || parsed.protocol === "https:";
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Sanitize a URL value, returning undefined if invalid
|
|
63
|
+
*
|
|
64
|
+
* @param url - URL to sanitize
|
|
65
|
+
* @returns Valid URL or undefined
|
|
66
|
+
*/
|
|
67
|
+
function sanitizeUrl(url) {
|
|
68
|
+
if (isValidUrl(url)) {
|
|
69
|
+
return url;
|
|
70
|
+
}
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Convert hex color to RGB string
|
|
75
|
+
*
|
|
76
|
+
* @param hex - Hex color string (e.g., '#2563EB')
|
|
77
|
+
* @returns RGB string (e.g., '37, 99, 235')
|
|
78
|
+
*/
|
|
79
|
+
function hexToRgb(hex) {
|
|
80
|
+
// Remove # if present
|
|
81
|
+
const cleanHex = hex.replace(/^#/, '');
|
|
82
|
+
// Parse hex to RGB
|
|
83
|
+
const r = parseInt(cleanHex.slice(0, 2), 16);
|
|
84
|
+
const g = parseInt(cleanHex.slice(2, 4), 16);
|
|
85
|
+
const b = parseInt(cleanHex.slice(4, 6), 16);
|
|
86
|
+
return `${r}, ${g}, ${b}`;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Generate CSS variables from branding
|
|
90
|
+
*
|
|
91
|
+
* @param branding - Resolved branding config
|
|
92
|
+
* @returns CSS variable object
|
|
93
|
+
*/
|
|
94
|
+
function generateBrandingCSSVars(branding) {
|
|
95
|
+
return {
|
|
96
|
+
"--consent-primary": branding.primaryColor,
|
|
97
|
+
"--consent-secondary": branding.secondaryColor,
|
|
98
|
+
"--consent-primary-rgb": hexToRgb(branding.primaryColor),
|
|
99
|
+
"--consent-secondary-rgb": hexToRgb(branding.secondaryColor),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Resolve branding config with defaults and validation
|
|
104
|
+
*
|
|
105
|
+
* @param branding - Partial branding config
|
|
106
|
+
* @returns Fully resolved branding with CSS variables
|
|
107
|
+
*/
|
|
108
|
+
function resolveConsentBranding(branding) {
|
|
109
|
+
// Sanitize and resolve colors
|
|
110
|
+
const primaryColor = sanitizeColor(branding?.primaryColor, colors_1.DEFAULT_COLORS.PRIMARY);
|
|
111
|
+
const secondaryColor = sanitizeColor(branding?.secondaryColor, colors_1.DEFAULT_COLORS.SECONDARY);
|
|
112
|
+
// Sanitize URL (only allow valid http/https)
|
|
113
|
+
const logoUrl = sanitizeUrl(branding?.logoUrl);
|
|
114
|
+
// Company name - basic sanitization (just trim, escaping happens at render)
|
|
115
|
+
const companyName = branding?.companyName?.trim() || undefined;
|
|
116
|
+
// Generate CSS variables
|
|
117
|
+
const cssVars = generateBrandingCSSVars({ primaryColor, secondaryColor });
|
|
118
|
+
return {
|
|
119
|
+
primaryColor,
|
|
120
|
+
secondaryColor,
|
|
121
|
+
logoUrl,
|
|
122
|
+
companyName,
|
|
123
|
+
cssVars,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check if branding has custom values (non-default)
|
|
128
|
+
*
|
|
129
|
+
* @param branding - Branding config
|
|
130
|
+
* @returns True if any custom values are set
|
|
131
|
+
*/
|
|
132
|
+
function hasCustomBranding(branding) {
|
|
133
|
+
if (!branding)
|
|
134
|
+
return false;
|
|
135
|
+
return ((branding.primaryColor !== undefined &&
|
|
136
|
+
branding.primaryColor !== defaults_1.DEFAULT_BRANDING.primaryColor) ||
|
|
137
|
+
(branding.secondaryColor !== undefined &&
|
|
138
|
+
branding.secondaryColor !== defaults_1.DEFAULT_BRANDING.secondaryColor) ||
|
|
139
|
+
branding.logoUrl !== undefined ||
|
|
140
|
+
branding.companyName !== undefined);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Merge branding configs (later values override earlier)
|
|
144
|
+
*
|
|
145
|
+
* @param base - Base branding config
|
|
146
|
+
* @param override - Override values
|
|
147
|
+
* @returns Merged branding
|
|
148
|
+
*/
|
|
149
|
+
function mergeBranding(base, override) {
|
|
150
|
+
if (!override)
|
|
151
|
+
return base;
|
|
152
|
+
return {
|
|
153
|
+
primaryColor: override.primaryColor ?? base.primaryColor,
|
|
154
|
+
secondaryColor: override.secondaryColor ?? base.secondaryColor,
|
|
155
|
+
logoUrl: override.logoUrl ?? base.logoUrl,
|
|
156
|
+
companyName: override.companyName ?? base.companyName,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=resolve-branding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-branding.js","sourceRoot":"","sources":["../../src/resolution/resolve-branding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Resolution
|
|
3
|
+
*
|
|
4
|
+
* Resolves complete consent config with all defaults applied.
|
|
5
|
+
*
|
|
6
|
+
* @module @kya-os/consent/resolution/resolve-config
|
|
7
|
+
*/
|
|
8
|
+
import type { ConsentConfig, ConsentConfigWithMeta, ResolvedConsentConfig, ConsentCustomField, ResolvedUI, ResolvedTerms, ResolvedSuccess } from "../types/config.types";
|
|
9
|
+
import type { AuthMode } from "../types/modes.types";
|
|
10
|
+
/**
|
|
11
|
+
* Resolve custom fields with validation
|
|
12
|
+
*
|
|
13
|
+
* @param fields - Custom fields array
|
|
14
|
+
* @returns Validated custom fields (max 10)
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveCustomFields(fields?: ConsentCustomField[]): ConsentCustomField[];
|
|
17
|
+
/**
|
|
18
|
+
* Resolve expiration days with bounds checking
|
|
19
|
+
*
|
|
20
|
+
* @param days - Expiration days from config
|
|
21
|
+
* @returns Valid expiration days (1-365)
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveExpirationDays(days?: number): number;
|
|
24
|
+
/**
|
|
25
|
+
* Determine the effective auth mode from config
|
|
26
|
+
*
|
|
27
|
+
* @param config - Consent config
|
|
28
|
+
* @returns Effective auth mode
|
|
29
|
+
*/
|
|
30
|
+
export declare function determineAuthMode(config?: ConsentConfig): AuthMode;
|
|
31
|
+
/**
|
|
32
|
+
* Get default consent config
|
|
33
|
+
*
|
|
34
|
+
* @returns Default consent config with all fields undefined
|
|
35
|
+
*/
|
|
36
|
+
export declare function getDefaultConsentConfig(): ConsentConfigWithMeta;
|
|
37
|
+
/**
|
|
38
|
+
* Resolve UI settings with all defaults
|
|
39
|
+
*
|
|
40
|
+
* @param ui - Partial UI config
|
|
41
|
+
* @returns Fully resolved UI settings
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveUISettings(ui?: ConsentConfig["ui"]): ResolvedUI;
|
|
44
|
+
/**
|
|
45
|
+
* Resolve terms settings with all defaults
|
|
46
|
+
*
|
|
47
|
+
* @param terms - Partial terms config
|
|
48
|
+
* @returns Fully resolved terms settings
|
|
49
|
+
*/
|
|
50
|
+
export declare function resolveTermsSettings(terms?: ConsentConfig["terms"]): ResolvedTerms;
|
|
51
|
+
/**
|
|
52
|
+
* Resolve success settings with all defaults
|
|
53
|
+
*
|
|
54
|
+
* @param success - Partial success config
|
|
55
|
+
* @returns Fully resolved success settings
|
|
56
|
+
*/
|
|
57
|
+
export declare function resolveSuccessSettings(success?: ConsentConfig["success"]): ResolvedSuccess;
|
|
58
|
+
/**
|
|
59
|
+
* Resolve complete consent config with all defaults
|
|
60
|
+
*
|
|
61
|
+
* @param config - Partial consent config
|
|
62
|
+
* @param agentName - Optional agent name for placeholder substitution
|
|
63
|
+
* @returns Fully resolved config ready for rendering
|
|
64
|
+
*/
|
|
65
|
+
export declare function resolveConsentConfig(config?: ConsentConfig, agentName?: string): ResolvedConsentConfig;
|
|
66
|
+
/**
|
|
67
|
+
* Merge two config objects, with override taking precedence
|
|
68
|
+
*
|
|
69
|
+
* @param base - Base config
|
|
70
|
+
* @param override - Override config
|
|
71
|
+
* @returns Merged config
|
|
72
|
+
*/
|
|
73
|
+
export declare function mergeConsentConfigs(base: ConsentConfig, override?: ConsentConfig): ConsentConfig;
|
|
74
|
+
/**
|
|
75
|
+
* Check if config has any customization
|
|
76
|
+
*
|
|
77
|
+
* @param config - Config to check
|
|
78
|
+
* @returns True if any non-default values are set
|
|
79
|
+
*/
|
|
80
|
+
export declare function hasCustomConfig(config?: ConsentConfig): boolean;
|
|
81
|
+
//# sourceMappingURL=resolve-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-config.d.ts","sourceRoot":"","sources":["../../src/resolution/resolve-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGzK,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAMrD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAC5B,kBAAkB,EAAE,CAuBtB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAU3D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,QAAQ,CAoBlE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,qBAAqB,CAiB/D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,UAAU,CAYtE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAOlF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,eAAe,CAS1F;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,CAAC,EAAE,aAAa,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,qBAAqB,CAuCvB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,aAAa,EACnB,QAAQ,CAAC,EAAE,aAAa,GACvB,aAAa,CAmBf;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAkB/D"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Config Resolution
|
|
4
|
+
*
|
|
5
|
+
* Resolves complete consent config with all defaults applied.
|
|
6
|
+
*
|
|
7
|
+
* @module @kya-os/consent/resolution/resolve-config
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.resolveCustomFields = resolveCustomFields;
|
|
11
|
+
exports.resolveExpirationDays = resolveExpirationDays;
|
|
12
|
+
exports.determineAuthMode = determineAuthMode;
|
|
13
|
+
exports.getDefaultConsentConfig = getDefaultConsentConfig;
|
|
14
|
+
exports.resolveUISettings = resolveUISettings;
|
|
15
|
+
exports.resolveTermsSettings = resolveTermsSettings;
|
|
16
|
+
exports.resolveSuccessSettings = resolveSuccessSettings;
|
|
17
|
+
exports.resolveConsentConfig = resolveConsentConfig;
|
|
18
|
+
exports.mergeConsentConfigs = mergeConsentConfigs;
|
|
19
|
+
exports.hasCustomConfig = hasCustomConfig;
|
|
20
|
+
const modes_types_1 = require("../types/modes.types");
|
|
21
|
+
const defaults_1 = require("../constants/defaults");
|
|
22
|
+
const resolve_branding_1 = require("./resolve-branding");
|
|
23
|
+
const resolve_copy_1 = require("./resolve-copy");
|
|
24
|
+
/**
|
|
25
|
+
* Resolve custom fields with validation
|
|
26
|
+
*
|
|
27
|
+
* @param fields - Custom fields array
|
|
28
|
+
* @returns Validated custom fields (max 10)
|
|
29
|
+
*/
|
|
30
|
+
function resolveCustomFields(fields) {
|
|
31
|
+
if (!fields || fields.length === 0) {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
// Limit to 10 fields
|
|
35
|
+
const limitedFields = fields.slice(0, 10);
|
|
36
|
+
// Filter valid fields
|
|
37
|
+
return limitedFields.filter((field) => {
|
|
38
|
+
// Must have name and label
|
|
39
|
+
if (!field.name || !field.label)
|
|
40
|
+
return false;
|
|
41
|
+
// Name must be alphanumeric with underscores
|
|
42
|
+
if (!/^[a-zA-Z0-9_]+$/.test(field.name))
|
|
43
|
+
return false;
|
|
44
|
+
// Select fields must have options
|
|
45
|
+
if (field.type === "select" && (!field.options || field.options.length === 0)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolve expiration days with bounds checking
|
|
53
|
+
*
|
|
54
|
+
* @param days - Expiration days from config
|
|
55
|
+
* @returns Valid expiration days (1-365)
|
|
56
|
+
*/
|
|
57
|
+
function resolveExpirationDays(days) {
|
|
58
|
+
if (days === undefined || days === null) {
|
|
59
|
+
return defaults_1.DEFAULT_EXPIRATION_DAYS;
|
|
60
|
+
}
|
|
61
|
+
// Clamp to valid range
|
|
62
|
+
if (days < 1)
|
|
63
|
+
return 1;
|
|
64
|
+
if (days > 365)
|
|
65
|
+
return 365;
|
|
66
|
+
return Math.floor(days);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Determine the effective auth mode from config
|
|
70
|
+
*
|
|
71
|
+
* @param config - Consent config
|
|
72
|
+
* @returns Effective auth mode
|
|
73
|
+
*/
|
|
74
|
+
function determineAuthMode(config) {
|
|
75
|
+
// Check which auth mode is configured
|
|
76
|
+
if (config?.oauth?.providerId) {
|
|
77
|
+
return modes_types_1.AUTH_MODES.OAUTH;
|
|
78
|
+
}
|
|
79
|
+
if (config?.credentials?.usernameLabel || config?.credentials?.passwordLabel) {
|
|
80
|
+
return modes_types_1.AUTH_MODES.CREDENTIALS;
|
|
81
|
+
}
|
|
82
|
+
if (config?.magicLink?.enabled) {
|
|
83
|
+
return modes_types_1.AUTH_MODES.MAGIC_LINK;
|
|
84
|
+
}
|
|
85
|
+
if (config?.otp?.enabled) {
|
|
86
|
+
return modes_types_1.AUTH_MODES.OTP;
|
|
87
|
+
}
|
|
88
|
+
// Default to consent-only
|
|
89
|
+
return modes_types_1.AUTH_MODES.CONSENT_ONLY;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get default consent config
|
|
93
|
+
*
|
|
94
|
+
* @returns Default consent config with all fields undefined
|
|
95
|
+
*/
|
|
96
|
+
function getDefaultConsentConfig() {
|
|
97
|
+
return {
|
|
98
|
+
branding: undefined,
|
|
99
|
+
ui: undefined,
|
|
100
|
+
terms: undefined,
|
|
101
|
+
success: undefined,
|
|
102
|
+
customFields: undefined,
|
|
103
|
+
credentials: undefined,
|
|
104
|
+
oauth: undefined,
|
|
105
|
+
magicLink: undefined,
|
|
106
|
+
otp: undefined,
|
|
107
|
+
qrCode: undefined,
|
|
108
|
+
passkey: undefined,
|
|
109
|
+
idv: undefined,
|
|
110
|
+
expirationDays: defaults_1.DEFAULT_EXPIRATION_DAYS,
|
|
111
|
+
metadata: undefined,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Resolve UI settings with all defaults
|
|
116
|
+
*
|
|
117
|
+
* @param ui - Partial UI config
|
|
118
|
+
* @returns Fully resolved UI settings
|
|
119
|
+
*/
|
|
120
|
+
function resolveUISettings(ui) {
|
|
121
|
+
return {
|
|
122
|
+
title: ui?.title ?? defaults_1.DEFAULT_UI.title,
|
|
123
|
+
description: ui?.description ?? defaults_1.DEFAULT_UI.description,
|
|
124
|
+
expirationText: ui?.expirationText ?? defaults_1.DEFAULT_UI.expirationText,
|
|
125
|
+
cancelButtonText: ui?.cancelButtonText ?? defaults_1.DEFAULT_UI.cancelButtonText,
|
|
126
|
+
submitButtonText: ui?.submitButtonText ?? defaults_1.DEFAULT_UI.submitButtonText,
|
|
127
|
+
permissionsHeader: ui?.permissionsHeader ?? defaults_1.DEFAULT_UI.permissionsHeader,
|
|
128
|
+
autoClose: ui?.autoClose ?? defaults_1.DEFAULT_UI.autoClose,
|
|
129
|
+
popupEnabled: ui?.popupEnabled ?? defaults_1.DEFAULT_UI.popupEnabled,
|
|
130
|
+
theme: ui?.theme ?? defaults_1.DEFAULT_UI.theme,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Resolve terms settings with all defaults
|
|
135
|
+
*
|
|
136
|
+
* @param terms - Partial terms config
|
|
137
|
+
* @returns Fully resolved terms settings
|
|
138
|
+
*/
|
|
139
|
+
function resolveTermsSettings(terms) {
|
|
140
|
+
return {
|
|
141
|
+
text: terms?.text ?? defaults_1.DEFAULT_TERMS.text,
|
|
142
|
+
url: terms?.url,
|
|
143
|
+
version: terms?.version,
|
|
144
|
+
required: terms?.required ?? defaults_1.DEFAULT_TERMS.required,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Resolve success settings with all defaults
|
|
149
|
+
*
|
|
150
|
+
* @param success - Partial success config
|
|
151
|
+
* @returns Fully resolved success settings
|
|
152
|
+
*/
|
|
153
|
+
function resolveSuccessSettings(success) {
|
|
154
|
+
return {
|
|
155
|
+
title: success?.title ?? defaults_1.DEFAULT_SUCCESS.title,
|
|
156
|
+
description: success?.description ?? defaults_1.DEFAULT_SUCCESS.description,
|
|
157
|
+
showCredential: success?.showCredential ?? defaults_1.DEFAULT_SUCCESS.showCredential,
|
|
158
|
+
redirectUrl: success?.redirectUrl,
|
|
159
|
+
redirectDelay: success?.redirectDelay,
|
|
160
|
+
continueButtonText: success?.continueButtonText ?? defaults_1.DEFAULT_SUCCESS.continueButtonText,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Resolve complete consent config with all defaults
|
|
165
|
+
*
|
|
166
|
+
* @param config - Partial consent config
|
|
167
|
+
* @param agentName - Optional agent name for placeholder substitution
|
|
168
|
+
* @returns Fully resolved config ready for rendering
|
|
169
|
+
*/
|
|
170
|
+
function resolveConsentConfig(config, agentName) {
|
|
171
|
+
// Resolve branding
|
|
172
|
+
const branding = (0, resolve_branding_1.resolveConsentBranding)(config?.branding);
|
|
173
|
+
// Resolve copy/text
|
|
174
|
+
const copy = (0, resolve_copy_1.resolveConsentCopy)(config, agentName);
|
|
175
|
+
// Resolve UI, terms, success
|
|
176
|
+
const ui = resolveUISettings(config?.ui);
|
|
177
|
+
const terms = resolveTermsSettings(config?.terms);
|
|
178
|
+
const success = resolveSuccessSettings(config?.success);
|
|
179
|
+
// Resolve custom fields
|
|
180
|
+
const customFields = resolveCustomFields(config?.customFields);
|
|
181
|
+
// Resolve expiration
|
|
182
|
+
const expirationDays = resolveExpirationDays(config?.expirationDays);
|
|
183
|
+
// Determine auth mode
|
|
184
|
+
const authMode = determineAuthMode(config);
|
|
185
|
+
return {
|
|
186
|
+
branding,
|
|
187
|
+
copy,
|
|
188
|
+
ui,
|
|
189
|
+
terms,
|
|
190
|
+
success,
|
|
191
|
+
customFields,
|
|
192
|
+
expirationDays,
|
|
193
|
+
authMode,
|
|
194
|
+
// Passthrough mode configs
|
|
195
|
+
credentials: config?.credentials,
|
|
196
|
+
oauth: config?.oauth,
|
|
197
|
+
magicLink: config?.magicLink,
|
|
198
|
+
otp: config?.otp,
|
|
199
|
+
qrCode: config?.qrCode,
|
|
200
|
+
passkey: config?.passkey,
|
|
201
|
+
idv: config?.idv,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Merge two config objects, with override taking precedence
|
|
206
|
+
*
|
|
207
|
+
* @param base - Base config
|
|
208
|
+
* @param override - Override config
|
|
209
|
+
* @returns Merged config
|
|
210
|
+
*/
|
|
211
|
+
function mergeConsentConfigs(base, override) {
|
|
212
|
+
if (!override)
|
|
213
|
+
return base;
|
|
214
|
+
return {
|
|
215
|
+
branding: override.branding ?? base.branding,
|
|
216
|
+
ui: { ...base.ui, ...override.ui },
|
|
217
|
+
terms: { ...base.terms, ...override.terms },
|
|
218
|
+
success: { ...base.success, ...override.success },
|
|
219
|
+
customFields: override.customFields ?? base.customFields,
|
|
220
|
+
credentials: override.credentials ?? base.credentials,
|
|
221
|
+
oauth: override.oauth ?? base.oauth,
|
|
222
|
+
magicLink: override.magicLink ?? base.magicLink,
|
|
223
|
+
otp: override.otp ?? base.otp,
|
|
224
|
+
qrCode: override.qrCode ?? base.qrCode,
|
|
225
|
+
passkey: override.passkey ?? base.passkey,
|
|
226
|
+
idv: override.idv ?? base.idv,
|
|
227
|
+
expirationDays: override.expirationDays ?? base.expirationDays,
|
|
228
|
+
metadata: override.metadata ?? base.metadata,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Check if config has any customization
|
|
233
|
+
*
|
|
234
|
+
* @param config - Config to check
|
|
235
|
+
* @returns True if any non-default values are set
|
|
236
|
+
*/
|
|
237
|
+
function hasCustomConfig(config) {
|
|
238
|
+
if (!config)
|
|
239
|
+
return false;
|
|
240
|
+
return (config.branding !== undefined ||
|
|
241
|
+
config.ui !== undefined ||
|
|
242
|
+
config.terms !== undefined ||
|
|
243
|
+
config.success !== undefined ||
|
|
244
|
+
(config.customFields !== undefined && config.customFields.length > 0) ||
|
|
245
|
+
config.credentials !== undefined ||
|
|
246
|
+
config.oauth !== undefined ||
|
|
247
|
+
config.magicLink !== undefined ||
|
|
248
|
+
config.otp !== undefined ||
|
|
249
|
+
config.qrCode !== undefined ||
|
|
250
|
+
config.passkey !== undefined ||
|
|
251
|
+
config.idv !== undefined ||
|
|
252
|
+
config.expirationDays !== undefined);
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=resolve-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-config.js","sourceRoot":"","sources":["../../src/resolution/resolve-config.ts"],"names":[],"mappings":"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"}
|