xypriss 4.6.0 → 5.0.1
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/LICENSE +9 -17
- package/README.md +36 -4
- package/dist/cjs/src/config.js +33 -8
- package/dist/cjs/src/config.js.map +1 -1
- package/dist/cjs/src/const.js +457 -190
- package/dist/cjs/src/const.js.map +1 -1
- package/dist/cjs/src/index.js +16 -17
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js +24 -8
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
- package/dist/cjs/src/middleware/security-middleware.js +67 -6
- package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
- package/dist/cjs/src/plugins/const/PluginHookIds.js +56 -0
- package/dist/cjs/src/plugins/const/PluginHookIds.js.map +1 -0
- package/dist/cjs/src/plugins/core/PluginManager.js +138 -25
- package/dist/cjs/src/plugins/core/PluginManager.js.map +1 -1
- package/dist/cjs/src/plugins/server-maintenance-plugin.js +3 -3
- package/dist/cjs/src/plugins/server-maintenance-plugin.js.map +1 -1
- package/dist/cjs/src/server/FastServer.js +8 -8
- package/dist/cjs/src/server/FastServer.js.map +1 -1
- package/dist/cjs/src/server/ServerFactory.js +17 -18
- package/dist/cjs/src/server/ServerFactory.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/FileWatcherManager.js +14 -19
- package/dist/cjs/src/server/components/fastapi/FileWatcherManager.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/RedirectManager.js +16 -21
- package/dist/cjs/src/server/components/fastapi/RedirectManager.js.map +1 -1
- package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js +6 -3
- package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -1
- package/dist/cjs/src/server/const/default.js +8 -4
- package/dist/cjs/src/server/const/default.js.map +1 -1
- package/dist/cjs/src/server/core/HttpServer.js +63 -9
- package/dist/cjs/src/server/core/HttpServer.js.map +1 -1
- package/dist/cjs/src/server/core/XyprissApp.js +3 -14
- package/dist/cjs/src/server/core/XyprissApp.js.map +1 -1
- package/dist/cjs/src/server/handlers/NotFoundHandler.js +44 -184
- package/dist/cjs/src/server/handlers/NotFoundHandler.js.map +1 -1
- package/dist/cjs/src/server/handlers/templates/notFoundTemplate.js +655 -0
- package/dist/cjs/src/server/handlers/templates/notFoundTemplate.js.map +1 -0
- package/dist/cjs/src/sys/FileSystem.js +1302 -0
- package/dist/cjs/src/sys/FileSystem.js.map +1 -0
- package/dist/cjs/src/sys.js +32 -30
- package/dist/cjs/src/sys.js.map +1 -1
- package/dist/cjs/src/types/NotFoundConfig.js +86 -0
- package/dist/cjs/src/types/NotFoundConfig.js.map +1 -0
- package/dist/esm/src/config.js +33 -8
- package/dist/esm/src/config.js.map +1 -1
- package/dist/esm/src/const.js +457 -190
- package/dist/esm/src/const.js.map +1 -1
- package/dist/esm/src/index.js +15 -17
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js +24 -8
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
- package/dist/esm/src/middleware/security-middleware.js +67 -6
- package/dist/esm/src/middleware/security-middleware.js.map +1 -1
- package/dist/esm/src/plugins/const/PluginHookIds.js +53 -0
- package/dist/esm/src/plugins/const/PluginHookIds.js.map +1 -0
- package/dist/esm/src/plugins/core/PluginManager.js +138 -25
- package/dist/esm/src/plugins/core/PluginManager.js.map +1 -1
- package/dist/esm/src/plugins/server-maintenance-plugin.js +3 -3
- package/dist/esm/src/plugins/server-maintenance-plugin.js.map +1 -1
- package/dist/esm/src/server/FastServer.js +8 -8
- package/dist/esm/src/server/FastServer.js.map +1 -1
- package/dist/esm/src/server/ServerFactory.js +18 -19
- package/dist/esm/src/server/ServerFactory.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/FileWatcherManager.js +14 -19
- package/dist/esm/src/server/components/fastapi/FileWatcherManager.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/RedirectManager.js +16 -21
- package/dist/esm/src/server/components/fastapi/RedirectManager.js.map +1 -1
- package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js +6 -3
- package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -1
- package/dist/esm/src/server/const/default.js +8 -4
- package/dist/esm/src/server/const/default.js.map +1 -1
- package/dist/esm/src/server/core/HttpServer.js +63 -9
- package/dist/esm/src/server/core/HttpServer.js.map +1 -1
- package/dist/esm/src/server/core/XyprissApp.js +3 -14
- package/dist/esm/src/server/core/XyprissApp.js.map +1 -1
- package/dist/esm/src/server/handlers/NotFoundHandler.js +44 -164
- package/dist/esm/src/server/handlers/NotFoundHandler.js.map +1 -1
- package/dist/esm/src/server/handlers/templates/notFoundTemplate.js +653 -0
- package/dist/esm/src/server/handlers/templates/notFoundTemplate.js.map +1 -0
- package/dist/esm/src/sys/FileSystem.js +1300 -0
- package/dist/esm/src/sys/FileSystem.js.map +1 -0
- package/dist/esm/src/sys.js +32 -30
- package/dist/esm/src/sys.js.map +1 -1
- package/dist/esm/src/types/NotFoundConfig.js +84 -0
- package/dist/esm/src/types/NotFoundConfig.js.map +1 -0
- package/dist/index.d.ts +1290 -157
- package/package.json +3 -4
- package/dist/cjs/src/server/handlers/templates/notFoundTemp.js +0 -163
- package/dist/cjs/src/server/handlers/templates/notFoundTemp.js.map +0 -1
- package/dist/cjs/src/server/utils/es_modules.js +0 -12
- package/dist/cjs/src/server/utils/es_modules.js.map +0 -1
- package/dist/esm/src/server/handlers/templates/notFoundTemp.js +0 -161
- package/dist/esm/src/server/handlers/templates/notFoundTemp.js.map +0 -1
- package/dist/esm/src/server/utils/es_modules.js +0 -8
- package/dist/esm/src/server/utils/es_modules.js.map +0 -1
package/LICENSE
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
NEHONIX Open Source License (NOSL) v1.0
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2025 NEHONIX
|
|
3
|
+
Copyright (c) 2025 NEHONIX - www.nehonix.com
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
5
|
+
This License governs the use, modification, and distribution of software provided by NEHONIX under its open source projects. NEHONIX is committed to fostering collaborative innovation while strictly protecting its intellectual property rights. Violation of any term of this License will result in immediate termination of all granted rights and may subject the violator to legal action.
|
|
11
6
|
|
|
12
|
-
The
|
|
13
|
-
copies or substantial portions of the Software.
|
|
7
|
+
The full version of this license is available at: https://dll.nehonix.com/licenses/NOSL
|
|
14
8
|
|
|
15
|
-
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
9
|
+
> **DISCLAIMER OF WARRANTY**
|
|
10
|
+
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
11
|
+
|
|
12
|
+
> **LIMITATION OF LIABILITY**
|
|
13
|
+
> IN NO EVENT SHALL NEHONIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING FROM THE USE OR INABILITY TO USE THE SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
package/README.md
CHANGED
|
@@ -7,8 +7,9 @@ A powerful Node.js web framework with built-in security, clustering, and perform
|
|
|
7
7
|
|
|
8
8
|
[](https://badge.fury.io/js/xypriss)
|
|
9
9
|
[](https://www.typescriptlang.org/)
|
|
10
|
-
[](https://dll.nehonix.com/licenses/NOSL)
|
|
11
11
|
[](https://nehonix.com)
|
|
12
|
+
[](https://github.com/Nehonix-Team/xynginc)
|
|
12
13
|
|
|
13
14
|
</div>
|
|
14
15
|
|
|
@@ -18,6 +19,8 @@ A powerful Node.js web framework with built-in security, clustering, and perform
|
|
|
18
19
|
|
|
19
20
|
XyPriss is a powerful, TypeScript-first, open-source Node.js web framework that enhances your development experience with built-in security middleware, clustering, and performance optimizations. Whether you're building new applications or enhancing existing ones, XyPriss provides the tools you need for scalable, secure web development.
|
|
20
21
|
|
|
22
|
+
For production deployments, XyPriss integrates seamlessly with **[XyNginC](https://github.com/Nehonix-Team/xynginc)** for automated Nginx configuration and SSL management.
|
|
23
|
+
|
|
21
24
|
### Key Features
|
|
22
25
|
|
|
23
26
|
- **Familiar API**: Intuitive syntax for defining routes and middleware
|
|
@@ -213,6 +216,36 @@ await app.startAllServers();
|
|
|
213
216
|
|
|
214
217
|
[→ Full Multi-Server Guide](./docs/MULTI_SERVER.md)
|
|
215
218
|
|
|
219
|
+
### Production Deployment
|
|
220
|
+
|
|
221
|
+
Integrate **XyNginC** directly into your server for automated Nginx & SSL management:
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
import { createServer } from "xypriss";
|
|
225
|
+
import XNCP from "xynginc";
|
|
226
|
+
|
|
227
|
+
const app = createServer({
|
|
228
|
+
plugins: {
|
|
229
|
+
register: [
|
|
230
|
+
XNCP({
|
|
231
|
+
domains: [
|
|
232
|
+
{
|
|
233
|
+
domain: "api.example.com",
|
|
234
|
+
port: 3000,
|
|
235
|
+
ssl: true,
|
|
236
|
+
email: "admin@example.com",
|
|
237
|
+
},
|
|
238
|
+
],
|
|
239
|
+
}),
|
|
240
|
+
],
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
app.start();
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
[→ Full XyNginC Guide](https://github.com/Nehonix-Team/xynginc)
|
|
248
|
+
|
|
216
249
|
---
|
|
217
250
|
|
|
218
251
|
## Modules
|
|
@@ -316,13 +349,12 @@ We welcome contributions! See the [Contributing Guide](./CONTRIBUTING.md) for de
|
|
|
316
349
|
|
|
317
350
|
## License
|
|
318
351
|
|
|
319
|
-
XyPriss is licensed under the [
|
|
352
|
+
XyPriss is licensed under the [NOSL License](./LICENSE).
|
|
320
353
|
|
|
321
354
|
---
|
|
322
355
|
|
|
323
|
-
###
|
|
356
|
+
### Built with ❤️ by [Nehonix Devs](https://github.com/Nehonix-Team) and its [collaborators](https://github.com/Nehonix-Team/XyPriss/graphs/contributors)
|
|
324
357
|
|
|
325
358
|
[](https://nehonix.com)
|
|
326
359
|
[](https://github.com/Nehonix-Team)
|
|
327
|
-
[](https://twitter.com/nehonix)
|
|
328
360
|
|
package/dist/cjs/src/config.js
CHANGED
|
@@ -115,22 +115,47 @@ class ConfigurationManager {
|
|
|
115
115
|
* @param source - Source object to merge
|
|
116
116
|
* @returns Merged object
|
|
117
117
|
*/
|
|
118
|
+
/**
|
|
119
|
+
* Deeply merge two configuration objects
|
|
120
|
+
* @param target - Target object to merge into
|
|
121
|
+
* @param source - Source object to merge from
|
|
122
|
+
* @returns Merged object
|
|
123
|
+
*/
|
|
118
124
|
static deepMerge(target, source) {
|
|
119
|
-
|
|
125
|
+
// Create a plain copy of target. If target is a Proxy, this spreads its properties.
|
|
126
|
+
const result = (Array.isArray(target) ? [...target] : { ...target });
|
|
120
127
|
for (const key in source) {
|
|
121
128
|
const sourceValue = source[key];
|
|
122
129
|
const targetValue = result[key];
|
|
123
|
-
|
|
130
|
+
const isSourceObj = sourceValue &&
|
|
124
131
|
typeof sourceValue === "object" &&
|
|
125
|
-
!Array.isArray(sourceValue)
|
|
126
|
-
|
|
132
|
+
!Array.isArray(sourceValue);
|
|
133
|
+
const isTargetObj = targetValue &&
|
|
127
134
|
typeof targetValue === "object" &&
|
|
128
|
-
!Array.isArray(targetValue)
|
|
129
|
-
|
|
130
|
-
|
|
135
|
+
!Array.isArray(targetValue);
|
|
136
|
+
if (isSourceObj && isTargetObj) {
|
|
137
|
+
// Both are objects, merge them recursively
|
|
138
|
+
if (targetValue === sourceValue) {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (targetValue.__isXyPrissImmutable) {
|
|
142
|
+
// Target is immutable. We must merge recursively into it to trigger traps
|
|
143
|
+
// and ensure compatibility.
|
|
144
|
+
ConfigurationManager.deepMerge(targetValue, sourceValue);
|
|
145
|
+
result[key] = targetValue;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// Target is plain, merge recursively
|
|
149
|
+
result[key] = ConfigurationManager.deepMerge(targetValue, sourceValue);
|
|
150
|
+
}
|
|
131
151
|
}
|
|
132
152
|
else if (sourceValue !== undefined) {
|
|
133
|
-
//
|
|
153
|
+
// Primitive, array, or target is not an object.
|
|
154
|
+
// If the parent (target) is immutable, try to set it there to trigger trap
|
|
155
|
+
// This will throw if the value is different from the current one.
|
|
156
|
+
if (target.__isXyPrissImmutable) {
|
|
157
|
+
target[key] = sourceValue;
|
|
158
|
+
}
|
|
134
159
|
result[key] = sourceValue;
|
|
135
160
|
}
|
|
136
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sources":["../../../src/config.ts"],"sourcesContent":[null],"names":["DEFAULT_OPTIONS"],"mappings":";;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCG;AAKH;;;AAGG;AACH,MAAM,oBAAoB,CAAA;AAKtB;;;AAGG;AACH,IAAA,WAAA,GAAA;QANQ,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;;AAQjC,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAGA,wBAAe,EAAE,CAAC;KACxC;AAED;;AAEG;AACK,IAAA,OAAO,WAAW,GAAA;AACtB,QAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;AAChC,YAAA,oBAAoB,CAAC,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;SAC9D;QACD,OAAO,oBAAoB,CAAC,QAAQ,CAAC;KACxC;AAED;;;AAGG;IACI,OAAO,GAAG,CAAC,MAAqB,EAAA;AACnC,QAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,EAAE,CAAC;AACpD,QAAA,QAAQ,CAAC,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AACpD,QAAA,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;KAC/B;AAED;;;;AAIG;IACI,OAAO,GAAG,CAAgC,GAAM,EAAA;AACnD,QAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,EAAE,CAAC;AACpD,QAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC/B;AAED;;;AAGG;AACI,IAAA,OAAO,MAAM,GAAA;AAChB,QAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,EAAE,CAAC;AACpD,QAAA,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;KACjC;AAED;;;;AAIG;AACI,IAAA,OAAO,MAAM,CAChB,GAAM,EACN,KAAgC,EAAA;AAEhC,QAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;QAG1C,IACI,OAAO,YAAY,KAAK,QAAQ;AAChC,YAAA,YAAY,KAAK,IAAI;AACrB,YAAA,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAC9B;AACE,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;AACnB,gBAAA,GAAG,YAAY;AACf,gBAAA,GAAG,KAAK;aACS,CAAC;SACzB;aAAM;;AAEH,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAyB,CAAC;SACpD;KACJ;AAED;;;;;AAKG;AACK,IAAA,OAAO,SAAS,CACpB,MAAS,EACT,MAAkB,EAAA
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../src/config.ts"],"sourcesContent":[null],"names":["DEFAULT_OPTIONS"],"mappings":"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"}
|