edge.libx.js 0.0.5 → 0.0.7

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.
@@ -16,23 +16,24 @@ try {
16
16
  const lines = fileContents.split('\n');
17
17
 
18
18
  for (const line of lines) {
19
- if (!line.trim() || line.startsWith('#')) {
20
- const glimpse = line.substring(0, 10);
21
- console.log(`Skipping comment or empty line: ${glimpse}...`);
22
- continue;
23
- }
19
+ if (!line.trim() || line.trim().startsWith('#')) {
20
+ const glimpse = line.substring(0, 10);
21
+ console.log(`Skipping comment or empty line: ${glimpse}...`);
22
+ continue;
23
+ }
24
24
 
25
- const firstEqualIndex = line.indexOf('=');
26
- if (firstEqualIndex === -1) {
27
- console.log(`Skipping invalid line: ${line}`);
28
- continue;
29
- }
25
+ const firstEqualIndex = line.indexOf('=');
26
+ if (firstEqualIndex === -1) {
27
+ console.log(`Skipping invalid line: ${line}`);
28
+ continue;
29
+ }
30
30
 
31
- const key = line.substring(0, firstEqualIndex).trim();
32
- const rawValue = line.substring(firstEqualIndex + 1).trim();
33
- // Escape double quotes in the value
34
- let value = rawValue.replace(/"/g, '\\"');
35
- value = rawValue.replace(/"/g, '\\"');
31
+ const key = line.substring(0, firstEqualIndex).trim();
32
+ const rawValue = line.substring(firstEqualIndex + 1).trim();
33
+ // Escape double quotes in the value
34
+ let value = rawValue.replace(/"/g, '\\"');
35
+ value = rawValue.replace(/"/g, '\\"');
36
+ value = rawValue.replace(/\s*#.*/g, '');
36
37
 
37
38
  console.log(`Processing key: ${key}`);
38
39
 
@@ -52,7 +53,7 @@ try {
52
53
 
53
54
  const command = `printf "%s" "${value}" | ${setCommand} "${key}" ${env}`;
54
55
  console.log('Running command...');
55
- console.log(`DBG: ${command}`);
56
+ // console.log(`DBG: ${command}`);
56
57
 
57
58
  try {
58
59
  const result = execSync(command, { stdio: 'pipe' });
@@ -23,7 +23,6 @@ class RouterWrapper {
23
23
  base,
24
24
  before: [this.preflight],
25
25
  catch: this.errorHandler,
26
- finally: [this.tryCors],
27
26
  });
28
27
  router.all('*', itty_router_1.withParams);
29
28
  return new _a(base, router);
@@ -1 +1 @@
1
- {"version":3,"file":"RouterWrapper.js","sourceRoot":"","sources":["../../src/modules/RouterWrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { libx } from 'libx.js/build/bundles/essentials.js';\nimport { Route, Router, RouterType, error, json, cors, withParams, IRequest, text, ResponseHandler } from 'itty-router';\nimport { createServerAdapter } from '@whatwg-node/server';\n\ntype BaseRouterInitializer = (string) => { base: string; router: RouterType<IRequest, any[]> };\n\nexport class RouterWrapper<TCtx = any> {\n\tprivate static cors = cors({ origin: ['*'], allowMethods: ['POST'] });\n\tprivate static preflight = this.cors.preflight;\n\tprivate static corsify = this.cors.corsify;\n\n\tpublic constructor(public base: string, public router: RouterType<Request, [], any>) {\n\n\t}\n\n\tprivate static tryCors(response, request): Response {\n\t\ttry {\n\t\t\treturn this.corsify(response, request);\n\t\t} catch (err) {\n\t\t\tlibx.log.w('tryCors: failed to perform CORS', err);\n\t\t}\n\t}\n\n\tpublic static getNew(base: string) {\n\t\tconst router = Router({\n\t\t\tbase,\n\t\t\tbefore: [this.preflight],\n\t\t\tcatch: this.errorHandler,\n\t\t\tfinally: [this.tryCors],\n\t\t});\n\t\trouter.all('*', withParams);\n\t\t// router.finally.push(this.corsify);\n\n\t\t// router.all('*', () => error(404));\n\n\t\treturn new RouterWrapper(base, router);\n\t}\n\n\n\tpublic static errorHandler(error) {\n\t\tconst isObject = libx.isObject(error);\n\t\tconst errMessage = error?.message ?? error;\n\t\tconst msg = 'Error: ' + (!isObject ? (errMessage ?? 'Server Error') : JSON.stringify(error));\n\t\tconst status = parseInt(error?.status ?? error?.statusCode ?? error?.code ?? error?.error?.code) || 500;\n\t\tconsole.error('Server error: ', error, status);\n\t\treturn new Response(msg, { status })\n\t}\n\n\tpublic registerRoute(newBase: string, baseRouterInitializer: BaseRouterInitializer) {\n\t\tconst route = baseRouterInitializer(`${this.base}${newBase}`);\n\t\tthis.router.all(newBase + '/*', route.router.fetch);\n\t\treturn this.router;\n\t};\n\n\tpublic fetchHandler(request: IRequest, ctx: TCtx) {\n\t\t// return this.router.fetch(request, ctx).then(json).then(RouterWrapper.corsify).catch(this.errorHandler);\n\t\treturn this.router.fetch(request, ctx).then(json).catch(RouterWrapper.errorHandler);\n\t}\n\n\tpublic catchNotFound() {\n\t\tthis.router.all('*', () => error(404));\n\t}\n\n\tpublic createServerAdapter() {\n\t\tconst ittyServer = createServerAdapter(this.fetchHandler.bind(this));\n\t\treturn ittyServer;\n\t}\n}"]}
1
+ {"version":3,"file":"RouterWrapper.js","sourceRoot":"","sources":["../../src/modules/RouterWrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { libx } from 'libx.js/build/bundles/essentials.js';\nimport { Route, Router, RouterType, error, json, cors, withParams, IRequest, text, ResponseHandler } from 'itty-router';\nimport { createServerAdapter } from '@whatwg-node/server';\n\ntype BaseRouterInitializer = (string) => { base: string; router: RouterType<IRequest, any[]> };\n\nexport class RouterWrapper<TCtx = any> {\n\tprivate static cors = cors({ origin: ['*'], allowMethods: ['POST'] });\n\tprivate static preflight = this.cors.preflight;\n\tprivate static corsify = this.cors.corsify;\n\n\tpublic constructor(public base: string, public router: RouterType<Request, [], any>) {\n\n\t}\n\n\tprivate static tryCors(response, request): Response {\n\t\ttry {\n\t\t\treturn this.corsify(response, request);\n\t\t} catch (err) {\n libx.log.w('tryCors: failed to perform CORS', err);\n }\n\t}\n\n\tpublic static getNew(base: string) {\n\t\tconst router = Router({\n base,\n before: [this.preflight],\n catch: this.errorHandler,\n // finally: [this.tryCors],\n });\n\t\trouter.all('*', withParams);\n\t\t// router.finally.push(this.corsify);\n\n\t\t// router.all('*', () => error(404));\n\n\t\treturn new RouterWrapper(base, router);\n\t}\n\n\n\tpublic static errorHandler(error) {\n\t\tconst isObject = libx.isObject(error);\n\t\tconst errMessage = error?.message ?? error;\n\t\tconst msg = 'Error: ' + (!isObject ? (errMessage ?? 'Server Error') : JSON.stringify(error));\n\t\tconst status = parseInt(error?.status ?? error?.statusCode ?? error?.code ?? error?.error?.code) || 500;\n\t\tconsole.error('Server error: ', error, status);\n\t\treturn new Response(msg, { status })\n\t}\n\n\tpublic registerRoute(newBase: string, baseRouterInitializer: BaseRouterInitializer) {\n\t\tconst route = baseRouterInitializer(`${this.base}${newBase}`);\n\t\tthis.router.all(newBase + '/*', route.router.fetch);\n\t\treturn this.router;\n\t};\n\n\tpublic fetchHandler(request: IRequest, ctx: TCtx) {\n\t\t// return this.router.fetch(request, ctx).then(json).then(RouterWrapper.corsify).catch(this.errorHandler);\n\t\treturn this.router.fetch(request, ctx).then(json).catch(RouterWrapper.errorHandler);\n\t}\n\n\tpublic catchNotFound() {\n\t\tthis.router.all('*', () => error(404));\n\t}\n\n\tpublic createServerAdapter() {\n\t\tconst ittyServer = createServerAdapter(this.fetchHandler.bind(this));\n\t\treturn ittyServer;\n\t}\n}"]}
@@ -91,7 +91,6 @@ function cors(req, res, options) {
91
91
  if (exposed) {
92
92
  headers.set('Access-Control-Expose-Headers', exposed);
93
93
  }
94
- debugger;
95
94
  if (req.method === 'OPTIONS') {
96
95
  if (opts.methods) {
97
96
  const methods = Array.isArray(opts.methods)
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/modules/cors.ts"],"names":[],"mappings":";;;;;;;;;;;AA8FA,uBAsDC;AAED,4BAEC;AAhID,MAAM,cAAc,GAAgB;IAClC,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,gCAAgC;IACzC,iBAAiB,EAAE,KAAK;IACxB,oBAAoB,EAAE,GAAG;CAC1B,CAAA;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,OAAqB;IAC5D,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ;YAC3B,CAAC,CAAC,MAAM,KAAK,OAAO;YACpB,CAAC,CAAC,OAAO,YAAY,MAAM;gBACzB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,SAA6B,EAAE,MAAoB;IAC3E,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAE7B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QAEnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAA;IACjD,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAEtC,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAA;QAClD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,EAAE,MAAM,CAAC,CAAA;QAExD,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAA;QACvD,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAClC,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAID,SAAe,oBAAoB,CACjC,GAAY,EACZ,MAA+B;;QAE/B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAA;QACxD,MAAM,KAAK,GACT,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QAEtE,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,OAAO,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;CAAA;AAED,SAAS,iBAAiB,CAAC,GAAY,EAAE,OAA2B;IAClE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAE7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAE,CAAA;QAC5D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAA;IAC1D,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAElC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAA8B,IAAI,CAChC,GAAY,EACZ,GAAa,EACb,OAAqB;;;QAErB,MAAM,IAAI,mCAAQ,cAAc,GAAK,OAAO,CAAE,CAAA;QAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;QACvB,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,KAAK,CAAC,CAAA;QAC3E,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;YAC5C,IAAI,CAAC,KAAK,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;;gBACjC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACxB,CAAC,CAAA;QAGD,IAAI,CAAC,aAAa;YAAE,OAAO,GAAG,CAAA;QAE9B,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAEnC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAA;QACzD,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAA;QAEvB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAA;QACvD,CAAC;QACD,QAAQ,CAAA;QAER,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;oBACzC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;oBACxB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA;gBAEhB,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAA;YACtD,CAAC;YAED,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;YAEjE,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;YAC5D,CAAC;YAED,IAAI,IAAI,CAAC,iBAAiB;gBAAE,OAAO,GAAG,CAAA;YAEtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;YAClC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAE,CAAC,CAAA;QAC3E,CAAC;QAGD,OAAO,GAAG,CAAA;IACZ,CAAC;CAAA;AAED,SAAgB,QAAQ,CAAC,OAAqB;IAC5C,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;AACjE,CAAC","sourcesContent":["/**\n * Multi purpose CORS lib.\n * Note: Based on the `cors` package in npm but using only\n * web APIs. Feel free to use it in your own projects.\n */\n\ntype StaticOrigin = boolean | string | RegExp | (boolean | string | RegExp)[]\n\ntype OriginFn = (\n origin: string | undefined,\n req: Request\n) => StaticOrigin | Promise<StaticOrigin>\n\ninterface CorsOptions {\n origin?: StaticOrigin | OriginFn\n methods?: string | string[]\n allowedHeaders?: string | string[]\n exposedHeaders?: string | string[]\n credentials?: boolean\n maxAge?: number\n preflightContinue?: boolean\n optionsSuccessStatus?: number\n}\n\nconst defaultOptions: CorsOptions = {\n origin: '*',\n methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n preflightContinue: false,\n optionsSuccessStatus: 204,\n}\n\nfunction isOriginAllowed(origin: string, allowed: StaticOrigin): boolean {\n return Array.isArray(allowed)\n ? allowed.some((o) => isOriginAllowed(origin, o))\n : typeof allowed === 'string'\n ? origin === allowed\n : allowed instanceof RegExp\n ? allowed.test(origin)\n : !!allowed\n}\n\nfunction getOriginHeaders(reqOrigin: string | undefined, origin: StaticOrigin) {\n const headers = new Headers()\n\n if (origin === '*') {\n // Allow any origin\n headers.set('Access-Control-Allow-Origin', '*')\n } else if (typeof origin === 'string') {\n // Fixed origin\n headers.set('Access-Control-Allow-Origin', origin)\n headers.append('Vary', 'Origin')\n } else {\n const allowed = isOriginAllowed(reqOrigin ?? '', origin)\n\n if (allowed && reqOrigin) {\n headers.set('Access-Control-Allow-Origin', reqOrigin)\n }\n headers.append('Vary', 'Origin')\n }\n\n return headers\n}\n\n// originHeadersFromReq\n\nasync function originHeadersFromReq(\n req: Request,\n origin: StaticOrigin | OriginFn\n) {\n const reqOrigin = req.headers.get('Origin') || undefined\n const value =\n typeof origin === 'function' ? await origin(reqOrigin, req) : origin\n\n if (!value) return\n return getOriginHeaders(reqOrigin, value)\n}\n\nfunction getAllowedHeaders(req: Request, allowed?: string | string[]) {\n const headers = new Headers()\n\n if (!allowed) {\n allowed = req.headers.get('Access-Control-Request-Headers')!\n headers.append('Vary', 'Access-Control-Request-Headers')\n } else if (Array.isArray(allowed)) {\n // If the allowed headers is an array, turn it into a string\n allowed = allowed.join(',')\n }\n if (allowed) {\n headers.set('Access-Control-Allow-Headers', allowed)\n }\n\n return headers\n}\n\nexport default async function cors(\n req: Request,\n res: Response,\n options?: CorsOptions\n) {\n const opts = { ...defaultOptions, ...options }\n const { headers } = res\n const originHeaders = await originHeadersFromReq(req, opts.origin ?? false)\n const mergeHeaders = (v: string, k: string) => {\n if (k === 'Vary') headers.append(k, v)\n else headers.set(k, v)\n }\n\n // If there's no origin we won't touch the response\n if (!originHeaders) return res\n\n originHeaders.forEach(mergeHeaders)\n\n if (opts.credentials) {\n headers.set('Access-Control-Allow-Credentials', 'true')\n }\n\n const exposed = Array.isArray(opts.exposedHeaders)\n ? opts.exposedHeaders.join(',')\n : opts.exposedHeaders\n\n if (exposed) {\n headers.set('Access-Control-Expose-Headers', exposed)\n }\n debugger\n // Handle the preflight request\n if (req.method === 'OPTIONS') {\n if (opts.methods) {\n const methods = Array.isArray(opts.methods)\n ? opts.methods.join(',')\n : opts.methods\n\n headers.set('Access-Control-Allow-Methods', methods)\n }\n\n getAllowedHeaders(req, opts.allowedHeaders).forEach(mergeHeaders)\n\n if (typeof opts.maxAge === 'number') {\n headers.set('Access-Control-Max-Age', String(opts.maxAge))\n }\n\n if (opts.preflightContinue) return res\n\n headers.set('Content-Length', '0')\n return new Response(null, { status: opts.optionsSuccessStatus, headers })\n }\n\n // If we got here, it's a normal request\n return res\n}\n\nexport function initCors(options?: CorsOptions) {\n return (req: Request, res: Response) => cors(req, res, options)\n}"]}
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/modules/cors.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Multi purpose CORS lib.\n * Note: Based on the `cors` package in npm but using only\n * web APIs. Feel free to use it in your own projects.\n */\n\ntype StaticOrigin = boolean | string | RegExp | (boolean | string | RegExp)[]\n\ntype OriginFn = (\n origin: string | undefined,\n req: Request\n) => StaticOrigin | Promise<StaticOrigin>\n\ninterface CorsOptions {\n origin?: StaticOrigin | OriginFn\n methods?: string | string[]\n allowedHeaders?: string | string[]\n exposedHeaders?: string | string[]\n credentials?: boolean\n maxAge?: number\n preflightContinue?: boolean\n optionsSuccessStatus?: number\n}\n\nconst defaultOptions: CorsOptions = {\n origin: '*',\n methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n preflightContinue: false,\n optionsSuccessStatus: 204,\n}\n\nfunction isOriginAllowed(origin: string, allowed: StaticOrigin): boolean {\n return Array.isArray(allowed)\n ? allowed.some((o) => isOriginAllowed(origin, o))\n : typeof allowed === 'string'\n ? origin === allowed\n : allowed instanceof RegExp\n ? allowed.test(origin)\n : !!allowed\n}\n\nfunction getOriginHeaders(reqOrigin: string | undefined, origin: StaticOrigin) {\n const headers = new Headers()\n\n if (origin === '*') {\n // Allow any origin\n headers.set('Access-Control-Allow-Origin', '*')\n } else if (typeof origin === 'string') {\n // Fixed origin\n headers.set('Access-Control-Allow-Origin', origin)\n headers.append('Vary', 'Origin')\n } else {\n const allowed = isOriginAllowed(reqOrigin ?? '', origin)\n\n if (allowed && reqOrigin) {\n headers.set('Access-Control-Allow-Origin', reqOrigin)\n }\n headers.append('Vary', 'Origin')\n }\n\n return headers\n}\n\n// originHeadersFromReq\n\nasync function originHeadersFromReq(\n req: Request,\n origin: StaticOrigin | OriginFn\n) {\n const reqOrigin = req.headers.get('Origin') || undefined\n const value =\n typeof origin === 'function' ? await origin(reqOrigin, req) : origin\n\n if (!value) return\n return getOriginHeaders(reqOrigin, value)\n}\n\nfunction getAllowedHeaders(req: Request, allowed?: string | string[]) {\n const headers = new Headers()\n\n if (!allowed) {\n allowed = req.headers.get('Access-Control-Request-Headers')!\n headers.append('Vary', 'Access-Control-Request-Headers')\n } else if (Array.isArray(allowed)) {\n // If the allowed headers is an array, turn it into a string\n allowed = allowed.join(',')\n }\n if (allowed) {\n headers.set('Access-Control-Allow-Headers', allowed)\n }\n\n return headers\n}\n\nexport default async function cors(\n req: Request,\n res: Response,\n options?: CorsOptions\n) {\n const opts = { ...defaultOptions, ...options }\n const { headers } = res\n const originHeaders = await originHeadersFromReq(req, opts.origin ?? false)\n const mergeHeaders = (v: string, k: string) => {\n if (k === 'Vary') headers.append(k, v)\n else headers.set(k, v)\n }\n\n // If there's no origin we won't touch the response\n if (!originHeaders) return res\n\n originHeaders.forEach(mergeHeaders)\n\n if (opts.credentials) {\n headers.set('Access-Control-Allow-Credentials', 'true')\n }\n\n const exposed = Array.isArray(opts.exposedHeaders)\n ? opts.exposedHeaders.join(',')\n : opts.exposedHeaders\n\n if (exposed) {\n headers.set('Access-Control-Expose-Headers', exposed)\n }\n\n // Handle the preflight request\n if (req.method === 'OPTIONS') {\n if (opts.methods) {\n const methods = Array.isArray(opts.methods)\n ? opts.methods.join(',')\n : opts.methods\n\n headers.set('Access-Control-Allow-Methods', methods)\n }\n\n getAllowedHeaders(req, opts.allowedHeaders).forEach(mergeHeaders)\n\n if (typeof opts.maxAge === 'number') {\n headers.set('Access-Control-Max-Age', String(opts.maxAge))\n }\n\n if (opts.preflightContinue) return res\n\n headers.set('Content-Length', '0')\n return new Response(null, { status: opts.optionsSuccessStatus, headers })\n }\n\n // If we got here, it's a normal request\n return res\n}\n\nexport function initCors(options?: CorsOptions) {\n return (req: Request, res: Response) => cors(req, res, options)\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edge.libx.js",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "main": "build/main.js",
5
5
  "license": "MIT",
6
6
  "author": "Elya Livshitz",
@@ -17,17 +17,17 @@ export class RouterWrapper<TCtx = any> {
17
17
  try {
18
18
  return this.corsify(response, request);
19
19
  } catch (err) {
20
- libx.log.w('tryCors: failed to perform CORS', err);
21
- }
20
+ libx.log.w('tryCors: failed to perform CORS', err);
21
+ }
22
22
  }
23
23
 
24
24
  public static getNew(base: string) {
25
25
  const router = Router({
26
- base,
27
- before: [this.preflight],
28
- catch: this.errorHandler,
29
- finally: [this.tryCors],
30
- });
26
+ base,
27
+ before: [this.preflight],
28
+ catch: this.errorHandler,
29
+ // finally: [this.tryCors],
30
+ });
31
31
  router.all('*', withParams);
32
32
  // router.finally.push(this.corsify);
33
33
 
@@ -121,7 +121,7 @@ export default async function cors(
121
121
  if (exposed) {
122
122
  headers.set('Access-Control-Expose-Headers', exposed)
123
123
  }
124
- debugger
124
+
125
125
  // Handle the preflight request
126
126
  if (req.method === 'OPTIONS') {
127
127
  if (opts.methods) {