@usebetterdev/tenant-express 0.2.0-beta.9 → 0.2.1-beta.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/dist/index.cjs CHANGED
@@ -39,7 +39,9 @@ function createExpressMiddleware(tenant, options = {}) {
39
39
  await options.onMissingTenant(request, response);
40
40
  return;
41
41
  }
42
- response.status(missingTenantStatus).json({ error: "Tenant not found" });
42
+ const checked = tenant.resolverStrategies;
43
+ const message = checked.length > 0 ? `Tenant could not be resolved. Checked: ${checked.join(", ")}` : "Tenant could not be resolved. No resolution strategies configured";
44
+ response.status(missingTenantStatus).json({ error: message });
43
45
  }
44
46
  }
45
47
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { toResolvableRequest } from \"@usebetterdev/tenant-core\";\nimport type {\n BetterTenantInstance,\n NodeLikeRequest,\n ResolvableRequest,\n TenantContext,\n} from \"@usebetterdev/tenant-core\";\n\nexport interface ExpressRequestLike extends NodeLikeRequest {\n headers: Record<string, string | string[] | number | undefined>;\n originalUrl?: string;\n hostname?: string;\n}\n\nexport interface ExpressResponseLike {\n status: (code: number) => ExpressResponseLike;\n json: (body: unknown) => unknown;\n}\n\nexport type ExpressNextFunction = (error?: unknown) => void;\n\nexport interface CreateExpressMiddlewareOptions {\n missingTenantStatus?: 401 | 404;\n onMissingTenant?: (\n request: ExpressRequestLike,\n response: ExpressResponseLike,\n ) => void | Promise<void>;\n}\n\nexport interface ExpressTenantLike extends Pick<BetterTenantInstance, \"handleRequest\"> {}\n\nexport type ExpressMiddleware = (\n request: ExpressRequestLike,\n response: ExpressResponseLike,\n next: ExpressNextFunction,\n) => Promise<void>;\n\nexport function createExpressMiddleware(\n tenant: ExpressTenantLike,\n options: CreateExpressMiddlewareOptions = {},\n): ExpressMiddleware {\n const missingTenantStatus = options.missingTenantStatus ?? 404;\n\n return async (request, response, next) => {\n try {\n await tenant.handleRequest<ResolvableRequest, void>(\n toResolvableRequest(request),\n async () => {\n next();\n },\n {\n onMissingTenant: async () => {\n if (options.onMissingTenant) {\n await options.onMissingTenant(request, response);\n return;\n }\n response.status(missingTenantStatus).json({ error: \"Tenant not found\" });\n },\n },\n );\n } catch (error) {\n next(error);\n }\n };\n}\n\nexport type { TenantContext };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAoC;AAqC7B,SAAS,wBACd,QACA,UAA0C,CAAC,GACxB;AACnB,QAAM,sBAAsB,QAAQ,uBAAuB;AAE3D,SAAO,OAAO,SAAS,UAAU,SAAS;AACxC,QAAI;AACF,YAAM,OAAO;AAAA,YACX,wCAAoB,OAAO;AAAA,QAC3B,YAAY;AACV,eAAK;AAAA,QACP;AAAA,QACA;AAAA,UACE,iBAAiB,YAAY;AAC3B,gBAAI,QAAQ,iBAAiB;AAC3B,oBAAM,QAAQ,gBAAgB,SAAS,QAAQ;AAC/C;AAAA,YACF;AACA,qBAAS,OAAO,mBAAmB,EAAE,KAAK,EAAE,OAAO,mBAAmB,CAAC;AAAA,UACzE;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { toResolvableRequest } from \"@usebetterdev/tenant-core\";\nimport type {\n BetterTenantInstance,\n NodeLikeRequest,\n ResolvableRequest,\n TenantContext,\n} from \"@usebetterdev/tenant-core\";\n\nexport interface ExpressRequestLike extends NodeLikeRequest {\n headers: Record<string, string | string[] | number | undefined>;\n originalUrl?: string;\n hostname?: string;\n}\n\nexport interface ExpressResponseLike {\n status: (code: number) => ExpressResponseLike;\n json: (body: unknown) => unknown;\n}\n\nexport type ExpressNextFunction = (error?: unknown) => void;\n\nexport interface CreateExpressMiddlewareOptions {\n missingTenantStatus?: 401 | 404;\n onMissingTenant?: (\n request: ExpressRequestLike,\n response: ExpressResponseLike,\n ) => void | Promise<void>;\n}\n\nexport interface ExpressTenantLike extends Pick<\n BetterTenantInstance,\n \"handleRequest\" | \"resolverStrategies\"\n> {}\n\nexport type ExpressMiddleware = (\n request: ExpressRequestLike,\n response: ExpressResponseLike,\n next: ExpressNextFunction,\n) => Promise<void>;\n\nexport function createExpressMiddleware(\n tenant: ExpressTenantLike,\n options: CreateExpressMiddlewareOptions = {},\n): ExpressMiddleware {\n const missingTenantStatus = options.missingTenantStatus ?? 404;\n\n return async (request, response, next) => {\n try {\n await tenant.handleRequest<ResolvableRequest, void>(\n toResolvableRequest(request),\n async () => {\n next();\n },\n {\n onMissingTenant: async () => {\n if (options.onMissingTenant) {\n await options.onMissingTenant(request, response);\n return;\n }\n const checked = tenant.resolverStrategies;\n const message =\n checked.length > 0\n ? `Tenant could not be resolved. Checked: ${checked.join(\", \")}`\n : \"Tenant could not be resolved. No resolution strategies configured\";\n response.status(missingTenantStatus).json({ error: message });\n },\n },\n );\n } catch (error) {\n next(error);\n }\n };\n}\n\nexport type { TenantContext };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAoC;AAwC7B,SAAS,wBACd,QACA,UAA0C,CAAC,GACxB;AACnB,QAAM,sBAAsB,QAAQ,uBAAuB;AAE3D,SAAO,OAAO,SAAS,UAAU,SAAS;AACxC,QAAI;AACF,YAAM,OAAO;AAAA,YACX,wCAAoB,OAAO;AAAA,QAC3B,YAAY;AACV,eAAK;AAAA,QACP;AAAA,QACA;AAAA,UACE,iBAAiB,YAAY;AAC3B,gBAAI,QAAQ,iBAAiB;AAC3B,oBAAM,QAAQ,gBAAgB,SAAS,QAAQ;AAC/C;AAAA,YACF;AACA,kBAAM,UAAU,OAAO;AACvB,kBAAM,UACJ,QAAQ,SAAS,IACb,0CAA0C,QAAQ,KAAK,IAAI,CAAC,KAC5D;AACN,qBAAS,OAAO,mBAAmB,EAAE,KAAK,EAAE,OAAO,QAAQ,CAAC;AAAA,UAC9D;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AACF;","names":[]}
package/dist/index.d.cts CHANGED
@@ -15,7 +15,7 @@ interface CreateExpressMiddlewareOptions {
15
15
  missingTenantStatus?: 401 | 404;
16
16
  onMissingTenant?: (request: ExpressRequestLike, response: ExpressResponseLike) => void | Promise<void>;
17
17
  }
18
- interface ExpressTenantLike extends Pick<BetterTenantInstance, "handleRequest"> {
18
+ interface ExpressTenantLike extends Pick<BetterTenantInstance, "handleRequest" | "resolverStrategies"> {
19
19
  }
20
20
  type ExpressMiddleware = (request: ExpressRequestLike, response: ExpressResponseLike, next: ExpressNextFunction) => Promise<void>;
21
21
  declare function createExpressMiddleware(tenant: ExpressTenantLike, options?: CreateExpressMiddlewareOptions): ExpressMiddleware;
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ interface CreateExpressMiddlewareOptions {
15
15
  missingTenantStatus?: 401 | 404;
16
16
  onMissingTenant?: (request: ExpressRequestLike, response: ExpressResponseLike) => void | Promise<void>;
17
17
  }
18
- interface ExpressTenantLike extends Pick<BetterTenantInstance, "handleRequest"> {
18
+ interface ExpressTenantLike extends Pick<BetterTenantInstance, "handleRequest" | "resolverStrategies"> {
19
19
  }
20
20
  type ExpressMiddleware = (request: ExpressRequestLike, response: ExpressResponseLike, next: ExpressNextFunction) => Promise<void>;
21
21
  declare function createExpressMiddleware(tenant: ExpressTenantLike, options?: CreateExpressMiddlewareOptions): ExpressMiddleware;
package/dist/index.js CHANGED
@@ -15,7 +15,9 @@ function createExpressMiddleware(tenant, options = {}) {
15
15
  await options.onMissingTenant(request, response);
16
16
  return;
17
17
  }
18
- response.status(missingTenantStatus).json({ error: "Tenant not found" });
18
+ const checked = tenant.resolverStrategies;
19
+ const message = checked.length > 0 ? `Tenant could not be resolved. Checked: ${checked.join(", ")}` : "Tenant could not be resolved. No resolution strategies configured";
20
+ response.status(missingTenantStatus).json({ error: message });
19
21
  }
20
22
  }
21
23
  );
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { toResolvableRequest } from \"@usebetterdev/tenant-core\";\nimport type {\n BetterTenantInstance,\n NodeLikeRequest,\n ResolvableRequest,\n TenantContext,\n} from \"@usebetterdev/tenant-core\";\n\nexport interface ExpressRequestLike extends NodeLikeRequest {\n headers: Record<string, string | string[] | number | undefined>;\n originalUrl?: string;\n hostname?: string;\n}\n\nexport interface ExpressResponseLike {\n status: (code: number) => ExpressResponseLike;\n json: (body: unknown) => unknown;\n}\n\nexport type ExpressNextFunction = (error?: unknown) => void;\n\nexport interface CreateExpressMiddlewareOptions {\n missingTenantStatus?: 401 | 404;\n onMissingTenant?: (\n request: ExpressRequestLike,\n response: ExpressResponseLike,\n ) => void | Promise<void>;\n}\n\nexport interface ExpressTenantLike extends Pick<BetterTenantInstance, \"handleRequest\"> {}\n\nexport type ExpressMiddleware = (\n request: ExpressRequestLike,\n response: ExpressResponseLike,\n next: ExpressNextFunction,\n) => Promise<void>;\n\nexport function createExpressMiddleware(\n tenant: ExpressTenantLike,\n options: CreateExpressMiddlewareOptions = {},\n): ExpressMiddleware {\n const missingTenantStatus = options.missingTenantStatus ?? 404;\n\n return async (request, response, next) => {\n try {\n await tenant.handleRequest<ResolvableRequest, void>(\n toResolvableRequest(request),\n async () => {\n next();\n },\n {\n onMissingTenant: async () => {\n if (options.onMissingTenant) {\n await options.onMissingTenant(request, response);\n return;\n }\n response.status(missingTenantStatus).json({ error: \"Tenant not found\" });\n },\n },\n );\n } catch (error) {\n next(error);\n }\n };\n}\n\nexport type { TenantContext };\n"],"mappings":";AAAA,SAAS,2BAA2B;AAqC7B,SAAS,wBACd,QACA,UAA0C,CAAC,GACxB;AACnB,QAAM,sBAAsB,QAAQ,uBAAuB;AAE3D,SAAO,OAAO,SAAS,UAAU,SAAS;AACxC,QAAI;AACF,YAAM,OAAO;AAAA,QACX,oBAAoB,OAAO;AAAA,QAC3B,YAAY;AACV,eAAK;AAAA,QACP;AAAA,QACA;AAAA,UACE,iBAAiB,YAAY;AAC3B,gBAAI,QAAQ,iBAAiB;AAC3B,oBAAM,QAAQ,gBAAgB,SAAS,QAAQ;AAC/C;AAAA,YACF;AACA,qBAAS,OAAO,mBAAmB,EAAE,KAAK,EAAE,OAAO,mBAAmB,CAAC;AAAA,UACzE;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { toResolvableRequest } from \"@usebetterdev/tenant-core\";\nimport type {\n BetterTenantInstance,\n NodeLikeRequest,\n ResolvableRequest,\n TenantContext,\n} from \"@usebetterdev/tenant-core\";\n\nexport interface ExpressRequestLike extends NodeLikeRequest {\n headers: Record<string, string | string[] | number | undefined>;\n originalUrl?: string;\n hostname?: string;\n}\n\nexport interface ExpressResponseLike {\n status: (code: number) => ExpressResponseLike;\n json: (body: unknown) => unknown;\n}\n\nexport type ExpressNextFunction = (error?: unknown) => void;\n\nexport interface CreateExpressMiddlewareOptions {\n missingTenantStatus?: 401 | 404;\n onMissingTenant?: (\n request: ExpressRequestLike,\n response: ExpressResponseLike,\n ) => void | Promise<void>;\n}\n\nexport interface ExpressTenantLike extends Pick<\n BetterTenantInstance,\n \"handleRequest\" | \"resolverStrategies\"\n> {}\n\nexport type ExpressMiddleware = (\n request: ExpressRequestLike,\n response: ExpressResponseLike,\n next: ExpressNextFunction,\n) => Promise<void>;\n\nexport function createExpressMiddleware(\n tenant: ExpressTenantLike,\n options: CreateExpressMiddlewareOptions = {},\n): ExpressMiddleware {\n const missingTenantStatus = options.missingTenantStatus ?? 404;\n\n return async (request, response, next) => {\n try {\n await tenant.handleRequest<ResolvableRequest, void>(\n toResolvableRequest(request),\n async () => {\n next();\n },\n {\n onMissingTenant: async () => {\n if (options.onMissingTenant) {\n await options.onMissingTenant(request, response);\n return;\n }\n const checked = tenant.resolverStrategies;\n const message =\n checked.length > 0\n ? `Tenant could not be resolved. Checked: ${checked.join(\", \")}`\n : \"Tenant could not be resolved. No resolution strategies configured\";\n response.status(missingTenantStatus).json({ error: message });\n },\n },\n );\n } catch (error) {\n next(error);\n }\n };\n}\n\nexport type { TenantContext };\n"],"mappings":";AAAA,SAAS,2BAA2B;AAwC7B,SAAS,wBACd,QACA,UAA0C,CAAC,GACxB;AACnB,QAAM,sBAAsB,QAAQ,uBAAuB;AAE3D,SAAO,OAAO,SAAS,UAAU,SAAS;AACxC,QAAI;AACF,YAAM,OAAO;AAAA,QACX,oBAAoB,OAAO;AAAA,QAC3B,YAAY;AACV,eAAK;AAAA,QACP;AAAA,QACA;AAAA,UACE,iBAAiB,YAAY;AAC3B,gBAAI,QAAQ,iBAAiB;AAC3B,oBAAM,QAAQ,gBAAgB,SAAS,QAAQ;AAC/C;AAAA,YACF;AACA,kBAAM,UAAU,OAAO;AACvB,kBAAM,UACJ,QAAQ,SAAS,IACb,0CAA0C,QAAQ,KAAK,IAAI,CAAC,KAC5D;AACN,qBAAS,OAAO,mBAAmB,EAAE,KAAK,EAAE,OAAO,QAAQ,CAAC;AAAA,UAC9D;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usebetterdev/tenant-express",
3
- "version": "0.2.0-beta.9",
3
+ "version": "0.2.1-beta.1",
4
4
  "repository": "github:usebetter-dev/usebetter",
5
5
  "bugs": "https://github.com/usebetter-dev/usebetter/issues",
6
6
  "homepage": "https://github.com/usebetter-dev/usebetter#readme",
@@ -24,7 +24,7 @@
24
24
  "README.md"
25
25
  ],
26
26
  "dependencies": {
27
- "@usebetterdev/tenant-core": "0.2.0-beta.9"
27
+ "@usebetterdev/tenant-core": "0.2.1-beta.1"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "express": ">=4.18.0"
@@ -38,7 +38,7 @@
38
38
  "tsup": "^8.3.5",
39
39
  "typescript": "~5.7.2",
40
40
  "vitest": "^2.1.6",
41
- "@usebetterdev/test-utils": "0.1.0"
41
+ "@usebetterdev/test-utils": "0.2.1-beta.1"
42
42
  },
43
43
  "engines": {
44
44
  "node": ">=22"