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.metaExecuted = false;
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 __sys__ configuration
56
+ * Load all xypriss.config.json files found in the project and apply configurations
56
57
  */
57
58
  loadAndApplySysConfig() {
58
- const root = this.findProjectRoot(process.cwd());
59
- const configPath = path__namespace.join(root, "xypriss.config.json");
60
- // Default meta search
61
- this.executeMetaConfig();
62
- if (fs__namespace.existsSync(configPath)) {
63
- try {
64
- const content = fs__namespace.readFileSync(configPath, "utf-8");
65
- const config = JSON.parse(content);
66
- if (config) {
67
- // Apply __sys__ config if present
68
- if (config.__sys__) {
69
- if (typeof globalThis !== "undefined" &&
70
- globalThis.__sys__) {
71
- globalThis.__sys__.$update(config.__sys__);
72
- }
73
- }
74
- // Process $internal configuration
75
- if (config.$internal) {
76
- this.processInternalConfig(config.$internal, root);
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
- catch (error) {
81
- Logger.logger.warn("server", `Failed to load or parse xypriss.config.json: ${error.message}`);
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} root - The project root directory used for path resolution.
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, root) {
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 fsPath = config.__xfs__.path.replace(/(?:#\s*\$|\$\s*#)\s*/g, root);
105
- const resolvedFsPath = path__namespace.resolve(root, fsPath);
106
- const specializedFS = new FileSystem.XyPrissFS({
107
- __root__: resolvedFsPath,
108
- });
109
- sys.$add(sysName, specializedFS);
110
- // Add alias for $plug / $plg
111
- if (sysName === "$plug")
112
- sys.$add("$plg", specializedFS);
113
- if (sysName === "$plg")
114
- sys.$add("$plug", specializedFS);
115
- Logger.logger.debug("server", `Specialized filesystem mapped: ${sysName} -> ${resolvedFsPath}`);
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 metaPath = config.__meta__.path.replace(/(?:#\s*\$|\$\s*#)\s*/g, root);
120
- const resolvedMetaPath = path__namespace.resolve(root, metaPath);
121
- // If it's a directory, search for meta files inside it
122
- if (fs__namespace.existsSync(resolvedMetaPath)) {
123
- if (fs__namespace.statSync(resolvedMetaPath).isDirectory()) {
124
- this.executeMetaConfig(resolvedMetaPath);
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
- // If it's a file, execute it directly
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.warn("server", `Meta path not found: ${resolvedMetaPath}`);
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":"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"}
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.metaExecuted = false;
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 __sys__ configuration
34
+ * Load all xypriss.config.json files found in the project and apply configurations
34
35
  */
35
36
  loadAndApplySysConfig() {
36
- const root = this.findProjectRoot(process.cwd());
37
- const configPath = path.join(root, "xypriss.config.json");
38
- // Default meta search
39
- this.executeMetaConfig();
40
- if (fs.existsSync(configPath)) {
41
- try {
42
- const content = fs.readFileSync(configPath, "utf-8");
43
- const config = JSON.parse(content);
44
- if (config) {
45
- // Apply __sys__ config if present
46
- if (config.__sys__) {
47
- if (typeof globalThis !== "undefined" &&
48
- globalThis.__sys__) {
49
- globalThis.__sys__.$update(config.__sys__);
50
- }
51
- }
52
- // Process $internal configuration
53
- if (config.$internal) {
54
- this.processInternalConfig(config.$internal, root);
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
- catch (error) {
59
- logger.warn("server", `Failed to load or parse xypriss.config.json: ${error.message}`);
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} root - The project root directory used for path resolution.
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, root) {
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 fsPath = config.__xfs__.path.replace(/(?:#\s*\$|\$\s*#)\s*/g, root);
83
- const resolvedFsPath = path.resolve(root, fsPath);
84
- const specializedFS = new XyPrissFS({
85
- __root__: resolvedFsPath,
86
- });
87
- sys.$add(sysName, specializedFS);
88
- // Add alias for $plug / $plg
89
- if (sysName === "$plug")
90
- sys.$add("$plg", specializedFS);
91
- if (sysName === "$plg")
92
- sys.$add("$plug", specializedFS);
93
- logger.debug("server", `Specialized filesystem mapped: ${sysName} -> ${resolvedFsPath}`);
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 metaPath = config.__meta__.path.replace(/(?:#\s*\$|\$\s*#)\s*/g, root);
98
- const resolvedMetaPath = path.resolve(root, metaPath);
99
- // If it's a directory, search for meta files inside it
100
- if (fs.existsSync(resolvedMetaPath)) {
101
- if (fs.statSync(resolvedMetaPath).isDirectory()) {
102
- this.executeMetaConfig(resolvedMetaPath);
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
- // If it's a file, execute it directly
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.warn("server", `Meta path not found: ${resolvedMetaPath}`);
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":"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"}
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.5.0",
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
+