@vielzeug/forge 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_utils.cjs +1 -1
- package/dist/_utils.cjs.map +1 -1
- package/dist/_utils.d.ts.map +1 -1
- package/dist/_utils.js +1 -0
- package/dist/_utils.js.map +1 -1
- package/dist/core/array.cjs +1 -1
- package/dist/core/array.cjs.map +1 -1
- package/dist/core/array.d.ts.map +1 -1
- package/dist/core/array.js +63 -32
- package/dist/core/array.js.map +1 -1
- package/dist/core/asyncQueue.cjs.map +1 -1
- package/dist/core/asyncQueue.d.ts +2 -2
- package/dist/core/asyncQueue.js.map +1 -1
- package/dist/core/context.cjs +1 -1
- package/dist/core/context.cjs.map +1 -1
- package/dist/core/context.d.ts +2 -5
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +72 -109
- package/dist/core/context.js.map +1 -1
- package/dist/core/fields.cjs +2 -0
- package/dist/core/fields.cjs.map +1 -0
- package/dist/core/fields.d.ts +52 -0
- package/dist/core/fields.d.ts.map +1 -0
- package/dist/core/fields.js +310 -0
- package/dist/core/fields.js.map +1 -0
- package/dist/core/lifecycle.cjs +1 -1
- package/dist/core/lifecycle.cjs.map +1 -1
- package/dist/core/lifecycle.d.ts +3 -1
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +10 -14
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/core/notifier.cjs +2 -0
- package/dist/core/notifier.cjs.map +1 -0
- package/dist/core/notifier.d.ts +33 -0
- package/dist/core/notifier.d.ts.map +1 -0
- package/dist/core/notifier.js +78 -0
- package/dist/core/notifier.js.map +1 -0
- package/dist/core/observe.cjs +1 -1
- package/dist/core/observe.cjs.map +1 -1
- package/dist/core/observe.d.ts +8 -6
- package/dist/core/observe.d.ts.map +1 -1
- package/dist/core/observe.js +34 -45
- package/dist/core/observe.js.map +1 -1
- package/dist/core/scope.cjs +1 -1
- package/dist/core/scope.cjs.map +1 -1
- package/dist/core/scope.d.ts +6 -3
- package/dist/core/scope.d.ts.map +1 -1
- package/dist/core/scope.js +105 -156
- package/dist/core/scope.js.map +1 -1
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +3 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -2
- package/dist/errors.js.map +1 -1
- package/dist/forge.cjs +1 -1
- package/dist/forge.cjs.map +1 -1
- package/dist/forge.iife.js +1 -1
- package/dist/forge.iife.js.map +1 -1
- package/dist/forge.js +1 -1
- package/dist/forge.js.map +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.cjs.map +1 -1
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +45 -56
- package/dist/form.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +4 -4
- package/dist/types.cjs +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +53 -36
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
- package/dist/core/validation.cjs +0 -2
- package/dist/core/validation.cjs.map +0 -1
- package/dist/core/validation.d.ts +0 -23
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/validation.js +0 -173
- package/dist/core/validation.js.map +0 -1
- package/dist/core/values.cjs +0 -2
- package/dist/core/values.cjs.map +0 -1
- package/dist/core/values.d.ts +0 -31
- package/dist/core/values.d.ts.map +0 -1
- package/dist/core/values.js +0 -149
- package/dist/core/values.js.map +0 -1
package/dist/forge.iife.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Forge=(function(e,t,n){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var r=class e extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}static is(t){return t instanceof e}},i=class extends r{constructor(){super(`Cannot modify a disposed form`)}},a=class extends r{},o=class extends r{},s=class extends r{errors;constructor(e){super(`Form validation failed`),this.errors=e}},c=`_form`,l={onBlur:{touchOnBlur:!0,validateOnBlur:!0},onChange:{touchOnBlur:!0,validateOnChange:!0},onSubmit:{},onTouched:{touchOnBlur:!0,validateOnBlur:!0,validateOnTouch:!0}},u=!globalThis.__FORGE_PROD__;function d(e){u&&console.warn(`[@vielzeug/forge] ${e}`)}function f(e){u&&e()}var p=new Set([`__proto__`,`constructor`,`prototype`]);function m(e){return e.split(`.`).every(e=>!p.has(e))}function h(e){if(_(e),!m(e))throw new a(`Unsafe key '${e}': segments __proto__, constructor, and prototype are reserved.`)}var g=new Set;function _(e){e.includes(`.`)&&(e.split(`.`).length<=5||g.has(e)||(g.add(e),f(()=>{d(`Path '${v(e,120)}' exceeds typed depth limits and may be treated as an untyped string path.`)})))}function v(e,t=200){return e.replace(/\p{C}/gu,`?`).slice(0,t)}function y(...e){let t=e.filter(e=>e!=null);if(t.length!==0)return t.length===1?t[0]:AbortSignal.any(t)}function b(e){if(!e)return;if(typeof e==`function`)return e;let t=e;return(e,n)=>{if(n?.aborted)return;let r=t.safeParse(e);if(r.success)return;let i={};for(let e of r.error.issues){let t=e.path.join(`.`)||`_form`;m(t)&&(i[t]||(i[t]=e.message))}return i}}function x(e){let r=new Map;for(let[t,n]of Object.entries(e.validators??{}))h(t),r.set(t,n);let a=b(e.validator),o=e.connect??{},s=typeof e.defaultValues==`function`,c=typeof e.defaultValues==`function`?void 0:e.defaultValues,l=new Map(Object.entries((0,t.flattenPaths)(c??{}))),u=new Map(l),d=new Map,f=new Set,p=new Set,m=new Map,g=new Set,_=new Map,v=new AbortController,y=null,x=null,S=new Map,C=new Map,w=new Map,T=!1,E=0,D=!1,O=new Map,k=new Set;function A(e){return O.has(e)||O.set(e,(0,n.signal)(L(e),{equals:(e,t)=>e.value===t.value&&e.error===t.error&&e.hasError===t.hasError&&e.touched===t.touched&&e.dirty===t.dirty})),O.get(e)}function j(){y=null}function M(){x=null}function N(){return x??=Object.freeze(Object.fromEntries(d))}function P(){return Object.freeze({errors:N(),isDirty:p.size>0,isLoading:s,isSubmitting:T,isTouched:f.size>0,isValid:d.size===0,isValidating:m.size>0,submitCount:E,touchedFields:Object.freeze([...f]),validatingFields:Object.freeze([...m.keys()])})}let F=(0,n.signal)(P());function I(){return F.value}function L(e){let t=d.get(e);return{dirty:p.has(e),error:t,hasError:t!==void 0,touched:f.has(e),value:u.get(e)}}function R(e){let t=S.get(e);if(t)return t;let n=Object.freeze(L(e));return S.set(e,n),n}function z(e){if(!D)if(j(),x=null,e===void 0)S.clear(),(0,n.batch)(()=>{F.value=P();for(let[e,t]of O)t.value=L(e)});else if(typeof e==`string`)S.delete(e),(0,n.batch)(()=>{F.value=P();let t=O.get(e);t&&(t.value=L(e))});else{let t=[...e];for(let e of t)S.delete(e);(0,n.batch)(()=>{F.value=P();for(let e of t){let t=O.get(e);t&&(t.value=L(e))}})}}function B(){if(D)throw new i}function V(e){B();try{(0,n.batch)(e)}catch(e){throw z(),e}}return{arrayCache:C,baseline:l,batch:V,buildFieldState:L,get cachedErrors(){return x},set cachedErrors(e){x=e},get cachedValues(){return y},set cachedValues(e){y=e},computeErrors:N,computeState:P,connectDefaults:o,dirty:p,disposeController:v,get disposed(){return D},set disposed(e){D=e},ensureNotDisposed:B,fieldCtrls:_,fieldErrors:d,fieldSignals:O,fieldStateCache:S,formStateSignal:F,formValidator:a,getFieldSnapshot:R,getOrCreateFieldSignal:A,getStateSnapshot:I,invalidateErrors:M,invalidateValues:j,get isSubmittingState(){return T},set isSubmittingState(e){T=e},get loadingState(){return s},set loadingState(e){s=e},requestNotify:z,rippleSubs:k,runCtrls:g,scopeCache:w,store:u,get submitCount(){return E},set submitCount(e){E=e},touched:f,validatingRuns:m,validators:r}}function S(e){function t(){e.disposed=!0,e.disposeController.abort();for(let t of e.fieldCtrls.values())t.abort();e.fieldCtrls.clear(),e.runCtrls.clear(),e.arrayCache.clear(),e.scopeCache.clear();for(let t of e.rippleSubs)t.dispose();e.rippleSubs.clear(),e.fieldSignals.clear()}function n(){return e.ensureNotDisposed(),Object.freeze({baseline:Object.freeze(Object.fromEntries(e.baseline)),dirty:Object.freeze([...e.dirty]),errors:Object.freeze(Object.fromEntries(e.fieldErrors)),store:Object.freeze(Object.fromEntries(e.store)),submitCount:e.submitCount,touched:Object.freeze([...e.touched])})}function r(t){e.ensureNotDisposed();for(let t of e.runCtrls)t.abort();for(let t of e.fieldCtrls.values())t.abort();e.runCtrls.clear(),e.fieldCtrls.clear(),e.validatingRuns.clear(),e.store.clear(),e.baseline.clear(),e.fieldErrors.clear(),e.touched.clear(),e.dirty.clear();for(let[n,r]of Object.entries(t.store))m(n)&&e.store.set(n,r);for(let[n,r]of Object.entries(t.baseline))m(n)&&e.baseline.set(n,r);for(let[n,r]of Object.entries(t.errors))m(n)&&e.fieldErrors.set(n,r);for(let n of t.touched)m(n)&&e.touched.add(n);for(let n of t.dirty)m(n)&&e.dirty.add(n);e.submitCount=t.submitCount,e.invalidateErrors(),e.invalidateValues(),e.requestNotify()}return{dispose:t,restore:r,snapshot:n}}function C(e){let t=[],n=null,r=null,i=!1,a=null;function o(e){if(!i)if(n){let t=n;n=null,r=null,t({done:!1,value:e})}else t.push(e)}function s(e){if(!i)if(i=!0,r){let t=r;n=null,r=null,t(e)}else a={err:e}}function c(){if(!i&&(i=!0,n)){let e=n;n=null,r=null,e({done:!0,value:void 0})}}function l(){i||(t=[],c(),e?.())}return{fail:s,finish:c,iterator:{next(){if(a){let{err:e}=a;return a=null,Promise.reject(e)}return t.length>0?Promise.resolve({done:!1,value:t.shift()}):i?Promise.resolve({done:!0,value:void 0}):new Promise((e,t)=>{n=e,r=t})},return(){return l(),Promise.resolve({done:!0,value:void 0})},[Symbol.asyncIterator](){return this}},push:o,terminate:l}}function w(e,r){function i(t,r){if(e.disposed)return()=>{};let i=(0,n.watch)(e.formStateSignal,e=>{t(e)});return e.rippleSubs.add(i),r?.sync&&t(e.formStateSignal.value),()=>{i.dispose(),e.rippleSubs.delete(i)}}function a(t,r,i){if(e.disposed)return()=>{};let a=t;h(a);let o=e.getOrCreateFieldSignal(a),s=(0,n.watch)(o,e=>{r(e)});return e.rippleSubs.add(s),i?.sync&&r(o.value),()=>{s.dispose(),e.rippleSubs.delete(s)}}function o(n,i){e.ensureNotDisposed();let a=n;h(a);let o=i?.touchOnBlur??e.connectDefaults.touchOnBlur??!1,s=i?.validateOnBlur??e.connectDefaults.validateOnBlur??!1,c=i?.validateOnChange??e.connectDefaults.validateOnChange??!1,l=i?.validateOnTouch??e.connectDefaults.validateOnTouch??!1,u=i?.debounce??e.connectDefaults.debounce??0,d=null;function f(){u>0?(d!==null&&clearTimeout(d),d=setTimeout(()=>{d=null,!e.disposed&&r.validateFields([n]).catch(e=>{if(!(0,t.isAbortError)(e))throw e})},u)):r.validateFields([n]).catch(e=>{if(!(0,t.isAbortError)(e))throw e})}let p=!1;return{get dirty(){return e.dirty.has(a)},dispose(){p=!0,d!==null&&(clearTimeout(d),d=null)},get disposed(){return p},get error(){return e.fieldErrors.get(a)},onBlur:()=>{e.disposed||(o&&r.touch(n),s&&f())},onChange:t=>{e.disposed||(r.set(n,t),(c||l&&e.touched.has(a))&&f())},[Symbol.dispose](){this.dispose()},get touched(){return e.touched.has(a)},get value(){return e.store.get(a)}}}function s(){let t=C(()=>n());t.push(e.getStateSnapshot());let n=i(e=>{t.push(e)});return e.disposeController.signal.addEventListener(`abort`,()=>t.terminate(),{once:!0}),t.iterator}return{connect:o,subscribe:i,subscribeField:a,[Symbol.asyncIterator]:s}}function T(e,n){let r=`${n}.`;function i(e){return`${n}.${e}`}function a(e){return e===n||e.startsWith(r)}function c(e){return e.startsWith(r)?e.slice(r.length):e}function l(){let t=e.getStateSnapshot(),n=Object.fromEntries(Object.entries(t.errors).filter(([e])=>a(e)).map(([e,t])=>[c(e),t])),r=t.touchedFields.filter(a).map(c),i=t.validatingFields.filter(a).map(c),o=Object.keys(n).length===0,s=[...e.dirty].some(a),l=[...e.touched].some(a),u=i.length>0;return Object.freeze({errors:Object.freeze(n),isDirty:s,isLoading:t.isLoading,isSubmitting:t.isSubmitting,isTouched:l,isValid:o,isValidating:u,submitCount:t.submitCount,touchedFields:Object.freeze(r),validatingFields:Object.freeze(i)})}function u(){let n={};for(let[t,i]of e.store)t.startsWith(r)&&(n[t.slice(r.length)]=i);return(0,t.unflattenPaths)(n)}function d(){let t=new Set;for(let n of e.store.keys())a(n)&&t.add(c(n));for(let n of e.validators.keys())a(n)&&t.add(c(n));return Object.freeze([...t])}function f(){e.ensureNotDisposed();for(let t of e.store.keys())a(t)&&e.touched.add(t);for(let t of e.validators.keys())a(t)&&e.touched.add(t);e.requestNotify()}function p(){e.ensureNotDisposed();for(let t of[...e.touched])a(t)&&e.touched.delete(t);e.requestNotify()}function m(){e.ensureNotDisposed();for(let t of[...e.store.keys()])a(t)&&(e.fieldCtrls.get(t)?.abort(),e.fieldCtrls.delete(t),e.store.set(t,e.baseline.get(t)),e.dirty.delete(t),e.touched.delete(t),e.fieldErrors.delete(t)&&e.invalidateErrors());e.requestNotify()}function h(n){e.ensureNotDisposed();for(let t of[...e.fieldCtrls.keys()])a(t)&&(e.fieldCtrls.get(t)?.abort(),e.fieldCtrls.delete(t));let r=(0,t.flattenPaths)(n);for(let t of[...e.store.keys()])a(t)&&(e.store.delete(t),e.baseline.delete(t),e.dirty.delete(t),e.touched.delete(t),e.fieldErrors.delete(t));e.invalidateErrors();for(let[t,n]of Object.entries(r)){let r=i(t);e.store.set(r,n),e.baseline.set(r,n)}e.requestNotify()}function g(n){e.ensureNotDisposed();let r=(0,t.flattenPaths)(n),a=[];for(let[t,n]of Object.entries(r)){let r=i(t);e.baseline.set(r,n),e.store.set(r,n),e.dirty.delete(r),a.push(r)}e.requestNotify(a)}function _(t){e.ensureNotDisposed();for(let t of[...e.fieldErrors.keys()])a(t)&&e.fieldErrors.delete(t);if(t)for(let[n,r]of Object.entries(t))typeof r==`string`&&e.fieldErrors.set(i(n),r);e.invalidateErrors(),e.requestNotify()}async function v(t,n){if(e.ensureNotDisposed(),t!==void 0&&!Array.isArray(t)&&!(t instanceof AbortSignal)){let r=i(t);await e.runValidationCore([r],`partial`,n);let a=e.fieldErrors.get(r);return{errors:a===void 0?{}:{[t]:a},valid:a===void 0}}if(Array.isArray(t)){let r=t.map(e=>i(e));await e.runValidationCore(r,`partial`,n);let a={};for(let t of r){let n=e.fieldErrors.get(t);n!==void 0&&(a[c(t)]=n)}return{errors:a,valid:Object.keys(a).length===0}}let r=t,o=[...e.validators.keys()].filter(a);await e.runValidationCore(o,`partial`,r);let s={};for(let[t,n]of e.fieldErrors)a(t)&&(s[c(t)]=n);return{errors:s,valid:Object.keys(s).length===0}}async function y(t){if(e.ensureNotDisposed(),e.isSubmitting())throw new o(`submit() called while a submission is already in progress`);e.root.batch(()=>{e.incrementSubmitCount(),e.setSubmitting(!0),f()});try{let n=[...e.validators.keys()].filter(a);await e.runValidationCore(n,`partial`),e.ensureNotDisposed();let r={};for(let[t,n]of e.fieldErrors)a(t)&&(r[c(t)]=n);return Object.keys(r).length>0?{errors:r,ok:!1,type:`validation`}:{ok:!0,value:await t(u())}}finally{e.setSubmitting(!1),e.isDisposed()||e.requestNotify()}}function b(t,n){let r=null;return e.root.subscribe(()=>{let e=l();if(r){let t=r,n=Object.keys(e.errors),i=Object.keys(t.errors),a=n.length===i.length&&n.every(n=>e.errors[n]===t.errors[n]),o=e.touchedFields.length===t.touchedFields.length&&e.touchedFields.every((e,n)=>e===t.touchedFields[n]),s=e.validatingFields.length===t.validatingFields.length&&e.validatingFields.every((e,n)=>e===t.validatingFields[n]);if(e.isDirty===t.isDirty&&e.isLoading===t.isLoading&&e.isSubmitting===t.isSubmitting&&e.isTouched===t.isTouched&&e.isValid===t.isValid&&e.isValidating===t.isValidating&&e.submitCount===t.submitCount&&a&&o&&s)return}r=e,t(e)},n)}function x(){return{array(t){return e.root.array(i(t))},clearError(t){e.root.clearError(i(t))},connect(t,n){return e.root.connect(i(t),n)},field(t){return e.root.field(i(t))},get(t){return e.root.get(i(t))},register(t,n){return e.root.fields.register(i(t),n)},remove(t){e.root.fields.remove(i(t))},resetField(t){e.root.resetField(i(t))},set(t,n,r){e.root.set(i(t),n,r)},setError(t,n){e.root.setError(i(t),n)},setValidator(t,n){e.root.fields.setValidator(i(t),n)},subscribeField(t,n,r){return e.root.subscribeField(i(t),n,r)},touch(t){e.root.touch(i(t))},untouch(t){e.root.untouch(i(t))}}}let S=x();return{array:e=>S.array(e),batch:t=>e.root.batch(t),clearError:e=>S.clearError(e),connect:(e,t)=>S.connect(e,t),get disposalSignal(){return e.root.disposalSignal},dispose:()=>{},get disposed(){return e.isDisposed()},field:e=>S.field(e),fields:{list:d,register:(e,t)=>S.register(e,t),remove:e=>S.remove(e),setValidator:(e,t)=>S.setValidator(e,t)},get:e=>S.get(e),get isLoading(){return e.root.isLoading},get isSubmitting(){return e.root.isSubmitting},patch:g,replace:h,reset:m,resetErrors:_,resetField:e=>S.resetField(e),restore:t=>e.root.restore(t),scope:t=>T(e,i(t)),set:(e,t,n)=>S.set(e,t,n),setError:(e,t)=>S.setError(e,t),snapshot:()=>e.root.snapshot(),get state(){return l()},submit:y,submitOrThrow:async e=>{let t=await y(e);if(!t.ok)throw new s(t.errors);return t.value},subscribe:(t,n)=>e.root.subscribe(t,n),subscribeField:(e,t,n)=>S.subscribeField(e,t,n),subscribeScoped:b,[Symbol.asyncIterator]:()=>e.root[Symbol.asyncIterator](),[Symbol.dispose](){this.dispose()},touch:e=>S.touch(e),touchAll:f,untouch:e=>S.untouch(e),untouchAll:p,validate:v,validateStream(t){let n=e.root.validateStream(t);return{async next(){for(;;){let e=await n.next();if(e.done)return e;if(a(e.value.field))return{done:!1,value:{error:e.value.error,field:c(e.value.field)}}}},return(){return n.return?n.return():Promise.resolve({done:!0,value:void 0})},[Symbol.asyncIterator](){return this}}},values:u}}function E(e,n){async function r(t,n){let r=e.validators.get(t);if(!r)return;if(n.aborted)throw n.reason;let i=await r(e.store.get(t),n);return typeof i==`string`?i:void 0}async function i(t){if(!e.formValidator)return{};if(t.aborted)throw t.reason;let r=await e.formValidator(n.values(),t),i={};if(r)for(let[e,t]of Object.entries(r))m(e)&&typeof t==`string`&&(i[e]=t);return i}function a(t,n,r,i){if(i===`full`){e.fieldErrors.clear();for(let[e,t]of Object.entries(r))n[e]===void 0&&(n[e]=t);for(let[t,r]of Object.entries(n))e.fieldErrors.set(t,r);e.invalidateErrors(),e.requestNotify()}else{let r=new Set;for(let i of t){let t=n[i],a=e.fieldErrors.get(i);t===void 0?e.fieldErrors.delete(i)&&r.add(i):(e.fieldErrors.set(i,t),a!==t&&r.add(i))}r.size>0&&e.invalidateErrors(),e.requestNotify(r)}}async function l(n,o,s){let c=new Set(n),l=new Map;for(let t of c){e.fieldCtrls.get(t)?.abort();let n=new AbortController;e.fieldCtrls.set(t,n),l.set(t,n)}let u=new AbortController,d=y(u.signal,s,e.disposeController.signal);e.runCtrls.add(u);let f=Symbol();for(let t of c){let n=e.validatingRuns.get(t);n||(n=new Set,e.validatingRuns.set(t,n)),n.add(f)}e.requestNotify();try{let t=await Promise.all([...c].map(async e=>[e,await r(e,o===`partial`?y(l.get(e).signal,d):d)]));if(d.aborted)return{aborted:!0,errors:Object.fromEntries(e.fieldErrors),valid:e.fieldErrors.size===0};let n={};for(let[e,r]of t)r!==void 0&&(n[e]=r);return a(c,n,o===`full`?await i(d):{},o),{aborted:!1,errors:Object.fromEntries(e.fieldErrors),valid:e.fieldErrors.size===0}}catch(n){if((0,t.isAbortError)(n))return{aborted:!0,errors:Object.fromEntries(e.fieldErrors),valid:e.fieldErrors.size===0};throw n}finally{e.runCtrls.delete(u);for(let t of c){let n=e.validatingRuns.get(t);n&&(n.delete(f),n.size===0&&e.validatingRuns.delete(t))}e.requestNotify();for(let[t,n]of l)e.fieldCtrls.get(t)===n&&e.fieldCtrls.delete(t)}}async function u(t,n){e.ensureNotDisposed();let r=await l(t,`partial`,n);return{errors:r.errors,valid:r.valid}}async function d(t,n){if(e.ensureNotDisposed(),t===void 0||t instanceof AbortSignal){let n=await l([...e.validators.keys()],`full`,t);return{errors:n.errors,valid:n.valid}}if(Array.isArray(t))return u(t,n);await u([t],n);let r=t,i=e.fieldErrors.get(r);return{errors:i===void 0?{}:{[r]:i},valid:i===void 0}}async function f(e){let t=await p(e);if(!t.ok)throw new s(t.errors);return t.value}async function p(t){if(e.ensureNotDisposed(),e.isSubmittingState)throw new o(`submit() called while a submission is already in progress`);e.batch(()=>{e.submitCount++,e.isSubmittingState=!0,n.touchAll()});try{let r=await l([...e.validators.keys()],`full`);return e.ensureNotDisposed(),r.valid?{ok:!0,value:await t(n.values())}:{errors:r.errors,ok:!1,type:`validation`}}finally{e.isSubmittingState=!1,e.disposed||e.requestNotify()}}function h(n){e.ensureNotDisposed();let a=[...e.validators.keys()],o=new AbortController,s=n?y(o.signal,n,e.disposeController.signal):y(o.signal,e.disposeController.signal),l=C(()=>o.abort());return Promise.all(a.map(async e=>{if(!s.aborted)try{let t=await r(e,s);s.aborted||l.push({error:t,field:e})}catch(e){if(!(0,t.isAbortError)(e))throw e}})).then(async()=>{if(e.formValidator&&!s.aborted)try{let e=await i(s);if(!s.aborted){let t=new Set([c,...Object.keys(e)]);for(let n of t)l.push({error:e[n],field:n})}}catch{}}).catch(e=>{(0,t.isAbortError)(e)||(o.abort(),l.fail(e))}).finally(()=>{o.abort(),l.finish()}),l.iterator}return{runValidationCore:l,submit:p,submitOrThrow:f,validate:d,validateFields:u,validateStream:h}}function D(e,t,n){let r=e;return{append(i){let a=t.get(r);a!==void 0&&!Array.isArray(a)||n(e,Array.isArray(a)?[...a,i]:[i])},insert(i,a){let o=t.get(r);if(!Array.isArray(o))return;let s=[...o];s.splice(i,0,a),n(e,s)},move(i,a){let o=t.get(r);if(!Array.isArray(o))return;let s=[...o];s.splice(a,0,s.splice(i,1)[0]),n(e,s)},prepend(i){let a=t.get(r);a!==void 0&&!Array.isArray(a)||n(e,Array.isArray(a)?[i,...a]:[i])},remove(i){let a=t.get(r);Array.isArray(a)&&n(e,a.filter((e,t)=>t!==i))},replace(i,a){let o=t.get(r);if(!Array.isArray(o))return;let s=[...o];s[i]=a,n(e,s)},swap(i,a){let o=t.get(r);if(!Array.isArray(o))return;let s=[...o];[s[i],s[a]]=[s[a],s[i]],n(e,s)}}}function O(e){function n(t){let n=t;return h(n),e.store.get(n)}function r(){return e.cachedValues??=(0,t.unflattenPaths)(Object.fromEntries(e.store))}function i(t,n){e.baseline.get(t)===n?e.dirty.delete(t):e.dirty.add(t)}function a(t,n,r={}){e.ensureNotDisposed();let a=t;h(a),e.store.set(a,n),i(a,n),r.touched&&e.touched.add(a),e.requestNotify(a)}function o(t){let n=t;return h(n),e.getFieldSnapshot(n)}function s(t,n){e.ensureNotDisposed();let r=t;h(r),e.fieldErrors.set(r,n),e.invalidateErrors(),e.requestNotify(r)}function c(t){e.ensureNotDisposed();let n=t;h(n),e.fieldErrors.delete(n)&&(e.invalidateErrors(),e.requestNotify(n))}function l(t={}){e.ensureNotDisposed(),e.fieldErrors.clear();for(let[n,r]of Object.entries(t))h(n),typeof r==`string`&&e.fieldErrors.set(n,r);e.invalidateErrors(),e.requestNotify()}function u(t,n){/\.\d+(\.|$)/.test(t)&&!e.store.has(t)&&d(`${n}('${v(t,80)}'): path looks like an array item key. Array items are stored as whole arrays — register on the parent key instead.`)}function f(t,n){e.ensureNotDisposed();let r=t;h(r),u(r,`setValidator`),e.fieldCtrls.get(r)?.abort(),e.fieldCtrls.delete(r),n?e.validators.set(r,n):(e.validators.delete(r),e.fieldErrors.delete(r)&&(e.invalidateErrors(),e.requestNotify(r)))}function p(t,n={}){e.ensureNotDisposed();let r=t;return h(r),u(r,`fields.register`),n.validator!==void 0&&f(t,n.validator),n.defaultValue!==void 0&&!e.store.has(r)&&(e.store.set(r,n.defaultValue),e.baseline.set(r,n.defaultValue),e.requestNotify(r)),()=>{e.disposed||S(t)}}function m(){let t=new Set;for(let n of e.store.keys())t.add(n);for(let n of e.validators.keys())t.add(n);return Object.freeze([...t])}function g(t){e.ensureNotDisposed();let n=t;h(n),e.touched.add(n),e.requestNotify(n)}function _(t){e.ensureNotDisposed();let n=t;h(n),e.touched.delete(n)&&e.requestNotify(n)}function y(){e.ensureNotDisposed();for(let t of e.store.keys())e.touched.add(t);for(let t of e.validators.keys())e.touched.add(t);e.requestNotify()}function b(){e.ensureNotDisposed(),e.touched.clear(),e.requestNotify()}function x(t){e.ensureNotDisposed();let n=t;h(n),e.fieldCtrls.get(n)?.abort(),e.fieldCtrls.delete(n),e.store.set(n,e.baseline.get(n)),e.dirty.delete(n),e.touched.delete(n),e.fieldErrors.delete(n)&&e.invalidateErrors(),e.requestNotify(n)}function S(t){e.ensureNotDisposed();let n=t;h(n),e.store.delete(n),e.baseline.delete(n),e.dirty.delete(n),e.touched.delete(n),e.validators.delete(n),e.arrayCache.delete(n),e.fieldCtrls.get(n)?.abort(),e.fieldCtrls.delete(n),e.fieldErrors.delete(n)&&e.invalidateErrors(),e.requestNotify(n)}function C(){e.ensureNotDisposed();for(let t of e.runCtrls)t.abort();for(let t of e.fieldCtrls.values())t.abort();e.runCtrls.clear(),e.fieldCtrls.clear(),e.validatingRuns.clear(),e.store.clear(),e.fieldErrors.clear(),e.touched.clear(),e.dirty.clear(),e.submitCount=0,e.invalidateErrors();for(let[t,n]of e.baseline)e.store.set(t,n);e.requestNotify()}function w(n){e.ensureNotDisposed();for(let t of e.runCtrls)t.abort();for(let t of e.fieldCtrls.values())t.abort();e.runCtrls.clear(),e.fieldCtrls.clear(),e.validatingRuns.clear();let r=(0,t.flattenPaths)(n);e.store.clear(),e.baseline.clear(),e.fieldErrors.clear(),e.touched.clear(),e.dirty.clear(),e.submitCount=0,e.invalidateErrors();for(let[t,n]of Object.entries(r))e.store.set(t,n),e.baseline.set(t,n);e.requestNotify()}function T(n){e.ensureNotDisposed();let r=(0,t.flattenPaths)(n);for(let[t,n]of Object.entries(r))e.baseline.set(t,n),e.store.set(t,n),e.dirty.delete(t);e.requestNotify(Object.keys(r))}function E(t){e.ensureNotDisposed();let n=t;h(n);let r=e.arrayCache.get(n);if(r)return r;let i=D(t,e.store,a);return e.arrayCache.set(n,i),i}return{array:E,clearError:c,field:o,get:n,listFields:m,patch:T,registerField:p,removeField:S,replace:w,reset:C,resetErrors:l,resetField:x,set:a,setError:s,setValidator:f,touch:g,touchAll:y,untouch:_,untouchAll:b,values:r}}function k(e={}){let t=x(e),n=O(t),r=E(t,{touchAll:n.touchAll,values:n.values}),i=w(t,{set:n.set,touch:n.touch,validateFields:r.validateFields}),a=S(t);typeof e.defaultValues==`function`&&e.defaultValues().then(e=>{t.loadingState=!1,!t.disposed&&n.replace(e)}).catch(n=>{t.loadingState=!1,!t.disposed&&(d(`defaultValues factory rejected. Form will be empty. Error: ${v(String(n))}`),e.onLoadError?.(n),t.requestNotify())});let{listFields:o,registerField:s,removeField:c,setValidator:l,...u}=n,{runValidationCore:f,...p}=r,m={...u,...p,...i,...a,batch:t.batch,get disposalSignal(){return t.disposeController.signal},get disposed(){return t.disposed},fields:{list:o,register:s,remove:c,setValidator:l},get isLoading(){return t.loadingState},get isSubmitting(){return t.isSubmittingState},scope(e){let n=e,r=t.scopeCache.get(n);if(r)return r;let i=T({baseline:t.baseline,dirty:t.dirty,ensureNotDisposed:t.ensureNotDisposed,fieldCtrls:t.fieldCtrls,fieldErrors:t.fieldErrors,getStateSnapshot:t.getStateSnapshot,incrementSubmitCount:()=>{t.submitCount++},invalidateErrors:t.invalidateErrors,isDisposed:()=>t.disposed,isSubmitting:()=>t.isSubmittingState,requestNotify:t.requestNotify,root:m,runValidationCore:f,setSubmitting:e=>{t.isSubmittingState=e},store:t.store,touched:t.touched,validators:t.validators},e);return t.scopeCache.set(n,i),i},get state(){return t.getStateSnapshot()},subscribeScoped:i.subscribe,[Symbol.dispose](){this.dispose()}};return m}function A(e){let n=new FormData;for(let[r,i]of Object.entries((0,t.flattenPaths)(e)))if(i!=null)if(i instanceof File||i instanceof Blob)n.append(r,i);else if(i instanceof FileList)for(let e=0;e<i.length;e++)n.append(r,i[e]);else if(Array.isArray(i))for(let e of i)n.append(r,e instanceof File||e instanceof Blob?e:String(e));else n.append(r,String(i));return n}return e.FORM_ERROR=c,e.ForgeConfigError=a,e.ForgeDisposedError=i,e.ForgeError=r,e.ForgeSubmitError=o,e.ForgeValidationError=s,e.ValidationModes=l,e.createForm=k,e.toFormData=A,e})({},Arsenal,Ripple);
|
|
1
|
+
var Forge=(function(e,t,n){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var r=class e extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}static is(t){return t instanceof e}},i=class extends r{constructor(e){super(e?`Cannot call ${e}() on a disposed form`:`Cannot modify a disposed form`)}},a=class extends r{},o=class extends r{},s=class extends r{errors;constructor(e){super(`Form validation failed`),this.errors=e}},c=`_form`,l=5,u={onBlur:{touchOnBlur:!0,validateOnBlur:!0},onChange:{touchOnBlur:!0,validateOnChange:!0},onSubmit:{},onTouched:{touchOnBlur:!0,validateOnBlur:!0,validateOnTouch:!0}},d=!globalThis.__FORGE_PROD__;function f(e){d&&console.warn(`[@vielzeug/forge] ${e}`)}function p(e){d&&e()}var m=new Set([`__proto__`,`constructor`,`prototype`]);function h(e){return e.split(`.`).every(e=>!m.has(e))}function g(e){if(v(e),!h(e))throw new a(`Unsafe key '${e}': segments __proto__, constructor, and prototype are reserved.`)}var _=new Set;function v(e){e.includes(`.`)&&(e.split(`.`).length<=5||_.has(e)||(_.add(e),p(()=>{f(`Path '${y(e,120)}' exceeds typed depth limits and may be treated as an untyped string path.`)})))}function y(e,t=200){return e.replace(/\p{C}/gu,`?`).slice(0,t)}function b(...e){let t=e.filter(e=>e!=null);if(t.length!==0)return t.length===1?t[0]:AbortSignal.any(t)}function x(e){let t=(0,n.signal)(e.computeState()),r=new Map,i=new Map,a=new Set,o=!1;function s(t){let i=r.get(t);return i||(i=(0,n.signal)(e.buildFieldState(t),{equals:(e,t)=>e.value===t.value&&e.error===t.error&&e.hasError===t.hasError&&e.touched===t.touched&&e.dirty===t.dirty}),r.set(t,i)),i}function c(t){let n=i.get(t);if(n)return n;let r=Object.freeze(e.buildFieldState(t));return i.set(t,r),r}function l(){return t.value}function u(a){if(!o)if(e.invalidateCaches(),a===void 0)i.clear(),(0,n.batch)(()=>{t.value=e.computeState();for(let[t,n]of r)n.value=e.buildFieldState(t)});else if(typeof a==`string`)i.delete(a),(0,n.batch)(()=>{t.value=e.computeState();let n=r.get(a);n&&(n.value=e.buildFieldState(a))});else{let o=[...a];for(let e of o)i.delete(e);(0,n.batch)(()=>{t.value=e.computeState();for(let t of o){let n=r.get(t);n&&(n.value=e.buildFieldState(t))}})}}function d(e,r){if(o)return()=>{};let i=(0,n.watch)(t,t=>{e(t)});return a.add(i),r?.sync&&e(t.value),()=>{i.dispose(),a.delete(i)}}function f(e,t,r){if(o)return()=>{};g(e);let i=s(e),c=(0,n.watch)(i,e=>{t(e)});return a.add(c),r?.sync&&t(i.value),()=>{c.dispose(),a.delete(c)}}function p(){o=!0;for(let e of a)e.dispose();a.clear(),r.clear(),i.clear()}return{dispose:p,getFieldSnapshot:c,getOrCreateFieldSignal:s,getStateSnapshot:l,requestNotify:u,subscribe:d,subscribeField:f}}function S(e){if(!e)return;if(typeof e==`function`)return e;let t=e;return(e,n)=>{if(n?.aborted)return;let r=t.safeParse(e);if(r.success)return;let i={};for(let e of r.error.issues){let t=e.path.join(`.`)||`_form`;h(t)&&(i[t]||(i[t]=e.message))}return i}}function C(e){let r=new Map;for(let[t,n]of Object.entries(e.validators??{}))g(t),r.set(t,n);let a=S(e.validator),o=typeof e.defaultValues==`function`,s=typeof e.defaultValues==`function`?void 0:e.defaultValues,c=new Map(Object.entries((0,t.flattenPaths)(s??{}))),l=new Map(c),u=new Map,d=new Set,f=new Set,p=new Map,m=new Set,h=new Map,_=new AbortController,v=null,y=null,b=new Map,C=!1,w=0,T=!1;function E(){v=null}function D(){y=null}function O(){return y??=Object.freeze(Object.fromEntries(u))}function k(){return Object.freeze({errors:O(),isDirty:f.size>0,isLoading:o,isSubmitting:C,isTouched:d.size>0,isValid:u.size===0,isValidating:p.size>0,submitCount:w,touchedFields:Object.freeze([...d]),validatingFields:Object.freeze([...p.keys()])})}function A(e){let t=u.get(e);return{dirty:f.has(e),error:t,hasError:t!==void 0,touched:d.has(e),value:l.get(e)}}let j=x({buildFieldState:A,computeState:k,invalidateCaches(){E(),D()}});function M(e){if(T)throw new i(e)}function N(e){M(`batch`);try{(0,n.batch)(e)}catch(e){throw j.requestNotify(),e}}function P(){T=!0,_.abort();for(let e of h.values())e.abort();h.clear(),m.clear(),b.clear(),j.dispose()}return{arrayCache:b,baseline:c,batch:N,get cachedValues(){return v},set cachedValues(e){v=e},computeErrors:O,dirty:f,dispose:P,disposeController:_,get disposed(){return T},ensureNotDisposed:M,fieldCtrls:h,fieldErrors:u,formValidator:a,getFieldSnapshot:j.getFieldSnapshot,getStateSnapshot:j.getStateSnapshot,invalidateErrors:D,invalidateValues:E,get isSubmittingState(){return C},set isSubmittingState(e){C=e},get loadingState(){return o},set loadingState(e){o=e},requestNotify:j.requestNotify,runCtrls:m,store:l,get submitCount(){return w},set submitCount(e){w=e},subscribe:j.subscribe,subscribeField:j.subscribeField,touched:d,validatingRuns:p,validators:r}}function w(e,t,n){let r=e;function i(e,t){p(()=>{f(`array('${y(r,80)}').${e}(): field is not an array (got ${t===null?`null`:typeof t}) — no-op.`)})}return{append(a){let o=t.get(r);if(o!==void 0&&!Array.isArray(o)){i(`append`,o);return}n(e,Array.isArray(o)?[...o,a]:[a])},insert(a,o){let s=t.get(r);if(!Array.isArray(s)){i(`insert`,s);return}let c=[...s];c.splice(a,0,o),n(e,c)},move(a,o){let s=t.get(r);if(!Array.isArray(s)){i(`move`,s);return}let c=[...s];c.splice(o,0,c.splice(a,1)[0]),n(e,c)},prepend(a){let o=t.get(r);if(o!==void 0&&!Array.isArray(o)){i(`prepend`,o);return}n(e,Array.isArray(o)?[a,...o]:[a])},remove(a){let o=t.get(r);if(!Array.isArray(o)){i(`remove`,o);return}n(e,o.filter((e,t)=>t!==a))},replace(a,o){let s=t.get(r);if(!Array.isArray(s)){i(`replace`,s);return}let c=[...s];c[a]=o,n(e,c)},swap(a,o){let s=t.get(r);if(!Array.isArray(s)){i(`swap`,s);return}let c=[...s];[c[a],c[o]]=[c[o],c[a]],n(e,c)}}}function T(e){function n(t){let n=t;return g(n),e.store.get(n)}function r(){return e.cachedValues??=(0,t.unflattenPaths)(Object.fromEntries(e.store))}function i(t,n){e.baseline.get(t)===n?e.dirty.delete(t):e.dirty.add(t)}function a(t,n,r={}){e.ensureNotDisposed(`set`);let a=t;g(a),e.store.set(a,n),i(a,n),r.touched&&e.touched.add(a),e.requestNotify(a)}function c(t){let n=t;return g(n),e.getFieldSnapshot(n)}function l(t,n){e.ensureNotDisposed(`setError`);let r=t;g(r),e.fieldErrors.set(r,n),e.invalidateErrors(),e.requestNotify(r)}function u(t){e.ensureNotDisposed(`clearError`);let n=t;g(n),e.fieldErrors.delete(n)&&(e.invalidateErrors(),e.requestNotify(n))}function d(t,n,r){for(let n of[...e.fieldErrors.keys()])t(n)&&e.fieldErrors.delete(n);for(let[t,i]of Object.entries(n)){let n=r(t);g(n),typeof i==`string`&&e.fieldErrors.set(n,i)}e.invalidateErrors()}function p(t={}){e.ensureNotDisposed(`resetErrors`),d(()=>!0,t,e=>e),e.requestNotify()}function m(t,n){/\.\d+(\.|$)/.test(t)&&!e.store.has(t)&&f(`${n}('${y(t,80)}'): path looks like an array item key. Array items are stored as whole arrays — register on the parent key instead.`)}function _(t,n){e.ensureNotDisposed(`setValidator`);let r=t;g(r),m(r,`setValidator`),e.fieldCtrls.get(r)?.abort(),e.fieldCtrls.delete(r),n?e.validators.set(r,n):(e.validators.delete(r),e.fieldErrors.delete(r)&&(e.invalidateErrors(),e.requestNotify(r)))}function v(t,n={}){e.ensureNotDisposed(`fields.register`);let r=t;return g(r),m(r,`fields.register`),n.validator!==void 0&&_(t,n.validator),n.defaultValue!==void 0&&!e.store.has(r)&&(e.store.set(r,n.defaultValue),e.baseline.set(r,n.defaultValue),e.requestNotify(r)),()=>{e.disposed||A(t)}}function x(){let t=new Set;for(let n of e.store.keys())t.add(n);for(let n of e.validators.keys())t.add(n);return Object.freeze([...t])}function S(t){e.ensureNotDisposed(`touch`);let n=t;g(n),e.touched.add(n),e.requestNotify(n)}function C(t){e.ensureNotDisposed(`untouch`);let n=t;g(n),e.touched.delete(n)&&e.requestNotify(n)}function T(t){for(let n of e.store.keys())t(n)&&e.touched.add(n);for(let n of e.validators.keys())t(n)&&e.touched.add(n)}function E(){e.ensureNotDisposed(`touchAll`),T(()=>!0),e.requestNotify()}function D(t){for(let n of[...e.touched])t(n)&&e.touched.delete(n)}function O(){e.ensureNotDisposed(`untouchAll`),D(()=>!0),e.requestNotify()}function k(t){e.ensureNotDisposed(`resetField`);let n=t;g(n),e.fieldCtrls.get(n)?.abort(),e.fieldCtrls.delete(n),e.store.set(n,e.baseline.get(n)),e.dirty.delete(n),e.touched.delete(n),e.fieldErrors.delete(n)&&e.invalidateErrors(),e.requestNotify(n)}function A(t){e.ensureNotDisposed(`fields.remove`);let n=t;g(n),e.store.delete(n),e.baseline.delete(n),e.dirty.delete(n),e.touched.delete(n),e.validators.delete(n),e.arrayCache.delete(n),e.fieldCtrls.get(n)?.abort(),e.fieldCtrls.delete(n),e.fieldErrors.delete(n)&&e.invalidateErrors(),e.requestNotify(n)}function j(){return new Set([...e.store.keys(),...e.touched,...e.fieldErrors.keys(),...e.validators.keys()])}function M(t){for(let n of j())t(n)&&(e.fieldCtrls.get(n)?.abort(),e.fieldCtrls.delete(n),e.baseline.has(n)?e.store.set(n,e.baseline.get(n)):e.store.delete(n),e.dirty.delete(n),e.touched.delete(n),e.fieldErrors.delete(n)&&e.invalidateErrors())}function N(){e.ensureNotDisposed(`reset`);for(let t of e.runCtrls)t.abort();e.runCtrls.clear(),e.validatingRuns.clear(),M(()=>!0),e.submitCount=0,e.requestNotify()}function P(t,n,r){for(let n of j())t(n)&&(e.fieldCtrls.get(n)?.abort(),e.fieldCtrls.delete(n),e.store.delete(n),e.baseline.delete(n),e.dirty.delete(n),e.touched.delete(n),e.fieldErrors.delete(n)&&e.invalidateErrors());for(let[t,i]of Object.entries(n)){let n=r(t);e.store.set(n,i),e.baseline.set(n,i)}}function F(n){e.ensureNotDisposed(`replace`);for(let t of e.runCtrls)t.abort();e.runCtrls.clear(),e.validatingRuns.clear(),P(()=>!0,(0,t.flattenPaths)(n),e=>e),e.submitCount=0,e.requestNotify()}function I(n,r){let i=(0,t.flattenPaths)(n),a=[];for(let[t,n]of Object.entries(i)){let i=r(t);e.baseline.set(i,n),e.store.set(i,n),e.dirty.delete(i),a.push(i)}return a}function L(t){e.ensureNotDisposed(`patch`),e.requestNotify(I(t,e=>e))}function R(t){e.ensureNotDisposed(`array`);let n=t;g(n);let r=e.arrayCache.get(n);if(r)return r;let i=w(t,e.store,a);return e.arrayCache.set(n,i),i}async function z(t,n){let r=e.validators.get(t);if(!r)return;if(n.aborted)throw n.reason;let i=await r(e.store.get(t),n);return typeof i==`string`?i:void 0}async function B(t){if(!e.formValidator)return{};if(t.aborted)throw t.reason;let n=await e.formValidator(r(),t),i={};if(n)for(let[e,t]of Object.entries(n))h(e)&&typeof t==`string`&&(i[e]=t);return i}function V(t,n,r,i){if(i===`full`){e.fieldErrors.clear();for(let[e,t]of Object.entries(r))n[e]===void 0&&(n[e]=t);for(let[t,r]of Object.entries(n))e.fieldErrors.set(t,r);e.invalidateErrors(),e.requestNotify()}else{let r=new Set;for(let i of t){let t=n[i],a=e.fieldErrors.get(i);t===void 0?e.fieldErrors.delete(i)&&r.add(i):(e.fieldErrors.set(i,t),a!==t&&r.add(i))}r.size>0&&e.invalidateErrors(),e.requestNotify(r)}}async function H(n,r,i){let a=new Set(n),o=new Map;for(let t of a){e.fieldCtrls.get(t)?.abort();let n=new AbortController;e.fieldCtrls.set(t,n),o.set(t,n)}let s=new AbortController,c=b(s.signal,i,e.disposeController.signal);e.runCtrls.add(s);let l=Symbol();for(let t of a){let n=e.validatingRuns.get(t);n||(n=new Set,e.validatingRuns.set(t,n)),n.add(l)}e.requestNotify();try{let t=await Promise.all([...a].map(async e=>[e,await z(e,r===`partial`?b(o.get(e).signal,c):c)]));if(c.aborted)return{aborted:!0,errors:Object.fromEntries(e.fieldErrors),valid:e.fieldErrors.size===0};let n={};for(let[e,r]of t)r!==void 0&&(n[e]=r);return V(a,n,r===`full`?await B(c):{},r),{aborted:!1,errors:Object.fromEntries(e.fieldErrors),valid:e.fieldErrors.size===0}}catch(n){if((0,t.isAbortError)(n))return{aborted:!0,errors:Object.fromEntries(e.fieldErrors),valid:e.fieldErrors.size===0};throw n}finally{e.runCtrls.delete(s);for(let t of a){let n=e.validatingRuns.get(t);n&&(n.delete(l),n.size===0&&e.validatingRuns.delete(t))}e.requestNotify();for(let[t,n]of o)e.fieldCtrls.get(t)===n&&e.fieldCtrls.delete(t)}}async function U(t,n){e.ensureNotDisposed(`validate`);let r=await H(t,`partial`,n);return{errors:r.errors,valid:r.valid}}async function W(t,n){if(e.ensureNotDisposed(`validate`),t===void 0||t instanceof AbortSignal){let n=await H([...e.validators.keys()],`full`,t);return{errors:n.errors,valid:n.valid}}if(Array.isArray(t))return U(t,n);await U([t],n);let r=t,i=e.fieldErrors.get(r);return{errors:i===void 0?{}:{[r]:i},valid:i===void 0}}async function G(e){let t=await K(e);if(!t.ok)throw new s(t.errors);return t.value}async function K(t){if(e.ensureNotDisposed(`submit`),e.isSubmittingState)throw new o(`submit() called while a submission is already in progress`);e.batch(()=>{e.submitCount++,e.isSubmittingState=!0,E()});try{let n=await H([...e.validators.keys()],`full`);return e.ensureNotDisposed(`submit`),n.valid?{ok:!0,value:await t(r())}:{errors:n.errors,ok:!1,type:`validation`}}finally{e.isSubmittingState=!1,e.disposed||e.requestNotify()}}return{array:R,clearError:u,field:c,get:n,listFields:x,patch:L,patchKeys:I,registerField:v,removeField:A,replace:F,replaceKeys:P,reset:N,resetErrors:p,resetErrorsKeys:d,resetField:k,resetKeys:M,runValidationCore:H,set:a,setError:l,setValidator:_,submit:K,submitOrThrow:G,touch:S,touchAll:E,touchAllKeys:T,untouch:C,untouchAll:O,untouchAllKeys:D,validate:W,validateFields:U,values:r}}function E(e,t){function n(){e.dispose(),t.onDispose?.()}function r(){return e.ensureNotDisposed(`history.snapshot`),Object.freeze({baseline:Object.freeze(Object.fromEntries(e.baseline)),dirty:Object.freeze([...e.dirty]),errors:Object.freeze(Object.fromEntries(e.fieldErrors)),store:Object.freeze(Object.fromEntries(e.store)),submitCount:e.submitCount,touched:Object.freeze([...e.touched])})}function i(t){e.ensureNotDisposed(`history.restore`);for(let t of e.runCtrls)t.abort();for(let t of e.fieldCtrls.values())t.abort();e.runCtrls.clear(),e.fieldCtrls.clear(),e.validatingRuns.clear(),e.store.clear(),e.baseline.clear(),e.fieldErrors.clear(),e.touched.clear(),e.dirty.clear();for(let[n,r]of Object.entries(t.store))h(n)&&e.store.set(n,r);for(let[n,r]of Object.entries(t.baseline))h(n)&&e.baseline.set(n,r);for(let[n,r]of Object.entries(t.errors))h(n)&&e.fieldErrors.set(n,r);for(let n of t.touched)h(n)&&e.touched.add(n);for(let n of t.dirty)h(n)&&e.dirty.add(n);e.submitCount=t.submitCount,e.invalidateErrors(),e.invalidateValues(),e.requestNotify()}return{dispose:n,restore:i,snapshot:r}}function D(e){let t=[],n=null,r=null,i=!1,a=null;function o(e){if(!i)if(n){let t=n;n=null,r=null,t({done:!1,value:e})}else t.push(e)}function s(e){if(!i)if(i=!0,r){let t=r;n=null,r=null,t(e)}else a={err:e}}function c(){if(!i&&(i=!0,n)){let e=n;n=null,r=null,e({done:!0,value:void 0})}}function l(){i||(t=[],c(),e?.())}return{fail:s,finish:c,iterator:{next(){if(a){let{err:e}=a;return a=null,Promise.reject(e)}return t.length>0?Promise.resolve({done:!1,value:t.shift()}):i?Promise.resolve({done:!0,value:void 0}):new Promise((e,t)=>{n=e,r=t})},return(){return l(),Promise.resolve({done:!0,value:void 0})},[Symbol.asyncIterator](){return this}},push:o,terminate:l}}function O(e,n){function r(t,n){return e.subscribe(t,n)}function i(t,n,r){let i=t;return g(i),e.subscribeField(i,n,r)}function a(r,i){e.ensureNotDisposed(`connect`);let a=r;g(a);function o(e,t){return i?.[e]??n.connectDefaults[e]??t}let s=o(`touchOnBlur`,!1),c=o(`validateOnBlur`,!1),l=o(`validateOnChange`,!1),u=o(`validateOnTouch`,!1),d=o(`debounce`,0),f=null;function p(){d>0?(f!==null&&clearTimeout(f),f=setTimeout(()=>{f=null,!e.disposed&&n.validateFields([r]).catch(e=>{if(!(0,t.isAbortError)(e))throw e})},d)):n.validateFields([r]).catch(e=>{if(!(0,t.isAbortError)(e))throw e})}let m=!1;return{get dirty(){return e.dirty.has(a)},dispose(){m=!0,f!==null&&(clearTimeout(f),f=null)},get disposed(){return m},get error(){return e.fieldErrors.get(a)},onBlur:()=>{e.disposed||(s&&n.touch(r),c&&p())},onChange:t=>{e.disposed||(n.set(r,t),(l||u&&e.touched.has(a))&&p())},[Symbol.dispose](){this.dispose()},get touched(){return e.touched.has(a)},get value(){return e.store.get(a)}}}function o(){let t=D(()=>n());t.push(e.getStateSnapshot());let n=r(e=>{t.push(e)});return e.disposeController.signal.addEventListener(`abort`,()=>t.terminate(),{once:!0}),t.iterator}return{connect:a,subscribe:r,subscribeField:i,[Symbol.asyncIterator]:o}}function k(e,n){let{ctx:r,fieldOps:i,root:a}=e,c=`${n}.`;function l(e){return`${n}.${e}`}function u(e){return e===n||e.startsWith(c)}function d(e){return e.startsWith(c)?e.slice(c.length):e}function f(){let e=r.getStateSnapshot(),t=Object.fromEntries(Object.entries(e.errors).filter(([e])=>u(e)).map(([e,t])=>[d(e),t])),n=e.touchedFields.filter(u).map(d),i=e.validatingFields.filter(u).map(d),a=Object.keys(t).length===0,o=[...r.dirty].some(u),s=[...r.touched].some(u),c=i.length>0;return Object.freeze({errors:Object.freeze(t),isDirty:o,isLoading:e.isLoading,isSubmitting:e.isSubmitting,isTouched:s,isValid:a,isValidating:c,submitCount:e.submitCount,touchedFields:Object.freeze(n),validatingFields:Object.freeze(i)})}function p(){let e={};for(let[t,n]of r.store)t.startsWith(c)&&(e[t.slice(c.length)]=n);return(0,t.unflattenPaths)(e)}function m(){let e=new Set;for(let t of r.store.keys())u(t)&&e.add(d(t));for(let t of r.validators.keys())u(t)&&e.add(d(t));return Object.freeze([...e])}function h(){r.ensureNotDisposed(`touchAll`),i.touchAllKeys(u),r.requestNotify()}function g(){r.ensureNotDisposed(`untouchAll`),i.untouchAllKeys(u),r.requestNotify()}function _(){r.ensureNotDisposed(`reset`),i.resetKeys(u),r.requestNotify()}function v(e){r.ensureNotDisposed(`replace`),i.replaceKeys(u,(0,t.flattenPaths)(e),l),r.requestNotify()}function y(e){r.ensureNotDisposed(`patch`),r.requestNotify(i.patchKeys(e,l))}function b(e){r.ensureNotDisposed(`resetErrors`),i.resetErrorsKeys(u,e??{},l),r.requestNotify()}async function x(e,t){if(r.ensureNotDisposed(`validate`),e!==void 0&&!Array.isArray(e)&&!(e instanceof AbortSignal)){let n=l(e);await i.runValidationCore([n],`partial`,t);let a=r.fieldErrors.get(n);return{errors:a===void 0?{}:{[e]:a},valid:a===void 0}}if(Array.isArray(e)){let n=e.map(e=>l(e));await i.runValidationCore(n,`partial`,t);let a={};for(let e of n){let t=r.fieldErrors.get(e);t!==void 0&&(a[d(e)]=t)}return{errors:a,valid:Object.keys(a).length===0}}let n=e,a=[...r.validators.keys()].filter(u);await i.runValidationCore(a,`partial`,n);let o={};for(let[e,t]of r.fieldErrors)u(e)&&(o[d(e)]=t);return{errors:o,valid:Object.keys(o).length===0}}async function S(e){if(r.ensureNotDisposed(`submit`),r.isSubmittingState)throw new o(`submit() called while a submission is already in progress`);r.batch(()=>{r.submitCount++,r.isSubmittingState=!0,h()});try{let t=[...r.validators.keys()].filter(u);await i.runValidationCore(t,`partial`),r.ensureNotDisposed(`submit`);let n={};for(let[e,t]of r.fieldErrors)u(e)&&(n[d(e)]=t);return Object.keys(n).length>0?{errors:n,ok:!1,type:`validation`}:{ok:!0,value:await e(p())}}finally{r.isSubmittingState=!1,r.disposed||r.requestNotify()}}function C(e,t){let n=null;return a.subscribe(()=>{let t=f();if(n){let e=n,r=Object.keys(t.errors),i=Object.keys(e.errors),a=r.length===i.length&&r.every(n=>t.errors[n]===e.errors[n]),o=t.touchedFields.length===e.touchedFields.length&&t.touchedFields.every((t,n)=>t===e.touchedFields[n]),s=t.validatingFields.length===e.validatingFields.length&&t.validatingFields.every((t,n)=>t===e.validatingFields[n]);if(t.isDirty===e.isDirty&&t.isLoading===e.isLoading&&t.isSubmitting===e.isSubmitting&&t.isTouched===e.isTouched&&t.isValid===e.isValid&&t.isValidating===e.isValidating&&t.submitCount===e.submitCount&&a&&o&&s)return}n=t,e(t)},t)}function w(){return{array(e){return a.array(l(e))},clearError(e){a.clearError(l(e))},connect(e,t){return a.connect(l(e),t)},field(e){return a.field(l(e))},get(e){return a.get(l(e))},register(e,t){return a.fields.register(l(e),t)},remove(e){a.fields.remove(l(e))},resetField(e){a.resetField(l(e))},set(e,t,n){a.set(l(e),t,n)},setError(e,t){a.setError(l(e),t)},setValidator(e,t){a.fields.setValidator(l(e),t)},subscribeField(e,t,n){return a.subscribeField(l(e),t,n)},touch(e){a.touch(l(e))},untouch(e){a.untouch(l(e))}}}let T=w();return{array:e=>T.array(e),batch:e=>a.batch(e),clearError:e=>T.clearError(e),connect:(e,t)=>T.connect(e,t),get disposalSignal(){return a.disposalSignal},dispose:()=>{},get disposed(){return r.disposed},field:e=>T.field(e),fields:{list:m,register:(e,t)=>T.register(e,t),remove:e=>T.remove(e),setValidator:(e,t)=>T.setValidator(e,t)},get:e=>T.get(e),history:{restore:e=>a.history.restore(e),snapshot:()=>a.history.snapshot()},get isLoading(){return a.isLoading},get isSubmitting(){return a.isSubmitting},patch:y,replace:v,reset:_,resetErrors:b,resetField:e=>T.resetField(e),scope:t=>k(e,l(t)),set:(e,t,n)=>T.set(e,t,n),setError:(e,t)=>T.setError(e,t),get state(){return f()},submit:S,submitOrThrow:async e=>{let t=await S(e);if(!t.ok)throw new s(t.errors);return t.value},subscribe:C,subscribeField:(e,t,n)=>T.subscribeField(e,t,n),[Symbol.asyncIterator]:()=>a[Symbol.asyncIterator](),[Symbol.dispose](){this.dispose()},touch:e=>T.touch(e),touchAll:h,untouch:e=>T.untouch(e),untouchAll:g,validate:x,values:p}}function A(e={}){let t=C(e),n=T(t),r=O(t,{connectDefaults:e.connect??{},set:n.set,touch:n.touch,validateFields:n.validateFields}),i=new Map,a=E(t,{onDispose:()=>i.clear()});typeof e.defaultValues==`function`&&e.defaultValues().then(e=>{t.loadingState=!1,!t.disposed&&n.replace(e)}).catch(n=>{t.loadingState=!1,!t.disposed&&(f(`defaultValues factory rejected. Form will be empty. Error: ${y(String(n))}`),e.onLoadError?.(n),t.requestNotify())});let{listFields:o,patchKeys:s,registerField:c,removeField:l,replaceKeys:u,resetErrorsKeys:d,resetKeys:p,runValidationCore:m,setValidator:h,touchAllKeys:g,untouchAllKeys:_,...v}=n,{restore:b,snapshot:x,...S}=a,w={...v,...r,...S,batch:t.batch,get disposalSignal(){return t.disposeController.signal},get disposed(){return t.disposed},fields:{list:o,register:c,remove:l,setValidator:h},history:{restore:b,snapshot:x},get isLoading(){return t.loadingState},get isSubmitting(){return t.isSubmittingState},scope(e){let n=e,r=i.get(n);if(r)return r;let a=k({ctx:t,fieldOps:{patchKeys:s,replaceKeys:u,resetErrorsKeys:d,resetKeys:p,runValidationCore:m,touchAllKeys:g,untouchAllKeys:_},root:w},e);return i.set(n,a),a},get state(){return t.getStateSnapshot()},[Symbol.dispose](){this.dispose()}};return w}function j(e){let n=new FormData;for(let[r,i]of Object.entries((0,t.flattenPaths)(e)))if(i!=null)if(i instanceof File||i instanceof Blob)n.append(r,i);else if(i instanceof FileList)for(let e=0;e<i.length;e++)n.append(r,i[e]);else if(Array.isArray(i))for(let e of i)n.append(r,e instanceof File||e instanceof Blob?e:String(e));else n.append(r,String(i));return n}return e.FORM_ERROR=c,e.ForgeConfigError=a,e.ForgeDisposedError=i,e.ForgeError=r,e.ForgeSubmitError=o,e.ForgeValidationError=s,e.MAX_TYPED_PATH_DEPTH=l,e.ValidationModes=u,e.createForm=A,e.toFormData=j,e})({},Arsenal,Ripple);
|
|
2
2
|
//# sourceMappingURL=forge.iife.js.map
|