xypriss 9.10.5 → 9.10.7
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/cjs/src/plugins/const/XyprissTempDir.js +4 -13
- package/dist/cjs/src/plugins/const/XyprissTempDir.js.map +1 -1
- package/dist/cjs/src/plugins/const/getSysApi.js +14 -0
- package/dist/cjs/src/plugins/const/getSysApi.js.map +1 -0
- package/dist/cjs/src/server/utils/ConfigLoader.js +3 -3
- package/dist/cjs/src/server/utils/ConfigLoader.js.map +1 -1
- package/dist/cjs/src/utils/ConfigSyntaxParser.js +190 -74
- package/dist/cjs/src/utils/ConfigSyntaxParser.js.map +1 -1
- package/dist/esm/src/plugins/const/XyprissTempDir.js +2 -10
- package/dist/esm/src/plugins/const/XyprissTempDir.js.map +1 -1
- package/dist/esm/src/plugins/const/getSysApi.js +12 -0
- package/dist/esm/src/plugins/const/getSysApi.js.map +1 -0
- package/dist/esm/src/server/utils/ConfigLoader.js +3 -3
- package/dist/esm/src/server/utils/ConfigLoader.js.map +1 -1
- package/dist/esm/src/utils/ConfigSyntaxParser.js +190 -74
- package/dist/esm/src/utils/ConfigSyntaxParser.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var xyprissSecurity = require('xypriss-security');
|
|
4
|
+
var getSysApi = require('./getSysApi.js');
|
|
4
5
|
|
|
5
|
-
/**
|
|
6
|
-
* Lazy accessor for `localSysApi`.
|
|
7
|
-
*
|
|
8
|
-
* Deferred to call-time to break the circular initialization chain:
|
|
9
|
-
* `xhsc.ts` -> `PathApi` -> `XyprissTempDir` -> `xhsc` (localSysApi)
|
|
10
|
-
*/
|
|
11
|
-
function getSysApi() {
|
|
12
|
-
return require("../../xhsc").localSysApi;
|
|
13
|
-
}
|
|
14
6
|
/**
|
|
15
7
|
* Returns the absolute path to the XyPriss shared temp directory.
|
|
16
8
|
*
|
|
17
9
|
* @returns {string} Path to `<os.tmpdir>/nehonix.xypriss.data`
|
|
18
10
|
*/
|
|
19
11
|
function getXyprissTempDir() {
|
|
20
|
-
const sys = getSysApi();
|
|
12
|
+
const sys = getSysApi.getSysApi();
|
|
21
13
|
return sys.path.join(sys.path.tempDir(), "nehonix.xypriss.data");
|
|
22
14
|
}
|
|
23
15
|
/**
|
|
@@ -27,7 +19,7 @@ function getXyprissTempDir() {
|
|
|
27
19
|
* @returns {string} The absolute resolved temp sub-path.
|
|
28
20
|
*/
|
|
29
21
|
function createXyprissTempDir(_p) {
|
|
30
|
-
const sys = getSysApi();
|
|
22
|
+
const sys = getSysApi.getSysApi();
|
|
31
23
|
const base = getXyprissTempDir();
|
|
32
24
|
const segment = typeof _p === "string"
|
|
33
25
|
? _p
|
|
@@ -68,7 +60,7 @@ function generateXUserTmpDir() {
|
|
|
68
60
|
if (_sessionTmpDir !== null) {
|
|
69
61
|
return _sessionTmpDir;
|
|
70
62
|
}
|
|
71
|
-
const sys = getSysApi();
|
|
63
|
+
const sys = getSysApi.getSysApi();
|
|
72
64
|
const hex = xyprissSecurity.getRandomBytes(16).slice(0, 4).toString("hex");
|
|
73
65
|
_sessionTmpDir = sys.path.join(getXyprissTempDir(), "xuser", hex);
|
|
74
66
|
return _sessionTmpDir;
|
|
@@ -76,6 +68,5 @@ function generateXUserTmpDir() {
|
|
|
76
68
|
|
|
77
69
|
exports.createXyprissTempDir = createXyprissTempDir;
|
|
78
70
|
exports.generateXUserTmpDir = generateXUserTmpDir;
|
|
79
|
-
exports.getSysApi = getSysApi;
|
|
80
71
|
exports.getXyprissTempDir = getXyprissTempDir;
|
|
81
72
|
//# sourceMappingURL=XyprissTempDir.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyprissTempDir.js","sources":["../../../../../src/plugins/const/XyprissTempDir.ts"],"sourcesContent":[null],"names":["getRandomBytes"],"mappings":"
|
|
1
|
+
{"version":3,"file":"XyprissTempDir.js","sources":["../../../../../src/plugins/const/XyprissTempDir.ts"],"sourcesContent":[null],"names":["getSysApi","getRandomBytes"],"mappings":";;;;;AAIA;;;;AAIG;SACa,iBAAiB,GAAA;AAC7B,IAAA,MAAM,GAAG,GAAGA,mBAAS,EAAE;AACvB,IAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,sBAAsB,CAAC;AACpE;AAEA;;;;;AAKG;AACG,SAAU,oBAAoB,CAAC,EAAqB,EAAA;AACtD,IAAA,MAAM,GAAG,GAAGA,mBAAS,EAAE;AACvB,IAAA,MAAM,IAAI,GAAG,iBAAiB,EAAE;AAEhC,IAAA,MAAM,OAAO,GACT,OAAO,EAAE,KAAK;AACV,UAAE;AACF,UAAE,EAAE,CAAC,QAAQ,CAAC,GAAG;cACb,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;AAC5C,cAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGxB,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI;AACnC,UAAE;UACA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AAClC,IAAA,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;;IAGlE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;AAChC,QAAA,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnD;AAEA,IAAA,OAAO,cAAc;AACzB;AAEA;;;;;;;;;AASG;AACH,IAAI,cAAc,GAAkB,IAAI;AAExC;;;;;;;AAOG;SACa,mBAAmB,GAAA;AAC/B,IAAA,IAAI,cAAc,KAAK,IAAI,EAAE;AACzB,QAAA,OAAO,cAAc;IACzB;AAEA,IAAA,MAAM,GAAG,GAAGA,mBAAS,EAAE;AACvB,IAAA,MAAM,GAAG,GAAGC,8BAAc,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1D,IAAA,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC;AAEjE,IAAA,OAAO,cAAc;AACzB;;;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Lazy accessor for `localSysApi`.
|
|
5
|
+
*
|
|
6
|
+
* Deferred to call-time to break the circular initialization chain:
|
|
7
|
+
* `xhsc.ts` -> `PathApi` -> `XyprissTempDir` -> `xhsc` (localSysApi)
|
|
8
|
+
*/
|
|
9
|
+
function getSysApi() {
|
|
10
|
+
return require("../../xhsc").localSysApi;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
exports.getSysApi = getSysApi;
|
|
14
|
+
//# sourceMappingURL=getSysApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSysApi.js","sources":["../../../../../src/plugins/const/getSysApi.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;SACa,SAAS,GAAA;AACrB,IAAA,OAAQ,OAAO,CAAC,YAAY,CAAiC,CAAC,WAAW;AAC7E;;;;"}
|
|
@@ -109,10 +109,10 @@ class ConfigLoader {
|
|
|
109
109
|
return;
|
|
110
110
|
Logger.logger.debug("server", `ConfigLoader: Applied configuration from: ${path__namespace.relative(projectRoot, configPath)}`);
|
|
111
111
|
// Apply __sys__ config if present
|
|
112
|
-
if (config
|
|
112
|
+
if (config?.$vars) {
|
|
113
113
|
if (xhsc.__sys__) {
|
|
114
|
-
Logger.logger.debug("server", `ConfigLoader: Updating system variables with
|
|
115
|
-
xhsc.__sys__.vars.update(config
|
|
114
|
+
Logger.logger.debug("server", `ConfigLoader: Updating system variables with $vars: ${JSON.stringify(config.$vars)}`);
|
|
115
|
+
xhsc.__sys__.vars.update(config.$vars);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
// Process internal configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigLoader.js","sources":["../../../../../src/server/utils/ConfigLoader.ts"],"sourcesContent":[null],"names":["path","fs","getCallerProjectRoot","__sys__","logger","XyPrissFS","XY_XHSC_REGISTER_FS","ConfigSyntaxParser"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA;;;;;AAKG;MACU,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;QACY,IAAA,CAAA,eAAe,GAAG,KAAK;AACvB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAU;QACjC,IAAA,CAAA,WAAW,GAAQ,IAAI;
|
|
1
|
+
{"version":3,"file":"ConfigLoader.js","sources":["../../../../../src/server/utils/ConfigLoader.ts"],"sourcesContent":[null],"names":["path","fs","getCallerProjectRoot","__sys__","logger","XyPrissFS","XY_XHSC_REGISTER_FS","ConfigSyntaxParser"],"mappings":"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"}
|
|
@@ -1,128 +1,244 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var getSysApi = require('../plugins/const/getSysApi.js');
|
|
4
|
+
|
|
3
5
|
/**
|
|
4
6
|
* **Config Syntax Parser**
|
|
5
7
|
*
|
|
6
8
|
* Handles resolution of dynamic references in configuration files:
|
|
7
|
-
* -
|
|
8
|
-
* -
|
|
9
|
+
* - `&(env).KEY` : Environment variables
|
|
10
|
+
* - `&(pkg).path` : package.json properties (dot-notation)
|
|
11
|
+
* - `&(this).KEY` : Properties from the currently parsed object
|
|
12
|
+
* - `&(const).KEY` : Build-time constants injected at construction
|
|
13
|
+
* - `&(date).FMT` : Current date/time helpers (ISO, YEAR, MONTH, DAY, TS)
|
|
14
|
+
* - `&(file).path` : Synchronous file content (use for secrets, certs, etc.)
|
|
9
15
|
*/
|
|
16
|
+
// Valid reference types — extend here when adding new syntax.
|
|
17
|
+
const VALID_TYPES = new Set(["env", "pkg", "this", "const", "date", "file"]);
|
|
18
|
+
// Date format tokens supported by &(date).TOKEN
|
|
19
|
+
const DATE_TOKENS = {
|
|
20
|
+
ISO: () => new Date().toISOString(),
|
|
21
|
+
YEAR: () => String(new Date().getFullYear()),
|
|
22
|
+
MONTH: () => String(new Date().getMonth() + 1).padStart(2, "0"),
|
|
23
|
+
DAY: () => String(new Date().getDate()).padStart(2, "0"),
|
|
24
|
+
TS: () => String(Date.now()),
|
|
25
|
+
TIME: () => new Date().toTimeString().split(" ")[0], // HH:MM:SS
|
|
26
|
+
};
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Parser
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
10
30
|
class ConfigSyntaxParser {
|
|
11
|
-
constructor(packageJson = null, envProvider = null) {
|
|
31
|
+
constructor(packageJson = null, envProvider = null, constants = {}, options = {}) {
|
|
12
32
|
this.packageJson = packageJson;
|
|
13
33
|
this.envProvider = envProvider;
|
|
34
|
+
this.constants = constants;
|
|
35
|
+
// LRU-style cache for getDeepValue on the same object reference
|
|
36
|
+
this.deepValueCache = new WeakMap();
|
|
37
|
+
this.fileBasePath = options.fileBasePath ?? process.cwd();
|
|
38
|
+
this.maxPasses = options.maxPasses ?? 20;
|
|
14
39
|
}
|
|
40
|
+
// -------------------------------------------------------------------------
|
|
41
|
+
// Public API — signatures intentionally unchanged
|
|
42
|
+
// -------------------------------------------------------------------------
|
|
15
43
|
/**
|
|
16
44
|
* Resolves all dynamic references in a configuration object or string.
|
|
45
|
+
* Non-string/array/object values are returned as-is.
|
|
17
46
|
*/
|
|
18
|
-
resolve(obj) {
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
47
|
+
resolve(obj, rootObj) {
|
|
48
|
+
if (rootObj === undefined)
|
|
49
|
+
rootObj = obj;
|
|
50
|
+
if (typeof obj === "string")
|
|
51
|
+
return this.resolveString(obj, rootObj);
|
|
52
|
+
if (Array.isArray(obj))
|
|
53
|
+
return obj.map((item) => this.resolve(item, rootObj));
|
|
54
|
+
if (typeof obj === "object" && obj !== null) {
|
|
26
55
|
const resolved = {};
|
|
27
|
-
for (const key
|
|
28
|
-
const resolvedKey = this.resolve(key);
|
|
29
|
-
resolved[resolvedKey] = this.resolve(obj[key]);
|
|
56
|
+
for (const key of Object.keys(obj)) {
|
|
57
|
+
const resolvedKey = String(this.resolve(key, rootObj));
|
|
58
|
+
resolved[resolvedKey] = this.resolve(obj[key], rootObj);
|
|
30
59
|
}
|
|
31
60
|
return resolved;
|
|
32
61
|
}
|
|
33
|
-
return obj;
|
|
62
|
+
return obj; // number, boolean, null, undefined — pass through untouched
|
|
34
63
|
}
|
|
64
|
+
// -------------------------------------------------------------------------
|
|
65
|
+
// Core resolution
|
|
66
|
+
// -------------------------------------------------------------------------
|
|
35
67
|
/**
|
|
36
|
-
* Resolves dynamic references in a string.
|
|
68
|
+
* Resolves dynamic references in a string, supporting chained || fallbacks.
|
|
37
69
|
*/
|
|
38
|
-
resolveString(value) {
|
|
70
|
+
resolveString(value, rootObj) {
|
|
71
|
+
// Validate before any resolution to catch syntax errors even in unused fallbacks
|
|
72
|
+
this.validateSyntax(value);
|
|
73
|
+
// Matches: &(type).key || &(type).key || literal-fallback
|
|
74
|
+
// Group 1 — type
|
|
75
|
+
// Group 2 — key/path
|
|
76
|
+
// Group 3 — remainder of the || chain
|
|
77
|
+
const chainRegex = /&\(([\w]+)\)\.([\w\d_./-]+)((?:\s*\|\|\s*(?:&\((?:[\w]+)\)\.[\w\d_./-]+|[^|,]+))*)/g;
|
|
39
78
|
let result = value;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const lastResult = result;
|
|
48
|
-
result = result.replace(chainRegex, (_match, _prefix, type, key, chain) => {
|
|
49
|
-
const val = this.getValue(type, key);
|
|
79
|
+
let passes = 0;
|
|
80
|
+
while (passes++ < this.maxPasses) {
|
|
81
|
+
const prev = result;
|
|
82
|
+
// Reset regex before each pass (global flag keeps lastIndex)
|
|
83
|
+
chainRegex.lastIndex = 0;
|
|
84
|
+
result = result.replace(chainRegex, (_match, type, key, chain) => {
|
|
85
|
+
const val = this.getValue(type, key, rootObj);
|
|
50
86
|
if (val !== undefined)
|
|
51
87
|
return val;
|
|
52
88
|
if (chain) {
|
|
53
|
-
//
|
|
89
|
+
// Strip leading " || " and let the next pass handle it
|
|
54
90
|
return chain.replace(/^\s*\|\|\s*/, "");
|
|
55
91
|
}
|
|
56
|
-
throw new Error(
|
|
57
|
-
? 'Environment variable'
|
|
58
|
-
: 'Property'} "${key}" not found${type === "pkg" ? " in package.json" : ""}`);
|
|
92
|
+
throw new Error(this.buildMissingError(type, key));
|
|
59
93
|
});
|
|
60
|
-
if (result ===
|
|
94
|
+
if (result === prev)
|
|
61
95
|
break;
|
|
62
96
|
}
|
|
63
|
-
|
|
97
|
+
if (passes > this.maxPasses) {
|
|
98
|
+
throw new Error(`ESYNC: Resolution did not stabilise after ${this.maxPasses} passes in "${value}". ` +
|
|
99
|
+
`Possible circular reference.`);
|
|
100
|
+
}
|
|
64
101
|
this.validateSyntax(result);
|
|
65
102
|
return result;
|
|
66
103
|
}
|
|
104
|
+
// -------------------------------------------------------------------------
|
|
105
|
+
// Value retrieval
|
|
106
|
+
// -------------------------------------------------------------------------
|
|
67
107
|
/**
|
|
68
|
-
*
|
|
108
|
+
* Dispatches value retrieval to the appropriate provider.
|
|
69
109
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
throw new Error(`ESYNC: Malformed syntax "${full}". Missing dot separator after type (e.g., $(env).KEY).`);
|
|
87
|
-
}
|
|
88
|
-
if (!key) {
|
|
89
|
-
throw new Error(`ESYNC: Malformed syntax "${full}". Missing key or property path in "${full}".`);
|
|
90
|
-
}
|
|
110
|
+
getValue(type, key, rootObj) {
|
|
111
|
+
switch (type) {
|
|
112
|
+
case "env":
|
|
113
|
+
return this.getEnv(key);
|
|
114
|
+
case "pkg":
|
|
115
|
+
return this.getPkg(key);
|
|
116
|
+
case "this":
|
|
117
|
+
return this.getThis(key, rootObj);
|
|
118
|
+
case "const":
|
|
119
|
+
return this.getConst(key);
|
|
120
|
+
case "date":
|
|
121
|
+
return this.getDate(key);
|
|
122
|
+
case "file":
|
|
123
|
+
return this.getFile(key);
|
|
124
|
+
default:
|
|
125
|
+
return undefined; // validateSyntax will catch this
|
|
91
126
|
}
|
|
92
|
-
// Catch-all for other malformed markers
|
|
93
|
-
throw new Error(`ESYNC: Invalid or malformed injection syntax detected in "${value}"`);
|
|
94
127
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
128
|
+
getEnv(key) {
|
|
129
|
+
return this.envProvider?.has(key)
|
|
130
|
+
? this.envProvider.get(key)
|
|
131
|
+
: undefined;
|
|
132
|
+
}
|
|
133
|
+
getPkg(key) {
|
|
134
|
+
if (!this.packageJson)
|
|
135
|
+
return undefined;
|
|
136
|
+
const val = this.getDeepValue(this.packageJson, key);
|
|
137
|
+
return val !== undefined ? String(val) : undefined;
|
|
138
|
+
}
|
|
139
|
+
getThis(key, rootObj) {
|
|
140
|
+
if (rootObj === null || typeof rootObj !== "object")
|
|
141
|
+
return undefined;
|
|
142
|
+
const val = this.getDeepValue(rootObj, key);
|
|
143
|
+
return val !== undefined ? String(val) : undefined;
|
|
144
|
+
}
|
|
145
|
+
getConst(key) {
|
|
146
|
+
return Object.prototype.hasOwnProperty.call(this.constants, key)
|
|
147
|
+
? this.constants[key]
|
|
148
|
+
: undefined;
|
|
149
|
+
}
|
|
150
|
+
getDate(token) {
|
|
151
|
+
const upper = token.toUpperCase();
|
|
152
|
+
return DATE_TOKENS[upper]?.();
|
|
153
|
+
// Unknown date tokens fall through to the error handler
|
|
154
|
+
}
|
|
155
|
+
getFile(filePath) {
|
|
156
|
+
try {
|
|
157
|
+
const sys = getSysApi.getSysApi();
|
|
158
|
+
const resolved = sys.path.isAbsolute(filePath)
|
|
159
|
+
? filePath
|
|
160
|
+
: sys.path.resolve(this.fileBasePath, filePath);
|
|
161
|
+
return sys.fs.readFileSync(resolved, "utf8").trim();
|
|
103
162
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
? this.getDeepValue(this.packageJson, key)
|
|
107
|
-
: undefined;
|
|
108
|
-
return val !== undefined ? String(val) : undefined;
|
|
163
|
+
catch {
|
|
164
|
+
return undefined; // triggers fallback chain or missing-key error
|
|
109
165
|
}
|
|
110
166
|
}
|
|
167
|
+
// -------------------------------------------------------------------------
|
|
168
|
+
// Deep value with caching
|
|
169
|
+
// -------------------------------------------------------------------------
|
|
111
170
|
/**
|
|
112
171
|
* Retrieves a value from a nested object using dot notation.
|
|
172
|
+
* Results are cached per object reference to avoid repeated traversal.
|
|
113
173
|
*/
|
|
114
174
|
getDeepValue(obj, path) {
|
|
115
|
-
|
|
116
|
-
|
|
175
|
+
// Check cache
|
|
176
|
+
let pathMap = this.deepValueCache.get(obj);
|
|
177
|
+
if (pathMap?.has(path))
|
|
178
|
+
return pathMap.get(path);
|
|
117
179
|
const parts = path.split(".");
|
|
118
180
|
let current = obj;
|
|
119
181
|
for (const part of parts) {
|
|
120
|
-
if (current === null || typeof current !== "object")
|
|
121
|
-
|
|
182
|
+
if (current === null || typeof current !== "object") {
|
|
183
|
+
current = undefined;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
122
186
|
current = current[part];
|
|
123
187
|
}
|
|
188
|
+
// Store in cache
|
|
189
|
+
if (!pathMap) {
|
|
190
|
+
pathMap = new Map();
|
|
191
|
+
this.deepValueCache.set(obj, pathMap);
|
|
192
|
+
}
|
|
193
|
+
pathMap.set(path, current);
|
|
124
194
|
return current;
|
|
125
195
|
}
|
|
196
|
+
// -------------------------------------------------------------------------
|
|
197
|
+
// Validation
|
|
198
|
+
// -------------------------------------------------------------------------
|
|
199
|
+
/**
|
|
200
|
+
* Validates that no unresolved or malformed markers remain in the string.
|
|
201
|
+
*/
|
|
202
|
+
validateSyntax(value) {
|
|
203
|
+
if (!/&\(/.test(value))
|
|
204
|
+
return;
|
|
205
|
+
const malformedRegex = /&\(([^)]*)\)(\.?)([\w\d_./-]*)/g;
|
|
206
|
+
let match;
|
|
207
|
+
while ((match = malformedRegex.exec(value)) !== null) {
|
|
208
|
+
const [full, type, dot, key] = match;
|
|
209
|
+
if (!VALID_TYPES.has(type)) {
|
|
210
|
+
throw new Error(`ESYNC: Invalid reference type "(${type})" in "${full}". ` +
|
|
211
|
+
// `Valid types: ${[...VALID_TYPES].join(", ")}. ` +
|
|
212
|
+
`See https://github.com/Nehonix-Team/XyPriss/blob/master/docs/config/configuration.md`);
|
|
213
|
+
}
|
|
214
|
+
if (dot !== ".") {
|
|
215
|
+
throw new Error(`ESYNC: Malformed syntax "${full}". Missing dot separator after type (e.g., &(env).KEY).`);
|
|
216
|
+
}
|
|
217
|
+
if (!key) {
|
|
218
|
+
throw new Error(`ESYNC: Malformed syntax "${full}". Missing key or property path.`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Catch any `&(` that didn't even loosely match the malformedRegex
|
|
222
|
+
const stripped = value.replace(malformedRegex, "");
|
|
223
|
+
if (/&\(/.test(stripped)) {
|
|
224
|
+
throw new Error(`ESYNC: Invalid or malformed injection syntax detected in "${value}".`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// -------------------------------------------------------------------------
|
|
228
|
+
// Error formatting
|
|
229
|
+
// -------------------------------------------------------------------------
|
|
230
|
+
buildMissingError(type, key) {
|
|
231
|
+
const descriptions = {
|
|
232
|
+
env: `Environment variable "${key}"`,
|
|
233
|
+
pkg: `Property "${key}" in package.json`,
|
|
234
|
+
this: `Property "${key}" in current object`,
|
|
235
|
+
const: `Constant "${key}"`,
|
|
236
|
+
date: `Date token "${key}" (valid: ${Object.keys(DATE_TOKENS).join(", ")})`,
|
|
237
|
+
file: `File "${key}"`,
|
|
238
|
+
};
|
|
239
|
+
const desc = descriptions[type] ?? `Reference "${key}" (type: ${type})`;
|
|
240
|
+
return `EDYNC: ${desc} not found or could not be resolved.`;
|
|
241
|
+
}
|
|
126
242
|
}
|
|
127
243
|
|
|
128
244
|
exports.ConfigSyntaxParser = ConfigSyntaxParser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigSyntaxParser.js","sources":["../../../../src/utils/ConfigSyntaxParser.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConfigSyntaxParser.js","sources":["../../../../src/utils/ConfigSyntaxParser.ts"],"sourcesContent":[null],"names":["getSysApi"],"mappings":"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"}
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
import { getRandomBytes } from 'xypriss-security';
|
|
2
|
+
import { getSysApi } from './getSysApi.js';
|
|
2
3
|
|
|
3
|
-
/**
|
|
4
|
-
* Lazy accessor for `localSysApi`.
|
|
5
|
-
*
|
|
6
|
-
* Deferred to call-time to break the circular initialization chain:
|
|
7
|
-
* `xhsc.ts` -> `PathApi` -> `XyprissTempDir` -> `xhsc` (localSysApi)
|
|
8
|
-
*/
|
|
9
|
-
function getSysApi() {
|
|
10
|
-
return require("../../xhsc").localSysApi;
|
|
11
|
-
}
|
|
12
4
|
/**
|
|
13
5
|
* Returns the absolute path to the XyPriss shared temp directory.
|
|
14
6
|
*
|
|
@@ -72,5 +64,5 @@ function generateXUserTmpDir() {
|
|
|
72
64
|
return _sessionTmpDir;
|
|
73
65
|
}
|
|
74
66
|
|
|
75
|
-
export { createXyprissTempDir, generateXUserTmpDir,
|
|
67
|
+
export { createXyprissTempDir, generateXUserTmpDir, getXyprissTempDir };
|
|
76
68
|
//# sourceMappingURL=XyprissTempDir.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyprissTempDir.js","sources":["../../../../../src/plugins/const/XyprissTempDir.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"XyprissTempDir.js","sources":["../../../../../src/plugins/const/XyprissTempDir.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAIA;;;;AAIG;SACa,iBAAiB,GAAA;AAC7B,IAAA,MAAM,GAAG,GAAG,SAAS,EAAE;AACvB,IAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,sBAAsB,CAAC;AACpE;AAEA;;;;;AAKG;AACG,SAAU,oBAAoB,CAAC,EAAqB,EAAA;AACtD,IAAA,MAAM,GAAG,GAAG,SAAS,EAAE;AACvB,IAAA,MAAM,IAAI,GAAG,iBAAiB,EAAE;AAEhC,IAAA,MAAM,OAAO,GACT,OAAO,EAAE,KAAK;AACV,UAAE;AACF,UAAE,EAAE,CAAC,QAAQ,CAAC,GAAG;cACb,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;AAC5C,cAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGxB,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI;AACnC,UAAE;UACA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AAClC,IAAA,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;;IAGlE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;AAChC,QAAA,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnD;AAEA,IAAA,OAAO,cAAc;AACzB;AAEA;;;;;;;;;AASG;AACH,IAAI,cAAc,GAAkB,IAAI;AAExC;;;;;;;AAOG;SACa,mBAAmB,GAAA;AAC/B,IAAA,IAAI,cAAc,KAAK,IAAI,EAAE;AACzB,QAAA,OAAO,cAAc;IACzB;AAEA,IAAA,MAAM,GAAG,GAAG,SAAS,EAAE;AACvB,IAAA,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1D,IAAA,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC;AAEjE,IAAA,OAAO,cAAc;AACzB;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazy accessor for `localSysApi`.
|
|
3
|
+
*
|
|
4
|
+
* Deferred to call-time to break the circular initialization chain:
|
|
5
|
+
* `xhsc.ts` -> `PathApi` -> `XyprissTempDir` -> `xhsc` (localSysApi)
|
|
6
|
+
*/
|
|
7
|
+
function getSysApi() {
|
|
8
|
+
return require("../../xhsc").localSysApi;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { getSysApi };
|
|
12
|
+
//# sourceMappingURL=getSysApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSysApi.js","sources":["../../../../../src/plugins/const/getSysApi.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;SACa,SAAS,GAAA;AACrB,IAAA,OAAQ,OAAO,CAAC,YAAY,CAAiC,CAAC,WAAW;AAC7E;;;;"}
|
|
@@ -87,10 +87,10 @@ class ConfigLoader {
|
|
|
87
87
|
return;
|
|
88
88
|
logger.debug("server", `ConfigLoader: Applied configuration from: ${path.relative(projectRoot, configPath)}`);
|
|
89
89
|
// Apply __sys__ config if present
|
|
90
|
-
if (config
|
|
90
|
+
if (config?.$vars) {
|
|
91
91
|
if (__sys__) {
|
|
92
|
-
logger.debug("server", `ConfigLoader: Updating system variables with
|
|
93
|
-
__sys__.vars.update(config
|
|
92
|
+
logger.debug("server", `ConfigLoader: Updating system variables with $vars: ${JSON.stringify(config.$vars)}`);
|
|
93
|
+
__sys__.vars.update(config.$vars);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
// Process internal configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigLoader.js","sources":["../../../../../src/server/utils/ConfigLoader.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AASA;;;;;AAKG;MACU,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;QACY,IAAA,CAAA,eAAe,GAAG,KAAK;AACvB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAU;QACjC,IAAA,CAAA,WAAW,GAAQ,IAAI;
|
|
1
|
+
{"version":3,"file":"ConfigLoader.js","sources":["../../../../../src/server/utils/ConfigLoader.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,126 +1,242 @@
|
|
|
1
|
+
import { getSysApi } from '../plugins/const/getSysApi.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* **Config Syntax Parser**
|
|
3
5
|
*
|
|
4
6
|
* Handles resolution of dynamic references in configuration files:
|
|
5
|
-
* -
|
|
6
|
-
* -
|
|
7
|
+
* - `&(env).KEY` : Environment variables
|
|
8
|
+
* - `&(pkg).path` : package.json properties (dot-notation)
|
|
9
|
+
* - `&(this).KEY` : Properties from the currently parsed object
|
|
10
|
+
* - `&(const).KEY` : Build-time constants injected at construction
|
|
11
|
+
* - `&(date).FMT` : Current date/time helpers (ISO, YEAR, MONTH, DAY, TS)
|
|
12
|
+
* - `&(file).path` : Synchronous file content (use for secrets, certs, etc.)
|
|
7
13
|
*/
|
|
14
|
+
// Valid reference types — extend here when adding new syntax.
|
|
15
|
+
const VALID_TYPES = new Set(["env", "pkg", "this", "const", "date", "file"]);
|
|
16
|
+
// Date format tokens supported by &(date).TOKEN
|
|
17
|
+
const DATE_TOKENS = {
|
|
18
|
+
ISO: () => new Date().toISOString(),
|
|
19
|
+
YEAR: () => String(new Date().getFullYear()),
|
|
20
|
+
MONTH: () => String(new Date().getMonth() + 1).padStart(2, "0"),
|
|
21
|
+
DAY: () => String(new Date().getDate()).padStart(2, "0"),
|
|
22
|
+
TS: () => String(Date.now()),
|
|
23
|
+
TIME: () => new Date().toTimeString().split(" ")[0], // HH:MM:SS
|
|
24
|
+
};
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
// Parser
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
8
28
|
class ConfigSyntaxParser {
|
|
9
|
-
constructor(packageJson = null, envProvider = null) {
|
|
29
|
+
constructor(packageJson = null, envProvider = null, constants = {}, options = {}) {
|
|
10
30
|
this.packageJson = packageJson;
|
|
11
31
|
this.envProvider = envProvider;
|
|
32
|
+
this.constants = constants;
|
|
33
|
+
// LRU-style cache for getDeepValue on the same object reference
|
|
34
|
+
this.deepValueCache = new WeakMap();
|
|
35
|
+
this.fileBasePath = options.fileBasePath ?? process.cwd();
|
|
36
|
+
this.maxPasses = options.maxPasses ?? 20;
|
|
12
37
|
}
|
|
38
|
+
// -------------------------------------------------------------------------
|
|
39
|
+
// Public API — signatures intentionally unchanged
|
|
40
|
+
// -------------------------------------------------------------------------
|
|
13
41
|
/**
|
|
14
42
|
* Resolves all dynamic references in a configuration object or string.
|
|
43
|
+
* Non-string/array/object values are returned as-is.
|
|
15
44
|
*/
|
|
16
|
-
resolve(obj) {
|
|
17
|
-
if (
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
45
|
+
resolve(obj, rootObj) {
|
|
46
|
+
if (rootObj === undefined)
|
|
47
|
+
rootObj = obj;
|
|
48
|
+
if (typeof obj === "string")
|
|
49
|
+
return this.resolveString(obj, rootObj);
|
|
50
|
+
if (Array.isArray(obj))
|
|
51
|
+
return obj.map((item) => this.resolve(item, rootObj));
|
|
52
|
+
if (typeof obj === "object" && obj !== null) {
|
|
24
53
|
const resolved = {};
|
|
25
|
-
for (const key
|
|
26
|
-
const resolvedKey = this.resolve(key);
|
|
27
|
-
resolved[resolvedKey] = this.resolve(obj[key]);
|
|
54
|
+
for (const key of Object.keys(obj)) {
|
|
55
|
+
const resolvedKey = String(this.resolve(key, rootObj));
|
|
56
|
+
resolved[resolvedKey] = this.resolve(obj[key], rootObj);
|
|
28
57
|
}
|
|
29
58
|
return resolved;
|
|
30
59
|
}
|
|
31
|
-
return obj;
|
|
60
|
+
return obj; // number, boolean, null, undefined — pass through untouched
|
|
32
61
|
}
|
|
62
|
+
// -------------------------------------------------------------------------
|
|
63
|
+
// Core resolution
|
|
64
|
+
// -------------------------------------------------------------------------
|
|
33
65
|
/**
|
|
34
|
-
* Resolves dynamic references in a string.
|
|
66
|
+
* Resolves dynamic references in a string, supporting chained || fallbacks.
|
|
35
67
|
*/
|
|
36
|
-
resolveString(value) {
|
|
68
|
+
resolveString(value, rootObj) {
|
|
69
|
+
// Validate before any resolution to catch syntax errors even in unused fallbacks
|
|
70
|
+
this.validateSyntax(value);
|
|
71
|
+
// Matches: &(type).key || &(type).key || literal-fallback
|
|
72
|
+
// Group 1 — type
|
|
73
|
+
// Group 2 — key/path
|
|
74
|
+
// Group 3 — remainder of the || chain
|
|
75
|
+
const chainRegex = /&\(([\w]+)\)\.([\w\d_./-]+)((?:\s*\|\|\s*(?:&\((?:[\w]+)\)\.[\w\d_./-]+|[^|,]+))*)/g;
|
|
37
76
|
let result = value;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const lastResult = result;
|
|
46
|
-
result = result.replace(chainRegex, (_match, _prefix, type, key, chain) => {
|
|
47
|
-
const val = this.getValue(type, key);
|
|
77
|
+
let passes = 0;
|
|
78
|
+
while (passes++ < this.maxPasses) {
|
|
79
|
+
const prev = result;
|
|
80
|
+
// Reset regex before each pass (global flag keeps lastIndex)
|
|
81
|
+
chainRegex.lastIndex = 0;
|
|
82
|
+
result = result.replace(chainRegex, (_match, type, key, chain) => {
|
|
83
|
+
const val = this.getValue(type, key, rootObj);
|
|
48
84
|
if (val !== undefined)
|
|
49
85
|
return val;
|
|
50
86
|
if (chain) {
|
|
51
|
-
//
|
|
87
|
+
// Strip leading " || " and let the next pass handle it
|
|
52
88
|
return chain.replace(/^\s*\|\|\s*/, "");
|
|
53
89
|
}
|
|
54
|
-
throw new Error(
|
|
55
|
-
? 'Environment variable'
|
|
56
|
-
: 'Property'} "${key}" not found${type === "pkg" ? " in package.json" : ""}`);
|
|
90
|
+
throw new Error(this.buildMissingError(type, key));
|
|
57
91
|
});
|
|
58
|
-
if (result ===
|
|
92
|
+
if (result === prev)
|
|
59
93
|
break;
|
|
60
94
|
}
|
|
61
|
-
|
|
95
|
+
if (passes > this.maxPasses) {
|
|
96
|
+
throw new Error(`ESYNC: Resolution did not stabilise after ${this.maxPasses} passes in "${value}". ` +
|
|
97
|
+
`Possible circular reference.`);
|
|
98
|
+
}
|
|
62
99
|
this.validateSyntax(result);
|
|
63
100
|
return result;
|
|
64
101
|
}
|
|
102
|
+
// -------------------------------------------------------------------------
|
|
103
|
+
// Value retrieval
|
|
104
|
+
// -------------------------------------------------------------------------
|
|
65
105
|
/**
|
|
66
|
-
*
|
|
106
|
+
* Dispatches value retrieval to the appropriate provider.
|
|
67
107
|
*/
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
throw new Error(`ESYNC: Malformed syntax "${full}". Missing dot separator after type (e.g., $(env).KEY).`);
|
|
85
|
-
}
|
|
86
|
-
if (!key) {
|
|
87
|
-
throw new Error(`ESYNC: Malformed syntax "${full}". Missing key or property path in "${full}".`);
|
|
88
|
-
}
|
|
108
|
+
getValue(type, key, rootObj) {
|
|
109
|
+
switch (type) {
|
|
110
|
+
case "env":
|
|
111
|
+
return this.getEnv(key);
|
|
112
|
+
case "pkg":
|
|
113
|
+
return this.getPkg(key);
|
|
114
|
+
case "this":
|
|
115
|
+
return this.getThis(key, rootObj);
|
|
116
|
+
case "const":
|
|
117
|
+
return this.getConst(key);
|
|
118
|
+
case "date":
|
|
119
|
+
return this.getDate(key);
|
|
120
|
+
case "file":
|
|
121
|
+
return this.getFile(key);
|
|
122
|
+
default:
|
|
123
|
+
return undefined; // validateSyntax will catch this
|
|
89
124
|
}
|
|
90
|
-
// Catch-all for other malformed markers
|
|
91
|
-
throw new Error(`ESYNC: Invalid or malformed injection syntax detected in "${value}"`);
|
|
92
125
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
126
|
+
getEnv(key) {
|
|
127
|
+
return this.envProvider?.has(key)
|
|
128
|
+
? this.envProvider.get(key)
|
|
129
|
+
: undefined;
|
|
130
|
+
}
|
|
131
|
+
getPkg(key) {
|
|
132
|
+
if (!this.packageJson)
|
|
133
|
+
return undefined;
|
|
134
|
+
const val = this.getDeepValue(this.packageJson, key);
|
|
135
|
+
return val !== undefined ? String(val) : undefined;
|
|
136
|
+
}
|
|
137
|
+
getThis(key, rootObj) {
|
|
138
|
+
if (rootObj === null || typeof rootObj !== "object")
|
|
139
|
+
return undefined;
|
|
140
|
+
const val = this.getDeepValue(rootObj, key);
|
|
141
|
+
return val !== undefined ? String(val) : undefined;
|
|
142
|
+
}
|
|
143
|
+
getConst(key) {
|
|
144
|
+
return Object.prototype.hasOwnProperty.call(this.constants, key)
|
|
145
|
+
? this.constants[key]
|
|
146
|
+
: undefined;
|
|
147
|
+
}
|
|
148
|
+
getDate(token) {
|
|
149
|
+
const upper = token.toUpperCase();
|
|
150
|
+
return DATE_TOKENS[upper]?.();
|
|
151
|
+
// Unknown date tokens fall through to the error handler
|
|
152
|
+
}
|
|
153
|
+
getFile(filePath) {
|
|
154
|
+
try {
|
|
155
|
+
const sys = getSysApi();
|
|
156
|
+
const resolved = sys.path.isAbsolute(filePath)
|
|
157
|
+
? filePath
|
|
158
|
+
: sys.path.resolve(this.fileBasePath, filePath);
|
|
159
|
+
return sys.fs.readFileSync(resolved, "utf8").trim();
|
|
101
160
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
? this.getDeepValue(this.packageJson, key)
|
|
105
|
-
: undefined;
|
|
106
|
-
return val !== undefined ? String(val) : undefined;
|
|
161
|
+
catch {
|
|
162
|
+
return undefined; // triggers fallback chain or missing-key error
|
|
107
163
|
}
|
|
108
164
|
}
|
|
165
|
+
// -------------------------------------------------------------------------
|
|
166
|
+
// Deep value with caching
|
|
167
|
+
// -------------------------------------------------------------------------
|
|
109
168
|
/**
|
|
110
169
|
* Retrieves a value from a nested object using dot notation.
|
|
170
|
+
* Results are cached per object reference to avoid repeated traversal.
|
|
111
171
|
*/
|
|
112
172
|
getDeepValue(obj, path) {
|
|
113
|
-
|
|
114
|
-
|
|
173
|
+
// Check cache
|
|
174
|
+
let pathMap = this.deepValueCache.get(obj);
|
|
175
|
+
if (pathMap?.has(path))
|
|
176
|
+
return pathMap.get(path);
|
|
115
177
|
const parts = path.split(".");
|
|
116
178
|
let current = obj;
|
|
117
179
|
for (const part of parts) {
|
|
118
|
-
if (current === null || typeof current !== "object")
|
|
119
|
-
|
|
180
|
+
if (current === null || typeof current !== "object") {
|
|
181
|
+
current = undefined;
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
120
184
|
current = current[part];
|
|
121
185
|
}
|
|
186
|
+
// Store in cache
|
|
187
|
+
if (!pathMap) {
|
|
188
|
+
pathMap = new Map();
|
|
189
|
+
this.deepValueCache.set(obj, pathMap);
|
|
190
|
+
}
|
|
191
|
+
pathMap.set(path, current);
|
|
122
192
|
return current;
|
|
123
193
|
}
|
|
194
|
+
// -------------------------------------------------------------------------
|
|
195
|
+
// Validation
|
|
196
|
+
// -------------------------------------------------------------------------
|
|
197
|
+
/**
|
|
198
|
+
* Validates that no unresolved or malformed markers remain in the string.
|
|
199
|
+
*/
|
|
200
|
+
validateSyntax(value) {
|
|
201
|
+
if (!/&\(/.test(value))
|
|
202
|
+
return;
|
|
203
|
+
const malformedRegex = /&\(([^)]*)\)(\.?)([\w\d_./-]*)/g;
|
|
204
|
+
let match;
|
|
205
|
+
while ((match = malformedRegex.exec(value)) !== null) {
|
|
206
|
+
const [full, type, dot, key] = match;
|
|
207
|
+
if (!VALID_TYPES.has(type)) {
|
|
208
|
+
throw new Error(`ESYNC: Invalid reference type "(${type})" in "${full}". ` +
|
|
209
|
+
// `Valid types: ${[...VALID_TYPES].join(", ")}. ` +
|
|
210
|
+
`See https://github.com/Nehonix-Team/XyPriss/blob/master/docs/config/configuration.md`);
|
|
211
|
+
}
|
|
212
|
+
if (dot !== ".") {
|
|
213
|
+
throw new Error(`ESYNC: Malformed syntax "${full}". Missing dot separator after type (e.g., &(env).KEY).`);
|
|
214
|
+
}
|
|
215
|
+
if (!key) {
|
|
216
|
+
throw new Error(`ESYNC: Malformed syntax "${full}". Missing key or property path.`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Catch any `&(` that didn't even loosely match the malformedRegex
|
|
220
|
+
const stripped = value.replace(malformedRegex, "");
|
|
221
|
+
if (/&\(/.test(stripped)) {
|
|
222
|
+
throw new Error(`ESYNC: Invalid or malformed injection syntax detected in "${value}".`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// -------------------------------------------------------------------------
|
|
226
|
+
// Error formatting
|
|
227
|
+
// -------------------------------------------------------------------------
|
|
228
|
+
buildMissingError(type, key) {
|
|
229
|
+
const descriptions = {
|
|
230
|
+
env: `Environment variable "${key}"`,
|
|
231
|
+
pkg: `Property "${key}" in package.json`,
|
|
232
|
+
this: `Property "${key}" in current object`,
|
|
233
|
+
const: `Constant "${key}"`,
|
|
234
|
+
date: `Date token "${key}" (valid: ${Object.keys(DATE_TOKENS).join(", ")})`,
|
|
235
|
+
file: `File "${key}"`,
|
|
236
|
+
};
|
|
237
|
+
const desc = descriptions[type] ?? `Reference "${key}" (type: ${type})`;
|
|
238
|
+
return `EDYNC: ${desc} not found or could not be resolved.`;
|
|
239
|
+
}
|
|
124
240
|
}
|
|
125
241
|
|
|
126
242
|
export { ConfigSyntaxParser };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigSyntaxParser.js","sources":["../../../../src/utils/ConfigSyntaxParser.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ConfigSyntaxParser.js","sources":["../../../../src/utils/ConfigSyntaxParser.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/package.json
CHANGED