@solidxai/core 0.1.6-beta.26 → 0.1.6-beta.27

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cors.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/cors.helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAKnC,wBAAgB,uBAAuB,IAAI,WAAW,CAuCrD"}
1
+ {"version":3,"file":"cors.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/cors.helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAKnC,wBAAgB,uBAAuB,IAAI,WAAW,CAyCrD"}
@@ -20,16 +20,18 @@ function buildDefaultCorsOptions() {
20
20
  };
21
21
  const matchers = allowed.map(patternToRegex);
22
22
  logger.log(`CORS regexes: ${matchers.map(r => r.toString()).join(', ')}`);
23
- const isAllowed = (origin) => matchers.length > 0 && matchers.some(rx => rx.test(origin));
24
23
  return {
25
24
  origin: (origin, cb) => {
26
- logger.debug(`CORS origin callback received origin=${origin ?? '<empty>'}; regex checks: ${matchers
27
- .map(rx => `${rx.toString()}=${origin ? rx.test(origin) : 'skipped'}`)
28
- .join(', ')}`);
29
- if (!origin)
25
+ if (!origin) {
26
+ logger.debug('CORS origin callback skipped regex evaluation because origin was empty');
30
27
  return cb(null, true);
31
- if (isAllowed(origin))
28
+ }
29
+ const matchingRegex = matchers.find(rx => rx.test(origin));
30
+ if (matchingRegex) {
31
+ logger.debug(`CORS origin matched: origin=${origin}; regex=${matchingRegex.toString()}`);
32
32
  return cb(null, true);
33
+ }
34
+ logger.debug(`CORS origin did not match any regex: origin=${origin}; regexes=${matchers.map(r => r.toString()).join(', ')}`);
33
35
  return cb(new Error(`Origin ${origin} not allowed by CORS. Allowed origins: ${allowed.join(', ')}`), false);
34
36
  },
35
37
  methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
@@ -1 +1 @@
1
- {"version":3,"file":"cors.helper.js","sourceRoot":"","sources":["../../src/helpers/cors.helper.ts"],"names":[],"mappings":";;AAMA,0DAuCC;AA7CD,2CAAwC;AAGxC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,YAAY,CAAC,CAAC;AAGxC,SAAgB,uBAAuB;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,GAAG,CAAC;IAC5D,MAAM,CAAC,GAAG,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,CAAC,OAAe,EAAU,EAAE;QACjD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;QACpD,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC;QACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;aAC9B,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;aAC5B,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,MAAM,CAAC,IAAI,UAAU,GAAG,OAAO,aAAa,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1E,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CACnC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9D,OAAO;QACL,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YACrB,MAAM,CAAC,KAAK,CACV,wCAAwC,MAAM,IAAI,SAAS,mBAAmB,QAAQ;iBACnF,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;iBACrE,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;YAEF,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,UAAU,MAAM,0CAA0C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC7D,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;QACjD,WAAW,EAAE,IAAI;KAClB,CAAC;AACJ,CAAC","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { CorsOptions } from 'cors';\n\nconst logger = new Logger('CorsHelper');\n\n/** Build CorsOptions from env; supports wildcards like https://*.example.com */\nexport function buildDefaultCorsOptions(): CorsOptions {\n const rawOrigins = process.env.SECURITY_CORS_ORIGINS ?? '*';\n logger.log(`CORS allowed origins: ${rawOrigins}`);\n\n const allowed = rawOrigins.split(',').map(s => s.trim()).filter(Boolean);\n\n const escapeRx = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const patternToRegex = (pattern: string): RegExp => {\n const hasScheme = /^https?:\\/\\//i.test(pattern);\n const schemePart = hasScheme ? '' : 'https?:\\\\/\\\\/';\n if (pattern === '*' || pattern === '.*') return /^.*$/i;\n const escaped = escapeRx(pattern)\n .replace(/^https?:\\/\\//i, '') // strip scheme if present\n .replace(/\\*/g, '[^.]+'); // * => one subdomain segment\n return new RegExp(`^${schemePart}${escaped}(?::\\\\d+)?$`, 'i');\n };\n\n const matchers = allowed.map(patternToRegex);\n logger.log(`CORS regexes: ${matchers.map(r => r.toString()).join(', ')}`);\n\n const isAllowed = (origin: string) =>\n matchers.length > 0 && matchers.some(rx => rx.test(origin));\n\n return {\n origin: (origin, cb) => {\n logger.debug(\n `CORS origin callback received origin=${origin ?? '<empty>'}; regex checks: ${matchers\n .map(rx => `${rx.toString()}=${origin ? rx.test(origin) : 'skipped'}`)\n .join(', ')}`,\n );\n\n if (!origin) return cb(null, true); // allow no-origin (CLI/mobile/internal)\n if (isAllowed(origin)) return cb(null, true);\n return cb(new Error(`Origin ${origin} not allowed by CORS. Allowed origins: ${allowed.join(', ')}`), false);\n },\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],\n allowedHeaders: ['Content-Type', 'Authorization'],\n credentials: true,\n };\n}\n"]}
1
+ {"version":3,"file":"cors.helper.js","sourceRoot":"","sources":["../../src/helpers/cors.helper.ts"],"names":[],"mappings":";;AAMA,0DAyCC;AA/CD,2CAAwC;AAGxC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,YAAY,CAAC,CAAC;AAGxC,SAAgB,uBAAuB;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,GAAG,CAAC;IAC5D,MAAM,CAAC,GAAG,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,CAAC,OAAe,EAAU,EAAE;QACjD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;QACpD,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC;QACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;aAC9B,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;aAC5B,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,MAAM,CAAC,IAAI,UAAU,GAAG,OAAO,aAAa,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1E,OAAO;QACL,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YACrB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;gBAEvF,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC;YAED,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3D,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC,+BAA+B,MAAM,WAAW,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACzF,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,+CAA+C,MAAM,aAAa,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7H,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,UAAU,MAAM,0CAA0C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC7D,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;QACjD,WAAW,EAAE,IAAI;KAClB,CAAC;AACJ,CAAC","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { CorsOptions } from 'cors';\n\nconst logger = new Logger('CorsHelper');\n\n/** Build CorsOptions from env; supports wildcards like https://*.example.com */\nexport function buildDefaultCorsOptions(): CorsOptions {\n const rawOrigins = process.env.SECURITY_CORS_ORIGINS ?? '*';\n logger.log(`CORS allowed origins: ${rawOrigins}`);\n\n const allowed = rawOrigins.split(',').map(s => s.trim()).filter(Boolean);\n\n const escapeRx = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const patternToRegex = (pattern: string): RegExp => {\n const hasScheme = /^https?:\\/\\//i.test(pattern);\n const schemePart = hasScheme ? '' : 'https?:\\\\/\\\\/';\n if (pattern === '*' || pattern === '.*') return /^.*$/i;\n const escaped = escapeRx(pattern)\n .replace(/^https?:\\/\\//i, '') // strip scheme if present\n .replace(/\\*/g, '[^.]+'); // * => one subdomain segment\n return new RegExp(`^${schemePart}${escaped}(?::\\\\d+)?$`, 'i');\n };\n\n const matchers = allowed.map(patternToRegex);\n logger.log(`CORS regexes: ${matchers.map(r => r.toString()).join(', ')}`);\n\n return {\n origin: (origin, cb) => {\n if (!origin) {\n logger.debug('CORS origin callback skipped regex evaluation because origin was empty');\n // allow no-origin (CLI/mobile/internal)\n return cb(null, true);\n }\n\n const matchingRegex = matchers.find(rx => rx.test(origin));\n if (matchingRegex) {\n logger.debug(`CORS origin matched: origin=${origin}; regex=${matchingRegex.toString()}`);\n return cb(null, true);\n }\n\n logger.debug(`CORS origin did not match any regex: origin=${origin}; regexes=${matchers.map(r => r.toString()).join(', ')}`);\n return cb(new Error(`Origin ${origin} not allowed by CORS. Allowed origins: ${allowed.join(', ')}`), false);\n },\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],\n allowedHeaders: ['Content-Type', 'Authorization'],\n credentials: true,\n };\n}\n\n\n// [2026-04-07T08:27:19.943Z] INFO: CORS allowed origins: leadyatra.indusindnipponlife.com\n// [2026-04-07T08:27:19.944Z] INFO: CORS regexes: /^https?:\\/\\/leadyatra\\.indusindnipponlife\\.com(?::\\d+)?$/i\n// [2026-04-07T08:27:19.947Z] DEBUG: Mounting ClsMiddleware to *\n// [2026-04-07T08:27:19.950Z] INFO: CityMasterController {/api/city-master}:\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidxai/core",
3
- "version": "0.1.6-beta.26",
3
+ "version": "0.1.6-beta.27",
4
4
  "description": "This module is a NestJS module containing all the required core providers required by a Solid application",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -24,19 +24,21 @@ export function buildDefaultCorsOptions(): CorsOptions {
24
24
  const matchers = allowed.map(patternToRegex);
25
25
  logger.log(`CORS regexes: ${matchers.map(r => r.toString()).join(', ')}`);
26
26
 
27
- const isAllowed = (origin: string) =>
28
- matchers.length > 0 && matchers.some(rx => rx.test(origin));
29
-
30
27
  return {
31
28
  origin: (origin, cb) => {
32
- logger.debug(
33
- `CORS origin callback received origin=${origin ?? '<empty>'}; regex checks: ${matchers
34
- .map(rx => `${rx.toString()}=${origin ? rx.test(origin) : 'skipped'}`)
35
- .join(', ')}`,
36
- );
37
-
38
- if (!origin) return cb(null, true); // allow no-origin (CLI/mobile/internal)
39
- if (isAllowed(origin)) return cb(null, true);
29
+ if (!origin) {
30
+ logger.debug('CORS origin callback skipped regex evaluation because origin was empty');
31
+ // allow no-origin (CLI/mobile/internal)
32
+ return cb(null, true);
33
+ }
34
+
35
+ const matchingRegex = matchers.find(rx => rx.test(origin));
36
+ if (matchingRegex) {
37
+ logger.debug(`CORS origin matched: origin=${origin}; regex=${matchingRegex.toString()}`);
38
+ return cb(null, true);
39
+ }
40
+
41
+ logger.debug(`CORS origin did not match any regex: origin=${origin}; regexes=${matchers.map(r => r.toString()).join(', ')}`);
40
42
  return cb(new Error(`Origin ${origin} not allowed by CORS. Allowed origins: ${allowed.join(', ')}`), false);
41
43
  },
42
44
  methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
@@ -44,3 +46,9 @@ export function buildDefaultCorsOptions(): CorsOptions {
44
46
  credentials: true,
45
47
  };
46
48
  }
49
+
50
+
51
+ // [2026-04-07T08:27:19.943Z] INFO: CORS allowed origins: leadyatra.indusindnipponlife.com
52
+ // [2026-04-07T08:27:19.944Z] INFO: CORS regexes: /^https?:\/\/leadyatra\.indusindnipponlife\.com(?::\d+)?$/i
53
+ // [2026-04-07T08:27:19.947Z] DEBUG: Mounting ClsMiddleware to *
54
+ // [2026-04-07T08:27:19.950Z] INFO: CityMasterController {/api/city-master}: