vibe64 0.1.47 → 0.1.49
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/bin/run.js +1734 -1687
- package/bin/server.js +75 -75
- package/bin/upgrade-state.js +4539 -4471
- package/dist/assets/GithubBrowserTabs-BwpiRS2u.js +1 -0
- package/dist/assets/{LocalDatabaseServer-6VzPWZxG.js → LocalDatabaseServer-u_Ky7bNS.js} +1 -1
- package/dist/assets/{Vibe64AuthSettingsButton-TLwqAxDo.js → Vibe64AuthSettingsButton-BCwswT1G.js} +1 -1
- package/dist/assets/{Vibe64DashboardShell-B4dQ-oHD.js → Vibe64DashboardShell-CWlgrR2B.js} +1 -1
- package/dist/assets/{Vibe64DatabaseWorkspace-Bh5WIPOj.js → Vibe64DatabaseWorkspace-Dhs8_H0P.js} +1 -1
- package/dist/assets/Vibe64OutputControls-Dn548CZa.js +8 -0
- package/dist/assets/{Vibe64RepositoryWorkspace-idDg94lc.js → Vibe64RepositoryWorkspace-C-8S4JUF.js} +1 -1
- package/dist/assets/{Vibe64SessionFiles-Z9zxosyl.js → Vibe64SessionFiles-Cx6J7DDN.js} +2 -3
- package/dist/assets/{Vibe64UiStoryboardView-CrCDWMdR.js → Vibe64UiStoryboardView-DHyhJiWS.js} +1 -1
- package/dist/assets/{Vibe64UnavailableSessions-TqsxvGSf.js → Vibe64UnavailableSessions-Da4RxIhA.js} +1 -1
- package/dist/assets/{_sessionId_-7F1VGOou.js → _sessionId_-DCpgDPSI.js} +1 -1
- package/dist/assets/_slug_-BbEWp01a.js +25 -0
- package/dist/assets/{_slug_-B16mTWjj.css → _slug_-DerKOisL.css} +1 -1
- package/dist/assets/{access-Cx9RH95J.js → access-D4di2sCr.js} +1 -1
- package/dist/assets/{app-DPx4KKOa.js → app-Adr9Iz8p.js} +1 -1
- package/dist/assets/asyncModuleRecovery-DJsn5NrL.js +1 -0
- package/dist/assets/{changes-DYsuQLFW.js → changes-3Dd1O8Lu.js} +1 -1
- package/dist/assets/client-BAXHGUOC.js +1 -0
- package/dist/assets/{client-BYsDPxR3.js → client-CCZIu6yc.js} +1 -1
- package/dist/assets/{conversation-3ln-WnbL.css → conversation-CSDHdGDb.css} +1 -1
- package/dist/assets/conversation-DG9lp25w.js +8 -0
- package/dist/assets/conversation-ErAO1CmH.js +13 -0
- package/dist/assets/{dashboard-CWswAbYP.js → dashboard-0tCzDYCX.js} +1 -1
- package/dist/assets/english-definitions-DeiQ-jTT.js +1 -0
- package/dist/assets/env-DsyQ2MFX.js +1 -0
- package/dist/assets/{health-C0f6s-G1.js → health-DyTXU-nb.js} +1 -1
- package/dist/assets/{history-BQjETNB9.js → history-BXGAdPMI.js} +1 -1
- package/dist/assets/{incoming-COpY201m.js → incoming-yajkdGBY.js} +1 -1
- package/dist/assets/{index-MWACm8Pp.css → index-B-dukXUB.css} +1 -1
- package/dist/assets/index-CGz4Yow6.js +136 -0
- package/dist/assets/{integrations-BBkvNRHu.js → integrations-BMrXET36.js} +10 -2
- package/dist/assets/issues-kc1XBZCK.js +1 -0
- package/dist/assets/{learning-B8_wHoe1.js → learning-CIE5ghYv.js} +1 -1
- package/dist/assets/linkPath-Ch9eft18.js +1 -0
- package/dist/assets/{placement-DXvgK433.js → placement-BNmlke_j.js} +1 -1
- package/dist/assets/placement-DYM3JJ-F.js +1 -0
- package/dist/assets/publish-DTh6amqi.js +3 -0
- package/dist/assets/pull-requests-CbfGSSIh.js +1 -0
- package/dist/assets/{repository-BNPt7UWc.js → repository-BstMh-bG.js} +1 -1
- package/dist/assets/settings-Bf8C6dls.js +1 -0
- package/dist/assets/{studioGateApi-BVdclhPL.js → studioGateApi-mkX1eOTX.js} +1 -1
- package/dist/assets/{studioUrls-CGKCbM_d.js → studioUrls-B0-GdWh8.js} +1 -1
- package/dist/assets/useArchivedVibe64Sessions-DIOpfUxD.js +1 -0
- package/dist/assets/useCommand-CVuya6vG.js +1 -0
- package/dist/assets/useEndpointResource-7-YDfAxX.js +1 -0
- package/dist/assets/usePaths-Y6UuQxmI.js +1 -0
- package/dist/assets/{useUiFeedback-B51xtCAK.js → useUiFeedback-Bd3rao6E.js} +1 -1
- package/dist/assets/useVibe64ConversationLog-ChJOU2SD.js +1 -0
- package/dist/assets/{useVibe64DatabaseTools-BE_yXZFn.js → useVibe64DatabaseTools-DKV-TeNJ.js} +1 -1
- package/dist/assets/{useVibe64ProjectScope-D7b8n1gx.js → useVibe64ProjectScope-DXjsKKhl.js} +1 -1
- package/dist/assets/useVibe64SessionData-BkIHUrP5.js +1 -0
- package/dist/assets/useVibe64SessionSelection-N8wX5oqo.js +1 -0
- package/dist/assets/{useVibe64SystemGraph-CDDcsye4.js → useVibe64SystemGraph-Db_eD-X8.js} +1 -1
- package/dist/assets/{useVibe64Terminal-Zr3Mig2L.js → useVibe64Terminal-B9EWJ9Ba.js} +2 -2
- package/dist/assets/vibe64ProjectScope.local-l5_-E6pq.js +1 -0
- package/dist/assets/vibe64RepositoryRealtime-CHT4-6VN.js +1 -0
- package/dist/assets/vibe64SessionFocus-CS6Ex53G.js +1 -0
- package/dist/assets/vibe64SessionFocus-CSm4YJQD.css +1 -0
- package/dist/assets/vibe64SessionRequestConfig-xIx-5jxQ.js +1 -0
- package/dist/index.html +26 -22
- package/docs/colleague-usage/ai-accounts.md +6 -2
- package/docs/colleague-usage/ai-balance-and-allowance.md +15 -2
- package/docs/colleague-usage/coding-agent-failures.md +2 -1
- package/docs/colleague-usage/coding-agent-goals.md +8 -3
- package/docs/colleague-usage/coding-agents.md +16 -0
- package/docs/colleague-usage/github-work.md +14 -0
- package/docs/colleague-usage/preview-browser-checks.md +5 -3
- package/docs/colleague-usage/project-setup.md +6 -3
- package/docs/colleague-usage/running-vibe64-on-your-computer.md +3 -1
- package/docs/colleague-usage/sessions.md +35 -7
- package/docs/colleague-usage/starter-apps.md +3 -0
- package/docs/colleague-usage/temporary-chat-context.md +2 -1
- package/docs/colleague-usage/temporary-chats.md +17 -5
- package/node_modules/@jskit-ai/assistant-core/CHANGELOG.md +539 -0
- package/node_modules/@jskit-ai/assistant-core/locales/en.json +383 -0
- package/node_modules/@jskit-ai/assistant-core/package.json +3 -2
- package/node_modules/@jskit-ai/assistant-runtime/CHANGELOG.md +138 -0
- package/node_modules/@jskit-ai/assistant-runtime/README.md +2 -1
- package/node_modules/@jskit-ai/assistant-runtime/locales/en.json +137 -0
- package/node_modules/@jskit-ai/assistant-runtime/package.json +3 -2
- package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/assistantConfigRepository.js +223 -203
- package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/conversationsRepository.js +286 -266
- package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/messagesRepository.js +270 -250
- package/node_modules/@jskit-ai/assistant-voice/locales/en.json +182 -0
- package/node_modules/@jskit-ai/assistant-voice/package.json +3 -2
- package/node_modules/@jskit-ai/connector-google-calendar/CHANGELOG.md +83 -0
- package/node_modules/@jskit-ai/connector-google-calendar/locales/en.json +91 -0
- package/node_modules/@jskit-ai/connector-google-calendar/package.json +4 -3
- package/node_modules/@jskit-ai/connectors-catalog/CHANGELOG.md +1722 -0
- package/node_modules/@jskit-ai/connectors-catalog/README.md +11 -0
- package/node_modules/@jskit-ai/connectors-catalog/locales/en.json +3139 -0
- package/node_modules/@jskit-ai/connectors-catalog/package.json +5 -4
- package/node_modules/@jskit-ai/connectors-core/CHANGELOG.md +183 -0
- package/node_modules/@jskit-ai/connectors-core/locales/en.json +92 -0
- package/node_modules/@jskit-ai/connectors-core/package.json +3 -2
- package/node_modules/@jskit-ai/http-runtime/CHANGELOG.md +31 -0
- package/node_modules/@jskit-ai/http-runtime/locales/en.json +14 -0
- package/node_modules/@jskit-ai/http-runtime/package.json +3 -2
- package/node_modules/@jskit-ai/kernel/CHANGELOG.md +182 -0
- package/node_modules/@jskit-ai/kernel/locales/en.json +94 -0
- package/node_modules/@jskit-ai/kernel/package.json +6 -2
- package/node_modules/@jskit-ai/payments-core/CHANGELOG.md +128 -0
- package/node_modules/@jskit-ai/payments-core/locales/en.json +77 -0
- package/node_modules/@jskit-ai/payments-core/package.json +3 -2
- package/node_modules/@jskit-ai/realtime/CHANGELOG.md +20 -0
- package/node_modules/@jskit-ai/realtime/locales/en.json +14 -0
- package/node_modules/@jskit-ai/realtime/package.json +3 -2
- package/node_modules/@jskit-ai/resource-core/package.json +1 -1
- package/node_modules/@jskit-ai/resource-crud-core/package.json +1 -1
- package/node_modules/@jskit-ai/uploads-runtime/CHANGELOG.md +35 -0
- package/node_modules/@jskit-ai/uploads-runtime/locales/en.json +15 -0
- package/node_modules/@jskit-ai/uploads-runtime/package.json +3 -2
- package/node_modules/@local/vibe64-execution/src/host/execHelper.js +49 -48
- package/node_modules/@local/vibe64-execution/src/server/gitTurnCheckpointCommand.js +1327 -0
- package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +430 -390
- package/node_modules/@local/vibe64-genesis/src/server/index.js +45 -45
- package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +119 -119
- package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +57 -57
- package/node_modules/@local/vibe64-sessions/package.json +2 -1
- package/node_modules/@local/vibe64-terminals/src/server/opencodeSessionEnvironmentPlugin.js +195 -175
- package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1385 -1362
- package/package.json +15 -15
- package/server.bundle.mjs +44206 -42825
- package/dist/assets/GithubBrowserTabs-D-Z3TlA8.js +0 -1
- package/dist/assets/Vibe64OutputControls-DtybwgL3.js +0 -8
- package/dist/assets/_slug_-Bq84T_Iv.js +0 -24
- package/dist/assets/conversation-Bn7wpATa.js +0 -2
- package/dist/assets/conversation-CNcCrV-R.js +0 -16
- package/dist/assets/definitions-CEbi4qae.js +0 -1
- package/dist/assets/env-X7EOFLtl.js +0 -1
- package/dist/assets/index-CBo1BEk6.js +0 -138
- package/dist/assets/issues-BiSiUd5o.js +0 -1
- package/dist/assets/placement-B5T1LR7m.js +0 -1
- package/dist/assets/publish-CeLZE2AG.js +0 -3
- package/dist/assets/pull-requests-pTdQOT7i.js +0 -1
- package/dist/assets/settings-lecRzZ-r.js +0 -1
- package/dist/assets/useArchivedVibe64Sessions-DHYRnyJD.js +0 -1
- package/dist/assets/useCommand-Epd2yHhQ.js +0 -1
- package/dist/assets/useEndpointResource-DBRQISI_.js +0 -1
- package/dist/assets/usePaths-DdAnjVDj.js +0 -1
- package/dist/assets/useVibe64ConversationLog-DboM3tYN.js +0 -1
- package/dist/assets/useVibe64SessionData-CreWtQAO.js +0 -1
- package/dist/assets/useVibe64SessionSelection-CDaX4uwY.js +0 -1
- package/dist/assets/vibe64ProjectScope.local-BxTBYuRg.js +0 -1
- package/dist/assets/vibe64RepositoryRealtime-C-J0I5jY.js +0 -1
- package/dist/assets/vibe64SessionFocus-DSW5Irm6.css +0 -1
- package/dist/assets/vibe64SessionFocus-DzqbVq60.js +0 -1
package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/conversationsRepository.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createRequire as __vibe64CreateRequire } from 'node:module';const require=__vibe64CreateRequire(import.meta.url);
|
|
2
|
-
import{applyForUpdate as
|
|
2
|
+
import{applyForUpdate as Ht,createWithTransaction as eo,normalizeDbRecordId as qe,runInTransaction as to}from"@jskit-ai/database-runtime/shared/repositoryOptions";var no=Object.freeze(["none","pending","committed","rolledBack","unknown"]);function y(e,{fallback:t=""}={}){return String(e||"").trim()||t}function S(e,{fallback:t={}}={}){return!e||typeof e!="object"||Array.isArray(e)?{...t}:e}function fe(e,{fallback:t=null}={}){if(e==null)return t;let n=String(e).trim();return/^[1-9][0-9]*$/.test(n)?n:t}function Y(e,{
|
|
3
3
|
fallback:t=null}={}){return e==null?t:typeof e=="string"?fe(e,{fallback:t}):typeof e=="number"?!Number.isSafeInteger(e)||
|
|
4
|
-
e<1?t:fe(e,{fallback:t}):typeof e=="bigint"?e<1n?t:fe(e,{fallback:t}):t}function
|
|
5
|
-
l_call",TOOL_RESULT:"tool_result",ERROR:"error",DONE:"done"}),
|
|
6
|
-
|
|
4
|
+
e<1?t:fe(e,{fallback:t}):typeof e=="bigint"?e<1n?t:fe(e,{fallback:t}):t}function k(e){return String(e||"").trim().toLowerCase()}import{resolveInsertedRecordId as Qn}from"@jskit-ai/database-runtime/shared";import{normalizeDbRecordId as Zn}from"@jskit-ai/database-runtime/shared/repositoryOptions";var Yt=Object.freeze(["assistant"]);var Be=Object.freeze({META:"meta",ASSISTANT_DELTA:"assistant_delta",ASSISTANT_MESSAGE:"assistant_message",TOOL_CALL:"too\
|
|
5
|
+
l_call",TOOL_RESULT:"tool_result",ERROR:"error",DONE:"done"}),Po=new Set(Object.values(Be));function T(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||
|
|
6
|
+
Qt(t)}function Qt(e){return e!==null&&typeof e=="object"&&Object.getPrototypeOf(e)===null&&Reflect.ownKeys(e).length===0}function de(e){return e!==null&&typeof e=="object"&&T(e.structure)&&T(e.operations)&&typeof e.validateWith=="function"&&
|
|
7
7
|
typeof e.toJsonSchema=="function"&&typeof e.cleanup=="function"}function Q(e,t){if(!Object.hasOwn(t,"items"))return null;
|
|
8
|
-
let{items:n}=t;if(de(n))return{kind:"schema",schema:n};if(!
|
|
8
|
+
let{items:n}=t;if(de(n))return{kind:"schema",schema:n};if(!T(n)||typeof n.type!="string")throw new Error(`Array field "${e}\
|
|
9
9
|
" must define items as either a Schema instance or a field definition object.`);return{kind:"definition",definition:n}}function U(e,t){
|
|
10
|
-
if(!Object.hasOwn(t,"values"))return null;let{values:n}=t;if(de(n))return{kind:"schema",schema:n};if(!
|
|
10
|
+
if(!Object.hasOwn(t,"values"))return null;let{values:n}=t;if(de(n))return{kind:"schema",schema:n};if(!T(n)||typeof n.type!=
|
|
11
11
|
"string")throw new Error(`Object field "${e}" must define values as either a Schema instance or a field definition objec\
|
|
12
12
|
t.`);return{kind:"definition",definition:n}}function Z(e,t){let n=Object.hasOwn(t,"schema"),r=Object.hasOwn(t,"values"),
|
|
13
13
|
o=Object.hasOwn(t,"additionalProperties");if(n&&r)throw new Error(`Object field "${e}" cannot define both schema and val\
|
|
@@ -15,36 +15,36 @@ ues.`);if(o&&t.additionalProperties!==!0)throw new Error(`Object field "${e}" on
|
|
|
15
15
|
if(r&&t.additionalProperties===!0)throw new Error(`Object field "${e}" cannot define both values and additionalPropertie\
|
|
16
16
|
s: true.`);if(n){if(!de(t.schema))throw new Error(`Object field "${e}" must define schema as a Schema instance.`);return{
|
|
17
17
|
kind:"nested",schema:t.schema,allowAdditionalProperties:t.additionalProperties===!0}}return r?{kind:"map",valuesConfig:U(
|
|
18
|
-
e,t)}:t.additionalProperties===!0?{kind:"opaque"}:{kind:"plain"}}function
|
|
19
|
-
(?:${
|
|
20
|
-
`^${We}$`),
|
|
21
|
-
|
|
22
|
-
2?
|
|
18
|
+
e,t)}:t.additionalProperties===!0?{kind:"opaque"}:{kind:"plain"}}function M(e){return e?.type==="number"||e?.type==="integer"||e?.type==="epochMilliseconds"||e?.type==="epochSeconds"}var me="^(?:0|-?[1-9]\\d*)$",Ue="\\d{4}",He="0[1-9]|1[0-2]",Ke="0[1-9]|[12]\\d|3[01]",Je="[01]\\d|2[0-3]",D="[0-5]\\d",ee=`\
|
|
19
|
+
(?:${Je}):${D}`,Ge=`(?:Z|[+-](?:${Je}):${D})`,We=`(${Ue})-(${He})-(${Ke})`,Xe=`${Ue}-(?:${He})-(?:${Ke})`,Ye=`^${Xe}$`,Zt=new RegExp(
|
|
20
|
+
`^${We}$`),er=new RegExp(`^${ee}(?::${D}(?:\\.(\\d+))?)?$`),tr=new RegExp(`^${We}T${ee}:${D}(?:\\.(\\d+))?${Ge}$`),rr=new RegExp(
|
|
21
|
+
me),nr=[31,28,31,30,31,30,31,31,30,31,30,31];function or(e){return e%4===0&&(e%100!==0||e%400===0)}function ir(e,t){return t===
|
|
22
|
+
2?or(e)?29:28:nr[t-1]}function Qe(e,t,n){let r=Number(e),o=Number(t),i=Number(n);return o>=1&&o<=12&&i>=1&&i<=ir(r,o)}function H(e,t){
|
|
23
23
|
let n=e.temporalPrecision;if(n!==void 0){if(!Number.isInteger(n)||n<0)throw new Error(`temporalPrecision for "${t}" must\
|
|
24
24
|
be a non-negative integer.`);return n}}function Ze(e,t){return e===void 0?!0:t===void 0||e.length<=t}function et(e){if(typeof e!=
|
|
25
|
-
"string")return!1;let t=
|
|
26
|
-
exec(e);return n!==null&&Ze(n[1],t)}function rt(e,t){if(typeof e!="string")return!1;let n=
|
|
25
|
+
"string")return!1;let t=Zt.exec(e);return t!==null&&Qe(t[1],t[2],t[3])}function tt(e,t){if(typeof e!="string")return!1;let n=er.
|
|
26
|
+
exec(e);return n!==null&&Ze(n[1],t)}function rt(e,t){if(typeof e!="string")return!1;let n=tr.exec(e);return n===null?!1:
|
|
27
27
|
Qe(n[1],n[2],n[3])&&Ze(n[4],t)}function nt(e){return e===void 0?"(?:\\.\\d+)?":e===0?"":`(?:\\.\\d{1,${e}})?`}function ot(e,t){
|
|
28
|
-
let n=H(e,t);return`^${ee}(?::${
|
|
29
|
-
let n;if(typeof e=="number")n=e;else if(typeof e=="string"&&
|
|
30
|
-
n)||n<-t||n>t?null:n===0?0:n}var
|
|
31
|
-
has(e))throw new Error(`${t}() received unsafe path segment "${e}".`)}function
|
|
28
|
+
let n=H(e,t);return`^${ee}(?::${D}${nt(n)})?$`}function it(e,t){let n=H(e,t);return`^${Xe}T${ee}:${D}${nt(n)}${Ge}$`}function pe(e,t){
|
|
29
|
+
let n;if(typeof e=="number")n=e;else if(typeof e=="string"&&rr.test(e))n=Number(e);else return null;return!Number.isSafeInteger(
|
|
30
|
+
n)||n<-t||n>t?null:n===0?0:n}var sr=new Set(["__proto__","prototype","constructor"]);function p(e,t,n){Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0})}function ar(e,t){if(sr.
|
|
31
|
+
has(e))throw new Error(`${t}() received unsafe path segment "${e}".`)}function cr(e){return typeof e!="string"?e:e.replace(
|
|
32
32
|
/\[(.+?)\]/g,".$1").replace(/^\.+/,"").replace(/\.+/g,".").replace(/\.$/,"")}function he(e,t,{normalize:n=!1,allowEmpty:r=!1}={}){
|
|
33
|
-
let o=n?
|
|
33
|
+
let o=n?cr(e):e;if(typeof o!="string"||o.trim()===""){if(r&&o==="")return[];throw new Error(`${t}() expects a non-empty \
|
|
34
34
|
dotted path string.`)}let i=o.split(".");if(i.some(s=>s===""))throw new Error(`${t}() received an invalid path "${o}".`);
|
|
35
|
-
for(let s of i)
|
|
36
|
-
|
|
37
|
-
return{anyOf:[{type:"integer",minimum:-e,maximum:e},{type:"string",pattern:
|
|
35
|
+
for(let s of i)ar(s,t);return i}var ur="http://json-schema.org/draft-07/schema#",N="x-json-rest-schema",ye=["object","array","string","number","boolean"],
|
|
36
|
+
ge=Symbol("json-rest-schema.exportContext"),lr=["true","1","yes","y","on"],fr=["false","0","no","n","off"];function st(e){
|
|
37
|
+
return{anyOf:[{type:"integer",minimum:-e,maximum:e},{type:"string",pattern:me}]}}function C(e,t){return{[N]:{[e]:t}}}var dr={
|
|
38
38
|
none:()=>({type:ye}),blob:()=>({type:ye}),serialize:()=>({type:ye}),object:()=>({type:"object"}),array:()=>({type:"array"}),
|
|
39
39
|
file:()=>({type:"string"}),string:()=>({type:"string"}),number:()=>({type:["number","string"]}),integer:()=>({type:["int\
|
|
40
40
|
eger","string"]}),epochMilliseconds:()=>st(864e13),epochSeconds:()=>st(864e10),dateTime:({definition:e,fieldName:t})=>({
|
|
41
41
|
type:"string",format:"date-time",pattern:it(e,t)}),date:()=>({type:"string",format:"date",pattern:Ye}),time:({definition:e,
|
|
42
42
|
fieldName:t})=>({type:"string",pattern:ot(e,t)}),boolean:({definition:e})=>{if(e.strictBoolean===!0)return{type:"boolean"};
|
|
43
|
-
let t=new Set([...
|
|
43
|
+
let t=new Set([...lr,String(e.stringTrueWhen||"true").trim().toLowerCase()]),n=new Set([...fr,String(e.stringFalseWhen||
|
|
44
44
|
"false").trim().toLowerCase()]);return{anyOf:[{type:"boolean"},{type:"number",enum:[0,1]},{type:"string",enum:[...n,...t]}]}},
|
|
45
|
-
id:()=>({type:["integer","string"],minimum:1,pattern:"^[1-9][0-9]*$"})},
|
|
45
|
+
id:()=>({type:["integer","string"],minimum:1,pattern:"^[1-9][0-9]*$"})},mr={minLength:({definition:e,parameterValue:t})=>e.
|
|
46
46
|
type==="string"?{minLength:t}:null,maxLength:({definition:e,parameterValue:t})=>e.type==="string"?{maxLength:t}:null,min:({
|
|
47
|
-
definition:e,parameterValue:t})=>
|
|
47
|
+
definition:e,parameterValue:t})=>M(e)?{minimum:t}:null,max:({definition:e,parameterValue:t})=>M(e)?{maximum:t}:null,pattern:({
|
|
48
48
|
definition:e,parameterValue:t})=>e.type==="string"?{pattern:t instanceof RegExp?t.source:t}:null,enum:({parameterValue:e})=>({
|
|
49
49
|
enum:e}),notEmpty:({parameterValue:e,definition:t})=>!e||t.type==="array"?null:{minLength:1},uppercase:({parameterValue:e})=>e?
|
|
50
50
|
C("transforms",{uppercase:!0}):null,lowercase:({parameterValue:e})=>e?C("transforms",{lowercase:!0}):null,length:({parameterValue:e})=>C(
|
|
@@ -54,234 +54,234 @@ C("transforms",{uppercase:!0}):null,lowercase:({parameterValue:e})=>e?C("transfo
|
|
|
54
54
|
function Ee(e,t){for(let n of Object.keys(t)){let r=t[n],o=e[n];if(r&&o&&typeof r=="object"&&typeof o=="object"&&!Array.
|
|
55
55
|
isArray(r)&&!Array.isArray(o)){Ee(o,r);continue}e[n]=r}}function pr(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(
|
|
56
56
|
"JSON Schema export hooks must return an object or null.");for(let n of Object.keys(t)){if(n===N&&e[n]&&typeof e[n]=="ob\
|
|
57
|
-
ject"&&typeof t[n]=="object"&&!Array.isArray(e[n])&&!Array.isArray(t[n])){Ee(e[n],t[n]);continue}e[n]=t[n]}}function
|
|
58
|
-
let r=[...Array.isArray(e.anyOf)&&Object.keys(e).length===1?e.anyOf:[e],...t];return r.length===1?e:{anyOf:r}}function
|
|
57
|
+
ject"&&typeof t[n]=="object"&&!Array.isArray(e[n])&&!Array.isArray(t[n])){Ee(e[n],t[n]);continue}e[n]=t[n]}}function hr(e,t){
|
|
58
|
+
let r=[...Array.isArray(e.anyOf)&&Object.keys(e).length===1?e.anyOf:[e],...t];return r.length===1?e:{anyOf:r}}function yr(e,t){
|
|
59
59
|
if(!Object.hasOwn(e.types,t.type))throw new Error(`No casting function for type: ${t.type}`);let n=e.types[t.type];if(typeof n.
|
|
60
|
-
toJsonSchema=="function")return n.toJsonSchema;let r=
|
|
61
|
-
ed to JSON Schema without a toJsonSchema hook.`);return r}function
|
|
62
|
-
let r=e.validators[t];if(typeof r.toJsonSchema=="function")return r.toJsonSchema;let o=
|
|
60
|
+
toJsonSchema=="function")return n.toJsonSchema;let r=dr[t.type];if(!r)throw new Error(`Type '${t.type}' cannot be export\
|
|
61
|
+
ed to JSON Schema without a toJsonSchema hook.`);return r}function gr(e,t,n){if(!Object.hasOwn(e.validators,t))return null;
|
|
62
|
+
let r=e.validators[t];if(typeof r.toJsonSchema=="function")return r.toJsonSchema;let o=mr[t];if(o)return o;throw new Error(
|
|
63
63
|
`Validator '${t}' on field '${n}' cannot be exported to JSON Schema without a toJsonSchema hook.`)}function at(e){if(e===
|
|
64
64
|
void 0)return"create";if(["create","replace","patch"].includes(e))return e;throw new Error(`Unsupported JSON Schema expo\
|
|
65
65
|
rt mode '${e}'. Expected 'create', 'replace', or 'patch'.`)}function Sr(e,t={}){if(t.mode!==void 0&&t.operation!==void 0){
|
|
66
66
|
let n=at(t.mode);if(n!==t.operation)throw new Error(`Conflicting JSON Schema export options: mode '${n}' does not match \
|
|
67
67
|
operation '${t.operation}'.`)}if(t.operation!==void 0){if(!Object.hasOwn(e.operations,t.operation))throw new Error(`Unkn\
|
|
68
|
-
own JSON Schema export operation '${t.operation}'.`);return t.operation}return at(t.mode)}function
|
|
68
|
+
own JSON Schema export operation '${t.operation}'.`);return t.operation}return at(t.mode)}function Or(e,t={}){if(t.operationName!==
|
|
69
69
|
void 0&&t.operationDescriptor!==void 0)return{operationName:t.operationName,operation:t.operationDescriptor};let n=Sr(e,
|
|
70
|
-
t);return{operationName:n,operation:e.operations[n]}}function br(e={}){let t={...e};return Object.defineProperty(t,
|
|
71
|
-
definitions:{},nodes:[],nextDefinitionId:1,rootNode:null},enumerable:!1}),t}function re(e={}){return e[
|
|
72
|
-
nodes:[],nextDefinitionId:1,rootNode:null}}function
|
|
73
|
-
"")||"operation"}function
|
|
74
|
-
e)?{allOf:[e]}:e}function
|
|
75
|
-
o)||null}function Tr(e,t){let n=
|
|
76
|
-
root:i=!1}={}){let s=re(t),c=
|
|
70
|
+
t);return{operationName:n,operation:e.operations[n]}}function br(e={}){let t={...e};return Object.defineProperty(t,ge,{value:{
|
|
71
|
+
definitions:{},nodes:[],nextDefinitionId:1,rootNode:null},enumerable:!1}),t}function re(e={}){return e[ge]?e[ge]:{definitions:{},
|
|
72
|
+
nodes:[],nextDefinitionId:1,rootNode:null}}function Er(e){return String(e).replace(/[^a-zA-Z0-9]+/g,"_").replace(/^_+|_+$/g,
|
|
73
|
+
"")||"operation"}function Se(e){return T(e)&&Object.keys(e).length===1&&typeof e.$ref=="string"}function te(e){return Se(
|
|
74
|
+
e)?{allOf:[e]}:e}function wr(e,t,n,r,o){return e.nodes.find(i=>i.schema===t&&i.operationName===n&&i.operation===r&&i.additionalProperties===
|
|
75
|
+
o)||null}function Tr(e,t){let n=Er(t),r=`SchemaNode_${e.nextDefinitionId}_${n}`;return e.nextDefinitionId+=1,r}function ct(e,t,n,r,o,{
|
|
76
|
+
root:i=!1}={}){let s=re(t),c=wr(s,e,n,r,o);if(c)return i&&(c.pointer="#",s.rootNode=c),c;let a={schema:e,operationName:n,
|
|
77
77
|
operation:r,additionalProperties:o,status:"new",definitionName:i?null:Tr(s,n),pointer:i?"#":null};return i?s.rootNode=a:
|
|
78
78
|
a.pointer=`#/definitions/${a.definitionName}`,s.nodes.push(a),a}function ut(e,t){if(e.status==="built")return{$ref:e.pointer};
|
|
79
79
|
if(e.status==="building")return{$ref:e.pointer};let n=re(t);e.status="building",e.pointer!=="#"&&(n.definitions[e.definitionName]=
|
|
80
80
|
{});let r=_r(e.schema,t,e.operationName,e.operation,e.additionalProperties);return e.status="built",e.pointer==="#"?r:(n.
|
|
81
|
-
definitions[e.definitionName]=r,{$ref:e.pointer})}function
|
|
82
|
-
s?{$ref:"#"}:ut(s,t)}function
|
|
83
|
-
let i={},s=[];for(let[a,u]of Object.entries(e.structure))
|
|
84
|
-
a);let c={type:"object",properties:i,additionalProperties:o};return s.length>0&&(c.required=s),c}function
|
|
85
|
-
let s=Q(t,n);if(!s)return null;if(s.kind==="schema")return{...te(
|
|
81
|
+
definitions[e.definitionName]=r,{$ref:e.pointer})}function we(e,t,n,r,o=!1){let i=re(t),s=ct(e,t,n,r,o);return i.rootNode===
|
|
82
|
+
s?{$ref:"#"}:ut(s,t)}function K(e,{referenceBacked:t=!1}={}){return{schema:e,referenceBacked:t}}function _r(e,t,n,r,o=!1){
|
|
83
|
+
let i={},s=[];for(let[a,u]of Object.entries(e.structure))p(i,a,Te(e,a,u,t,n,r)),r.enforceRequired&&u.required===!0&&s.push(
|
|
84
|
+
a);let c={type:"object",properties:i,additionalProperties:o};return s.length>0&&(c.required=s),c}function Ar(e,t,n,r,o,i){
|
|
85
|
+
let s=Q(t,n);if(!s)return null;if(s.kind==="schema")return{...te(we(s.schema,r,"replace",s.schema.operations.replace,!1)),
|
|
86
86
|
[N]:{castType:"object"}};let c=n.items.type==="object"&&Object.hasOwn(n.items,"schema")?"replace":o,a=c==="replace"?e.operations.
|
|
87
|
-
replace:i;return
|
|
88
|
-
a")return{...te(
|
|
89
|
-
"object"&&Object.hasOwn(s.definition,"schema")?"replace":o,a=c==="replace"?e.operations.replace:i;return
|
|
90
|
-
definition,r,c,a)}function
|
|
91
|
-
r,o,i,c.allowAdditionalProperties===!0),{referenceBacked:!0});if(c.kind==="opaque")return
|
|
92
|
-
if(c.kind==="map")return
|
|
87
|
+
replace:i;return Te(e,`${t}[]`,n.items,r,c,a)}function jr(e,t,n,r,o,i){let s=U(t,n);if(!s)return null;if(s.kind==="schem\
|
|
88
|
+
a")return{...te(we(s.schema,r,"replace",s.schema.operations.replace,!1)),[N]:{castType:"object"}};let c=s.definition.type===
|
|
89
|
+
"object"&&Object.hasOwn(s.definition,"schema")?"replace":o,a=c==="replace"?e.operations.replace:i;return Te(e,`${t}.*`,s.
|
|
90
|
+
definition,r,c,a)}function Ir(e,t,n,r,o,i){if(n.type==="object"){let c=Z(t,n);if(c.kind==="nested")return K(we(c.schema,
|
|
91
|
+
r,o,i,c.allowAdditionalProperties===!0),{referenceBacked:!0});if(c.kind==="opaque")return K({type:"object",additionalProperties:!0});
|
|
92
|
+
if(c.kind==="map")return K({type:"object",additionalProperties:jr(e,t,n,r,o,i)})}let s=yr(e,n)({schema:e,fieldName:t,definition:n,
|
|
93
93
|
operation:o,mode:o,options:r});if(!s||typeof s!="object"||Array.isArray(s))throw new Error(`Type '${n.type}' on field '${t}\
|
|
94
|
-
' returned an invalid JSON Schema fragment.`);if(n.type==="array"){let c=
|
|
95
|
-
s)})}return
|
|
96
|
-
options:r},c=
|
|
97
|
-
n)){if(d==="type"||!Object.hasOwn(e.validators,d))continue;let f=
|
|
94
|
+
' returned an invalid JSON Schema fragment.`);if(n.type==="array"){let c=Ar(e,t,n,r,o,i);if(c)return K({...s,items:c},{referenceBacked:Se(
|
|
95
|
+
s)})}return K(s,{referenceBacked:Se(s)})}function Te(e,t,n,r,o,i){let s={schema:e,fieldName:t,definition:n,operation:o,mode:o,
|
|
96
|
+
options:r},c=Ir(e,t,n,r,o,i),a=c.referenceBacked?te(c.schema):{...c.schema},u={castType:n.type};for(let d of Object.keys(
|
|
97
|
+
n)){if(d==="type"||!Object.hasOwn(e.validators,d))continue;let f=gr(e,d,t);if(!f)continue;let h=f({...s,parameterName:d,
|
|
98
98
|
parameterValue:n[d],fieldSchema:{...a}});h&&pr(a,h)}a[N]&&(Ee(u,a[N]),delete a[N]);let l=[];n.nullable===!0&&l.push({type:"\
|
|
99
|
-
null"}),n.nullOnEmpty===!0&&l.push({const:""});let
|
|
99
|
+
null"}),n.nullOnEmpty===!0&&l.push({const:""});let m=te(hr(a,l));if(n.defaultTo!==void 0&&i.applyDefaults)if(typeof n.defaultTo!=
|
|
100
100
|
"function"){let d=e._normalizeDefault(n,n.defaultTo,{fieldPath:t,currentObject:{},containerKey:t,objectBeforeCast:{},options:{},
|
|
101
101
|
settings:e._buildOperationSettings(o,i,{})});if(Object.keys(d.errors).length>0){let f=Object.values(d.errors)[0];throw new Error(
|
|
102
|
-
`defaultTo for "${t}" is invalid (${f.code}).`)}
|
|
103
|
-
|
|
104
|
-
s=re(n),c=ct(e,n,r,o,i,{root:!0}),a={$schema:
|
|
102
|
+
`defaultTo for "${t}" is invalid (${f.code}).`)}m.default=d.value}else u.defaults={providedByFunction:!0};return m[N]=u,
|
|
103
|
+
m}function lt(e,t={}){let n=br(t),{operationName:r,operation:o}=Or(e,n),i=n.additionalProperties===void 0?!1:n.additionalProperties,
|
|
104
|
+
s=re(n),c=ct(e,n,r,o,i,{root:!0}),a={$schema:ur,...ut(c,n)};return Object.keys(s.definitions).length>0&&(a.definitions=s.
|
|
105
105
|
definitions),a}function ft(e){return e!==null&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"}function Re(e){return e instanceof
|
|
106
|
-
|
|
107
|
-
.${String(t)}`}function
|
|
108
|
-
startsWith(n)?e.slice(n.length):null}function
|
|
109
|
-
field:o})}return n}function je(e){return he(e,"validatePath")}function
|
|
110
|
-
r.length;i++){let s=r[i];Object.hasOwn(o,s)||
|
|
106
|
+
V}function Rr(){return{self:!1,children:{}}}function dt(e){return Object.keys(e.children).length>0}function z(e,t){return`${e}\
|
|
107
|
+
.${String(t)}`}function St(e,t){return e===""?String(t):z(e,t)}function mt(e,t){if(e===t)return"";let n=`${t}.`;return e.
|
|
108
|
+
startsWith(n)?e.slice(n.length):null}function F(e,t){let n={};for(let r of Object.values(e)){let o=z(t,r.field);p(n,o,{...r,
|
|
109
|
+
field:o})}return n}function je(e){return he(e,"validatePath")}function pt(e){let t={};for(let n of e){let r=je(n),o=t;for(let i=0;i<
|
|
110
|
+
r.length;i++){let s=r[i];Object.hasOwn(o,s)||p(o,s,Rr()),i===r.length-1&&(o[s].self=!0),o=o[s].children}}return t}function Nr(e,t){
|
|
111
111
|
let n=e;for(let r of t){if(n==null||typeof n!="object"||!Object.hasOwn(n,r))return;n=n[r]}return n}function ne(e){return e===
|
|
112
|
-
null?!0:Array.isArray(e)||
|
|
113
|
-
test(t),o=/^[0-9]+$/.test(n);return r&&o?Number(t)-Number(n):r?-1:o?1:t.localeCompare(n)})}function
|
|
114
|
-
test(e)}function
|
|
112
|
+
null?!0:Array.isArray(e)||T(e)?Object.keys(e).length>0:e!==void 0}function ht(e){return[...e].sort((t,n)=>{let r=/^[0-9]+$/.
|
|
113
|
+
test(t),o=/^[0-9]+$/.test(n);return r&&o?Number(t)-Number(n):r?-1:o?1:t.localeCompare(n)})}function Pr(e){return/^[0-9]+$/.
|
|
114
|
+
test(e)}function vr(e,t=new WeakMap){if(t.has(e))return t.get(e);let n=Object.create(V.prototype);return t.set(e,n),n.structure=
|
|
115
115
|
null,n.types=e.types,n.validators=e.validators,n.operations=e.operations,n.structure=ie(oe(e.structure,t)),n._installOperationMethods(),
|
|
116
|
-
Object.freeze(n)}function oe(e,t=new WeakMap){if(e===null||typeof e!="object")return e;if(Re(e))return
|
|
116
|
+
Object.freeze(n)}function oe(e,t=new WeakMap){if(e===null||typeof e!="object")return e;if(Re(e))return vr(e,t);if(e instanceof
|
|
117
117
|
Date)return new Date(e.getTime());if(e instanceof RegExp){let r=new RegExp(e.source,e.flags);return r.lastIndex=e.lastIndex,
|
|
118
|
-
r}if(t.has(e))return t.get(e);if(Array.isArray(e)){let r=[];t.set(e,r);for(let o of e)r.push(oe(o,t));return r}if(!
|
|
119
|
-
return e;let n={};t.set(e,n);for(let[r,o]of Object.entries(e))
|
|
118
|
+
r}if(t.has(e))return t.get(e);if(Array.isArray(e)){let r=[];t.set(e,r);for(let o of e)r.push(oe(o,t));return r}if(!T(e))
|
|
119
|
+
return e;let n={};t.set(e,n);for(let[r,o]of Object.entries(e))p(n,r,oe(o,t));return n}function ie(e,t=new WeakSet){if(e===
|
|
120
120
|
null||typeof e!="object"||t.has(e)||Re(e))return e;if(t.add(e),Array.isArray(e))for(let n of e)ie(n,t);else for(let n of Reflect.
|
|
121
|
-
ownKeys(e))ie(e[n],t);return Object.freeze(e)}function
|
|
121
|
+
ownKeys(e))ie(e[n],t);return Object.freeze(e)}function _e(e){return ie(oe(e))}function Ie(e,t,n=""){if(!Re(e)||!Array.isArray(
|
|
122
122
|
t)||t.length<1)return null;let[r,...o]=t;if(!Object.hasOwn(e.structure,r))return null;let i=e.structure[r];if(o.length<1)
|
|
123
|
-
return i;let s=
|
|
123
|
+
return i;let s=St(n,r);return Ot(e,i,o,s)}function Ot(e,t,n,r){if(t?.type==="object"){let o=e._resolveObjectFieldMode(r,
|
|
124
124
|
t);return o.kind!=="nested"?null:Ie(o.schema,n,r)}if(t?.type==="array"){let o=e._resolveArrayItemsConfig(r,t);if(!o||n.length<
|
|
125
|
-
1)return null;let[i,...s]=n;if(!
|
|
126
|
-
s.length<1?o.definition:
|
|
127
|
-
let r=e.skipFields.map(o=>
|
|
128
|
-
let r={};for(let[o,i]of Object.entries(e.skipParams)){let s=
|
|
129
|
-
skipParams=r:delete n.skipParams}return n}var
|
|
125
|
+
1)return null;let[i,...s]=n;if(!Pr(i))return null;let c=z(r,i);return o.kind==="schema"?s.length<1?null:Ie(o.schema,s,c):
|
|
126
|
+
s.length<1?o.definition:Ot(e,o.definition,s,c)}return null}function x(e,t){let n={...e};if(Array.isArray(e.skipFields)){
|
|
127
|
+
let r=e.skipFields.map(o=>mt(o,t)).filter(o=>o!==null&&o!=="");r.length>0?n.skipFields=r:delete n.skipFields}if(T(e.skipParams)){
|
|
128
|
+
let r={};for(let[o,i]of Object.entries(e.skipParams)){let s=mt(o,t);s===null||s===""||p(r,s,i)}Object.keys(r).length>0?n.
|
|
129
|
+
skipParams=r:delete n.skipParams}return n}var Cr=Object.freeze({create:Object.freeze({targetFields:"schema",enforceRequired:!0,
|
|
130
130
|
applyDefaults:!0,outputFields:"validated",rejectExplicitUndefined:!0}),replace:Object.freeze({targetFields:"schema",enforceRequired:!0,
|
|
131
131
|
applyDefaults:!0,outputFields:"validated",rejectExplicitUndefined:!0}),patch:Object.freeze({targetFields:"input",enforceRequired:!1,
|
|
132
132
|
applyDefaults:!1,outputFields:"input",rejectExplicitUndefined:!0})});function yt(e,t,n,r){let o=t[n];if(!r.includes(o))throw new Error(
|
|
133
133
|
`Operation "${e}" must define ${n} as one of: ${r.join(", ")}.`)}function Ae(e,t,n,r=!0){let o=t[n];if(!(o===void 0&&!r)&&
|
|
134
|
-
typeof o!="boolean")throw new Error(`Operation "${e}" must define ${n} as a boolean.`)}function
|
|
134
|
+
typeof o!="boolean")throw new Error(`Operation "${e}" must define ${n} as a boolean.`)}function zr(e,t){if(typeof t!="ob\
|
|
135
135
|
ject"||t===null||Array.isArray(t))throw new Error(`Operation "${e}" must be an object.`);return yt(e,t,"targetFields",["\
|
|
136
136
|
schema","input"]),Ae(e,t,"enforceRequired"),Ae(e,t,"applyDefaults"),yt(e,t,"outputFields",["validated","input"]),Ae(e,t,
|
|
137
137
|
"rejectExplicitUndefined",!1),Object.freeze({targetFields:t.targetFields,enforceRequired:t.enforceRequired,applyDefaults:t.
|
|
138
138
|
applyDefaults,outputFields:t.outputFields,rejectExplicitUndefined:t.rejectExplicitUndefined===void 0?!0:t.rejectExplicitUndefined})}
|
|
139
|
-
function
|
|
140
|
-
.");let t=Object.create(null);for(let[n,r]of Object.entries(
|
|
141
|
-
return Object.freeze(t)}function
|
|
142
|
-
freeze(t)}function $r(e){let t={...e};return delete t.operation,delete t.mode,t}var
|
|
143
|
-
structure=t,this.types=
|
|
139
|
+
function Lr(e={}){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("Schema operations must be an object\
|
|
140
|
+
.");let t=Object.create(null);for(let[n,r]of Object.entries(Cr))p(t,n,r);for(let[n,r]of Object.entries(e))p(t,n,zr(n,r));
|
|
141
|
+
return Object.freeze(t)}function gt(e){let t=Object.create(null);for(let[n,r]of Object.entries(e))p(t,n,r);return Object.
|
|
142
|
+
freeze(t)}function $r(e){let t={...e};return delete t.operation,delete t.mode,t}var V=class{constructor(t,n,r,o={}){this.
|
|
143
|
+
structure=t,this.types=gt(n),this.validators=gt(r),this.operations=Lr(o),this._installOperationMethods()}_typeError(t){return this.
|
|
144
144
|
_paramError(t,"TYPE_CAST_FAILED","Value could not be cast to the required type.")}_paramError(t,n,r,o={}){let i=new Error(
|
|
145
145
|
r);return i.errorObject={field:t,code:n,message:r,params:o},i}_paramToBeSkipped(t,n,r){return typeof n!="object"||n===null?
|
|
146
146
|
!1:!!(Array.isArray(n[r])&&n[r].includes(t))}_fieldToBeSkipped(t,n){return Array.isArray(n.skipFields)&&n.skipFields.includes(
|
|
147
|
-
t)}_mergeErrors(t,n){for(let[r,o]of Object.entries(n))
|
|
147
|
+
t)}_mergeErrors(t,n){for(let[r,o]of Object.entries(n))p(t,r,o)}_singleErrorMap(t){let n={};return p(n,t.field,t),n}_assertSupportedOptions(t={}){
|
|
148
148
|
if(Object.hasOwn(t,"onlyObjectValues"))throw new Error("Unsupported validation option `onlyObjectValues`. Call `patch()`\
|
|
149
149
|
directly.");if(Object.hasOwn(t,"mode"))throw new Error("Unsupported validation option `mode`. Call `validateWith()` or \
|
|
150
150
|
an operation method directly.");if(Object.hasOwn(t,"operation"))throw new Error("Unsupported validation option `operatio\
|
|
151
151
|
n`. Call `validateWith()` or an operation method directly.")}_buildOperationSettings(t,n,r){return{operationName:t,operation:n,
|
|
152
152
|
targetFieldNames:n.targetFields==="input"?Object.keys(r):Object.keys(this.structure),outputFieldNames:n.outputFields==="\
|
|
153
153
|
input"?Object.keys(r):Object.keys(this.structure),enforceRequired:n.enforceRequired,applyDefaults:n.applyDefaults,rejectExplicitUndefined:n.
|
|
154
|
-
rejectExplicitUndefined,defaultedFields:new Set,isFieldPresent:o=>Object.hasOwn(r,o)}}_assertPlainObjectInput(t,n){if(!
|
|
154
|
+
rejectExplicitUndefined,defaultedFields:new Set,isFieldPresent:o=>Object.hasOwn(r,o)}}_assertPlainObjectInput(t,n){if(!T(
|
|
155
155
|
n))throw new Error(`${t}() expects a plain object input.`)}_resolvePathValidationRequest(t={}){let n=t.operation??t.mode??
|
|
156
156
|
"patch";if(Object.hasOwn(t,"operation")&&Object.hasOwn(t,"mode")&&t.operation!==t.mode)throw new Error("Path validation \
|
|
157
157
|
options `operation` and `mode` must match when both are provided.");if(!Object.hasOwn(this.operations,n))throw new Error(
|
|
158
158
|
`Unknown operation "${n}".`);let r=this.operations[n];return{operationName:n,operation:r,validationOptions:$r(t)}}_buildOperationResult(t,n,r){
|
|
159
159
|
let o={};for(let i of r.outputFieldNames){if(!Object.hasOwn(this.structure,i))continue;let s=r.isFieldPresent(i);(n[i]!==
|
|
160
|
-
void 0||s&&t[i]===null||r.defaultedFields.has(i))&&(!s&&!r.defaultedFields.has(i)||
|
|
160
|
+
void 0||s&&t[i]===null||r.defaultedFields.has(i))&&(!s&&!r.defaultedFields.has(i)||p(o,i,n[i]))}return o}_resolveObjectFieldMode(t,n){
|
|
161
161
|
return Z(t,n)}_resolveArrayItemsConfig(t,n){return Q(t,n)}_resolveObjectValuesConfig(t,n){return U(t,n)}_buildArrayItemSettings(t,n){
|
|
162
162
|
return t.type==="object"&&Object.hasOwn(t,"schema")?{...n,operationName:"replace",operation:this.operations.replace}:n}_castValue(t,n,r,o,i,s,c,a){
|
|
163
163
|
let u=t.nullable===!0||c.nullable===!0,l=t.nullOnEmpty===!0||c.nullOnEmpty===!0;if(!Object.hasOwn(this.types,t.type))throw new Error(
|
|
164
|
-
`No casting function for type: ${t.type}`);let
|
|
164
|
+
`No casting function for type: ${t.type}`);let m=this.types[t.type];if(n===null)return u?(p(o,i,null),{errors:{},shouldContinue:!1}):
|
|
165
165
|
{errors:this._singleErrorMap({field:r,code:"NOT_NULLABLE",message:"Field cannot be null",params:{}}),shouldContinue:!1};
|
|
166
|
-
if(n===""&&l)return
|
|
166
|
+
if(n===""&&l)return p(o,i,null),{errors:{},shouldContinue:!1};let d={schema:this,definition:t,value:n,fieldName:r,object:o,
|
|
167
167
|
objectBeforeCast:s,valueBeforeCast:n,options:c,mode:a.operationName,operation:a.operationName,fieldPresent:!0,computedOptions:{
|
|
168
168
|
nullable:u||l,nullOnEmpty:l},throwTypeError:()=>{throw this._typeError(r)},throwParamError:(f,h,E)=>{throw this._paramError(
|
|
169
|
-
r,f,h,E)}};try{let f=
|
|
169
|
+
r,f,h,E)}};try{let f=m(d);if(ft(f))throw new Error(`Type handler for "${t.type}" must be synchronous.`);f!==void 0&&(p(o,
|
|
170
170
|
i,f),d.value=f)}catch(f){if(f.errorObject)return{errors:this._singleErrorMap(f.errorObject),shouldContinue:!1};throw f}return{
|
|
171
171
|
errors:{},context:d,shouldContinue:!0}}_runFieldValidators(t,n,r,o,i,s){for(let c of Object.keys(t)){if(c==="type"||this.
|
|
172
172
|
_paramToBeSkipped(c,s.skipParams,n)||!Object.hasOwn(this.validators,c))continue;let a=this.validators[c];try{i.parameterName=
|
|
173
173
|
c,i.parameterValue=t[c];let u=a(i);if(ft(u))throw new Error(`Validator handler for "${c}" must be synchronous.`);u!==void 0&&
|
|
174
|
-
(
|
|
174
|
+
(p(r,o,u),i.value=u)}catch(u){if(u.errorObject)return this._singleErrorMap(u.errorObject);throw u}}return{}}_normalizeAndValidateValue(t,n,r,o,i,s,c,a){
|
|
175
175
|
let u=this._castValue(t,n,r,o,i,s,c,a);if(Object.keys(u.errors).length>0)return u.errors;if(!u.shouldContinue)return{};let{
|
|
176
|
-
context:l}=u,
|
|
176
|
+
context:l}=u,m=this._validateNestedValue(t,r,o,i,c,a);return Object.keys(m).length>0?m:(l.value=o[i],this._runFieldValidators(
|
|
177
177
|
t,r,o,i,l,c))}_normalizeDefault(t,n,{fieldPath:r,currentObject:o,containerKey:i,objectBeforeCast:s,options:c,settings:a}){
|
|
178
|
-
let u={...o};return
|
|
178
|
+
let u={...o};return p(u,i,n),{errors:this._normalizeAndValidateValue(t,n,r,u,i,s,c,a),value:u[i]}}_validateNestedValue(t,n,r,o,i,s){
|
|
179
179
|
if(t.type==="object"){let a=this._resolveObjectFieldMode(n,t);return a.kind==="nested"?this._validateNestedObjectSchema(
|
|
180
180
|
a,n,r,o,i,s):a.kind==="map"?this._validateObjectValues(n,r,o,a.valuesConfig,i,s):{}}if(t.type!=="array")return{};let c=this.
|
|
181
181
|
_resolveArrayItemsConfig(n,t);return c?this._validateArrayItems(n,r,o,c,i,s):{}}_validateNestedObjectSchema(t,n,r,o,i,s){
|
|
182
182
|
let c=r[o],a=t.allowAdditionalProperties?this._extractKnownObjectFields(c,t.schema):c,u=t.schema._validateWithOperation(
|
|
183
|
-
s.operationName,s.operation,a,
|
|
184
|
-
c,t.schema,u.validatedObject):u.validatedObject),
|
|
185
|
-
entries(t))Object.hasOwn(n.structure,o)&&
|
|
186
|
-
keys(t)){if(!Object.hasOwn(n.structure,i)){
|
|
187
|
-
r))Object.hasOwn(o,i)||
|
|
188
|
-
keys(c)){let
|
|
189
|
-
u,this._singleErrorMap(this._typeError(
|
|
190
|
-
"replace",o.schema.operations.replace,d,
|
|
191
|
-
_normalizeAndValidateValue(o.definition,d,
|
|
192
|
-
return u}_validateArrayItems(t,n,r,o,i,s){let c=n[r],a=c.slice(),u={};
|
|
193
|
-
if(this._fieldToBeSkipped(
|
|
194
|
-
u,this._singleErrorMap(this._typeError(
|
|
195
|
-
"replace",o.schema.operations.replace,a[l],
|
|
196
|
-
let d=this._normalizeAndValidateValue(o.definition,a[l],
|
|
183
|
+
s.operationName,s.operation,a,x(i,n));return p(r,o,t.allowAdditionalProperties?this._mergeKnownAndPassthroughObjectFields(
|
|
184
|
+
c,t.schema,u.validatedObject):u.validatedObject),F(u.errors,n)}_extractKnownObjectFields(t,n){let r={};for(let[o,i]of Object.
|
|
185
|
+
entries(t))Object.hasOwn(n.structure,o)&&p(r,o,i);return r}_mergeKnownAndPassthroughObjectFields(t,n,r){let o={};for(let i of Object.
|
|
186
|
+
keys(t)){if(!Object.hasOwn(n.structure,i)){p(o,i,t[i]);continue}Object.hasOwn(r,i)&&p(o,i,r[i])}for(let[i,s]of Object.entries(
|
|
187
|
+
r))Object.hasOwn(o,i)||p(o,i,s);return o}_validateObjectValues(t,n,r,o,i,s){let c=n[r],a={...c},u={};p(n,r,a);for(let l of Object.
|
|
188
|
+
keys(c)){let m=z(t,l);if(this._fieldToBeSkipped(m,i))continue;let d=a[l];if(d===void 0){s.rejectExplicitUndefined?this._mergeErrors(
|
|
189
|
+
u,this._singleErrorMap(this._typeError(m).errorObject)):delete a[l];continue}if(o.kind==="schema"){let h=o.schema._validateWithOperation(
|
|
190
|
+
"replace",o.schema.operations.replace,d,x(i,m));p(a,l,h.validatedObject),this._mergeErrors(u,F(h.errors,m));continue}let f=this.
|
|
191
|
+
_normalizeAndValidateValue(o.definition,d,m,a,l,c,i,this._buildArrayItemSettings(o.definition,s));this._mergeErrors(u,f)}
|
|
192
|
+
return u}_validateArrayItems(t,n,r,o,i,s){let c=n[r],a=c.slice(),u={};p(n,r,a);for(let l=0;l<a.length;l++){let m=z(t,l);
|
|
193
|
+
if(this._fieldToBeSkipped(m,i))continue;if(!Object.hasOwn(c,l)||a[l]===void 0){s.rejectExplicitUndefined?this._mergeErrors(
|
|
194
|
+
u,this._singleErrorMap(this._typeError(m).errorObject)):delete a[l];continue}if(o.kind==="schema"){let f=o.schema._validateWithOperation(
|
|
195
|
+
"replace",o.schema.operations.replace,a[l],x(i,m));p(a,l,f.validatedObject),this._mergeErrors(u,F(f.errors,m));continue}
|
|
196
|
+
let d=this._normalizeAndValidateValue(o.definition,a[l],m,a,l,c,i,this._buildArrayItemSettings(o.definition,s));this._mergeErrors(
|
|
197
197
|
u,d)}return u}_validateField(t,n,r,o,i){if(!Object.hasOwn(this.structure,t))return{};let s=this.structure[t];if(this._fieldToBeSkipped(
|
|
198
198
|
t,o))return{};let c=i.isFieldPresent(t),a=n[t],u=a===void 0;return i.enforceRequired&&s.required&&(!c||u)&&!this._paramToBeSkipped(
|
|
199
199
|
"required",o.skipParams,t)?this._singleErrorMap({field:t,code:"REQUIRED",message:"Field is required",params:{}}):c?u?i.rejectExplicitUndefined?
|
|
200
200
|
this._singleErrorMap(this._typeError(t).errorObject):{}:this._normalizeAndValidateValue(s,a,t,r,t,n,o,i):{}}_validateWithOperation(t,n,r,o){
|
|
201
201
|
this._assertSupportedOptions(o);let i={},s={...r},c=this._buildOperationSettings(t,n,r);for(let a of Object.keys(r))Object.
|
|
202
|
-
hasOwn(this.structure,a)||
|
|
202
|
+
hasOwn(this.structure,a)||p(i,a,{field:a,code:"FIELD_NOT_ALLOWED",message:"Field not allowed",params:{}});for(let a of c.
|
|
203
203
|
targetFieldNames){let u=this._validateField(a,r,s,o,c);this._mergeErrors(i,u)}if(c.applyDefaults){for(let a of Object.keys(
|
|
204
204
|
this.structure))if(!c.isFieldPresent(a)&&this.structure[a].defaultTo!==void 0){let u=this.structure[a],l=typeof u.defaultTo==
|
|
205
|
-
"function"?u.defaultTo():u.defaultTo,
|
|
206
|
-
options:o,settings:c});if(this._mergeErrors(i,
|
|
205
|
+
"function"?u.defaultTo():u.defaultTo,m=this._normalizeDefault(u,l,{fieldPath:a,currentObject:s,containerKey:a,objectBeforeCast:r,
|
|
206
|
+
options:o,settings:c});if(this._mergeErrors(i,m.errors),Object.keys(m.errors).length>0)continue;p(s,a,m.value),c.defaultedFields.
|
|
207
207
|
add(a)}}return{validatedObject:this._buildOperationResult(r,s,c),errors:i}}_validateSelectedTree(t,n,r,o,i=""){let s={},
|
|
208
|
-
c={};for(let a of ht(Object.keys(t))){let u=
|
|
208
|
+
c={};for(let a of ht(Object.keys(t))){let u=St(i,a);if(!Object.hasOwn(this.structure,a))throw new Error(`Unknown schema \
|
|
209
209
|
path "${u}".`);let l=this._validateSelectedField(a,t[a],n,c,r,o,u);this._mergeErrors(s,l)}return{validatedObject:c,errors:s}}_validateSelectedField(t,n,r,o,i,s,c){
|
|
210
210
|
if(!Object.hasOwn(this.structure,t))return{};let a=this.structure[t],u=n.self===!0,l=dt(n);if(this._fieldToBeSkipped(c,i))
|
|
211
|
-
return{};let
|
|
211
|
+
return{};let m=Object.hasOwn(r,t),d=r[t],f={};if(!m){if(u&&s.enforceRequired&&a.required&&!this._paramToBeSkipped("requi\
|
|
212
212
|
red",i.skipParams,c)&&this._mergeErrors(f,this._singleErrorMap({field:c,code:"REQUIRED",message:"Field is required",params:{}})),
|
|
213
|
-
u&&s.applyDefaults&&a.defaultTo!==void 0){let
|
|
214
|
-
a,
|
|
215
|
-
Object.keys(A.errors).length===0&&
|
|
216
|
-
this._typeError(c).errorObject):{};let h={[t]:d};if(u){let
|
|
217
|
-
hasOwn(h,t)&&h[t]!==void 0?
|
|
213
|
+
u&&s.applyDefaults&&a.defaultTo!==void 0){let w=typeof a.defaultTo=="function"?a.defaultTo():a.defaultTo,A=this._normalizeDefault(
|
|
214
|
+
a,w,{fieldPath:c,currentObject:o,containerKey:t,objectBeforeCast:r,options:i,settings:s});this._mergeErrors(f,A.errors),
|
|
215
|
+
Object.keys(A.errors).length===0&&p(o,t,A.value)}return f}if(d===void 0)return u&&s.rejectExplicitUndefined?this._singleErrorMap(
|
|
216
|
+
this._typeError(c).errorObject):{};let h={[t]:d};if(u){let w=this._normalizeAndValidateValue(a,d,c,h,t,r,i,s);return Object.
|
|
217
|
+
hasOwn(h,t)&&h[t]!==void 0?p(o,t,h[t]):h[t]===null&&p(o,t,null),w}if(!l)return{};let E=this._castValue(a,d,c,h,t,r,i,s);
|
|
218
218
|
if(Object.keys(E.errors).length>0)return E.errors;if(!E.shouldContinue)return{};let j=this._validateSelectedDescendants(
|
|
219
|
-
a,n.children,c,h,t,i,s);return ne(h[t])&&
|
|
219
|
+
a,n.children,c,h,t,i,s);return ne(h[t])&&p(o,t,h[t]),j}_validateSelectedDescendants(t,n,r,o,i,s,c){if(t.type==="object"){
|
|
220
220
|
let a=this._resolveObjectFieldMode(r,t);if(a.kind!=="nested")throw new Error(`Schema path "${r}" does not support nested\
|
|
221
|
-
field selection.`);let u=o[i];if(!
|
|
222
|
-
return
|
|
221
|
+
field selection.`);let u=o[i];if(!T(u))return{};let l=a.schema._validateSelectedTree(n,u,x(s,r),{...c,defaultedFields:new Set});
|
|
222
|
+
return p(o,i,l.validatedObject),F(l.errors,r)}if(t.type==="array"){let a=this._resolveArrayItemsConfig(r,t);if(!a)throw new Error(
|
|
223
223
|
`Schema path "${r}" does not define array items for nested selection.`);return this._validateSelectedArrayItems(r,o,i,a,
|
|
224
224
|
n,s,c)}throw new Error(`Schema path "${r}" does not support nested field selection.`)}_validateSelectedArrayItems(t,n,r,o,i,s,c){
|
|
225
|
-
let a=[],u=n[r],l={};
|
|
226
|
-
t,
|
|
227
|
-
h);if(this._fieldToBeSkipped(f,s))continue;if(!Object.hasOwn(u,d)){E&&c.rejectExplicitUndefined&&
|
|
228
|
-
errorObject);continue}let
|
|
229
|
-
if(o.kind==="schema"){if(E){let R=o.schema._validateWithOperation("replace",o.schema.operations.replace,
|
|
230
|
-
|
|
231
|
-
h.children,
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
if(Object.keys(
|
|
236
|
-
o.definition,h.children,f,
|
|
225
|
+
let a=[],u=n[r],l={};p(n,r,a);for(let m of ht(Object.keys(i))){if(!/^[0-9]+$/.test(m))throw new Error(`Schema path "${z(
|
|
226
|
+
t,m)}" is invalid because array segments must use numeric indexes.`);let d=Number(m),f=z(t,d),h=i[m],E=h.self===!0,j=dt(
|
|
227
|
+
h);if(this._fieldToBeSkipped(f,s))continue;if(!Object.hasOwn(u,d)){E&&c.rejectExplicitUndefined&&p(l,f,this._typeError(f).
|
|
228
|
+
errorObject);continue}let w=u[d];if(w===void 0){E&&c.rejectExplicitUndefined&&p(l,f,this._typeError(f).errorObject);continue}
|
|
229
|
+
if(o.kind==="schema"){if(E){let R=o.schema._validateWithOperation("replace",o.schema.operations.replace,w,x(s,f));ne(R.validatedObject)&&
|
|
230
|
+
p(a,d,R.validatedObject),this._mergeErrors(l,F(R.errors,f));continue}if(!j)continue;let I=o.schema._validateSelectedTree(
|
|
231
|
+
h.children,w,x(s,f),{...c,operationName:"replace",operation:o.schema.operations.replace,defaultedFields:new Set});ne(I.validatedObject)&&
|
|
232
|
+
p(a,d,I.validatedObject),this._mergeErrors(l,F(I.errors,f));continue}let A=this._buildArrayItemSettings(o.definition,c),
|
|
233
|
+
b=[w];if(E){let I=this._normalizeAndValidateValue(o.definition,w,f,b,0,u,s,A);Object.hasOwn(b,0)&&b[0]!==void 0?p(a,d,b[0]):
|
|
234
|
+
b[0]===null&&p(a,d,null),this._mergeErrors(l,I);continue}if(!j)continue;let $=this._castValue(o.definition,w,f,b,0,u,s,A);
|
|
235
|
+
if(Object.keys($.errors).length>0){this._mergeErrors(l,$.errors);continue}if(!$.shouldContinue)continue;let B=this._validateSelectedDescendants(
|
|
236
|
+
o.definition,h.children,f,b,0,s,A);ne(b[0])&&p(a,d,b[0]),this._mergeErrors(l,B)}return l}validateWith(t,n,r={}){if(!Object.
|
|
237
237
|
hasOwn(this.operations,t))throw new Error(`Unknown operation "${t}".`);let o=this.operations[t];return this._assertPlainObjectInput(
|
|
238
238
|
t,n),this._validateWithOperation(t,o,n,r)}validateAt(t,n,r={}){this._assertPlainObjectInput("validateAt",n);let o=je(t),
|
|
239
|
-
{operationName:i,operation:s,validationOptions:c}=this._resolvePathValidationRequest(r),a=this._validateSelectedTree(
|
|
240
|
-
[t]),n,c,this._buildOperationSettings(i,s,n));return{validatedValue:
|
|
239
|
+
{operationName:i,operation:s,validationOptions:c}=this._resolvePathValidationRequest(r),a=this._validateSelectedTree(pt(
|
|
240
|
+
[t]),n,c,this._buildOperationSettings(i,s,n));return{validatedValue:Nr(a.validatedObject,o),errors:a.errors}}validatePaths(t,n,r={}){
|
|
241
241
|
if(this._assertPlainObjectInput("validatePaths",n),!Array.isArray(t)||t.length===0)throw new Error("validatePaths() expe\
|
|
242
242
|
cts a non-empty array of schema paths.");let{operationName:o,operation:i,validationOptions:s}=this._resolvePathValidationRequest(
|
|
243
|
-
r);return this._validateSelectedTree(
|
|
243
|
+
r);return this._validateSelectedTree(pt(t),n,s,this._buildOperationSettings(o,i,n))}_installOperationMethods(){for(let t of Object.
|
|
244
244
|
keys(this.operations)){if(t in this)throw new Error(`Operation name "${t}" is reserved and cannot be used as a schema me\
|
|
245
|
-
thod.`);this[t]=(n,r={})=>this.validateWith(t,n,r)}}toJsonSchema(t={}){return lt(this,t)}getFieldDefinitions(){return
|
|
245
|
+
thod.`);this[t]=(n,r={})=>this.validateWith(t,n,r)}}toJsonSchema(t={}){return lt(this,t)}getFieldDefinitions(){return _e(
|
|
246
246
|
this.structure)}getFieldDefinition(t){if(typeof t!="string"||t.trim()==="")throw new Error("Field path must be a non-emp\
|
|
247
|
-
ty string.");let n=Ie(this,je(t.trim()));return n===null?null:
|
|
248
|
-
return!n||typeof n.messages!="object"||n.messages===null?Object.freeze({}):
|
|
249
|
-
keys(t))Object.hasOwn(this.structure,o)&&this.structure[o][n]&&
|
|
250
|
-
{"":e},"",e)),a=!c;for(;c<i.length;)a=!0,s[c]=
|
|
251
|
-
|
|
252
|
-
"object"||typeof e=="function")&&typeof e.then=="function"}function
|
|
247
|
+
ty string.");let n=Ie(this,je(t.trim()));return n===null?null:_e(n)}getFieldMessages(t){let n=this.getFieldDefinition(t);
|
|
248
|
+
return!n||typeof n.messages!="object"||n.messages===null?Object.freeze({}):_e(n.messages)}cleanup(t,n){let r={};for(let o of Object.
|
|
249
|
+
keys(t))Object.hasOwn(this.structure,o)&&this.structure[o][n]&&p(r,o,t[o]);return r}};var{parse:Wo,stringify:kr}=JSON,{keys:Xo}=Object,Mr=String,Dr="string";var bt="object",Fr=(e,t)=>t;var Et=(e,t,n)=>{let r=Mr(t.push(n)-1);return e.set(n,r),r};var wt=(e,t,n)=>{let r=t&&typeof t===bt?(l,m)=>l===""||-1<t.indexOf(l)?m:void 0:t||Fr,o=new Map,i=[],s=[],c=+Et(o,i,r.call(
|
|
250
|
+
{"":e},"",e)),a=!c;for(;c<i.length;)a=!0,s[c]=kr(i[c++],u,n);return"["+s.join(",")+"]";function u(l,m){if(a)return a=!a,
|
|
251
|
+
m;let d=r.call(this,l,m);switch(typeof d){case bt:if(d===null)return d;case Dr:return o.get(d)||Et(o,i,d)}return d}};var Vr=new Set(["true","1","yes","y","on"]),qr=new Set(["false","0","no","n","off"]);function Br(e){return e!==null&&(typeof e==
|
|
252
|
+
"object"||typeof e=="function")&&typeof e.then=="function"}function Tt(e){if(typeof e=="number")return Number.isFinite(e)?
|
|
253
253
|
e:null;if(typeof e=="bigint"){let t=Number(e);return Number.isSafeInteger(t)?t:null}if(typeof e=="string"){let t=e.trim();
|
|
254
254
|
if(t==="")return null;let n=Number(t);return Number.isFinite(n)?n:null}return null}function Ne(e,t){if(Object.is(e,t))return!0;
|
|
255
255
|
if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.
|
|
256
256
|
source===t.source&&e.flags===t.flags;if(Array.isArray(e)||Array.isArray(t)){if(!Array.isArray(e)||!Array.isArray(t)||e.length!==
|
|
257
257
|
t.length)return!1;for(let o=0;o<e.length;o++)if(!Ne(e[o],t[o]))return!1;return!0}if(e===null||t===null||typeof e!="objec\
|
|
258
258
|
t"||typeof t!="object"||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;let n=Object.keys(e),r=Object.keys(
|
|
259
|
-
t);if(n.length!==r.length)return!1;for(let o of n)if(!Object.hasOwn(t,o)||!Ne(e[o],t[o]))return!1;return!0}var
|
|
259
|
+
t);if(n.length!==r.length)return!1;for(let o of n)if(!Object.hasOwn(t,o)||!Ne(e[o],t[o]))return!1;return!0}var Ur={install(e){
|
|
260
260
|
let{addType:t,addValidator:n}=e;t("none",r=>r.value),t("file",r=>{let o=r.value;o==null&&r.throwTypeError();let i=typeof o;
|
|
261
261
|
if(i==="string"||i==="number"||i==="boolean"){let s=o.toString();return r.definition.noTrim?s:s.trim()}r.throwTypeError()}),
|
|
262
262
|
t("string",r=>{let o=r.value;if(o==null)return"";let i=typeof o;if(i==="string"||i==="number"||i==="boolean"){let s=o.toString();
|
|
263
|
-
return r.definition.noTrim?s:s.trim()}r.throwTypeError()}),t("blob",r=>r.value),t("number",r=>{let o=
|
|
264
|
-
null&&r.throwTypeError(),o}),t("integer",r=>{let o=
|
|
265
|
-
o}),t("epochMilliseconds",r=>{let o=
|
|
263
|
+
return r.definition.noTrim?s:s.trim()}r.throwTypeError()}),t("blob",r=>r.value),t("number",r=>{let o=Tt(r.value);return o===
|
|
264
|
+
null&&r.throwTypeError(),o}),t("integer",r=>{let o=Tt(r.value);return(o===null||!Number.isInteger(o))&&r.throwTypeError(),
|
|
265
|
+
o}),t("epochMilliseconds",r=>{let o=pe(r.value,864e13);return o===null&&r.throwTypeError(),o}),t("epochSeconds",r=>{let o=pe(
|
|
266
266
|
r.value,864e10);return o===null&&r.throwTypeError(),o}),t("dateTime",r=>{let o=H(r.definition,r.fieldName);return rt(r.value,
|
|
267
267
|
o)||r.throwTypeError(),r.value}),t("date",r=>(et(r.value)||r.throwTypeError(),r.value)),t("time",r=>{let o=H(r.definition,
|
|
268
268
|
r.fieldName);return tt(r.value,o)||r.throwTypeError(),r.value}),t("array",r=>r.definition.type==="array"&&!Array.isArray(
|
|
269
|
-
r.value)?[r.value]:r.value),t("object",r=>(
|
|
270
|
-
r.value)}catch{try{return
|
|
269
|
+
r.value)?[r.value]:r.value),t("object",r=>(T(r.value)||r.throwTypeError(),r.value)),t("serialize",r=>{try{return JSON.stringify(
|
|
270
|
+
r.value)}catch{try{return wt(r.value)}catch{r.throwTypeError()}}}),t("boolean",r=>{if(typeof r.value=="boolean")return r.
|
|
271
271
|
value;if(typeof r.value=="number"){if(r.value===1)return!0;if(r.value===0)return!1;r.throwTypeError()}if(typeof r.value==
|
|
272
272
|
"bigint"){if(r.value===1n)return!0;if(r.value===0n)return!1;r.throwTypeError()}if(typeof r.value=="string"){let o=String(
|
|
273
273
|
r.definition.stringFalseWhen||"false").trim().toLowerCase(),i=String(r.definition.stringTrueWhen||"true").trim().toLowerCase(),
|
|
274
|
-
s=r.value.trim().toLowerCase(),c=new Set([...
|
|
274
|
+
s=r.value.trim().toLowerCase(),c=new Set([...qr,o]),a=new Set([...Vr,i]);if(c.has(s))return!1;if(a.has(s))return!0}r.throwTypeError()}),
|
|
275
275
|
t("id",r=>{if(typeof r.value=="number"){if(Number.isSafeInteger(r.value)&&r.value>0)return r.value;r.throwTypeError()}if(typeof r.
|
|
276
276
|
value=="bigint"){if(r.value>0n&&r.value<=BigInt(Number.MAX_SAFE_INTEGER))return Number(r.value);r.throwTypeError()}if(typeof r.
|
|
277
277
|
value=="string"){let o=r.value.trim();/^[1-9][0-9]*$/.test(o)||r.throwTypeError();let i=Number(o);return Number.isSafeInteger(
|
|
278
278
|
i)||r.throwTypeError(),i}r.throwTypeError()}),n("minLength",r=>{r.value!==void 0&&r.definition.type==="string"&&r.value.
|
|
279
279
|
toString&&r.value.toString().length<r.parameterValue&&r.throwParamError("MIN_LENGTH",`Length must be at least ${r.parameterValue}\
|
|
280
|
-
characters.`,{min:r.parameterValue,actual:r.value.toString().length})}),n("min",r=>{r.value!==void 0&&
|
|
280
|
+
characters.`,{min:r.parameterValue,actual:r.value.toString().length})}),n("min",r=>{r.value!==void 0&&M(r.definition)&&
|
|
281
281
|
typeof r.value=="number"&&r.value<r.parameterValue&&r.throwParamError("MIN_VALUE",`Value must be at least ${r.parameterValue}\
|
|
282
282
|
.`,{min:r.parameterValue,actual:r.value})}),n("maxLength",r=>{r.value!==void 0&&r.definition.type==="string"&&r.value.toString&&
|
|
283
283
|
r.value.toString().length>r.parameterValue&&r.throwParamError("MAX_LENGTH",`Length must be no more than ${r.parameterValue}\
|
|
284
|
-
characters.`,{max:r.parameterValue,actual:r.value.toString().length})}),n("max",r=>{r.value!==void 0&&
|
|
284
|
+
characters.`,{max:r.parameterValue,actual:r.value.toString().length})}),n("max",r=>{r.value!==void 0&&M(r.definition)&&
|
|
285
285
|
typeof r.value=="number"&&r.value>r.parameterValue&&r.throwParamError("MAX_VALUE",`Value must be no more than ${r.parameterValue}\
|
|
286
286
|
.`,{max:r.parameterValue,actual:r.value})}),n("enum",r=>{if(!Array.isArray(r.parameterValue))throw new Error(`Enum for ${r.
|
|
287
287
|
fieldName} must be an array.`);r.parameterValue.some(i=>Ne(i,r.value))||r.throwParamError("ENUM_VALUE","Value must match\
|
|
@@ -292,7 +292,7 @@ r.throwParamError("PATTERN","Value does not match the required pattern.",{patter
|
|
|
292
292
|
parameterValue){if(r.definition.type!=="boolean")throw new Error(`strictBoolean can only be used on boolean fields (${r.
|
|
293
293
|
fieldName}).`);typeof r.valueBeforeCast!="boolean"&&r.throwParamError("STRICT_BOOLEAN","Value must be a boolean.")}}),n(
|
|
294
294
|
"validator",r=>{if(typeof r.parameterValue!="function")throw new Error(`Validator for ${r.fieldName} must be a function.`);
|
|
295
|
-
let o=r.parameterValue(r.value,r.object,r);if(
|
|
295
|
+
let o=r.parameterValue(r.value,r.object,r);if(Br(o))throw new Error(`Custom validator for "${r.fieldName}" must be synch\
|
|
296
296
|
ronous.`);typeof o=="string"&&r.throwParamError("CUSTOM_VALIDATOR_FAILED",o)}),n("uppercase",r=>{if(typeof r.value=="str\
|
|
297
297
|
ing")return r.value.toUpperCase()}),n("lowercase",r=>{if(typeof r.value=="string")return r.value.toLowerCase()}),n("leng\
|
|
298
298
|
th",r=>{if(typeof r.value=="string")return r.value.substr(0,r.parameterValue);Number.isInteger(Number(r.valueBeforeCast))&&
|
|
@@ -301,152 +301,172 @@ ed character range.",{max:r.parameterValue,actual:String(r.valueBeforeCast).leng
|
|
|
301
301
|
typeof r.value=="string"&&r.value===""&&r.throwParamError("NOT_EMPTY","Field cannot be empty.")}),n("required",()=>{}),n(
|
|
302
302
|
"unsigned",()=>{}),n("precision",()=>{}),n("scale",()=>{}),n("temporalPrecision",r=>{if(r.definition.type!=="time"&&r.definition.
|
|
303
303
|
type!=="dateTime")throw new Error(`temporalPrecision can only be used on time or dateTime fields (${r.fieldName}).`)}),n(
|
|
304
|
-
"nullable",()=>{}),n("nullOnEmpty",()=>{}),n("defaultTo",()=>{})}},
|
|
305
|
-
unction")throw new Error(`Type handler for '${t}' must be a function.`);
|
|
306
|
-
on")throw new Error(`Validator handler for '${t}' must be a function.`);
|
|
307
|
-
for(let[n,r]of Object.entries(e))
|
|
304
|
+
"nullable",()=>{}),n("nullOnEmpty",()=>{}),n("defaultTo",()=>{})}},_t=Ur;var It=new WeakMap,Rt=new WeakMap,Nt=Symbol.for("json-rest-schema.registry-metadata");function Hr(e,t,n){if(typeof n!="f\
|
|
305
|
+
unction")throw new Error(`Type handler for '${t}' must be a function.`);p(e,t,n)}function Kr(e,t,n){if(typeof n!="functi\
|
|
306
|
+
on")throw new Error(`Validator handler for '${t}' must be a function.`);p(e,t,n)}function se(e={}){let t=Object.create(null);
|
|
307
|
+
for(let[n,r]of Object.entries(e))p(t,n,r);return t}function Jr(e,t){if(typeof e.install!="function")throw new Error("Plu\
|
|
308
308
|
gin must have an install method.");e.install(t)}function At(e,t,n){It.set(e,t),Rt.set(e,n),Object.defineProperty(e,Nt,{value:Object.
|
|
309
|
-
freeze({getTypes:()=>t,getValidators:()=>n}),enumerable:!1,configurable:!1,writable:!1})}function
|
|
309
|
+
freeze({getTypes:()=>t,getValidators:()=>n}),enumerable:!1,configurable:!1,writable:!1})}function Gr(e){if(!e||typeof e!=
|
|
310
310
|
"object"&&typeof e!="function")return null;let t=It.get(e),n=Rt.get(e);if(t&&n)return{types:t,validators:n};let r=e[Nt];
|
|
311
311
|
return r&&typeof r.getTypes=="function"&&typeof r.getValidators=="function"?{types:r.getTypes(),validators:r.getValidators()}:
|
|
312
312
|
typeof e=="object"&&e.types&&typeof e.types=="object"&&e.validators&&typeof e.validators=="object"&&typeof e.create=="fu\
|
|
313
313
|
nction"&&typeof e.replace=="function"&&typeof e.patch=="function"&&typeof e.toJsonSchema=="function"?{types:e.types,validators:e.
|
|
314
|
-
validators}:null}function
|
|
315
|
-
for(let[r,o]of Object.entries(t)){if(Object.hasOwn(e,r)&&!
|
|
316
|
-
conflicting ${n} "${r}".`);
|
|
317
|
-
t)};let o=Object.create(null),i=Object.create(null);for(let s of r){let c=
|
|
314
|
+
validators}:null}function Wr(e){return e.length===1&&Array.isArray(e[0])?e[0]:e}function Xr(e,t){return e===t}function jt(e,t,n){
|
|
315
|
+
for(let[r,o]of Object.entries(t)){if(Object.hasOwn(e,r)&&!Xr(e[r],o))throw new Error(`Cannot merge schema factories with\
|
|
316
|
+
conflicting ${n} "${r}".`);p(e,r,o)}}function Yr(e,t,n){let r=Wr(n).filter(Boolean);if(r.length<1)return{types:se(e),validators:se(
|
|
317
|
+
t)};let o=Object.create(null),i=Object.create(null);for(let s of r){let c=Gr(s);if(!c)throw new Error("Factory sources m\
|
|
318
318
|
ust be schema instances or schema factories created by json-rest-schema.");jt(o,c.types,"type"),jt(i,c.validators,"valid\
|
|
319
319
|
ator")}return{types:o,validators:i}}function Pt({types:e={},validators:t={},installCore:n=!0}={}){let r=se(e),o=se(t),i=(s,c={})=>{
|
|
320
|
-
let a=new
|
|
321
|
-
|
|
322
|
-
{types:c.types,validators:c.validators,installCore:!1})},n&&i.use(
|
|
323
|
-
e))
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
320
|
+
let a=new V(s,r,o,c.operations);return At(a,r,o),a};return At(i,r,o),i.addType=(s,c)=>{Hr(r,s,c)},i.addValidator=(s,c)=>{
|
|
321
|
+
Kr(o,s,c)},i.use=s=>{Jr(s,{addType:i.addType,addValidator:i.addValidator})},i.createFactory=(...s)=>{let c=Yr(r,o,s);return Pt(
|
|
322
|
+
{types:c.types,validators:c.validators,installCore:!1})},n&&i.use(_t),i}var g=Pt({installCore:!0});function O(e,t=new WeakSet){if(!e||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.getOwnPropertyNames(
|
|
323
|
+
e))O(e[n],t);return Object.freeze(e)}var Qr=new Set(["create","replace","patch"]),Si=Object.freeze({REQUIRED:{messageKey:"required",code:"kernel.validation.f\
|
|
324
|
+
ield.required"},TYPE_CAST_FAILED:{messageKey:"default",code:"kernel.validation.field.typeCastFailed"},NOT_NULLABLE:{messageKey:"\
|
|
325
|
+
default",code:"kernel.validation.field.notNullable"},MIN_LENGTH:{messageKey:"minLength",code:"kernel.validation.field.mi\
|
|
326
|
+
nLength"},MAX_LENGTH:{messageKey:"maxLength",code:"kernel.validation.field.maxLength"},MIN_VALUE:{messageKey:"min",code:"\
|
|
327
|
+
kernel.validation.field.minValue"},MAX_VALUE:{messageKey:"max",code:"kernel.validation.field.maxValue"},PATTERN:{messageKey:"\
|
|
328
|
+
pattern",code:"kernel.validation.field.pattern"},ENUM_VALUE:{messageKey:"enum",code:"kernel.validation.field.enumValue"},
|
|
329
|
+
FIELD_NOT_ALLOWED:{messageKey:"additionalProperties",code:"kernel.validation.field.notAllowed"},CUSTOM_VALIDATOR_FAILED:{
|
|
330
|
+
messageKey:"validator",code:""},STRICT_BOOLEAN:{messageKey:"default",code:"kernel.validation.field.strictBoolean"},RANGE_EXCEEDED:{
|
|
331
|
+
messageKey:"default",code:"kernel.validation.field.rangeExceeded"},NOT_EMPTY:{messageKey:"default",code:"kernel.validati\
|
|
332
|
+
on.field.notEmpty"}}),Oi=Object.freeze({code:"kernel.validation.invalid",message:"Invalid value."});function J(e){return!!e&&
|
|
333
|
+
typeof e=="object"&&typeof e.create=="function"&&typeof e.replace=="function"&&typeof e.patch=="function"&&typeof e.toJsonSchema==
|
|
334
|
+
"function"}function Ct(e=null,{defaultMode:t="create",context:n="schema definition.mode"}={}){let r=S(e),o=y(t).toLowerCase()||"cre\
|
|
335
|
+
ate",i=Object.prototype.hasOwnProperty.call(r,"mode")?y(r.mode).toLowerCase():"";if(!i)return o;if(!Qr.has(i))throw new TypeError(
|
|
336
|
+
`${n} must be one of: create, replace, patch.`);return i}function en(e){return!!e&&typeof e=="object"&&!Array.isArray(e)&&(Object.prototype.hasOwnProperty.call(e,"schema")||Object.
|
|
330
337
|
prototype.hasOwnProperty.call(e,"mode"))}function P(e,{context:t="schema definition",defaultMode:n=""}={}){if(e==null)return null;
|
|
331
|
-
if(!
|
|
332
|
-
call(r,"schema"))throw new TypeError(`${t}.schema is required.`);if(!
|
|
333
|
-
e a json-rest-schema schema instance.`);let o={schema:r.schema},i=y(n).toLowerCase();return o.mode=
|
|
334
|
-
"patch",context:`${t}.mode`}),Object.freeze(o)}function q(e){let t=P(e,{context:"cursor list item",defaultMode:"replace"});return
|
|
335
|
-
items:t.schema},nextCursor:{type:"string",required:!1,nullable:!0,minLength:1}}),mode:"replace"})}var
|
|
336
|
-
mode:"patch"});var
|
|
337
|
-
{...
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
338
|
+
if(!en(e))throw new TypeError(`${t} must be a schema definition object.`);let r=S(e);if(!Object.prototype.hasOwnProperty.
|
|
339
|
+
call(r,"schema"))throw new TypeError(`${t}.schema is required.`);if(!J(r.schema))throw new TypeError(`${t}.schema must b\
|
|
340
|
+
e a json-rest-schema schema instance.`);let o={schema:r.schema},i=y(n).toLowerCase();return o.mode=Ct(r,{defaultMode:i||
|
|
341
|
+
"patch",context:`${t}.mode`}),Object.freeze(o)}function q(e){let t=P(e,{context:"cursor list item",defaultMode:"replace"});return O({schema:g({items:{type:"array",required:!0,
|
|
342
|
+
items:t.schema},nextCursor:{type:"string",required:!1,nullable:!0,minLength:1}}),mode:"replace"})}var tn=g({cursor:{type:"id",required:!1},limit:{type:"number",required:!1,min:1,unsigned:!0}}),rn=Object.freeze({schema:tn,
|
|
343
|
+
mode:"patch"});var zt=Object.freeze({type:"string",pattern:"^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d)?$",minLength:5}),nn=Object.freeze(
|
|
344
|
+
{...zt,nullable:!0});var qi=new Map([{keyword:"required",code:"kernel.validation.required"},{keyword:"type",code:"kernel.validation.type"},{keyword:"\
|
|
345
|
+
minLength",code:"kernel.validation.minLength"},{keyword:"maxLength",code:"kernel.validation.maxLength"},{keyword:"minimu\
|
|
346
|
+
m",code:"kernel.validation.minimum"},{keyword:"maximum",code:"kernel.validation.maximum"},{keyword:"exclusiveMinimum",code:"\
|
|
347
|
+
kernel.validation.exclusiveMinimum"},{keyword:"exclusiveMaximum",code:"kernel.validation.exclusiveMaximum"},{keyword:"mu\
|
|
348
|
+
ltipleOf",code:"kernel.validation.multipleOf"},{keyword:"pattern",code:"kernel.validation.pattern"},{keyword:"format",code:"\
|
|
349
|
+
kernel.validation.format"},{keyword:"enum",code:"kernel.validation.enum"},{keyword:"const",code:"kernel.validation.const"},
|
|
350
|
+
{keyword:"minItems",code:"kernel.validation.minItems"},{keyword:"maxItems",code:"kernel.validation.maxItems"},{keyword:"\
|
|
351
|
+
additionalItems",code:"kernel.validation.additionalItems"},{keyword:"uniqueItems",code:"kernel.validation.uniqueItems"},
|
|
352
|
+
{keyword:"minProperties",code:"kernel.validation.minProperties"},{keyword:"maxProperties",code:"kernel.validation.maxPro\
|
|
353
|
+
perties"},{keyword:"additionalProperties",code:"kernel.validation.additionalProperties"},{keyword:"propertyNames",code:"\
|
|
354
|
+
kernel.validation.propertyNames"},{keyword:"oneOf",code:"kernel.validation.oneOf"},{keyword:"anyOf",code:"kernel.validat\
|
|
355
|
+
ion.anyOf"},{keyword:"not",code:"kernel.validation.not"},{keyword:"if",code:"kernel.validation.if"}].map(({keyword:e,code:t})=>[
|
|
356
|
+
e,t]));var _="^[1-9][0-9]*$",Pe=O({type:"string",minLength:1,pattern:_}),sn=O({...Pe,nullable:!0}),an=O({schema:g({recordId:{...Pe,
|
|
357
|
+
required:!0,messages:{pattern:{code:"kernel.validation.recordIdInvalid",message:"Record id must be a canonical positive \
|
|
358
|
+
integer string."}}}}),mode:"patch"});var cn=Object.freeze(["body","query","params","input","output"]);function L(e,t="patch",{context:n="schema definition"}={}){
|
|
359
|
+
return P({schema:e,mode:t},{context:n,defaultMode:"patch"})}function ve(e,{context:t="schema definition",defaultMode:n="\
|
|
360
|
+
patch"}={}){if(e==null)return e;let r=J(e)?{schema:e,mode:n}:e;return P(r,{context:t,defaultMode:n})}function un(e,t={}){
|
|
341
361
|
let n=y(e).toLowerCase();if(n==="output")return"replace";if(n!=="body")return"patch";let r=y(t?.method).toUpperCase();return r===
|
|
342
|
-
"POST"?"create":r==="PUT"?"replace":"patch"}function
|
|
343
|
-
`defineResource operations.${e} must be an object.`);let r=
|
|
344
|
-
hasOwn(r,"messages")&&(o.messages=n);for(let i of
|
|
345
|
-
defineResource operations.${e}.${i}`,defaultMode:s})}return
|
|
346
|
-
entries(n)){let s=y(o);s&&(r[s]=
|
|
347
|
-
espace"}={}){let n=y(e);if(!n)throw new TypeError(`${t} requires a non-empty namespace.`);return n}function ae(e={}){let t=
|
|
348
|
-
e),n=Object.hasOwn(t,"messages")?
|
|
349
|
-
t.operations,n)})}var Ce=8e3,
|
|
350
|
-
|
|
351
|
-
maxLength:Ce}}),
|
|
352
|
-
Sn=
|
|
353
|
-
minLength:1,maxLength:128},conversationId:{type:"string",required:!1,minLength:1,pattern:
|
|
354
|
-
minLength:1,maxLength:Ce},history:{type:"array",required:!1,maxItems:
|
|
355
|
-
schema:
|
|
356
|
-
minLength:1,maxLength:32}})
|
|
357
|
-
nullable:!0,minLength:1,pattern:
|
|
358
|
-
minLength:1,pattern:
|
|
362
|
+
"POST"?"create":r==="PUT"?"replace":"patch"}function ln(e,t=null,n=null){if(!t||typeof t!="object"||Array.isArray(t))throw new TypeError(
|
|
363
|
+
`defineResource operations.${e} must be an object.`);let r=S(t),o={...r};n&&typeof n=="object"&&!Array.isArray(n)&&!Object.
|
|
364
|
+
hasOwn(r,"messages")&&(o.messages=n);for(let i of cn){if(!Object.hasOwn(r,i))continue;let s=un(i,r);o[i]=ve(r[i],{context:`\
|
|
365
|
+
defineResource operations.${e}.${i}`,defaultMode:s})}return O(o)}function fn(e=null,t=null){let n=S(e),r={};for(let[o,i]of Object.
|
|
366
|
+
entries(n)){let s=y(o);s&&(r[s]=ln(s,i,t))}return Object.freeze(r)}function dn(e,{context:t="defineResource resource.nam\
|
|
367
|
+
espace"}={}){let n=y(e);if(!n)throw new TypeError(`${t} requires a non-empty namespace.`);return n}function ae(e={}){let t=S(
|
|
368
|
+
e),n=Object.hasOwn(t,"messages")?S(t.messages):null;return O({...t,namespace:dn(t.namespace),...n?{messages:n}:{},operations:fn(
|
|
369
|
+
t.operations,n)})}var Ce=8e3,Lt=20,hn=200,$t=500,ze={type:"array",required:!1,maxItems:10,items:{type:"string",minLength:1,maxLength:256}},
|
|
370
|
+
yn=g({attachmentIds:ze,role:{type:"string",required:!0,enum:["user","assistant"]},content:{type:"string",required:!0,minLength:1,
|
|
371
|
+
maxLength:Ce}}),gn=g({locale:{type:"string",required:!1,maxLength:64},timezone:{type:"string",required:!1,maxLength:64}}),
|
|
372
|
+
Sn=g({attachmentIds:ze,integrationId:{type:"string",required:!1,minLength:1,maxLength:128},messageId:{type:"string",required:!0,
|
|
373
|
+
minLength:1,maxLength:128},conversationId:{type:"string",required:!1,minLength:1,pattern:_},input:{type:"string",required:!0,
|
|
374
|
+
minLength:1,maxLength:Ce},history:{type:"array",required:!1,maxItems:Lt,items:yn},clientContext:{type:"object",required:!1,
|
|
375
|
+
schema:gn}}),On=g({cursor:{type:"id",required:!1},limit:{type:"number",required:!1,min:1,max:hn},status:{type:"string",required:!1,
|
|
376
|
+
minLength:1,maxLength:32}}),Le=g({id:{type:"string",required:!0,minLength:1,pattern:_},workspaceId:{type:"string",required:!0,
|
|
377
|
+
nullable:!0,minLength:1,pattern:_},title:{type:"string",required:!0},createdByUserId:{type:"string",required:!0,nullable:!0,
|
|
378
|
+
minLength:1,pattern:_},status:{type:"string",required:!0},provider:{type:"string",required:!0},model:{type:"string",required:!0},
|
|
359
379
|
surfaceId:{type:"string",required:!0},startedAt:{type:"string",required:!0,minLength:1},endedAt:{type:"string",required:!0,
|
|
360
380
|
nullable:!0,minLength:1},messageCount:{type:"integer",required:!0,min:0},metadata:{type:"object",required:!0,additionalProperties:!0},
|
|
361
|
-
createdAt:{type:"string",required:!0,minLength:1},updatedAt:{type:"string",required:!0,minLength:1}}),bn=
|
|
362
|
-
ring",required:!0,minLength:1,pattern:
|
|
363
|
-
string",required:!0,nullable:!0,minLength:1,pattern:
|
|
381
|
+
createdAt:{type:"string",required:!0,minLength:1},updatedAt:{type:"string",required:!0,minLength:1}}),bn=g({id:{type:"st\
|
|
382
|
+
ring",required:!0,minLength:1,pattern:_},conversationId:{type:"string",required:!0,minLength:1,pattern:_},workspaceId:{type:"\
|
|
383
|
+
string",required:!0,nullable:!0,minLength:1,pattern:_},seq:{type:"integer",required:!0,min:1},role:{type:"string",required:!0,
|
|
364
384
|
minLength:1},kind:{type:"string",required:!0,minLength:1},clientMessageSid:{type:"string",required:!0},actorUserId:{type:"\
|
|
365
|
-
string",required:!0,nullable:!0,minLength:1,pattern:
|
|
366
|
-
string",required:!0,minLength:1},metadata:{type:"object",required:!0,additionalProperties:!0}}),
|
|
367
|
-
id",required:!0}}),
|
|
385
|
+
string",required:!0,nullable:!0,minLength:1,pattern:_},contentText:{type:"string",required:!0,nullable:!0},createdAt:{type:"\
|
|
386
|
+
string",required:!0,minLength:1},metadata:{type:"object",required:!0,additionalProperties:!0}}),En=g({conversationId:{type:"\
|
|
387
|
+
id",required:!0}}),wn=g({page:{type:"number",required:!1,min:1},pageSize:{type:"number",required:!1,min:1,max:$t}}),Tn=g(
|
|
368
388
|
{page:{type:"integer",required:!0,min:1},pageSize:{type:"integer",required:!0,min:1},total:{type:"integer",required:!0,min:0},
|
|
369
|
-
totalPages:{type:"integer",required:!0,min:1},conversation:{type:"object",required:!0,schema
|
|
370
|
-
items:bn}}),_n
|
|
371
|
-
method:"GET",query:
|
|
372
|
-
operations,i!==!0&&Object.assign(s,i),n[r]=s}return n}function
|
|
373
|
-
context:t="requireCrudNamespace"}={}){let n=
|
|
374
|
-
function Mt(e=""){return`${
|
|
375
|
-
h","delete"]),
|
|
389
|
+
totalPages:{type:"integer",required:!0,min:1},conversation:{type:"object",required:!0,schema:Le},entries:{type:"array",required:!0,
|
|
390
|
+
items:bn}}),_n=L(Le,"replace"),An=ae({namespace:"assistant",operations:{chatStream:{method:"POST",body:Sn},conversationsList:{
|
|
391
|
+
method:"GET",query:On,output:q(L(Le,"replace"))},conversationMessagesList:{method:"GET",params:En,query:wn,output:Tn}}});function kt(e={},t=""){let n={};for(let[r,o]of Object.entries(e)){let i=o?.operations?.[t];if(!i)continue;let s={...o};delete s.
|
|
392
|
+
operations,i!==!0&&Object.assign(s,i),n[r]=s}return n}function jn(e=""){return y(e).toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function $e(e,{
|
|
393
|
+
context:t="requireCrudNamespace"}={}){let n=jn(e);if(!n)throw new TypeError(`${t} requires a non-empty namespace.`);return n}
|
|
394
|
+
function Mt(e=""){return`${$e(e,{context:"resolveCrudRecordChangedEvent"}).replace(/-/g,"_")}.record.changed`}var In=Object.freeze(["list","view","create","patch","delete"]),Dt=Object.freeze(["list","view","create","replace","patc\
|
|
395
|
+
h","delete"]),Rn=O({list:{method:"GET",outputKind:"list",includeRealtimeEvent:!0},view:{method:"GET",outputKind:"record"},
|
|
376
396
|
create:{method:"POST",outputKind:"record",bodyOperation:"create",bodyMode:"create",explicitBodyKeys:["createBody","body"]},
|
|
377
397
|
replace:{method:"PUT",outputKind:"record",bodyOperation:"replace",bodyMode:"replace",explicitBodyKeys:["replaceBody","bo\
|
|
378
398
|
dy","createBody"]},patch:{method:"PATCH",outputKind:"record",bodyOperation:"patch",bodyMode:"patch",explicitBodyKeys:["p\
|
|
379
399
|
atchBody","body"]},delete:{method:"DELETE",outputKind:"delete"}});function Ft(){return{type:"string",required:!0,minLength:1,
|
|
380
|
-
pattern:
|
|
381
|
-
t)}function
|
|
382
|
-
requires explicit crud.output or at least one schema field with operations.output.");let n={id:Ft(),...t},r=
|
|
383
|
-
(n[r]={type:"object",required:!1})
|
|
384
|
-
atch",n="patch"){let r=
|
|
400
|
+
pattern:_}}function Nn(e={}){return y(e?.contract?.lookup?.containerKey)}function ke(e={},t="output"){return kt(e?.schema,
|
|
401
|
+
t)}function Pn(e={}){let t=ke(e,"output");if(Object.keys(t).length<1)throw new Error("defineCrudResource derived output \
|
|
402
|
+
requires explicit crud.output or at least one schema field with operations.output.");let n={id:Ft(),...t},r=Nn(e);return r&&
|
|
403
|
+
(n[r]={type:"object",required:!1}),L(g(n),"replace",{context:"defineCrudResource derived output"})}function vn(e={},t="p\
|
|
404
|
+
atch",n="patch"){let r=ke(e,t);if(t==="replace"&&Object.keys(r).length===0&&(r=ke(e,"create")),Object.keys(r).length<1){
|
|
385
405
|
let o=t==="replace"?"operations.replace or operations.create":`operations.${t}`;throw new Error(`defineCrudResource deri\
|
|
386
|
-
ved ${t} body requires explicit crud.${t}Body or at least one schema field with ${o}.`)}return
|
|
387
|
-
CrudResource derived ${t} body`})}function
|
|
388
|
-
defineCrudResource delete output"})}function
|
|
389
|
-
includes(n))return n;throw new Error(`${t} must be one of: ${Dt.join(", ")}. Received: ${JSON.stringify(e)}.`)}function
|
|
390
|
-
let t=
|
|
391
|
-
let t=Array.isArray(e?.crudOperations)?e.crudOperations:
|
|
392
|
-
dResource crudOperations"});r.has(i)||(r.add(i),n.push(i))}return n}function
|
|
406
|
+
ved ${t} body requires explicit crud.${t}Body or at least one schema field with ${o}.`)}return L(g(r),n,{context:`define\
|
|
407
|
+
CrudResource derived ${t} body`})}function Cn(){return L(g({id:Ft(),deleted:{type:"boolean",required:!0}}),"replace",{context:"\
|
|
408
|
+
defineCrudResource delete output"})}function zn(e="",{context:t="crud operation name"}={}){let n=y(e).toLowerCase();if(Dt.
|
|
409
|
+
includes(n))return n;throw new Error(`${t} must be one of: ${Dt.join(", ")}. Received: ${JSON.stringify(e)}.`)}function Ln(e=""){
|
|
410
|
+
let t=Rn[e];if(t)return t;throw new Error(`createCrudOperationDefinition received unsupported operation "${e}".`)}function $n(e={}){
|
|
411
|
+
let t=Array.isArray(e?.crudOperations)?e.crudOperations:In,n=[],r=new Set;for(let o of t){let i=zn(o,{context:"defineCru\
|
|
412
|
+
dResource crudOperations"});r.has(i)||(r.add(i),n.push(i))}return n}function kn(e={},t=[]){for(let n of Array.isArray(t)?
|
|
393
413
|
t:[])if(Object.hasOwn(e,n)&&e[n]!=null)return e[n];return null}function G(e={},t=[],{context:n="defineCrudResource schem\
|
|
394
|
-
a definition",defaultMode:r="patch"}={}){let o=
|
|
414
|
+
a definition",defaultMode:r="patch"}={}){let o=kn(e,t);return o==null?null:ve(o,{context:n,defaultMode:r})}function Mn(e,t={}){
|
|
395
415
|
let n=G(t,["listOutput"],{context:"defineCrudResource crud.listOutput",defaultMode:"replace"});if(n)return n;let r=G(t,[
|
|
396
416
|
"listItemOutput"],{context:"defineCrudResource crud.listItemOutput",defaultMode:"replace"});return r?q(r):q(e())}function Dn(e={},t={}){
|
|
397
417
|
let n=null,r=!1;return function(){return r||(n=G(t,["output"],{context:"defineCrudResource crud.output",defaultMode:"rep\
|
|
398
|
-
lace"})||
|
|
399
|
-
bodyOperation}.body`,defaultMode:e.bodyMode});return r||
|
|
418
|
+
lace"})||Pn(e),r=!0),n}}function Fn(e,t={},n={}){let r=G(n,e.explicitBodyKeys,{context:`defineCrudResource operations.${e.
|
|
419
|
+
bodyOperation}.body`,defaultMode:e.bodyMode});return r||vn(t,e.bodyOperation,e.bodyMode)}function xn(e,t,n={}){if(e.outputKind===
|
|
400
420
|
"list")return Mn(t,n);if(e.outputKind==="record")return t();if(e.outputKind==="delete")return G(n,["deleteOutput"],{context:"\
|
|
401
|
-
defineCrudResource operations.delete.output",defaultMode:"replace"})||
|
|
421
|
+
defineCrudResource operations.delete.output",defaultMode:"replace"})||Cn();throw new Error(`resolveCrudOutputDefinition \
|
|
402
422
|
received unsupported output kind "${e.outputKind}".`)}function Vn(e,{namespace:t="",resource:n={},crudConfig:r={},resolveRecordOutputDefinition:o}={}){
|
|
403
|
-
let i=
|
|
404
|
-
i,n,r)),s.output=xn(i,o,r),s}function
|
|
405
|
-
space"}),n=
|
|
406
|
-
return o}function
|
|
407
|
-
0?{realtime:o}:{}}}function
|
|
408
|
-
i,s]of Object.entries(r))Object.hasOwn(o,i)||(o[i]=s);return o}function xt(e={}){let t=
|
|
409
|
-
return ae({...o,operations:
|
|
410
|
-
minLength:1,maxLength:160},workspaceId:{type:"string",required:!0,nullable:!0,minLength:1,pattern:
|
|
411
|
-
ect",required:!0,schema:
|
|
423
|
+
let i=Ln(e),s={method:i.method};return i.includeRealtimeEvent&&(s.realtime={events:[Mt(t)]}),i.bodyOperation&&(s.body=Fn(
|
|
424
|
+
i,n,r)),s.output=xn(i,o,r),s}function qn(e={}){let t=$e(e?.namespace,{context:"createDefaultCrudOperations resource.name\
|
|
425
|
+
space"}),n=S(e?.crud),r=Dn(e,n),o={};for(let i of $n(e))o[i]=Vn(i,{namespace:t,resource:e,crudConfig:n,resolveRecordOutputDefinition:r});
|
|
426
|
+
return o}function Bn(e,t){let n=S(e),r=S(t),o={...S(n.realtime),...S(r.realtime)};return{...n,...r,...Object.keys(o).length>
|
|
427
|
+
0?{realtime:o}:{}}}function Un(e={},t={}){let n=S(e),r=S(t),o={};for(let[i,s]of Object.entries(n))o[i]=Bn(s,r[i]);for(let[
|
|
428
|
+
i,s]of Object.entries(r))Object.hasOwn(o,i)||(o[i]=s);return o}function xt(e={}){let t=S(e),{crud:n,crudOperations:r,...o}=t;
|
|
429
|
+
return ae({...o,operations:Un(qn(t),o.operations)})}var ce=12e3,Hn=g({targetSurfaceId:{type:"string",required:!0,minLength:1,maxLength:64},scopeKey:{type:"string",required:!0,
|
|
430
|
+
minLength:1,maxLength:160},workspaceId:{type:"string",required:!0,nullable:!0,minLength:1,pattern:_},settings:{type:"obj\
|
|
431
|
+
ect",required:!0,schema:g({systemPrompt:{type:"string",required:!0,maxLength:ce}})}}),Kn=g({systemPrompt:{type:"string",
|
|
412
432
|
required:!1,maxLength:ce,messages:{maxLength:`Assistant system prompt must be at most ${ce} characters.`,default:"Assist\
|
|
413
|
-
ant system prompt must be valid text."}}}),Jn=xt({namespace:"assistantConfig",crudOperations:["view","patch"],crud:{output:
|
|
414
|
-
patchBody:
|
|
415
|
-
istant-settings"}),
|
|
416
|
-
{kind:"jsonapi-resource",responseType:"assistant-conversation-messages",responseKind:"record"});var
|
|
417
|
-
t)?{}:t}catch{return{}}}var
|
|
433
|
+
ant system prompt must be valid text."}}}),Jn=xt({namespace:"assistantConfig",crudOperations:["view","patch"],crud:{output:Hn,
|
|
434
|
+
patchBody:Kn}});var Vt=O({kind:"jsonapi-resource",responseType:"assistant-settings",responseKind:"record"}),Gn=O({...Vt,requestType:"ass\
|
|
435
|
+
istant-settings"}),Wn=O({kind:"jsonapi-resource",responseType:"assistant-conversations",responseKind:"collection"}),Xn=O(
|
|
436
|
+
{kind:"jsonapi-resource",responseType:"assistant-conversation-messages",responseKind:"record"});var Yn=Object.freeze({settingsChanged:"assistant.settings.changed"});var qt=Object.freeze(["active","completed","failed","aborted"]),Xs=new Set(qt);function ue(e){if(e==null)return{};try{let t=typeof e=="string"?JSON.parse(e):e;return!t||typeof t!="object"||Array.isArray(
|
|
437
|
+
t)?{}:t}catch{return{}}}var ra=Object.freeze([/^(?:let me|i(?:'|’)ll|i will|i(?:'|’)m going to|i am going to)\s+(?:(?:first|now|quickly)\s+)*(?:analy[sz]e|call|check|confirm|do|execute|fetch|find|inspect|investigate|load|look up|open|prepare|query|read|retrieve|review|run|search|summarize|test|try|use|verify)\b/iu,
|
|
418
438
|
/^(?:analy[sz]ing|calling|checking|confirming|executing|fetching|finding|inspecting|investigating|loading|looking up|opening|preparing|querying|reading|retrieving|reviewing|running|searching|summarizing|testing|trying|using|verifying)\b/iu,
|
|
419
|
-
/^(?:one moment|please wait)\b/iu]);function
|
|
420
|
-
function
|
|
439
|
+
/^(?:one moment|please wait)\b/iu]);function Me(e){return Y(e,{fallback:null})}function Bt(e){return Zn(e,{fallback:null})}function v(e){return Y(e,{fallback:null})}
|
|
440
|
+
function De(e,t,n){let r=Me(n);return r?e.where(t,r):e.whereNull(t)}function Fe(e){return!e||typeof e!="object"||Array.isArray(
|
|
421
441
|
e)?null:JSON.stringify(e)}function W(e){if(!e)return"";let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?
|
|
422
|
-
"":t.toISOString()}function
|
|
423
|
-
t_messages",turnRequestsTable:"assistant_turn_requests"}),le="New conversation";function
|
|
424
|
-
return{id:qe(e.id,{fallback:""}),workspaceId:
|
|
442
|
+
"":t.toISOString()}function Ut(e){return Qn(e,{fallback:""})||""}var X=Object.freeze({configTable:"assistant_config",conversationsTable:"assistant_conversations",messagesTable:"assistan\
|
|
443
|
+
t_messages",turnRequestsTable:"assistant_turn_requests"}),le="New conversation";function Kt(e){let t=k(e);if(!t)throw new TypeError("conversationsRepository requires surfaceId.");return t}function xe(e={}){
|
|
444
|
+
return{id:qe(e.id,{fallback:""}),workspaceId:Bt(e.workspace_id),title:String(e.title||le),createdByUserId:e.created_by_user_id==
|
|
425
445
|
null?null:qe(e.created_by_user_id,{fallback:null}),status:String(e.status||"active"),provider:String(e.provider||""),model:String(
|
|
426
446
|
e.model||""),surfaceId:String(e.surface_id||""),startedAt:W(e.started_at),endedAt:e.ended_at?W(e.ended_at):null,messageCount:Number(
|
|
427
|
-
e.message_count||0),metadata:ue(e.metadata_json),createdAt:W(e.created_at),updatedAt:W(e.updated_at)}}function
|
|
428
|
-
defaultLimit:t=20,maxLimit:n=200}={}){let r=
|
|
429
|
-
min(n,o)):t;return{cursor:r,limit:i}}function
|
|
430
|
-
if(!e||typeof e!="function")throw new Error("createConversationsRepository requires knex client.");let t=
|
|
431
|
-
let l=
|
|
432
|
-
requires its database transaction.");await
|
|
433
|
-
l),f=await
|
|
434
|
-
let f=
|
|
435
|
-
d",f).where("c.created_by_user_id",h).where("c.surface_id",E);
|
|
436
|
-
|
|
437
|
-
{workspace_id:
|
|
438
|
-
"active",provider:y(a.provider),model:y(a.model),surface_id:d,message_count:Math.max(0,Number(a.messageCount||0)),metadata_json:
|
|
439
|
-
a.metadata),started_at:a.startedAt?new Date(a.startedAt):
|
|
440
|
-
h=
|
|
441
|
-
let
|
|
447
|
+
e.message_count||0),metadata:ue(e.metadata_json),createdAt:W(e.created_at),updatedAt:W(e.updated_at)}}function ro(e={},{
|
|
448
|
+
defaultLimit:t=20,maxLimit:n=200}={}){let r=v(e.cursor)||"",o=Number(e.limit),i=Number.isInteger(o)&&o>0?Math.max(1,Math.
|
|
449
|
+
min(n,o)):t;return{cursor:r,limit:i}}function Ve(e){return e(`${X.conversationsTable} as c`).select("c.*")}function Ka(e){
|
|
450
|
+
if(!e||typeof e!="function")throw new Error("createConversationsRepository requires knex client.");let t=eo(e);async function n(a,u={}){
|
|
451
|
+
let l=v(a);if(!l)return null;let m=u?.trx||e;if(u.forUpdate===!0){if(!u.trx)throw new TypeError("Locking a conversation \
|
|
452
|
+
requires its database transaction.");await m(X.conversationsTable).where({id:l}).update({id:l})}let d=Ve(m).where("c.id",
|
|
453
|
+
l),f=await Ht(d,u).first();return f?xe(f):null}async function r(a,{workspaceId:u=null,actorUserId:l=null,surfaceId:m=""}={},d={}){
|
|
454
|
+
let f=v(a),h=v(l),E=k(m);if(!f||!h||!E)return null;let j=d?.trx||e;d.forUpdate===!0&&await n(f,d);let w=Ve(j).where("c.i\
|
|
455
|
+
d",f).where("c.created_by_user_id",h).where("c.surface_id",E);De(w,"c.workspace_id",u);let A=await Ht(w,d).first();return A?
|
|
456
|
+
xe(A):null}async function o(a={},u={}){let l=u?.trx||e,m=new Date,d=Kt(a.surfaceId),f=await l(X.conversationsTable).insert(
|
|
457
|
+
{workspace_id:Me(a.workspaceId),created_by_user_id:v(a.createdByUserId),title:y(a.title)||le,status:y(a.status).toLowerCase()||
|
|
458
|
+
"active",provider:y(a.provider),model:y(a.model),surface_id:d,message_count:Math.max(0,Number(a.messageCount||0)),metadata_json:Fe(
|
|
459
|
+
a.metadata),started_at:a.startedAt?new Date(a.startedAt):m,ended_at:a.endedAt?new Date(a.endedAt):null,created_at:m,updated_at:m}),
|
|
460
|
+
h=Ut(f);if(!h)throw new Error("conversationsRepository.create could not resolve inserted id.");return n(h,{trx:l})}async function i(a,u={},l={}){
|
|
461
|
+
let m=v(a);if(!m)return null;let d=l?.trx||e,f={};return Object.hasOwn(u,"title")&&(f.title=y(u.title)||le),Object.hasOwn(
|
|
442
462
|
u,"status")&&(f.status=y(u.status).toLowerCase()||"active"),Object.hasOwn(u,"provider")&&(f.provider=y(u.provider)),Object.
|
|
443
|
-
hasOwn(u,"model")&&(f.model=y(u.model)),Object.hasOwn(u,"surfaceId")&&(f.surface_id=
|
|
463
|
+
hasOwn(u,"model")&&(f.model=y(u.model)),Object.hasOwn(u,"surfaceId")&&(f.surface_id=Kt(u.surfaceId)),Object.hasOwn(u,"me\
|
|
444
464
|
ssageCount")&&(f.message_count=Math.max(0,Number(u.messageCount||0))),Object.hasOwn(u,"endedAt")&&(f.ended_at=u.endedAt?
|
|
445
|
-
new Date(u.endedAt):null),Object.hasOwn(u,"metadata")&&(f.metadata_json=
|
|
446
|
-
new Date,await d(X.conversationsTable).where({id:
|
|
447
|
-
surfaceId:l="",pagination:
|
|
448
|
-
trx||e,{cursor:
|
|
449
|
-
a);let
|
|
450
|
-
"desc").limit(A+1),I=B.length>A,R=I?B.slice(0,A):B,Jt=R.map(
|
|
451
|
-
return{items:Jt,nextCursor:
|
|
452
|
-
create:o,updateById:i,listForActorScope:s,transaction:c})}export{
|
|
465
|
+
new Date(u.endedAt):null),Object.hasOwn(u,"metadata")&&(f.metadata_json=Fe(u.metadata)),Object.keys(f).length>0&&(f.updated_at=
|
|
466
|
+
new Date,await d(X.conversationsTable).where({id:m}).update(f)),n(m,{trx:d})}async function s({workspaceId:a=null,actorUserId:u=null,
|
|
467
|
+
surfaceId:l="",pagination:m={},filters:d={}}={},f={}){let h=v(u),E=k(l);if(!h||!E)return{items:[],nextCursor:null};let j=f?.
|
|
468
|
+
trx||e,{cursor:w,limit:A}=ro(m),b=Ve(j).where("c.created_by_user_id",h).where("c.surface_id",E);b=De(b,"c.workspace_id",
|
|
469
|
+
a);let $=y(d.status).toLowerCase();$&&(b=b.where("c.status",$)),w&&(b=b.where("c.id","<",w));let B=await b.orderBy("c.id",
|
|
470
|
+
"desc").limit(A+1),I=B.length>A,R=I?B.slice(0,A):B,Jt=R.map(xe),Gt=I&&R.length>0?qe(R[R.length-1].id,{fallback:null}):null;
|
|
471
|
+
return{items:Jt,nextCursor:Gt}}async function c(a){return to(e,a)}return Object.freeze({withTransaction:t,findById:n,findByIdForActorScope:r,
|
|
472
|
+
create:o,updateById:i,listForActorScope:s,transaction:c})}export{Ka as createRepository};
|