xypriss 5.5.0 → 5.6.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.
|
@@ -33,7 +33,8 @@ var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
|
|
|
33
33
|
*/
|
|
34
34
|
class ConfigLoader {
|
|
35
35
|
constructor() {
|
|
36
|
-
this.
|
|
36
|
+
this.isConfigApplied = false;
|
|
37
|
+
this.executedMetas = new Set();
|
|
37
38
|
}
|
|
38
39
|
/**
|
|
39
40
|
* Find the project root by searching for package.json or node_modules
|
|
@@ -52,35 +53,79 @@ class ConfigLoader {
|
|
|
52
53
|
return startDir;
|
|
53
54
|
}
|
|
54
55
|
/**
|
|
55
|
-
* Load xypriss.config.json and apply
|
|
56
|
+
* Load all xypriss.config.json files found in the project and apply configurations
|
|
56
57
|
*/
|
|
57
58
|
loadAndApplySysConfig() {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
59
|
+
if (this.isConfigApplied)
|
|
60
|
+
return;
|
|
61
|
+
this.isConfigApplied = true;
|
|
62
|
+
let currentDir = process.cwd();
|
|
63
|
+
const filesystemRoot = path__namespace.parse(currentDir).root;
|
|
64
|
+
const configFiles = [];
|
|
65
|
+
let highestRoot = currentDir;
|
|
66
|
+
// 1. Search upwards to find ALL configs and the highest project root
|
|
67
|
+
while (currentDir !== filesystemRoot) {
|
|
68
|
+
const potentialConfig = path__namespace.join(currentDir, "xypriss.config.json");
|
|
69
|
+
if (fs__namespace.existsSync(potentialConfig)) {
|
|
70
|
+
configFiles.push(potentialConfig);
|
|
71
|
+
highestRoot = currentDir;
|
|
72
|
+
}
|
|
73
|
+
if (fs__namespace.existsSync(path__namespace.join(currentDir, "package.json"))) {
|
|
74
|
+
highestRoot = currentDir;
|
|
75
|
+
}
|
|
76
|
+
currentDir = path__namespace.dirname(currentDir);
|
|
77
|
+
}
|
|
78
|
+
const root = highestRoot;
|
|
79
|
+
// 2. Scan for other configs in standard directories (downwards search)
|
|
80
|
+
const searchDirs = ["plugins", "mods", "simulations", "shared"];
|
|
81
|
+
for (const dir of searchDirs) {
|
|
82
|
+
const dirPath = path__namespace.join(root, dir);
|
|
83
|
+
if (fs__namespace.existsSync(dirPath) && fs__namespace.statSync(dirPath).isDirectory()) {
|
|
84
|
+
const subDirs = fs__namespace.readdirSync(dirPath);
|
|
85
|
+
for (const subDir of subDirs) {
|
|
86
|
+
const potentialConfig = path__namespace.join(dirPath, subDir, "xypriss.config.json");
|
|
87
|
+
if (fs__namespace.existsSync(potentialConfig) &&
|
|
88
|
+
!configFiles.includes(potentialConfig)) {
|
|
89
|
+
configFiles.push(potentialConfig);
|
|
77
90
|
}
|
|
78
91
|
}
|
|
79
92
|
}
|
|
80
|
-
|
|
81
|
-
|
|
93
|
+
}
|
|
94
|
+
// 3. Process each found configuration
|
|
95
|
+
for (const configPath of configFiles) {
|
|
96
|
+
this.applyConfigFromFile(configPath, root);
|
|
97
|
+
}
|
|
98
|
+
// 4. Final meta search from root if not already handled
|
|
99
|
+
this.executeMetaConfig(root);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Apply configuration from a specific file
|
|
103
|
+
*/
|
|
104
|
+
applyConfigFromFile(configPath, projectRoot) {
|
|
105
|
+
const configDir = path__namespace.dirname(configPath);
|
|
106
|
+
try {
|
|
107
|
+
if (!fs__namespace.existsSync(configPath))
|
|
108
|
+
return;
|
|
109
|
+
const content = fs__namespace.readFileSync(configPath, "utf-8");
|
|
110
|
+
const config = JSON.parse(content);
|
|
111
|
+
if (!config)
|
|
112
|
+
return;
|
|
113
|
+
Logger.logger.debug("server", `Loading configuration: ${path__namespace.relative(projectRoot, configPath)}`);
|
|
114
|
+
// Apply __sys__ config if present
|
|
115
|
+
if (config.__sys__) {
|
|
116
|
+
const sys = globalThis.__sys__;
|
|
117
|
+
if (sys) {
|
|
118
|
+
sys.$update(config.__sys__);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Process $internal configuration
|
|
122
|
+
if (config.$internal) {
|
|
123
|
+
this.processInternalConfig(config.$internal, projectRoot, configDir);
|
|
82
124
|
}
|
|
83
125
|
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
Logger.logger.warn("server", `Failed to load or parse config at ${configPath}: ${error.message}`);
|
|
128
|
+
}
|
|
84
129
|
}
|
|
85
130
|
/**
|
|
86
131
|
* Processes the `$internal` configuration block within `xypriss.config.json`.
|
|
@@ -90,10 +135,11 @@ class ConfigLoader {
|
|
|
90
135
|
* logic. This facilitates workspace isolation for plugins and internal tools.
|
|
91
136
|
*
|
|
92
137
|
* @param {any} internalConfig - The internal configuration object from the config file.
|
|
93
|
-
* @param {string}
|
|
138
|
+
* @param {string} projectRoot - The project root directory used for path resolution.
|
|
139
|
+
* @param {string} configDir - The directory where the configuration file is located.
|
|
94
140
|
* @private
|
|
95
141
|
*/
|
|
96
|
-
processInternalConfig(internalConfig,
|
|
142
|
+
processInternalConfig(internalConfig, projectRoot, configDir) {
|
|
97
143
|
const sys = globalThis.__sys__;
|
|
98
144
|
if (!sys)
|
|
99
145
|
return;
|
|
@@ -101,39 +147,79 @@ class ConfigLoader {
|
|
|
101
147
|
const config = internalConfig[sysName];
|
|
102
148
|
// 1. Setup specialized FileSystem if __xfs__ is present
|
|
103
149
|
if (config.__xfs__ && config.__xfs__.path) {
|
|
104
|
-
const
|
|
105
|
-
const resolvedFsPath =
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
150
|
+
const rawPath = config.__xfs__.path;
|
|
151
|
+
const resolvedFsPath = this.resolvePath(rawPath, projectRoot, configDir);
|
|
152
|
+
if (resolvedFsPath) {
|
|
153
|
+
// Runtime validation: Ensure the path exists
|
|
154
|
+
if (fs__namespace.existsSync(resolvedFsPath)) {
|
|
155
|
+
const specializedFS = new FileSystem.XyPrissFS({
|
|
156
|
+
__root__: resolvedFsPath,
|
|
157
|
+
});
|
|
158
|
+
sys.$add(sysName, specializedFS);
|
|
159
|
+
// Add alias for $plug / $plg
|
|
160
|
+
if (sysName === "$plug")
|
|
161
|
+
sys.$add("$plg", specializedFS);
|
|
162
|
+
if (sysName === "$plg")
|
|
163
|
+
sys.$add("$plug", specializedFS);
|
|
164
|
+
Logger.logger.debug("server", `Specialized filesystem mapped: ${sysName} -> ${resolvedFsPath}`);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
Logger.logger.error("server", `System Workspace Error: Path for ${sysName} not found: ${resolvedFsPath} (from: ${rawPath})`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
Logger.logger.error("server", `Unresolvable __xfs__ path for ${sysName}: ${rawPath}`);
|
|
172
|
+
}
|
|
116
173
|
}
|
|
117
174
|
// 2. Execute additional meta logic if __meta__ is present
|
|
118
175
|
if (config.__meta__ && config.__meta__.path) {
|
|
119
|
-
const
|
|
120
|
-
const resolvedMetaPath =
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (fs__namespace.
|
|
124
|
-
|
|
176
|
+
const rawPath = config.__meta__.path;
|
|
177
|
+
const resolvedMetaPath = this.resolvePath(rawPath, projectRoot, configDir);
|
|
178
|
+
if (resolvedMetaPath) {
|
|
179
|
+
// If it's a directory, search for meta files inside it
|
|
180
|
+
if (fs__namespace.existsSync(resolvedMetaPath)) {
|
|
181
|
+
if (fs__namespace.statSync(resolvedMetaPath).isDirectory()) {
|
|
182
|
+
this.executeMetaConfig(resolvedMetaPath);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// If it's a file, execute it directly
|
|
186
|
+
this.runMetaFile(resolvedMetaPath);
|
|
187
|
+
}
|
|
125
188
|
}
|
|
126
189
|
else {
|
|
127
|
-
|
|
128
|
-
this.runMetaFile(resolvedMetaPath);
|
|
190
|
+
Logger.logger.error("server", `System Workspace Error: Meta path not found: ${resolvedMetaPath} (from: ${rawPath})`);
|
|
129
191
|
}
|
|
130
192
|
}
|
|
131
193
|
else {
|
|
132
|
-
Logger.logger.
|
|
194
|
+
Logger.logger.error("server", `Unresolvable __meta__ path for ${sysName}: ${rawPath}`);
|
|
133
195
|
}
|
|
134
196
|
}
|
|
135
197
|
}
|
|
136
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Resolves a path string into an absolute path.
|
|
201
|
+
* Supports #$ (project root) and relative paths (local configuration).
|
|
202
|
+
*/
|
|
203
|
+
resolvePath(rawPath, projectRoot, configDir) {
|
|
204
|
+
try {
|
|
205
|
+
// Clean up the raw path (spaces around slashes, etc.)
|
|
206
|
+
let cleanedPath = rawPath.replace(/\s*\/\s*/g, "/").trim();
|
|
207
|
+
// Case 1: Project Root Resolution (#$ or $#)
|
|
208
|
+
const rootPlaceholder = /\s*(?:#\s*\$|\$\s*#)\s*/;
|
|
209
|
+
if (rootPlaceholder.test(cleanedPath)) {
|
|
210
|
+
return path__namespace.resolve(projectRoot, cleanedPath.replace(rootPlaceholder, "").replace(/^\//, ""));
|
|
211
|
+
}
|
|
212
|
+
// Case 2: Local path resolution (absolute or relative)
|
|
213
|
+
if (path__namespace.isAbsolute(cleanedPath)) {
|
|
214
|
+
return cleanedPath;
|
|
215
|
+
}
|
|
216
|
+
// Resolve relative to the configuration file directory
|
|
217
|
+
return path__namespace.resolve(configDir, cleanedPath);
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
137
223
|
/**
|
|
138
224
|
* Executes a specific XyPriss meta configuration file.
|
|
139
225
|
*
|
|
@@ -144,6 +230,10 @@ class ConfigLoader {
|
|
|
144
230
|
* @private
|
|
145
231
|
*/
|
|
146
232
|
runMetaFile(metaPath) {
|
|
233
|
+
const absolutePath = path__namespace.resolve(metaPath);
|
|
234
|
+
if (this.executedMetas.has(absolutePath))
|
|
235
|
+
return;
|
|
236
|
+
this.executedMetas.add(absolutePath);
|
|
147
237
|
try {
|
|
148
238
|
import(`file://${metaPath}`)
|
|
149
239
|
.then((module) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigLoader.js","sources":["../../../../../src/server/utils/ConfigLoader.ts"],"sourcesContent":[null],"names":["path","fs","logger","XyPrissFS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;;;;AAKG;MACU,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;QACY,
|
|
1
|
+
{"version":3,"file":"ConfigLoader.js","sources":["../../../../../src/server/utils/ConfigLoader.ts"],"sourcesContent":[null],"names":["path","fs","logger","XyPrissFS"],"mappings":"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"}
|
|
@@ -11,7 +11,8 @@ import { XyPrissFS } from '../../sys/FileSystem.js';
|
|
|
11
11
|
*/
|
|
12
12
|
class ConfigLoader {
|
|
13
13
|
constructor() {
|
|
14
|
-
this.
|
|
14
|
+
this.isConfigApplied = false;
|
|
15
|
+
this.executedMetas = new Set();
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
17
18
|
* Find the project root by searching for package.json or node_modules
|
|
@@ -30,35 +31,79 @@ class ConfigLoader {
|
|
|
30
31
|
return startDir;
|
|
31
32
|
}
|
|
32
33
|
/**
|
|
33
|
-
* Load xypriss.config.json and apply
|
|
34
|
+
* Load all xypriss.config.json files found in the project and apply configurations
|
|
34
35
|
*/
|
|
35
36
|
loadAndApplySysConfig() {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
37
|
+
if (this.isConfigApplied)
|
|
38
|
+
return;
|
|
39
|
+
this.isConfigApplied = true;
|
|
40
|
+
let currentDir = process.cwd();
|
|
41
|
+
const filesystemRoot = path.parse(currentDir).root;
|
|
42
|
+
const configFiles = [];
|
|
43
|
+
let highestRoot = currentDir;
|
|
44
|
+
// 1. Search upwards to find ALL configs and the highest project root
|
|
45
|
+
while (currentDir !== filesystemRoot) {
|
|
46
|
+
const potentialConfig = path.join(currentDir, "xypriss.config.json");
|
|
47
|
+
if (fs.existsSync(potentialConfig)) {
|
|
48
|
+
configFiles.push(potentialConfig);
|
|
49
|
+
highestRoot = currentDir;
|
|
50
|
+
}
|
|
51
|
+
if (fs.existsSync(path.join(currentDir, "package.json"))) {
|
|
52
|
+
highestRoot = currentDir;
|
|
53
|
+
}
|
|
54
|
+
currentDir = path.dirname(currentDir);
|
|
55
|
+
}
|
|
56
|
+
const root = highestRoot;
|
|
57
|
+
// 2. Scan for other configs in standard directories (downwards search)
|
|
58
|
+
const searchDirs = ["plugins", "mods", "simulations", "shared"];
|
|
59
|
+
for (const dir of searchDirs) {
|
|
60
|
+
const dirPath = path.join(root, dir);
|
|
61
|
+
if (fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory()) {
|
|
62
|
+
const subDirs = fs.readdirSync(dirPath);
|
|
63
|
+
for (const subDir of subDirs) {
|
|
64
|
+
const potentialConfig = path.join(dirPath, subDir, "xypriss.config.json");
|
|
65
|
+
if (fs.existsSync(potentialConfig) &&
|
|
66
|
+
!configFiles.includes(potentialConfig)) {
|
|
67
|
+
configFiles.push(potentialConfig);
|
|
55
68
|
}
|
|
56
69
|
}
|
|
57
70
|
}
|
|
58
|
-
|
|
59
|
-
|
|
71
|
+
}
|
|
72
|
+
// 3. Process each found configuration
|
|
73
|
+
for (const configPath of configFiles) {
|
|
74
|
+
this.applyConfigFromFile(configPath, root);
|
|
75
|
+
}
|
|
76
|
+
// 4. Final meta search from root if not already handled
|
|
77
|
+
this.executeMetaConfig(root);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Apply configuration from a specific file
|
|
81
|
+
*/
|
|
82
|
+
applyConfigFromFile(configPath, projectRoot) {
|
|
83
|
+
const configDir = path.dirname(configPath);
|
|
84
|
+
try {
|
|
85
|
+
if (!fs.existsSync(configPath))
|
|
86
|
+
return;
|
|
87
|
+
const content = fs.readFileSync(configPath, "utf-8");
|
|
88
|
+
const config = JSON.parse(content);
|
|
89
|
+
if (!config)
|
|
90
|
+
return;
|
|
91
|
+
logger.debug("server", `Loading configuration: ${path.relative(projectRoot, configPath)}`);
|
|
92
|
+
// Apply __sys__ config if present
|
|
93
|
+
if (config.__sys__) {
|
|
94
|
+
const sys = globalThis.__sys__;
|
|
95
|
+
if (sys) {
|
|
96
|
+
sys.$update(config.__sys__);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Process $internal configuration
|
|
100
|
+
if (config.$internal) {
|
|
101
|
+
this.processInternalConfig(config.$internal, projectRoot, configDir);
|
|
60
102
|
}
|
|
61
103
|
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
logger.warn("server", `Failed to load or parse config at ${configPath}: ${error.message}`);
|
|
106
|
+
}
|
|
62
107
|
}
|
|
63
108
|
/**
|
|
64
109
|
* Processes the `$internal` configuration block within `xypriss.config.json`.
|
|
@@ -68,10 +113,11 @@ class ConfigLoader {
|
|
|
68
113
|
* logic. This facilitates workspace isolation for plugins and internal tools.
|
|
69
114
|
*
|
|
70
115
|
* @param {any} internalConfig - The internal configuration object from the config file.
|
|
71
|
-
* @param {string}
|
|
116
|
+
* @param {string} projectRoot - The project root directory used for path resolution.
|
|
117
|
+
* @param {string} configDir - The directory where the configuration file is located.
|
|
72
118
|
* @private
|
|
73
119
|
*/
|
|
74
|
-
processInternalConfig(internalConfig,
|
|
120
|
+
processInternalConfig(internalConfig, projectRoot, configDir) {
|
|
75
121
|
const sys = globalThis.__sys__;
|
|
76
122
|
if (!sys)
|
|
77
123
|
return;
|
|
@@ -79,39 +125,79 @@ class ConfigLoader {
|
|
|
79
125
|
const config = internalConfig[sysName];
|
|
80
126
|
// 1. Setup specialized FileSystem if __xfs__ is present
|
|
81
127
|
if (config.__xfs__ && config.__xfs__.path) {
|
|
82
|
-
const
|
|
83
|
-
const resolvedFsPath =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
128
|
+
const rawPath = config.__xfs__.path;
|
|
129
|
+
const resolvedFsPath = this.resolvePath(rawPath, projectRoot, configDir);
|
|
130
|
+
if (resolvedFsPath) {
|
|
131
|
+
// Runtime validation: Ensure the path exists
|
|
132
|
+
if (fs.existsSync(resolvedFsPath)) {
|
|
133
|
+
const specializedFS = new XyPrissFS({
|
|
134
|
+
__root__: resolvedFsPath,
|
|
135
|
+
});
|
|
136
|
+
sys.$add(sysName, specializedFS);
|
|
137
|
+
// Add alias for $plug / $plg
|
|
138
|
+
if (sysName === "$plug")
|
|
139
|
+
sys.$add("$plg", specializedFS);
|
|
140
|
+
if (sysName === "$plg")
|
|
141
|
+
sys.$add("$plug", specializedFS);
|
|
142
|
+
logger.debug("server", `Specialized filesystem mapped: ${sysName} -> ${resolvedFsPath}`);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
logger.error("server", `System Workspace Error: Path for ${sysName} not found: ${resolvedFsPath} (from: ${rawPath})`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
logger.error("server", `Unresolvable __xfs__ path for ${sysName}: ${rawPath}`);
|
|
150
|
+
}
|
|
94
151
|
}
|
|
95
152
|
// 2. Execute additional meta logic if __meta__ is present
|
|
96
153
|
if (config.__meta__ && config.__meta__.path) {
|
|
97
|
-
const
|
|
98
|
-
const resolvedMetaPath =
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if (fs.
|
|
102
|
-
|
|
154
|
+
const rawPath = config.__meta__.path;
|
|
155
|
+
const resolvedMetaPath = this.resolvePath(rawPath, projectRoot, configDir);
|
|
156
|
+
if (resolvedMetaPath) {
|
|
157
|
+
// If it's a directory, search for meta files inside it
|
|
158
|
+
if (fs.existsSync(resolvedMetaPath)) {
|
|
159
|
+
if (fs.statSync(resolvedMetaPath).isDirectory()) {
|
|
160
|
+
this.executeMetaConfig(resolvedMetaPath);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
// If it's a file, execute it directly
|
|
164
|
+
this.runMetaFile(resolvedMetaPath);
|
|
165
|
+
}
|
|
103
166
|
}
|
|
104
167
|
else {
|
|
105
|
-
|
|
106
|
-
this.runMetaFile(resolvedMetaPath);
|
|
168
|
+
logger.error("server", `System Workspace Error: Meta path not found: ${resolvedMetaPath} (from: ${rawPath})`);
|
|
107
169
|
}
|
|
108
170
|
}
|
|
109
171
|
else {
|
|
110
|
-
logger.
|
|
172
|
+
logger.error("server", `Unresolvable __meta__ path for ${sysName}: ${rawPath}`);
|
|
111
173
|
}
|
|
112
174
|
}
|
|
113
175
|
}
|
|
114
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* Resolves a path string into an absolute path.
|
|
179
|
+
* Supports #$ (project root) and relative paths (local configuration).
|
|
180
|
+
*/
|
|
181
|
+
resolvePath(rawPath, projectRoot, configDir) {
|
|
182
|
+
try {
|
|
183
|
+
// Clean up the raw path (spaces around slashes, etc.)
|
|
184
|
+
let cleanedPath = rawPath.replace(/\s*\/\s*/g, "/").trim();
|
|
185
|
+
// Case 1: Project Root Resolution (#$ or $#)
|
|
186
|
+
const rootPlaceholder = /\s*(?:#\s*\$|\$\s*#)\s*/;
|
|
187
|
+
if (rootPlaceholder.test(cleanedPath)) {
|
|
188
|
+
return path.resolve(projectRoot, cleanedPath.replace(rootPlaceholder, "").replace(/^\//, ""));
|
|
189
|
+
}
|
|
190
|
+
// Case 2: Local path resolution (absolute or relative)
|
|
191
|
+
if (path.isAbsolute(cleanedPath)) {
|
|
192
|
+
return cleanedPath;
|
|
193
|
+
}
|
|
194
|
+
// Resolve relative to the configuration file directory
|
|
195
|
+
return path.resolve(configDir, cleanedPath);
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
115
201
|
/**
|
|
116
202
|
* Executes a specific XyPriss meta configuration file.
|
|
117
203
|
*
|
|
@@ -122,6 +208,10 @@ class ConfigLoader {
|
|
|
122
208
|
* @private
|
|
123
209
|
*/
|
|
124
210
|
runMetaFile(metaPath) {
|
|
211
|
+
const absolutePath = path.resolve(metaPath);
|
|
212
|
+
if (this.executedMetas.has(absolutePath))
|
|
213
|
+
return;
|
|
214
|
+
this.executedMetas.add(absolutePath);
|
|
125
215
|
try {
|
|
126
216
|
import(`file://${metaPath}`)
|
|
127
217
|
.then((module) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigLoader.js","sources":["../../../../../src/server/utils/ConfigLoader.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAKA;;;;;AAKG;MACU,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;QACY,
|
|
1
|
+
{"version":3,"file":"ConfigLoader.js","sources":["../../../../../src/server/utils/ConfigLoader.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xypriss",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.6.0",
|
|
4
4
|
"description": "XyPriss is a lightweight, TypeScript-first, open-source Node.js web framework crafted for developers seeking a familiar Express-like API without Express dependencies. It features built-in security middleware, a robust routing system, and performance optimizations to build scalable, secure web applications effortlessly. Join our community and contribute on GitHub!",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -271,3 +271,4 @@
|
|
|
271
271
|
"xypriss-security": "^1.1.15"
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
|
+
|