@rpcbase/db 0.63.0 → 0.65.0

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/acl/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { b, d, f, e, g, c, a, r } from "../can-urGFf45M.js";
1
+ import { b, d, f, e, g, c, h, a, r } from "../can--Y-1LK22.js";
2
2
  export {
3
3
  b as buildAbility,
4
4
  d as buildAbilityFromSession,
@@ -6,6 +6,7 @@ export {
6
6
  e as getAccessibleByQuery,
7
7
  g as getRegisteredPolicies,
8
8
  c as getTenantRolesFromSessionUser,
9
+ h as hasRegisteredPolicy,
9
10
  a as registerPoliciesFromModules,
10
11
  r as registerPolicy
11
12
  };
@@ -29,6 +29,7 @@ declare module "mongoose" {
29
29
  }
30
30
  export declare const mongooseAclPlugin: (schema: mongoose.Schema) => void;
31
31
  export declare const _private: {
32
+ createModelAclProxy: <TModel extends mongoose.Model<unknown>>(model: TModel, ability: AppAbility) => TModel;
32
33
  injectAggregateMatch: (pipeline: PipelineStageLike[], match: Record<string, unknown>) => void;
33
34
  mergeMongoQuery: (left: unknown, right: Record<string, unknown>) => Record<string, unknown>;
34
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mongooseAclPlugin.d.ts","sourceRoot":"","sources":["../../src/acl/mongooseAclPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAG/B,OAAO,KAAK,EAAE,SAAS,EAAkB,UAAU,EAAE,MAAM,SAAS,CAAA;AAGpE,KAAK,SAAS,GAAG;IACf,OAAO,EAAE,UAAU,CAAA;IACnB,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB,CAAA;AAID,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AA6HhD,OAAO,CAAC,MAAM,sBAAsB,EAAE,OAAO,MAAM,CAAA;AAEnD,OAAO,QAAQ,UAAU,CAAC;IACxB,UAAU,YAAY,CAAC,OAAO,GAAG,OAAO;QACtC,KAAK,CAAC,EAAE,SAAS,CAAC;QAClB,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC;KACpC;IAED,UAAU,gBAAgB;QACxB,KAAK,CAAC,EAAE,SAAS,CAAC;KACnB;IAED,UAAU,KAAK,CACb,UAAU,EACV,OAAO,EACP,QAAQ,GAAG,EAAE,EACb,UAAU,GAAG,OAAO,EACpB,OAAO,GAAG,MAAM,EAChB,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAErC,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC/F,GAAG,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;KACxD;IAED,UAAU,SAAS,CAAC,UAAU;QAC5B,CAAC,sBAAsB,CAAC,CAAC,EAAE,UAAU,CAAC;QACtC,GAAG,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;KACxD;IAED,UAAU,KAAK,CACb,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,OAAO,EACP,eAAe;QAEf,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,SAAS,EAAE,qBAAqB,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QACtI,GAAG,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;KACpC;CACF;AAED,eAAO,MAAM,iBAAiB,GAAI,QAAQ,QAAQ,CAAC,MAAM,KAAG,IAsE3D,CAAA;AAED,eAAO,MAAM,QAAQ;qCAjMmB,iBAAiB,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IAAI;4BA3CnE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA+O/F,CAAA"}
1
+ {"version":3,"file":"mongooseAclPlugin.d.ts","sourceRoot":"","sources":["../../src/acl/mongooseAclPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAG/B,OAAO,KAAK,EAAE,SAAS,EAAkB,UAAU,EAAE,MAAM,SAAS,CAAA;AAGpE,KAAK,SAAS,GAAG;IACf,OAAO,EAAE,UAAU,CAAA;IACnB,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB,CAAA;AAID,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAqIhD,OAAO,CAAC,MAAM,sBAAsB,EAAE,OAAO,MAAM,CAAA;AAEnD,OAAO,QAAQ,UAAU,CAAC;IACxB,UAAU,YAAY,CAAC,OAAO,GAAG,OAAO;QACtC,KAAK,CAAC,EAAE,SAAS,CAAC;QAClB,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC;KACpC;IAED,UAAU,gBAAgB;QACxB,KAAK,CAAC,EAAE,SAAS,CAAC;KACnB;IAED,UAAU,KAAK,CACb,UAAU,EACV,OAAO,EACP,QAAQ,GAAG,EAAE,EACb,UAAU,GAAG,OAAO,EACpB,OAAO,GAAG,MAAM,EAChB,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAErC,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC/F,GAAG,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;KACxD;IAED,UAAU,SAAS,CAAC,UAAU;QAC5B,CAAC,sBAAsB,CAAC,CAAC,EAAE,UAAU,CAAC;QACtC,GAAG,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;KACxD;IAED,UAAU,KAAK,CACb,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,OAAO,EACP,eAAe;QAEf,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,SAAS,EAAE,qBAAqB,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QACtI,GAAG,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;KACpC;CACF;AAED,eAAO,MAAM,iBAAiB,GAAI,QAAQ,QAAQ,CAAC,MAAM,KAAG,IAsE3D,CAAA;AAED,eAAO,MAAM,QAAQ;0BA9IQ,MAAM,SAAS,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,SAC1D,MAAM,WACJ,UAAU,KAClB,MAAM;qCA9D+B,iBAAiB,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IAAI;4BA3CnE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAwP/F,CAAA"}
@@ -7,4 +7,5 @@ export type AclPolicy = {
7
7
  export declare const registerPolicy: (policy: AclPolicy) => void;
8
8
  export declare const registerPoliciesFromModules: (modules: Record<string, unknown>) => void;
9
9
  export declare const getRegisteredPolicies: () => Array<AclPolicy["define"]>;
10
+ export declare const hasRegisteredPolicy: (subject: string) => boolean;
10
11
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/acl/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGrE,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;IACvC,MAAM,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,UAAU,KAAK,IAAI,CAAA;CACvE,CAAA;AAuBD,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,KAAG,IAIlD,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IAmB9E,CAAA;AAED,eAAO,MAAM,qBAAqB,QAAO,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAMjE,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/acl/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGrE,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;IACvC,MAAM,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,UAAU,KAAK,IAAI,CAAA;CACvE,CAAA;AAuBD,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,KAAG,IAIlD,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IAmB9E,CAAA;AAED,eAAO,MAAM,qBAAqB,QAAO,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAMjE,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,KAAG,OAErD,CAAA"}
@@ -26,15 +26,11 @@ const registerPoliciesFromModules = (modules) => {
26
26
  for (const [exportName, value] of Object.entries(modules)) {
27
27
  if (!isPolicy(value)) continue;
28
28
  if (!exportName.endsWith("Policy")) {
29
- throw new Error(
30
- `Invalid policy export name "${exportName}". Policies must be exported as "<ModelName>Policy".`
31
- );
29
+ throw new Error(`Invalid policy export name "${exportName}". Policies must be exported as "<ModelName>Policy".`);
32
30
  }
33
31
  const expectedSubject = exportName.slice(0, -"Policy".length);
34
32
  if (value.subject !== expectedSubject) {
35
- throw new Error(
36
- `Invalid policy "${exportName}": expected subject "${expectedSubject}", got "${value.subject}".`
37
- );
33
+ throw new Error(`Invalid policy "${exportName}": expected subject "${expectedSubject}", got "${value.subject}".`);
38
34
  }
39
35
  registerPolicy(value);
40
36
  }
@@ -46,9 +42,14 @@ const getRegisteredPolicies = () => {
46
42
  }
47
43
  return out;
48
44
  };
45
+ const hasRegisteredPolicy = (subject2) => {
46
+ return policiesBySubject.has(subject2);
47
+ };
49
48
  const buildAbility = (ctx) => {
50
49
  const builder = new AbilityBuilder(createMongoAbility);
51
- const { can: can2 } = builder;
50
+ const {
51
+ can: can2
52
+ } = builder;
52
53
  if (ctx.roles.includes("owner") || ctx.roles.includes("admin")) {
53
54
  can2("manage", "all");
54
55
  }
@@ -97,9 +98,7 @@ const buildAbilityFromSession = ({
97
98
  const user = session?.user;
98
99
  const userId = typeof user?.id === "string" ? user.id.trim() : "";
99
100
  const rolesByTenantId = normalizeRolesByTenantId(user?.tenantRoles);
100
- const hasExplicitTenantEntry = Boolean(
101
- rolesByTenantId && Object.prototype.hasOwnProperty.call(rolesByTenantId, tenantId)
102
- );
101
+ const hasExplicitTenantEntry = Boolean(rolesByTenantId && Object.prototype.hasOwnProperty.call(rolesByTenantId, tenantId));
103
102
  const signedInTenantsRaw = user?.signedInTenants;
104
103
  const signedInTenants = Array.isArray(signedInTenantsRaw) ? signedInTenantsRaw.map(String) : [];
105
104
  const roles = hasExplicitTenantEntry ? rolesByTenantId[tenantId] ?? [] : userId && signedInTenants.includes(tenantId) ? ["owner"] : getTenantRolesFromSessionUser(user, tenantId);
@@ -127,6 +126,7 @@ export {
127
126
  getAccessibleByQuery as e,
128
127
  can as f,
129
128
  getRegisteredPolicies as g,
129
+ hasRegisteredPolicy as h,
130
130
  registerPolicy as r
131
131
  };
132
- //# sourceMappingURL=can-urGFf45M.js.map
132
+ //# sourceMappingURL=can--Y-1LK22.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can--Y-1LK22.js","sources":["../src/acl/registry.ts","../src/acl/buildAbility.ts","../src/acl/session.ts","../src/acl/accessible.ts","../src/acl/can.ts"],"sourcesContent":["import type { AbilityBuilder } from \"@casl/ability\"\n\nimport type { AclContext, AclSubjectType, AppAbility } from \"./types\"\n\n\nexport type AclPolicy = {\n subject: Exclude<AclSubjectType, \"all\">\n define: (builder: AbilityBuilder<AppAbility>, ctx: AclContext) => void\n}\n\nconst POLICIES_GLOBAL_KEY = Symbol.for(\"@rpcbase/db/acl/policiesBySubject\")\n\nconst getGlobalPoliciesMap = (): Map<string, Set<AclPolicy[\"define\"]>> => {\n const store = globalThis as unknown as Record<symbol, unknown>\n const existing = store[POLICIES_GLOBAL_KEY]\n if (existing instanceof Map) {\n return existing as Map<string, Set<AclPolicy[\"define\"]>>\n }\n const created = new Map<string, Set<AclPolicy[\"define\"]>>()\n store[POLICIES_GLOBAL_KEY] = created\n return created\n}\n\nconst policiesBySubject = getGlobalPoliciesMap()\n\nconst isPolicy = (value: unknown): value is AclPolicy => {\n if (!value || typeof value !== \"object\") return false\n const maybe = value as Partial<AclPolicy>\n return typeof maybe.subject === \"string\" && typeof maybe.define === \"function\"\n}\n\nexport const registerPolicy = (policy: AclPolicy): void => {\n const set = policiesBySubject.get(policy.subject) ?? new Set<AclPolicy[\"define\"]>()\n set.add(policy.define)\n policiesBySubject.set(policy.subject, set)\n}\n\nexport const registerPoliciesFromModules = (modules: Record<string, unknown>): void => {\n for (const [exportName, value] of Object.entries(modules)) {\n if (!isPolicy(value)) continue\n\n if (!exportName.endsWith(\"Policy\")) {\n throw new Error(\n `Invalid policy export name \"${exportName}\". Policies must be exported as \"<ModelName>Policy\".`,\n )\n }\n\n const expectedSubject = exportName.slice(0, -(\"Policy\".length))\n if (value.subject !== expectedSubject) {\n throw new Error(\n `Invalid policy \"${exportName}\": expected subject \"${expectedSubject}\", got \"${value.subject}\".`,\n )\n }\n\n registerPolicy(value)\n }\n}\n\nexport const getRegisteredPolicies = (): Array<AclPolicy[\"define\"]> => {\n const out: Array<AclPolicy[\"define\"]> = []\n for (const set of policiesBySubject.values()) {\n for (const fn of set) out.push(fn)\n }\n return out\n}\n\nexport const hasRegisteredPolicy = (subject: string): boolean => {\n return policiesBySubject.has(subject)\n}\n","import { AbilityBuilder, createMongoAbility } from \"@casl/ability\"\n\nimport { getRegisteredPolicies } from \"./registry\"\nimport type { AclContext, AppAbility } from \"./types\"\n\n\nexport const buildAbility = (ctx: AclContext): AppAbility => {\n const builder = new AbilityBuilder<AppAbility>(createMongoAbility)\n\n const { can } = builder\n\n if (ctx.roles.includes(\"owner\") || ctx.roles.includes(\"admin\")) {\n can(\"manage\", \"all\")\n }\n\n for (const define of getRegisteredPolicies()) {\n define(builder, ctx)\n }\n\n return builder.build()\n}\n\n","import { buildAbility } from \"./buildAbility\"\nimport type { AppAbility, TenantRolesByTenantId } from \"./types\"\n\n\ntype SessionUserLike = {\n id?: unknown\n signedInTenants?: unknown\n tenantRoles?: unknown\n}\n\ntype SessionLike = {\n user?: SessionUserLike\n}\n\nconst normalizeRole = (raw: unknown): string | null => {\n if (typeof raw !== \"string\") return null\n const normalized = raw.trim()\n return normalized ? normalized : null\n}\n\nconst normalizeRoles = (raw: unknown): string[] => {\n if (Array.isArray(raw)) {\n return raw.map(normalizeRole).filter((r): r is string => Boolean(r))\n }\n const role = normalizeRole(raw)\n return role ? [role] : []\n}\n\nconst normalizeRolesByTenantId = (raw: unknown): TenantRolesByTenantId | null => {\n if (!raw || typeof raw !== \"object\") return null\n if (raw instanceof Map) {\n return Object.fromEntries(Array.from(raw.entries()).map(([key, value]) => [String(key), normalizeRoles(value)]))\n }\n const obj = raw as Record<string, unknown>\n const out: TenantRolesByTenantId = {}\n for (const [key, value] of Object.entries(obj)) {\n const tenantId = String(key).trim()\n if (!tenantId) continue\n out[tenantId] = normalizeRoles(value)\n }\n return out\n}\n\nexport const getTenantRolesFromSessionUser = (user: unknown, tenantId: string): string[] => {\n if (!user || typeof user !== \"object\") return []\n const rolesByTenantId = normalizeRolesByTenantId((user as SessionUserLike).tenantRoles)\n if (!rolesByTenantId) return []\n return rolesByTenantId[tenantId]?.filter(Boolean) ?? []\n}\n\nexport const buildAbilityFromSession = ({\n tenantId,\n session,\n claims,\n}: {\n tenantId: string\n session: SessionLike | null | undefined\n claims?: Record<string, unknown>\n}): AppAbility => {\n const user = session?.user\n const userId = typeof user?.id === \"string\" ? user.id.trim() : \"\"\n const rolesByTenantId = normalizeRolesByTenantId(user?.tenantRoles)\n const hasExplicitTenantEntry = Boolean(\n rolesByTenantId && Object.prototype.hasOwnProperty.call(rolesByTenantId, tenantId),\n )\n\n const signedInTenantsRaw = user?.signedInTenants\n const signedInTenants = Array.isArray(signedInTenantsRaw) ? signedInTenantsRaw.map(String) : []\n\n const roles = hasExplicitTenantEntry\n ? rolesByTenantId![tenantId] ?? []\n : userId && signedInTenants.includes(tenantId)\n ? [\"owner\"]\n : getTenantRolesFromSessionUser(user, tenantId)\n\n return buildAbility({\n tenantId,\n userId: userId || null,\n roles,\n claims,\n })\n}\n","import { accessibleBy } from \"@casl/mongoose\"\n\nimport type { AclAction, AclSubjectType, AppAbility } from \"./types\"\n\n\nexport const getAccessibleByQuery = (\n ability: AppAbility,\n action: AclAction,\n subject: Exclude<AclSubjectType, \"all\">,\n): Record<string, unknown> => {\n return accessibleBy(ability, action).ofType(subject)\n}\n","import { subject } from \"@casl/ability\"\n\nimport type { AclAction, AclSubject, AclSubjectMap, AclSubjectType, AppAbility } from \"./types\"\n\n\nexport const can = <TSubject extends Exclude<AclSubjectType, \"all\">>(\n ability: AppAbility,\n action: AclAction,\n subjectType: TSubject,\n object?: Partial<AclSubjectMap[TSubject]> | null,\n): boolean => {\n if (object && typeof object === \"object\") {\n return ability.can(action, subject(subjectType, object) as unknown as AclSubject)\n }\n return ability.can(action, subjectType)\n}\n"],"names":["POLICIES_GLOBAL_KEY","Symbol","for","getGlobalPoliciesMap","store","globalThis","existing","Map","created","policiesBySubject","isPolicy","value","maybe","subject","define","registerPolicy","policy","set","get","Set","add","registerPoliciesFromModules","modules","exportName","Object","entries","endsWith","Error","expectedSubject","slice","length","getRegisteredPolicies","out","values","fn","push","hasRegisteredPolicy","has","buildAbility","ctx","builder","AbilityBuilder","createMongoAbility","can","roles","includes","build","normalizeRole","raw","normalized","trim","normalizeRoles","Array","isArray","map","filter","r","Boolean","role","normalizeRolesByTenantId","fromEntries","from","key","String","obj","tenantId","getTenantRolesFromSessionUser","user","rolesByTenantId","tenantRoles","buildAbilityFromSession","session","claims","userId","id","hasExplicitTenantEntry","prototype","hasOwnProperty","call","signedInTenantsRaw","signedInTenants","getAccessibleByQuery","ability","action","accessibleBy","ofType","subjectType","object"],"mappings":"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"}
@@ -16,6 +16,12 @@ type ModelsGetFn<TTenantModules extends ModelModules> = {
16
16
  [K in keyof TNames]: LoadedTenantModel;
17
17
  }>;
18
18
  };
19
+ type ModelsGetUnsafeFn<TTenantModules extends ModelModules> = {
20
+ (modelName: TenantModelName<TTenantModules>, ctx: LoadModelCtx): ReturnType<(typeof models)["getUnsafe"]>;
21
+ <const TNames extends readonly TenantModelName<TTenantModules>[]>(modelNames: TNames, ctx: LoadModelCtx): Promise<{
22
+ [K in keyof TNames]: LoadedTenantModel;
23
+ }>;
24
+ };
19
25
  type ModelsGetGlobalFn<TGlobalModules extends ModelModules> = {
20
26
  (modelName: GlobalModelName<TGlobalModules>, ctx: LoadModelCtx): ReturnType<(typeof models)["getGlobal"]>;
21
27
  <const TNames extends readonly GlobalModelName<TGlobalModules>[]>(modelNames: TNames, ctx: LoadModelCtx): Promise<{
@@ -29,6 +35,7 @@ export type ModelsConfig<TTenantModules extends ModelModules, TGlobalModules ext
29
35
  export type ModelsClient<TTenantModules extends ModelModules, TGlobalModules extends ModelModules> = {
30
36
  register: (modules: ModelsConfig<TTenantModules, TGlobalModules>) => void;
31
37
  get: ModelsGetFn<TTenantModules>;
38
+ getUnsafe: ModelsGetUnsafeFn<TTenantModules>;
32
39
  getGlobal: ModelsGetGlobalFn<TGlobalModules>;
33
40
  };
34
41
  export declare const createModels: <TTenantModules extends ModelModules, TGlobalModules extends ModelModules = Record<string, never>>(modules: ModelsConfig<TTenantModules, TGlobalModules>) => ModelsClient<TTenantModules, TGlobalModules>;
@@ -1 +1 @@
1
- {"version":3,"file":"createModels.d.ts","sourceRoot":"","sources":["../src/createModels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createModels.d.ts","sourceRoot":"","sources":["../src/createModels.ts"],"names":[],"mappings":"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"}
@@ -79,10 +79,9 @@ function withFallbackRecord(record) {
79
79
  });
80
80
  }
81
81
  const zLocalizedString = () => {
82
- const schema = z$1.record(
83
- z$1.string().regex(LANGUAGE_CODE_REGEX, { message: "Expected a language code (BCP 47, e.g. en or fr-FR)." }),
84
- z$1.string()
85
- );
82
+ const schema = z$1.record(z$1.string().regex(LANGUAGE_CODE_REGEX, {
83
+ message: "Expected a language code (BCP 47, e.g. en or fr-FR)."
84
+ }), z$1.string());
86
85
  return schema;
87
86
  };
88
87
  const zI18nString = zLocalizedString;
@@ -131,4 +130,4 @@ export {
131
130
  withLocalizedStringFallback as w,
132
131
  z
133
132
  };
134
- //# sourceMappingURL=index-Drge1bnG.js.map
133
+ //# sourceMappingURL=index-g1_0RZ-U.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-Drge1bnG.js","sources":["../src/zod/localizedString.ts","../src/zod/e164Phone.ts","../src/zod/extension.ts","../src/zod/index.ts"],"sourcesContent":["import { z } from \"zod\"\n\n\nexport type LanguageCode = string\n\nexport type LocalizedString = Record<LanguageCode, string>\n\nexport type I18nStringRecord = LocalizedString\n\nexport type I18nString = LocalizedString\n\nexport type LocalizedStringWithFallback = LocalizedString & {\n get: (key: string) => string | undefined\n getExact: (key: string) => string | undefined\n hasExact: (key: string) => boolean\n}\n\nexport const LANGUAGE_CODE_REGEX = /^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/\n\nconst LOCALIZED_STRING_PROXY_CACHE = new WeakMap<object, unknown>()\n\nfunction normalizeLocale(locale: string): string {\n const trimmed = locale.trim()\n if (!trimmed) return \"\"\n const getCanonicalLocales = (Intl as typeof Intl & {\n getCanonicalLocales?: (locales: string | readonly string[]) => string[]\n }).getCanonicalLocales\n if (typeof getCanonicalLocales !== \"function\") return trimmed\n try {\n return getCanonicalLocales(trimmed)[0] ?? trimmed\n } catch {\n return trimmed\n }\n}\n\nexport function buildLocaleFallbackChain(locale: string, fallbacks?: string | string[]): string[] {\n const base = locale.trim()\n const canonical = normalizeLocale(base)\n const extra = typeof fallbacks === \"string\" ? [fallbacks] : (fallbacks ?? [])\n\n const output: string[] = []\n const seen = new Set<string>()\n\n const push = (value: string) => {\n if (!value) return\n if (seen.has(value)) return\n seen.add(value)\n output.push(value)\n }\n\n const addChain = (value: string) => {\n if (!value) return\n const parts = value.split(\"-\").filter(Boolean)\n while (parts.length > 0) {\n push(parts.join(\"-\"))\n parts.pop()\n }\n }\n\n addChain(base)\n addChain(canonical)\n for (const fallback of extra) addChain(normalizeLocale(fallback))\n\n return output\n}\n\nexport function resolveLocalizedString(\n value: LocalizedString | null | undefined,\n locale: string,\n options?: { fallbacks?: string | string[] }\n): string | undefined {\n if (!value) return undefined\n const chain = buildLocaleFallbackChain(locale, options?.fallbacks)\n if (chain.length === 0) return undefined\n\n const record = value\n for (const key of chain) {\n if (!Object.prototype.hasOwnProperty.call(record, key)) continue\n return record[key]\n }\n return undefined\n}\n\nexport function withLocalizedStringFallback<T>(value: T): T {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return value\n if (value instanceof Map) return value\n const cached = LOCALIZED_STRING_PROXY_CACHE.get(value)\n if (cached) return cached as T\n\n const proxy = withFallbackRecord(value as Record<string, unknown>)\n LOCALIZED_STRING_PROXY_CACHE.set(value, proxy)\n return proxy as T\n}\n\nfunction withFallbackRecord(record: Record<string, unknown>): LocalizedStringWithFallback {\n const getExact = (key: string): string | undefined => {\n const current = record[key]\n return typeof current === \"string\" ? current : undefined\n }\n const hasExact = (key: string) => Object.prototype.hasOwnProperty.call(record, key)\n\n return new Proxy(record, {\n get(target, prop) {\n if (prop === \"getExact\") return getExact\n if (prop === \"hasExact\") return hasExact\n if (prop === \"get\") return (key: string) => resolveLocalizedString(target as LocalizedString, key)\n if (typeof prop === \"string\" && !(prop in target)) {\n return resolveLocalizedString(target as LocalizedString, prop)\n }\n\n return Reflect.get(target, prop)\n },\n set(target, prop, next) {\n return Reflect.set(target, prop, next)\n },\n }) as LocalizedStringWithFallback\n}\n\nexport const zLocalizedString = () => {\n const schema = z.record(\n z\n .string()\n .regex(LANGUAGE_CODE_REGEX, { message: \"Expected a language code (BCP 47, e.g. en or fr-FR).\" }),\n z.string()\n ) as z.ZodRecord<z.ZodString, z.ZodString>\n\n return schema\n}\n\nexport const zI18nString = zLocalizedString\n","import { z } from \"zod\"\n\n\nexport const E164_PHONE_REGEX = /^\\+[1-9]\\d{1,14}$/\nexport const E164_PHONE_OR_EMPTY_REGEX = /^(?:\\+[1-9]\\d{1,14})?$/\n\nexport type E164PhoneOptions = {\n allowEmpty?: boolean\n}\n\nexport const makeZE164Phone = (zod: typeof z, options?: E164PhoneOptions) => {\n const allowEmpty = options?.allowEmpty ?? false\n return zod.string().trim().regex(allowEmpty ? E164_PHONE_OR_EMPTY_REGEX : E164_PHONE_REGEX, {\n message: allowEmpty\n ? \"Expected an empty string or a phone number in E.164 format (e.g. +33608707197).\"\n : \"Expected a phone number in E.164 format (e.g. +33608707197).\",\n })\n}\n\nexport const zE164Phone = (options?: E164PhoneOptions) => makeZE164Phone(z, options)\n","import { z } from \"zod\"\n\nimport { type E164PhoneOptions, makeZE164Phone } from \"./e164Phone\"\n\n\ntype RpcbaseZodExtension = typeof z & {\n e164Phone?: (options?: E164PhoneOptions) => z.ZodString\n}\n\ntype ExtendableZodPrototype = {\n unique?: (this: unknown, arg?: boolean) => unknown\n sparse?: (this: unknown, arg?: boolean) => unknown\n}\n\ndeclare module \"zod\" {\n interface ZodString {\n unique(arg?: boolean): this\n sparse(arg?: boolean): this\n }\n\n interface ZodNumber {\n unique(arg?: boolean): this\n sparse(arg?: boolean): this\n }\n\n interface ZodDate {\n unique(arg?: boolean): this\n sparse(arg?: boolean): this\n }\n\n}\n\nlet zodPrototypesExtended = false\n\nexport function extendZod(zod: typeof z) {\n const zodWithExtension = zod as RpcbaseZodExtension\n if (Object.isExtensible(zodWithExtension) && typeof zodWithExtension.e164Phone !== \"function\") {\n zodWithExtension.e164Phone = (options?: E164PhoneOptions) => makeZE164Phone(zod, options)\n }\n\n if (zodPrototypesExtended) return\n zodPrototypesExtended = true\n\n const supported = [zod.ZodString, zod.ZodNumber, zod.ZodDate] as const\n for (const type of supported) {\n const proto = type?.prototype as ExtendableZodPrototype | undefined\n if (!proto) continue\n\n proto.unique = function unique(this: unknown, _flag = true) {\n return this\n }\n\n proto.sparse = function sparse(this: unknown, _flag = true) {\n return this\n }\n }\n}\n","import { z as baseZ, type ZodError, type ZodString, type ZodType } from \"zod\"\n\nimport { extendZod } from \"./extension\"\n\n\nexport * from \"./e164Phone\"\nexport * from \"./localizedString\"\n\nexport type RpcbaseZod = typeof baseZ & {\n e164Phone: (options?: import(\"./e164Phone\").E164PhoneOptions) => ZodString\n}\n\nexport const z = Object.create(baseZ) as RpcbaseZod\nextendZod(z)\n\nexport namespace z {\n export type infer<T> = import(\"zod\").infer<T>\n export type input<T> = import(\"zod\").input<T>\n export type output<T> = import(\"zod\").output<T>\n export type TypeOf<T> = import(\"zod\").TypeOf<T>\n export type Infer<T> = import(\"zod\").Infer<T>\n}\n\nexport { extendZod, ZodError, ZodType }\n"],"names":["z","baseZ"],"mappings":"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"}
1
+ {"version":3,"file":"index-g1_0RZ-U.js","sources":["../src/zod/localizedString.ts","../src/zod/e164Phone.ts","../src/zod/extension.ts","../src/zod/index.ts"],"sourcesContent":["import { z } from \"zod\"\n\n\nexport type LanguageCode = string\n\nexport type LocalizedString = Record<LanguageCode, string>\n\nexport type I18nStringRecord = LocalizedString\n\nexport type I18nString = LocalizedString\n\nexport type LocalizedStringWithFallback = LocalizedString & {\n get: (key: string) => string | undefined\n getExact: (key: string) => string | undefined\n hasExact: (key: string) => boolean\n}\n\nexport const LANGUAGE_CODE_REGEX = /^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/\n\nconst LOCALIZED_STRING_PROXY_CACHE = new WeakMap<object, unknown>()\n\nfunction normalizeLocale(locale: string): string {\n const trimmed = locale.trim()\n if (!trimmed) return \"\"\n const getCanonicalLocales = (Intl as typeof Intl & {\n getCanonicalLocales?: (locales: string | readonly string[]) => string[]\n }).getCanonicalLocales\n if (typeof getCanonicalLocales !== \"function\") return trimmed\n try {\n return getCanonicalLocales(trimmed)[0] ?? trimmed\n } catch {\n return trimmed\n }\n}\n\nexport function buildLocaleFallbackChain(locale: string, fallbacks?: string | string[]): string[] {\n const base = locale.trim()\n const canonical = normalizeLocale(base)\n const extra = typeof fallbacks === \"string\" ? [fallbacks] : (fallbacks ?? [])\n\n const output: string[] = []\n const seen = new Set<string>()\n\n const push = (value: string) => {\n if (!value) return\n if (seen.has(value)) return\n seen.add(value)\n output.push(value)\n }\n\n const addChain = (value: string) => {\n if (!value) return\n const parts = value.split(\"-\").filter(Boolean)\n while (parts.length > 0) {\n push(parts.join(\"-\"))\n parts.pop()\n }\n }\n\n addChain(base)\n addChain(canonical)\n for (const fallback of extra) addChain(normalizeLocale(fallback))\n\n return output\n}\n\nexport function resolveLocalizedString(\n value: LocalizedString | null | undefined,\n locale: string,\n options?: { fallbacks?: string | string[] }\n): string | undefined {\n if (!value) return undefined\n const chain = buildLocaleFallbackChain(locale, options?.fallbacks)\n if (chain.length === 0) return undefined\n\n const record = value\n for (const key of chain) {\n if (!Object.prototype.hasOwnProperty.call(record, key)) continue\n return record[key]\n }\n return undefined\n}\n\nexport function withLocalizedStringFallback<T>(value: T): T {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return value\n if (value instanceof Map) return value\n const cached = LOCALIZED_STRING_PROXY_CACHE.get(value)\n if (cached) return cached as T\n\n const proxy = withFallbackRecord(value as Record<string, unknown>)\n LOCALIZED_STRING_PROXY_CACHE.set(value, proxy)\n return proxy as T\n}\n\nfunction withFallbackRecord(record: Record<string, unknown>): LocalizedStringWithFallback {\n const getExact = (key: string): string | undefined => {\n const current = record[key]\n return typeof current === \"string\" ? current : undefined\n }\n const hasExact = (key: string) => Object.prototype.hasOwnProperty.call(record, key)\n\n return new Proxy(record, {\n get(target, prop) {\n if (prop === \"getExact\") return getExact\n if (prop === \"hasExact\") return hasExact\n if (prop === \"get\") return (key: string) => resolveLocalizedString(target as LocalizedString, key)\n if (typeof prop === \"string\" && !(prop in target)) {\n return resolveLocalizedString(target as LocalizedString, prop)\n }\n\n return Reflect.get(target, prop)\n },\n set(target, prop, next) {\n return Reflect.set(target, prop, next)\n },\n }) as LocalizedStringWithFallback\n}\n\nexport const zLocalizedString = () => {\n const schema = z.record(\n z\n .string()\n .regex(LANGUAGE_CODE_REGEX, { message: \"Expected a language code (BCP 47, e.g. en or fr-FR).\" }),\n z.string()\n ) as z.ZodRecord<z.ZodString, z.ZodString>\n\n return schema\n}\n\nexport const zI18nString = zLocalizedString\n","import { z } from \"zod\"\n\n\nexport const E164_PHONE_REGEX = /^\\+[1-9]\\d{1,14}$/\nexport const E164_PHONE_OR_EMPTY_REGEX = /^(?:\\+[1-9]\\d{1,14})?$/\n\nexport type E164PhoneOptions = {\n allowEmpty?: boolean\n}\n\nexport const makeZE164Phone = (zod: typeof z, options?: E164PhoneOptions) => {\n const allowEmpty = options?.allowEmpty ?? false\n return zod.string().trim().regex(allowEmpty ? E164_PHONE_OR_EMPTY_REGEX : E164_PHONE_REGEX, {\n message: allowEmpty\n ? \"Expected an empty string or a phone number in E.164 format (e.g. +33608707197).\"\n : \"Expected a phone number in E.164 format (e.g. +33608707197).\",\n })\n}\n\nexport const zE164Phone = (options?: E164PhoneOptions) => makeZE164Phone(z, options)\n","import { z } from \"zod\"\n\nimport { type E164PhoneOptions, makeZE164Phone } from \"./e164Phone\"\n\n\ntype RpcbaseZodExtension = typeof z & {\n e164Phone?: (options?: E164PhoneOptions) => z.ZodString\n}\n\ntype ExtendableZodPrototype = {\n unique?: (this: unknown, arg?: boolean) => unknown\n sparse?: (this: unknown, arg?: boolean) => unknown\n}\n\ndeclare module \"zod\" {\n interface ZodString {\n unique(arg?: boolean): this\n sparse(arg?: boolean): this\n }\n\n interface ZodNumber {\n unique(arg?: boolean): this\n sparse(arg?: boolean): this\n }\n\n interface ZodDate {\n unique(arg?: boolean): this\n sparse(arg?: boolean): this\n }\n\n}\n\nlet zodPrototypesExtended = false\n\nexport function extendZod(zod: typeof z) {\n const zodWithExtension = zod as RpcbaseZodExtension\n if (Object.isExtensible(zodWithExtension) && typeof zodWithExtension.e164Phone !== \"function\") {\n zodWithExtension.e164Phone = (options?: E164PhoneOptions) => makeZE164Phone(zod, options)\n }\n\n if (zodPrototypesExtended) return\n zodPrototypesExtended = true\n\n const supported = [zod.ZodString, zod.ZodNumber, zod.ZodDate] as const\n for (const type of supported) {\n const proto = type?.prototype as ExtendableZodPrototype | undefined\n if (!proto) continue\n\n proto.unique = function unique(this: unknown, _flag = true) {\n return this\n }\n\n proto.sparse = function sparse(this: unknown, _flag = true) {\n return this\n }\n }\n}\n","import { z as baseZ, type ZodError, type ZodString, type ZodType } from \"zod\"\n\nimport { extendZod } from \"./extension\"\n\n\nexport * from \"./e164Phone\"\nexport * from \"./localizedString\"\n\nexport type RpcbaseZod = typeof baseZ & {\n e164Phone: (options?: import(\"./e164Phone\").E164PhoneOptions) => ZodString\n}\n\nexport const z = Object.create(baseZ) as RpcbaseZod\nextendZod(z)\n\nexport namespace z {\n export type infer<T> = import(\"zod\").infer<T>\n export type input<T> = import(\"zod\").input<T>\n export type output<T> = import(\"zod\").output<T>\n export type TypeOf<T> = import(\"zod\").TypeOf<T>\n export type Infer<T> = import(\"zod\").Infer<T>\n}\n\nexport { extendZod, ZodError, ZodType }\n"],"names":["LANGUAGE_CODE_REGEX","LOCALIZED_STRING_PROXY_CACHE","WeakMap","normalizeLocale","locale","trimmed","trim","getCanonicalLocales","Intl","buildLocaleFallbackChain","fallbacks","base","canonical","extra","output","seen","Set","push","value","has","add","addChain","parts","split","filter","Boolean","length","join","pop","fallback","resolveLocalizedString","options","undefined","chain","record","key","Object","prototype","hasOwnProperty","call","withLocalizedStringFallback","Array","isArray","Map","cached","get","proxy","withFallbackRecord","set","getExact","current","hasExact","Proxy","target","prop","Reflect","next","zLocalizedString","schema","z","string","regex","message","zI18nString","E164_PHONE_REGEX","E164_PHONE_OR_EMPTY_REGEX","makeZE164Phone","zod","allowEmpty","zE164Phone","zodPrototypesExtended","extendZod","zodWithExtension","isExtensible","e164Phone","supported","ZodString","ZodNumber","ZodDate","type","proto","unique","_flag","sparse","create","baseZ"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { a, E, L, c, e, m, r, w, z, b, f, d } from "./index-Drge1bnG.js";
1
+ import { a, E, L, c, e, m, r, w, z, b, f, d } from "./index-g1_0RZ-U.js";
2
2
  export {
3
3
  a as E164_PHONE_OR_EMPTY_REGEX,
4
4
  E as E164_PHONE_REGEX,