xypriss 9.12.20 → 9.12.22

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.
@@ -9,8 +9,8 @@
9
9
  * ```typescript
10
10
  * import { XyGuard } from "xypriss";
11
11
  *
12
- * XyGuard.define('authenticated', (req) => !!req.user);
13
- * XyGuard.define('roles', (req, required) => required.includes(req.user?.role));
12
+ * XyGuard.define('authenticated', (req, ctx) => !!req.user);
13
+ * XyGuard.define('roles', (req, required, ctx) => required.includes(req.user?.role));
14
14
  * ```
15
15
  */
16
16
  class XyGuard {
@@ -18,6 +18,9 @@ class XyGuard {
18
18
  * Internal implementation of define.
19
19
  */
20
20
  static define(name, resolver) {
21
+ if (this.resolvers.has(name)) {
22
+ throw new Error(`[XyGuard] A guard with the name '${name}' is already defined.`);
23
+ }
21
24
  this.resolvers.set(name, resolver);
22
25
  }
23
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"XyGuard.js","sources":["../../../../../../src/server/routing/modules/XyGuard.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAUA;;;;;;;;;;;;AAYG;MACU,OAAO,CAAA;AAgChB;;AAEG;AACI,IAAA,OAAO,MAAM,CAAC,IAAY,EAAE,QAAuB,EAAA;QACtD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;IACtC;AAEA;;;AAGG;IACI,OAAO,GAAG,CAAC,IAAY,EAAA;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACnC;;AA5Ce,OAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAyB;;;;"}
1
+ {"version":3,"file":"XyGuard.js","sources":["../../../../../../src/server/routing/modules/XyGuard.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAiBA;;;;;;;;;;;;AAYG;MACU,OAAO,CAAA;AAsChB;;AAEG;AACI,IAAA,OAAO,MAAM,CAChB,IAAY,EACZ,QAI+D,EAAA;QAE/D,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAA,qBAAA,CAAuB,CAAC;QACpF;QACA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;IACtC;AAEA;;;AAGG;IACI,OAAO,GAAG,CAAC,IAAY,EAAA;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACnC;;AA5De,OAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAyB;;;;"}
@@ -115,7 +115,16 @@ function createGuardMiddleware(guards, logger) {
115
115
  continue; // Silently ignore unknown keys as documented
116
116
  }
117
117
  try {
118
- const result = await resolver(req, value);
118
+ const ctx = { res };
119
+ // For built-ins with option (roles, permissions, custom option), pass (req, value, ctx).
120
+ // For single arg guards like authenticated or custom options where value is boolean true, pass ctx as second arg if value is boolean.
121
+ let result;
122
+ if (typeof value === "boolean") {
123
+ result = await resolver(req, ctx, ctx);
124
+ }
125
+ else {
126
+ result = await resolver(req, value, ctx);
127
+ }
119
128
  if (result === false) {
120
129
  let status = 403;
121
130
  let error = "Forbidden: Access denied";
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../../src/server/routing/modules/helpers.ts"],"sourcesContent":[null],"names":["BUILTIN_PARAM_PATTERNS","XyGuard"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../../src/server/routing/modules/helpers.ts"],"sourcesContent":[null],"names":["BUILTIN_PARAM_PATTERNS","XyGuard"],"mappings":"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"}
@@ -7,8 +7,8 @@
7
7
  * ```typescript
8
8
  * import { XyGuard } from "xypriss";
9
9
  *
10
- * XyGuard.define('authenticated', (req) => !!req.user);
11
- * XyGuard.define('roles', (req, required) => required.includes(req.user?.role));
10
+ * XyGuard.define('authenticated', (req, ctx) => !!req.user);
11
+ * XyGuard.define('roles', (req, required, ctx) => required.includes(req.user?.role));
12
12
  * ```
13
13
  */
14
14
  class XyGuard {
@@ -16,6 +16,9 @@ class XyGuard {
16
16
  * Internal implementation of define.
17
17
  */
18
18
  static define(name, resolver) {
19
+ if (this.resolvers.has(name)) {
20
+ throw new Error(`[XyGuard] A guard with the name '${name}' is already defined.`);
21
+ }
19
22
  this.resolvers.set(name, resolver);
20
23
  }
21
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"XyGuard.js","sources":["../../../../../../src/server/routing/modules/XyGuard.ts"],"sourcesContent":[null],"names":[],"mappings":"AAUA;;;;;;;;;;;;AAYG;MACU,OAAO,CAAA;AAgChB;;AAEG;AACI,IAAA,OAAO,MAAM,CAAC,IAAY,EAAE,QAAuB,EAAA;QACtD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;IACtC;AAEA;;;AAGG;IACI,OAAO,GAAG,CAAC,IAAY,EAAA;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACnC;;AA5Ce,OAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAyB;;;;"}
1
+ {"version":3,"file":"XyGuard.js","sources":["../../../../../../src/server/routing/modules/XyGuard.ts"],"sourcesContent":[null],"names":[],"mappings":"AAiBA;;;;;;;;;;;;AAYG;MACU,OAAO,CAAA;AAsChB;;AAEG;AACI,IAAA,OAAO,MAAM,CAChB,IAAY,EACZ,QAI+D,EAAA;QAE/D,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAA,qBAAA,CAAuB,CAAC;QACpF;QACA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;IACtC;AAEA;;;AAGG;IACI,OAAO,GAAG,CAAC,IAAY,EAAA;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACnC;;AA5De,OAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAyB;;;;"}
@@ -113,7 +113,16 @@ function createGuardMiddleware(guards, logger) {
113
113
  continue; // Silently ignore unknown keys as documented
114
114
  }
115
115
  try {
116
- const result = await resolver(req, value);
116
+ const ctx = { res };
117
+ // For built-ins with option (roles, permissions, custom option), pass (req, value, ctx).
118
+ // For single arg guards like authenticated or custom options where value is boolean true, pass ctx as second arg if value is boolean.
119
+ let result;
120
+ if (typeof value === "boolean") {
121
+ result = await resolver(req, ctx, ctx);
122
+ }
123
+ else {
124
+ result = await resolver(req, value, ctx);
125
+ }
117
126
  if (result === false) {
118
127
  let status = 403;
119
128
  let error = "Forbidden: Access denied";
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../../src/server/routing/modules/helpers.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../../src/server/routing/modules/helpers.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -9241,7 +9241,7 @@ type XyPrisResponse$1 = XyPrisResponse;
9241
9241
  /** Param type constraint descriptor */
9242
9242
  type ParamType = "string" | "number" | "integer" | "boolean" | "uuid" | "alpha" | "alphanumeric" | `string(${number},${number})` | `number(${number},${number})` | `enum(${string})`;
9243
9243
  /** A declarative guard: returns true to allow, false/string to deny */
9244
- type RouteGuard = (req: XyPrisRequest$1, res: XyPrisResponse$1) => boolean | string | Promise<boolean | string>;
9244
+ type RouteGuard = (req: XyPrisRequest$1, res: XyPrisResponse$1) => boolean | string | void | Promise<boolean | string | void>;
9245
9245
  /**
9246
9246
  * Declarative guard configuration for a route or group.
9247
9247
  *
@@ -12949,7 +12949,12 @@ declare const Plugin: Readonly<Omit<PluginAPI, "register">>;
12949
12949
  */
12950
12950
  declare function quickServer(port?: number): XyApp;
12951
12951
 
12952
- type GuardResolver = (req: XyPrisRequest$1, options?: any) => boolean | string | Promise<boolean | string>;
12952
+ /** Context object passed as second argument to custom guard resolvers */
12953
+ interface XyGuardContext {
12954
+ res?: XyPrisResponse$1;
12955
+ [key: string]: any;
12956
+ }
12957
+ type GuardResolver = (req: XyPrisRequest$1, ctxOrOptions?: any, ctx?: XyGuardContext) => boolean | string | void | Promise<boolean | string | void>;
12953
12958
  /**
12954
12959
  * XyGuard - Global registry for built-in guard resolvers.
12955
12960
  * This allows XyPriss to handle declarative guards like 'authenticated' or 'roles'
@@ -12959,8 +12964,8 @@ type GuardResolver = (req: XyPrisRequest$1, options?: any) => boolean | string |
12959
12964
  * ```typescript
12960
12965
  * import { XyGuard } from "xypriss";
12961
12966
  *
12962
- * XyGuard.define('authenticated', (req) => !!req.user);
12963
- * XyGuard.define('roles', (req, required) => required.includes(req.user?.role));
12967
+ * XyGuard.define('authenticated', (req, ctx) => !!req.user);
12968
+ * XyGuard.define('roles', (req, required, ctx) => required.includes(req.user?.role));
12964
12969
  * ```
12965
12970
  */
12966
12971
  declare class XyGuard {
@@ -12968,15 +12973,15 @@ declare class XyGuard {
12968
12973
  /**
12969
12974
  * Define a resolver for the 'authenticated' guard.
12970
12975
  */
12971
- static define(name: "authenticated", resolver: (req: XyPrisRequest$1) => boolean | string | Promise<boolean | string>): void;
12976
+ static define(name: "authenticated", resolver: (req: XyPrisRequest$1, ctx: XyGuardContext) => boolean | string | void | Promise<boolean | string | void>): void;
12972
12977
  /**
12973
12978
  * Define a resolver for 'roles' or 'permissions' guards.
12974
12979
  */
12975
- static define(name: "roles" | "permissions", resolver: (req: XyPrisRequest$1, required: string[]) => boolean | string | Promise<boolean | string>): void;
12980
+ static define(name: "roles" | "permissions", resolver: (req: XyPrisRequest$1, required: string[], ctx: XyGuardContext) => boolean | string | void | Promise<boolean | string | void>): void;
12976
12981
  /**
12977
12982
  * Define a resolver for any custom guard.
12978
12983
  */
12979
- static define(name: string & {}, resolver: GuardResolver): void;
12984
+ static define(name: string & {}, resolver: (req: XyPrisRequest$1, arg2?: any, arg3?: any) => boolean | string | void | Promise<boolean | string | void>): void;
12980
12985
  /**
12981
12986
  * Get an existing resolver by name.
12982
12987
  * @internal
@@ -13939,4 +13944,4 @@ declare class XStatic {
13939
13944
  declare function Router(): XyPrissRouter;
13940
13945
 
13941
13946
  export { ConfigurationManager as CM, ConfigurationManager as Configs, FileUploadAPI as FLA, FileUploadAPI, Plugin, PluginHookIds, Router, SecurityMiddleware, Send, Upload, XJsonResponseHandler, XServer, XStatic, XyGuard, MultiServerApp as XyPMS, XyPrissRouter, XyPrissXHSC, __cfg__, __const__, __sys__, createOptimalCache, createServer, getCallerProjectRoot, getIp, getMime, getMimes, identifyProjectRoot, initializeFileUpload, mergeWithDefaults, mergeWithDefaults as mwdef, quickServer, uploadAny, uploadArray, uploadFields, uploadSingle, xems };
13942
- export type { ArchiveOptions, BatchRenameChange, CacheConfig, FileUploadConfig as FiUpConfig, FileUploadConfig, GetIpResult, IpSource, MonitorSnapshot, MultiServerConfig, NetworkStats, NextFunction, PerformanceConfig, PluginCreator, PluginServer, ProcessInfo, ProcessMonitorSnapshot, XyPrisRequest as Request, RequestHandler, XyPrisResponse as Response, RoutRateLimit, RouteConfig, RouteGuard, RouteMeta, RouteOptions, ParamType as RouteParamType, SecurityConfig, ServerOptions$1 as ServerOptions, XyPrisRequest$1 as XRequest, XyPrisResponse$1 as XResponse, XemsTypes, XyPrisRequest$1 as XyPrisRequest, XyPrisResponse$1 as XyPrisResponse, XyPrissApp, XyPrissPlugin };
13947
+ export type { ArchiveOptions, BatchRenameChange, CacheConfig, FileUploadConfig as FiUpConfig, FileUploadConfig, GetIpResult, GuardResolver, IpSource, MonitorSnapshot, MultiServerConfig, NetworkStats, NextFunction, PerformanceConfig, PluginCreator, PluginServer, ProcessInfo, ProcessMonitorSnapshot, XyPrisRequest as Request, RequestHandler, XyPrisResponse as Response, RoutRateLimit, RouteConfig, RouteGuard, RouteMeta, RouteOptions, ParamType as RouteParamType, SecurityConfig, ServerOptions$1 as ServerOptions, XyPrisRequest$1 as XRequest, XyPrisResponse$1 as XResponse, XemsTypes, XyGuardContext, XyPrisRequest$1 as XyPrisRequest, XyPrisResponse$1 as XyPrisResponse, XyPrissApp, XyPrissPlugin };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xypriss",
3
- "version": "9.12.20",
3
+ "version": "9.12.22",
4
4
  "description": "XyPriss is a high-performance, TypeScript-first hyper-system web framework powered by a native Go core (XHSC), featuring robust multi-tenant sandboxing, secure native file streaming, and zero Express dependencies.",
5
5
  "author": {
6
6
  "DEV.to": "https://dev.to/nehonix",