@rpcbase/db 0.86.0 → 0.88.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 +13 -109
- package/dist/acl/index.js.map +1 -1
- package/dist/can-B4pD_pnR.js +132 -0
- package/dist/can-B4pD_pnR.js.map +1 -0
- package/dist/index-BQeL_LHp.js +133 -0
- package/dist/index-BQeL_LHp.js.map +1 -0
- package/dist/index.browser.js +16 -2
- package/dist/index.browser.js.map +1 -0
- package/dist/index.js +2074 -1774
- package/dist/index.js.map +1 -1
- package/dist/model.js +2 -0
- package/dist/model.js.map +1 -0
- package/package.json +6 -6
- package/dist/zod-Co_dG17m.js +0 -123
- package/dist/zod-Co_dG17m.js.map +0 -1
package/dist/model.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rpcbase/db",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.88.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -74,12 +74,12 @@
|
|
|
74
74
|
"zod": "^4"
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
|
-
"@casl/ability": "6.
|
|
78
|
-
"@casl/mongoose": "8.0.
|
|
77
|
+
"@casl/ability": "6.7.5",
|
|
78
|
+
"@casl/mongoose": "8.0.4"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@types/node": "25.
|
|
82
|
-
"@vitest/coverage-v8": "4.
|
|
83
|
-
"vitest": "4.
|
|
81
|
+
"@types/node": "25.0.3",
|
|
82
|
+
"@vitest/coverage-v8": "4.0.16",
|
|
83
|
+
"vitest": "4.0.16"
|
|
84
84
|
}
|
|
85
85
|
}
|
package/dist/zod-Co_dG17m.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
//#region src/zod/localizedString.ts
|
|
3
|
-
var LANGUAGE_CODE_REGEX = /^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/;
|
|
4
|
-
var LOCALIZED_STRING_PROXY_CACHE = /* @__PURE__ */ new WeakMap();
|
|
5
|
-
function normalizeLocale(locale) {
|
|
6
|
-
const trimmed = locale.trim();
|
|
7
|
-
if (!trimmed) return "";
|
|
8
|
-
const getCanonicalLocales = Intl.getCanonicalLocales;
|
|
9
|
-
if (typeof getCanonicalLocales !== "function") return trimmed;
|
|
10
|
-
try {
|
|
11
|
-
return getCanonicalLocales(trimmed)[0] ?? trimmed;
|
|
12
|
-
} catch {
|
|
13
|
-
return trimmed;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
function buildLocaleFallbackChain(locale, fallbacks) {
|
|
17
|
-
const base = locale.trim();
|
|
18
|
-
const canonical = normalizeLocale(base);
|
|
19
|
-
const extra = typeof fallbacks === "string" ? [fallbacks] : fallbacks ?? [];
|
|
20
|
-
const output = [];
|
|
21
|
-
const seen = /* @__PURE__ */ new Set();
|
|
22
|
-
const push = (value) => {
|
|
23
|
-
if (!value) return;
|
|
24
|
-
if (seen.has(value)) return;
|
|
25
|
-
seen.add(value);
|
|
26
|
-
output.push(value);
|
|
27
|
-
};
|
|
28
|
-
const addChain = (value) => {
|
|
29
|
-
if (!value) return;
|
|
30
|
-
const parts = value.split("-").filter(Boolean);
|
|
31
|
-
while (parts.length > 0) {
|
|
32
|
-
push(parts.join("-"));
|
|
33
|
-
parts.pop();
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
addChain(base);
|
|
37
|
-
addChain(canonical);
|
|
38
|
-
for (const fallback of extra) addChain(normalizeLocale(fallback));
|
|
39
|
-
return output;
|
|
40
|
-
}
|
|
41
|
-
function resolveLocalizedString(value, locale, options) {
|
|
42
|
-
if (!value) return void 0;
|
|
43
|
-
const chain = buildLocaleFallbackChain(locale, options?.fallbacks);
|
|
44
|
-
if (chain.length === 0) return void 0;
|
|
45
|
-
const record = value;
|
|
46
|
-
for (const key of chain) {
|
|
47
|
-
if (!Object.prototype.hasOwnProperty.call(record, key)) continue;
|
|
48
|
-
return record[key];
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
function withLocalizedStringFallback(value) {
|
|
52
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return value;
|
|
53
|
-
if (value instanceof Map) return value;
|
|
54
|
-
const cached = LOCALIZED_STRING_PROXY_CACHE.get(value);
|
|
55
|
-
if (cached) return cached;
|
|
56
|
-
const proxy = withFallbackRecord(value);
|
|
57
|
-
LOCALIZED_STRING_PROXY_CACHE.set(value, proxy);
|
|
58
|
-
return proxy;
|
|
59
|
-
}
|
|
60
|
-
function withFallbackRecord(record) {
|
|
61
|
-
const getExact = (key) => {
|
|
62
|
-
const current = record[key];
|
|
63
|
-
return typeof current === "string" ? current : void 0;
|
|
64
|
-
};
|
|
65
|
-
const hasExact = (key) => Object.prototype.hasOwnProperty.call(record, key);
|
|
66
|
-
return new Proxy(record, {
|
|
67
|
-
get(target, prop) {
|
|
68
|
-
if (prop === "getExact") return getExact;
|
|
69
|
-
if (prop === "hasExact") return hasExact;
|
|
70
|
-
if (prop === "get") return (key) => resolveLocalizedString(target, key);
|
|
71
|
-
if (typeof prop === "string" && !(prop in target)) return resolveLocalizedString(target, prop);
|
|
72
|
-
return Reflect.get(target, prop);
|
|
73
|
-
},
|
|
74
|
-
set(target, prop, next) {
|
|
75
|
-
return Reflect.set(target, prop, next);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
var zLocalizedString = () => {
|
|
80
|
-
return z.record(z.string().regex(LANGUAGE_CODE_REGEX, { message: "Expected a language code (BCP 47, e.g. en or fr-FR)." }), z.string());
|
|
81
|
-
};
|
|
82
|
-
var zI18nString = zLocalizedString;
|
|
83
|
-
//#endregion
|
|
84
|
-
//#region src/zod/e164Phone.ts
|
|
85
|
-
var E164_PHONE_REGEX = /^\+[1-9]\d{1,14}$/;
|
|
86
|
-
var E164_PHONE_OR_EMPTY_REGEX = /^(?:\+[1-9]\d{1,14})?$/;
|
|
87
|
-
var makeZE164Phone = (zod, options) => {
|
|
88
|
-
const allowEmpty = options?.allowEmpty ?? false;
|
|
89
|
-
return zod.string().trim().regex(allowEmpty ? E164_PHONE_OR_EMPTY_REGEX : E164_PHONE_REGEX, { message: allowEmpty ? "Expected an empty string or a phone number in E.164 format (e.g. +33608707197)." : "Expected a phone number in E.164 format (e.g. +33608707197)." });
|
|
90
|
-
};
|
|
91
|
-
var zE164Phone = (options) => makeZE164Phone(z, options);
|
|
92
|
-
//#endregion
|
|
93
|
-
//#region src/zod/extension.ts
|
|
94
|
-
var zodPrototypesExtended = false;
|
|
95
|
-
function extendZod(zod) {
|
|
96
|
-
const zodWithExtension = zod;
|
|
97
|
-
if (Object.isExtensible(zodWithExtension) && typeof zodWithExtension.e164Phone !== "function") zodWithExtension.e164Phone = (options) => makeZE164Phone(zod, options);
|
|
98
|
-
if (zodPrototypesExtended) return;
|
|
99
|
-
zodPrototypesExtended = true;
|
|
100
|
-
const supported = [
|
|
101
|
-
zod.ZodString,
|
|
102
|
-
zod.ZodNumber,
|
|
103
|
-
zod.ZodDate
|
|
104
|
-
];
|
|
105
|
-
for (const type of supported) {
|
|
106
|
-
const proto = type?.prototype;
|
|
107
|
-
if (!proto) continue;
|
|
108
|
-
proto.unique = function unique(_flag = true) {
|
|
109
|
-
return this;
|
|
110
|
-
};
|
|
111
|
-
proto.sparse = function sparse(_flag = true) {
|
|
112
|
-
return this;
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
//#endregion
|
|
117
|
-
//#region src/zod/index.ts
|
|
118
|
-
var z$1 = Object.create(z);
|
|
119
|
-
extendZod(z$1);
|
|
120
|
-
//#endregion
|
|
121
|
-
export { makeZE164Phone as a, buildLocaleFallbackChain as c, zI18nString as d, zLocalizedString as f, E164_PHONE_REGEX as i, resolveLocalizedString as l, extendZod as n, zE164Phone as o, E164_PHONE_OR_EMPTY_REGEX as r, LANGUAGE_CODE_REGEX as s, z$1 as t, withLocalizedStringFallback as u };
|
|
122
|
-
|
|
123
|
-
//# sourceMappingURL=zod-Co_dG17m.js.map
|
package/dist/zod-Co_dG17m.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zod-Co_dG17m.js","names":["z","LanguageCode","LocalizedString","Record","I18nStringRecord","I18nString","LocalizedStringWithFallback","get","key","getExact","hasExact","LANGUAGE_CODE_REGEX","LOCALIZED_STRING_PROXY_CACHE","WeakMap","normalizeLocale","locale","trimmed","trim","getCanonicalLocales","Intl","locales","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","Object","prototype","hasOwnProperty","call","withLocalizedStringFallback","T","Array","isArray","Map","cached","proxy","withFallbackRecord","set","current","Proxy","target","prop","Reflect","next","zLocalizedString","schema","string","regex","message","ZodRecord","ZodString","zI18nString","z","E164_PHONE_REGEX","E164_PHONE_OR_EMPTY_REGEX","E164PhoneOptions","allowEmpty","makeZE164Phone","zod","options","string","trim","regex","message","zE164Phone","z","E164PhoneOptions","makeZE164Phone","RpcbaseZodExtension","e164Phone","options","ZodString","ExtendableZodPrototype","unique","this","arg","sparse","ZodNumber","ZodDate","zodPrototypesExtended","extendZod","zod","zodWithExtension","Object","isExtensible","supported","const","type","proto","prototype","_flag","z","baseZ","ZodError","ZodString","ZodType","extendZod","RpcbaseZod","e164Phone","options","E164PhoneOptions","Object","create","infer","T","input","output","TypeOf","Infer"],"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"],"mappings":"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"}
|