xypriss 9.7.6 → 9.7.8
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/README.md +22 -0
- package/dist/cjs/src/plugins/api/PluginAPI.js +136 -81
- package/dist/cjs/src/plugins/api/PluginAPI.js.map +1 -1
- package/dist/cjs/src/server/FastServer/index.js +4 -4
- package/dist/cjs/src/server/FastServer/index.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js +365 -14
- package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/console/types.js +6 -0
- package/dist/cjs/src/server/components/fastapi/console/types.js.map +1 -1
- package/dist/cjs/src/server/core/XyLifecycleManager.js +4 -1
- package/dist/cjs/src/server/core/XyLifecycleManager.js.map +1 -1
- package/dist/cjs/src/server/utils/internalFlagsFunctions.js +26 -10
- package/dist/cjs/src/server/utils/internalFlagsFunctions.js.map +1 -1
- package/dist/cjs/src/xhsc/OSApi.js +4 -0
- package/dist/cjs/src/xhsc/OSApi.js.map +1 -1
- package/dist/cjs/src/xhsc/fs/FSExtended.js +13 -0
- package/dist/cjs/src/xhsc/fs/FSExtended.js.map +1 -1
- package/dist/esm/src/plugins/api/PluginAPI.js +136 -81
- package/dist/esm/src/plugins/api/PluginAPI.js.map +1 -1
- package/dist/esm/src/server/FastServer/index.js +4 -4
- package/dist/esm/src/server/FastServer/index.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js +365 -14
- package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/console/types.js +6 -0
- package/dist/esm/src/server/components/fastapi/console/types.js.map +1 -1
- package/dist/esm/src/server/core/XyLifecycleManager.js +4 -1
- package/dist/esm/src/server/core/XyLifecycleManager.js.map +1 -1
- package/dist/esm/src/server/utils/internalFlagsFunctions.js +26 -10
- package/dist/esm/src/server/utils/internalFlagsFunctions.js.map +1 -1
- package/dist/esm/src/xhsc/OSApi.js +4 -0
- package/dist/esm/src/xhsc/OSApi.js.map +1 -1
- package/dist/esm/src/xhsc/fs/FSExtended.js +13 -0
- package/dist/esm/src/xhsc/fs/FSExtended.js.map +1 -1
- package/dist/index.d.ts +122 -40
- package/package.json +74 -74
package/README.md
CHANGED
|
@@ -95,6 +95,28 @@ xfpm install xypriss-security
|
|
|
95
95
|
|
|
96
96
|
---
|
|
97
97
|
|
|
98
|
+
## Requirements
|
|
99
|
+
|
|
100
|
+
Before running a XyPriss project, make sure the following two tools are installed on your system. They are **mandatory** — using another package manager (npm, yarn, pnpm, etc.) or JavaScript runtime will break the framework's security chain and native integration.
|
|
101
|
+
|
|
102
|
+
| Requirement | Purpose | Install |
|
|
103
|
+
| ----------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
|
|
104
|
+
| **XFPM** | Package manager for the XyPriss ecosystem. Only manager supported for install/run/build. | [Installation Guide](https://xypriss.nehonix.com/docs/installation) |
|
|
105
|
+
| **Bun** | JavaScript runtime used to execute XyPriss projects and scripts. | [bun.sh](https://bun.sh) |
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Install Bun (if not already installed)
|
|
109
|
+
curl -fsSL https://bun.sh/install | bash
|
|
110
|
+
|
|
111
|
+
# Install XFPM
|
|
112
|
+
curl -sL https://xypriss.nehonix.com/install.js | node
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
> [!CAUTION]
|
|
116
|
+
> Using `npm run`, `node`, or another runtime to start a XyPriss server is not supported and will produce undefined behavior. Always use `xfpm run` or `bun` to execute scripts and entry points.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
98
120
|
## Quick Start
|
|
99
121
|
|
|
100
122
|
### Using CLI
|
|
@@ -4,35 +4,68 @@
|
|
|
4
4
|
* Plugin API
|
|
5
5
|
* Public API for plugin management as documented in PLUGIN_SYSTEM_GUIDE.md
|
|
6
6
|
*/
|
|
7
|
+
// ─── Internal State ──────────────────────────────────────────────────────────
|
|
8
|
+
// ─── Blocked / Private members ───────────────────────────────────────────────
|
|
7
9
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
+
* Methods that must never be accessible from outside the module.
|
|
11
|
+
* The Proxy intercepts any access to these keys and throws immediately.
|
|
10
12
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
const PRIVATE_MEMBERS = new Set(["register"]);
|
|
14
|
+
// ─── Internal helpers ─────────────────────────────────────────────────────────
|
|
15
|
+
function assertNonEmptyString(value, errorMessage) {
|
|
16
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
17
|
+
throw new Error(errorMessage);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function resolvePluginRoot(rootOrSys) {
|
|
21
|
+
const root = typeof rootOrSys === "string" ? rootOrSys : rootOrSys?.__root__;
|
|
22
|
+
if (!root || typeof root !== "string" || !root.trim()) {
|
|
23
|
+
throw new Error("XyPriss Security Error: The provided root or '__sys__' instance is invalid or lacks a captured project root.");
|
|
24
|
+
}
|
|
25
|
+
return root;
|
|
26
|
+
}
|
|
27
|
+
// ─── PluginAPI class ─────────────────────────────────────────────────────────
|
|
28
|
+
class PluginAPI {
|
|
16
29
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
30
|
+
* Reads and returns the project manifest (`package.json`) associated with the provided system core.
|
|
31
|
+
*
|
|
32
|
+
* This method is cryptographically and logically bound to the system instance to ensure
|
|
33
|
+
* that plugins only access the metadata of their authorized environment.
|
|
34
|
+
*
|
|
35
|
+
* @template T - The expected structure of the manifest file.
|
|
36
|
+
* @param sys - The XyPriss Hyper-System Core (`__sys__`) instance.
|
|
37
|
+
* @returns The parsed JSON content of the `package.json` file.
|
|
38
|
+
* @throws {Error} If the system instance is invalid, lacks a root path, or the manifest cannot be read.
|
|
20
39
|
*
|
|
21
40
|
* @example
|
|
22
41
|
* ```typescript
|
|
23
|
-
* Plugin.
|
|
24
|
-
*
|
|
25
|
-
* version: "1.0.0",
|
|
26
|
-
* onServerStart: () => console.log("Started!")
|
|
27
|
-
* });
|
|
42
|
+
* const pkg = Plugin.manifest<MyPackageJson>(__sys__);
|
|
43
|
+
* console.log(`Running in ${pkg.name}@${pkg.version}`);
|
|
28
44
|
* ```
|
|
29
45
|
*/
|
|
46
|
+
manifest(sys) {
|
|
47
|
+
if (!sys || !sys.__root__) {
|
|
48
|
+
throw new Error("XyPriss Security Error: The provided system core instance is invalid or lacks an authorized project root association.");
|
|
49
|
+
}
|
|
50
|
+
const manifestPath = sys.fs.join(sys.__root__, "package.json");
|
|
51
|
+
if (!sys.path.exists(manifestPath)) {
|
|
52
|
+
throw new Error(`XyPriss I/O Error: Unable to access project manifest at "${manifestPath}". Verify that the file exists and is readable.`);
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
return sys.fs.readJsonSync(manifestPath);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
throw new Error(`XyPriss I/O Error: Unable to access project manifest at "${manifestPath}". Verify that the file exists and is readable.`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* @private — Internal registration. Never call this directly.
|
|
63
|
+
* Use `exec()` instead.
|
|
64
|
+
*/
|
|
30
65
|
register(plugin, config) {
|
|
31
|
-
}
|
|
66
|
+
}
|
|
32
67
|
/**
|
|
33
|
-
* Register a plugin
|
|
34
|
-
* @param plugin - Plugin instance or creator function
|
|
35
|
-
* @param config - Optional configuration
|
|
68
|
+
* Register a plugin — the sole public entry point for plugin registration.
|
|
36
69
|
*
|
|
37
70
|
* @example
|
|
38
71
|
* ```typescript
|
|
@@ -40,18 +73,16 @@ const Plugin = {
|
|
|
40
73
|
* name: "test",
|
|
41
74
|
* version: "1.0.0",
|
|
42
75
|
* onServerStart(server) {
|
|
43
|
-
*
|
|
76
|
+
* console.log("Server started");
|
|
44
77
|
* },
|
|
45
|
-
* });
|
|
78
|
+
* }, __sys__.__root__));
|
|
46
79
|
* ```
|
|
47
80
|
*/
|
|
48
|
-
exec(
|
|
49
|
-
this.register(
|
|
50
|
-
}
|
|
81
|
+
exec(plugin, config) {
|
|
82
|
+
this.register(plugin, config);
|
|
83
|
+
}
|
|
51
84
|
/**
|
|
52
|
-
* Get a registered plugin by name
|
|
53
|
-
* @param name - Plugin name
|
|
54
|
-
* @returns Plugin instance or undefined if not found
|
|
85
|
+
* Get a registered plugin by name.
|
|
55
86
|
*
|
|
56
87
|
* @example
|
|
57
88
|
* ```typescript
|
|
@@ -65,101 +96,125 @@ const Plugin = {
|
|
|
65
96
|
{
|
|
66
97
|
throw new Error("Plugin system not initialized. Create a server instance first.");
|
|
67
98
|
}
|
|
68
|
-
}
|
|
99
|
+
}
|
|
69
100
|
/**
|
|
70
|
-
* Create a plugin
|
|
71
|
-
* This is just a type-safe identity function that helps with TypeScript inference
|
|
72
|
-
* @param plugin - Plugin definition
|
|
73
|
-
* @returns The same plugin instance
|
|
101
|
+
* Create a type-safe plugin instance with a validated root.
|
|
74
102
|
*
|
|
75
103
|
* @example
|
|
76
104
|
* ```typescript
|
|
77
105
|
* const myPlugin = Plugin.create({
|
|
78
106
|
* name: "my-plugin",
|
|
79
107
|
* version: "1.0.0",
|
|
80
|
-
* onServerStart: (server) =>
|
|
81
|
-
*
|
|
82
|
-
* }
|
|
83
|
-
* });
|
|
108
|
+
* onServerStart: (server) => console.log("Plugin started!"),
|
|
109
|
+
* }, __sys__.__root__);
|
|
84
110
|
* ```
|
|
85
111
|
*/
|
|
86
112
|
create(plugin, Sys) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
if (typeof Sys !== "string") {
|
|
92
|
-
throw new Error("XyPriss Initialization Error: To create a plugin, you MUST provide the plugin's root path or its '__sys__' instance as the second argument to Plugin.create().\n" +
|
|
93
|
-
"Example: return Plugin.create({ ... }, __sys__.__root__);");
|
|
94
|
-
}
|
|
95
|
-
const pluginRoot = Sys;
|
|
96
|
-
if (!pluginRoot) {
|
|
97
|
-
throw new Error("XyPriss Security Error: The provided root or '__sys__' instance is invalid or lacks a captured project root.");
|
|
98
|
-
}
|
|
99
|
-
// Explicitly trust the root provided by the developer
|
|
100
|
-
plugin.__root__ = pluginRoot;
|
|
113
|
+
assertNonEmptyString(Sys, "XyPriss Initialization Error: To create a plugin, you MUST provide the plugin's root path or its '__sys__' instance as the second argument to Plugin.create().\n" +
|
|
114
|
+
"Example: return Plugin.create({ ... }, __sys__.__root__);");
|
|
115
|
+
plugin.__root__ = Sys;
|
|
101
116
|
return plugin;
|
|
102
|
-
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create a typed plugin factory with a pre-assigned root.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* const myFactory = Plugin.factory(
|
|
124
|
+
* (config: MyConfig) => ({ name: "my-plugin", version: "1.0.0" }),
|
|
125
|
+
* __sys__.__root__
|
|
126
|
+
* );
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
103
129
|
factory(creator, rootOrSys) {
|
|
104
130
|
if (!rootOrSys) {
|
|
105
|
-
throw new Error("XyPriss Initialization Error: Plugin.factory()
|
|
106
|
-
}
|
|
107
|
-
const pluginRoot = typeof rootOrSys === "string" ? rootOrSys : rootOrSys.__root__;
|
|
108
|
-
if (!pluginRoot) {
|
|
109
|
-
throw new Error("XyPriss Security Error: The provided root or '__sys__' instance is invalid for this factory.");
|
|
131
|
+
throw new Error("XyPriss Initialization Error: Plugin.factory() requires the plugin's root path or '__sys__' instance as the second argument.");
|
|
110
132
|
}
|
|
133
|
+
const pluginRoot = resolvePluginRoot(rootOrSys);
|
|
111
134
|
return ((config) => {
|
|
112
135
|
const plugin = creator(config);
|
|
113
136
|
plugin.__root__ = pluginRoot;
|
|
114
137
|
return plugin;
|
|
115
138
|
});
|
|
116
|
-
}
|
|
139
|
+
}
|
|
117
140
|
// /**
|
|
118
141
|
// * Get statistics for all registered plugins
|
|
119
142
|
// * Requires MANAGE_PLUGINS permission
|
|
120
143
|
// */
|
|
121
144
|
// getStats(): import("../types/PluginTypes").PluginStats[] {
|
|
122
|
-
// const manager =
|
|
145
|
+
// const manager = globalPluginManager;
|
|
123
146
|
// if (!manager) return [];
|
|
124
147
|
// return manager.getPluginStats();
|
|
125
|
-
// }
|
|
148
|
+
// }
|
|
126
149
|
// /**
|
|
127
150
|
// * Set permission for a plugin hook
|
|
128
151
|
// * Requires MANAGE_PLUGINS permission
|
|
129
152
|
// */
|
|
130
|
-
// setPermission(
|
|
131
|
-
// pluginName
|
|
132
|
-
//
|
|
133
|
-
// allowed: boolean,
|
|
134
|
-
// by?: string
|
|
135
|
-
// ): void {
|
|
136
|
-
// const manager = getGlobalPluginManager();
|
|
137
|
-
// if (manager) {
|
|
138
|
-
// manager.setPluginPermission(pluginName, hookId, allowed, by);
|
|
139
|
-
// }
|
|
140
|
-
// },
|
|
153
|
+
// setPermission(pluginName: string, hookId: string, allowed: boolean, by?: string): void {
|
|
154
|
+
// globalPluginManager?.setPluginPermission(pluginName, hookId, allowed, by);
|
|
155
|
+
// }
|
|
141
156
|
// /**
|
|
142
157
|
// * Toggle plugin enabled/disabled state
|
|
143
158
|
// * Requires MANAGE_PLUGINS permission
|
|
144
159
|
// */
|
|
145
160
|
// toggle(pluginName: string, enabled: boolean, by?: string): void {
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
// manager.togglePlugin(pluginName, enabled, by);
|
|
149
|
-
// }
|
|
150
|
-
// },
|
|
161
|
+
// globalPluginManager?.togglePlugin(pluginName, enabled, by);
|
|
162
|
+
// }
|
|
151
163
|
/**
|
|
152
|
-
* Create
|
|
153
|
-
* Useful for
|
|
154
|
-
* @returns A do-nothing plugin instance
|
|
164
|
+
* Create a no-op placeholder plugin.
|
|
165
|
+
* Useful for testing or conditional plugin slots.
|
|
155
166
|
*/
|
|
156
167
|
void() {
|
|
157
168
|
return {
|
|
158
|
-
name:
|
|
169
|
+
name: `void-plugin-${Math.random().toString(36).slice(2, 9)}`,
|
|
159
170
|
version: "1.0.0",
|
|
160
171
|
};
|
|
161
|
-
}
|
|
162
|
-
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// ─── Proxy Shield ─────────────────────────────────────────────────────────────
|
|
175
|
+
/**
|
|
176
|
+
* Wraps the PluginAPI instance in a Proxy that:
|
|
177
|
+
* 1. Blocks direct access to private members (e.g. `register`).
|
|
178
|
+
* 2. Prevents any mutation of the instance from outside.
|
|
179
|
+
* 3. Prevents prototype inspection / tampering.
|
|
180
|
+
*/
|
|
181
|
+
function createSecurePluginAPI(instance) {
|
|
182
|
+
return new Proxy(instance, {
|
|
183
|
+
get(target, prop) {
|
|
184
|
+
// Block private members by name
|
|
185
|
+
if (typeof prop === "string" && PRIVATE_MEMBERS.has(prop)) {
|
|
186
|
+
throw new TypeError(`XyPriss Security Error: '${prop}' is a private method and cannot be accessed externally.`);
|
|
187
|
+
}
|
|
188
|
+
const value = Reflect.get(target, prop, target);
|
|
189
|
+
// Bind methods so `this` always refers to the real instance, not the proxy
|
|
190
|
+
if (typeof value === "function") {
|
|
191
|
+
return value.bind(target);
|
|
192
|
+
}
|
|
193
|
+
return value;
|
|
194
|
+
},
|
|
195
|
+
// Prevent property assignment from outside
|
|
196
|
+
set(_target, prop) {
|
|
197
|
+
throw new TypeError(`XyPriss Security Error: Cannot assign to '${String(prop)}' — the Plugin API is read-only.`);
|
|
198
|
+
},
|
|
199
|
+
// Prevent property deletion
|
|
200
|
+
deleteProperty(_target, prop) {
|
|
201
|
+
throw new TypeError(`XyPriss Security Error: Cannot delete '${String(prop)}' — the Plugin API is immutable.`);
|
|
202
|
+
},
|
|
203
|
+
// Prevent defineProperty overrides
|
|
204
|
+
defineProperty(_target, prop) {
|
|
205
|
+
throw new TypeError(`XyPriss Security Error: Cannot redefine '${String(prop)}' on the Plugin API.`);
|
|
206
|
+
},
|
|
207
|
+
// Prevent prototype chain inspection / hijacking
|
|
208
|
+
getPrototypeOf() {
|
|
209
|
+
return null;
|
|
210
|
+
},
|
|
211
|
+
// Prevent setPrototypeOf
|
|
212
|
+
setPrototypeOf() {
|
|
213
|
+
throw new TypeError("XyPriss Security Error: Cannot modify the prototype of the Plugin API.");
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
const Plugin = createSecurePluginAPI(new PluginAPI());
|
|
163
218
|
|
|
164
219
|
exports.Plugin = Plugin;
|
|
165
220
|
//# sourceMappingURL=PluginAPI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginAPI.js","sources":["../../../../../src/plugins/api/PluginAPI.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;
|
|
1
|
+
{"version":3,"file":"PluginAPI.js","sources":["../../../../../src/plugins/api/PluginAPI.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;AAMH;AASA;AAEA;;;AAGG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAS,CAAC,UAAU,CAAC,CAAC;AAErD;AAEA,SAAS,oBAAoB,CACzB,KAAc,EACd,YAAoB,EAAA;IAEpB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;AAC5C,QAAA,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC;IACjC;AACJ;AAEA,SAAS,iBAAiB,CAAC,SAAwC,EAAA;AAC/D,IAAA,MAAM,IAAI,GACN,OAAO,SAAS,KAAK,QAAQ,GAAG,SAAS,GAAG,SAAS,EAAE,QAAQ;AACnE,IAAA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AACnD,QAAA,MAAM,IAAI,KAAK,CACX,8GAA8G,CACjH;IACL;AACA,IAAA,OAAO,IAAI;AACf;AA4BA;AAEA,MAAM,SAAS,CAAA;AACX;;;;;;;;;;;;;;;;AAgBG;AACI,IAAA,QAAQ,CAAI,GAAgB,EAAA;QAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CACX,uHAAuH,CAC1H;QACL;AAEA,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CACX,4DAA4D,YAAY,CAAA,+CAAA,CAAiD,CAC5H;QACL;AACA,QAAA,IAAI;YACA,OAAO,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAM;QACjD;QAAE,OAAO,GAAG,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CACX,4DAA4D,YAAY,CAAA,+CAAA,CAAiD,CAC5H;QACL;IACJ;AAEA;;;AAGG;IACK,QAAQ,CACZ,MAAqC,EACrC,MAAY,EAAA;IAShB;AAEA;;;;;;;;;;;;;AAaG;IACH,IAAI,CAAC,MAAqC,EAAE,MAAY,EAAA;AACpD,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACjC;AAEA;;;;;;;;;;AAUG;AACH,IAAA,GAAG,CAAC,IAAY,EAAA;QASE;AACV,YAAA,MAAM,IAAI,KAAK,CACX,gEAAgE,CACnE;QACL;IAYJ;AAEA;;;;;;;;;;;AAWG;IACH,MAAM,CAAC,MAAqB,EAAE,GAAW,EAAA;QACrC,oBAAoB,CAChB,GAAG,EACH,kKAAkK;AAC9J,YAAA,2DAA2D,CAClE;AAED,QAAA,MAAM,CAAC,QAAQ,GAAG,GAAG;AACrB,QAAA,OAAO,MAAM;IACjB;AAEA;;;;;;;;;;AAUG;IACH,OAAO,CACH,OAA2C,EAC3C,SAAwC,EAAA;QAExC,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACX,8HAA8H,CACjI;QACL;AAEA,QAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC;AAE/C,QAAA,QAAQ,CAAC,MAAe,KAAI;AACxB,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC9B,YAAA,MAAM,CAAC,QAAQ,GAAG,UAAU;AAC5B,YAAA,OAAO,MAAM;AACjB,QAAA,CAAC;IACL;;;;;;;;;;;;;;;;;;;;;;;;AA4BA;;;AAGG;IACH,IAAI,GAAA;QACA,OAAO;AACH,YAAA,IAAI,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE;AAC7D,YAAA,OAAO,EAAE,OAAO;SACnB;IACL;AACH;AAED;AAEA;;;;;AAKG;AACH,SAAS,qBAAqB,CAC1B,QAAmB,EAAA;AAEnB,IAAA,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,IAAqB,EAAA;;AAE7B,YAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvD,gBAAA,MAAM,IAAI,SAAS,CACf,4BAA4B,IAAI,CAAA,wDAAA,CAA0D,CAC7F;YACL;AAEA,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;;AAG/C,YAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC7B,gBAAA,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B;AAEA,YAAA,OAAO,KAAK;QAChB,CAAC;;QAGD,GAAG,CAAC,OAAO,EAAE,IAAqB,EAAA;YAC9B,MAAM,IAAI,SAAS,CACf,CAAA,0CAAA,EAA6C,MAAM,CAAC,IAAI,CAAC,CAAA,gCAAA,CAAkC,CAC9F;QACL,CAAC;;QAGD,cAAc,CAAC,OAAO,EAAE,IAAqB,EAAA;YACzC,MAAM,IAAI,SAAS,CACf,CAAA,uCAAA,EAA0C,MAAM,CAAC,IAAI,CAAC,CAAA,gCAAA,CAAkC,CAC3F;QACL,CAAC;;QAGD,cAAc,CAAC,OAAO,EAAE,IAAqB,EAAA;YACzC,MAAM,IAAI,SAAS,CACf,CAAA,yCAAA,EAA4C,MAAM,CAAC,IAAI,CAAC,CAAA,oBAAA,CAAsB,CACjF;QACL,CAAC;;QAGD,cAAc,GAAA;AACV,YAAA,OAAO,IAAI;QACf,CAAC;;QAGD,cAAc,GAAA;AACV,YAAA,MAAM,IAAI,SAAS,CACf,wEAAwE,CAC3E;QACL,CAAC;AACJ,KAAA,CAA0C;AAC/C;AAEO,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,SAAS,EAAE;;;;"}
|
|
@@ -32,16 +32,16 @@ class XyPrissServer {
|
|
|
32
32
|
this.logger = Logger.initializeLogger(this.options.logging).child("server", {
|
|
33
33
|
instanceName: instanceName,
|
|
34
34
|
});
|
|
35
|
-
if (!this.options.isAuxiliary) {
|
|
36
|
-
this.logger.startup("server", `Creating XyPriss Server for '${instanceName}'...`);
|
|
37
|
-
}
|
|
38
35
|
if (this.options.logging?.consoleInterception?.enabled) {
|
|
39
|
-
this.consoleInterceptor =
|
|
36
|
+
this.consoleInterceptor = ConsoleInterceptor.ConsoleInterceptor.getInstance(this.logger);
|
|
40
37
|
this.consoleInterceptor.start().catch((err) => {
|
|
41
38
|
this.logger.error("server", `Failed to start console interceptor: ${err.message}`);
|
|
42
39
|
});
|
|
43
40
|
this.logger.debug("server", "Console interceptor initialization triggered");
|
|
44
41
|
}
|
|
42
|
+
if (!this.options.isAuxiliary) {
|
|
43
|
+
this.logger.startup("server", `Creating XyPriss Server for '${instanceName}'...`);
|
|
44
|
+
}
|
|
45
45
|
this.app = new XyprissApp.XyprissApp(this.logger, this.options);
|
|
46
46
|
this.app.logger = this.logger;
|
|
47
47
|
this.app.server = this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/server/FastServer/index.ts"],"sourcesContent":[null],"names":["Configs","initializeLogger","ConsoleInterceptor","XyprissApp","XyRequestManager","MiddlewareManager","ShutdownManager","ComponentManager","UploadManager","LogTracingMethods","SecurityMiddleware","xemsSession","DEFAULT_OPTIONS","ServerPluginManager","Port","generateXUserTmpDir","localSysApi"],"mappings":";;;;;;;;;;;;;;;;;;;;MAgCa,aAAa,CAAA;AA4BtB,IAAA,WAAA,GAAA;QAzBQ,IAAA,CAAA,KAAK,GAAG,KAAK;AACb,QAAA,IAAA,CAAA,WAAW,GAAkB,OAAO,CAAC,OAAO,EAAE;AAyBlD,QAAA,IAAI,CAAC,OAAO,GAAGA,uBAAO,CAAC,MAAM,EAAE;QAC/B,MAAM,YAAY,GACd,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW;AAChC,aAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;kBAChB,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAA;kBAChC,MAAM,CAAC;;AAGjB,QAAA,IAAI,CAAC,MAAM,GAAGC,uBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;AACjE,YAAA,YAAY,EAAE,YAAY;AAC7B,SAAA,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/server/FastServer/index.ts"],"sourcesContent":[null],"names":["Configs","initializeLogger","ConsoleInterceptor","XyprissApp","XyRequestManager","MiddlewareManager","ShutdownManager","ComponentManager","UploadManager","LogTracingMethods","SecurityMiddleware","xemsSession","DEFAULT_OPTIONS","ServerPluginManager","Port","generateXUserTmpDir","localSysApi"],"mappings":"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"}
|