@regle/schemas 1.12.2-beta.1 → 1.12.2

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.
@@ -145,75 +145,27 @@ function createUseRegleSchemaComposable(options, shortcuts) {
145
145
  const customErrors = ref({});
146
146
  const previousIssues = ref([]);
147
147
  let onValidate = void 0;
148
- function getPropertiesFromIssue(issue) {
149
- let $path = getIssuePath(issue);
150
- const lastItem = issue.path?.[issue.path.length - 1];
151
- const lastItemKey = typeof lastItem === "object" ? lastItem.key : lastItem;
152
- const isArray = (typeof lastItem === "object" && "value" in lastItem ? Array.isArray(lastItem.value) : false) || ("type" in issue ? issue.type === "array" : false) || Array.isArray(getDotPath(processedState.value, $path));
153
- return {
154
- isArray,
155
- isPrimitivesArray: !isArray && typeof lastItemKey === "number",
156
- $path,
157
- lastItemKey,
158
- lastItem
159
- };
160
- }
161
148
  function getIssuePath(issue) {
162
149
  return issue.path?.map((item) => typeof item === "object" ? item.key : item.toString()).join(".") ?? "";
163
150
  }
164
- function getParentArrayPath(issue) {
165
- const lastItem = issue.path?.at(-1);
166
- const isNestedPath = typeof lastItem === "object" ? typeof lastItem.key === "string" : typeof lastItem === "string";
167
- const index = issue.path?.findLastIndex((item) => typeof item === "object" ? typeof item.key === "number" : typeof item === "number");
168
- if (!isNestedPath && index === -1) return;
169
- if (index != null) {
170
- const truncatedPath = issue.path?.slice(0, index + 1);
171
- return {
172
- ...issue,
173
- path: truncatedPath
174
- };
175
- }
176
- }
177
151
  if (!computedSchema.value?.["~standard"]) throw new Error(`Only "standard-schema" compatible libraries are supported`);
178
152
  function filterIssues(issues, isValidate = false) {
179
153
  if (!isValidate && resolvedOptions.rewardEarly) {
180
- if (previousIssues.value.length) return previousIssues.value.reduce((acc, issue) => {
181
- if ("$currentArrayValue" in issue && isObject(issue.$currentArrayValue) && "$id" in issue.$currentArrayValue) {
182
- let itemId = issue.$currentArrayValue.$id;
183
- const previousArrayIssue = issues.find((i) => i?.$currentArrayValue?.["$id"] === itemId);
184
- if (previousArrayIssue) acc.push({
185
- ...issue,
186
- path: previousArrayIssue?.path ?? []
187
- });
188
- } else if (issues.some((i) => getIssuePath(i) === getIssuePath(issue))) acc.push(issue);
189
- return acc;
190
- }, []);
154
+ if (previousIssues.value.length) return previousIssues.value.filter((issue) => issues.some((i) => getIssuePath(i) === getIssuePath(issue)));
191
155
  return [];
192
156
  }
193
157
  return issues;
194
158
  }
195
159
  function issuesToRegleErrors(result, isValidate = false) {
196
160
  const output = {};
197
- const mappedIssues = result.issues?.map((issue) => {
198
- const { isPrimitivesArray } = getPropertiesFromIssue(issue);
199
- if (isPrimitivesArray) return issue;
200
- const parentArrayPath = getParentArrayPath(issue);
201
- if (parentArrayPath) {
202
- const $currentArrayValue = getDotPath(processedState.value, getIssuePath(parentArrayPath));
203
- Object.defineProperty(issue, "$currentArrayValue", {
204
- value: $currentArrayValue,
205
- enumerable: true,
206
- configurable: true,
207
- writable: true
208
- });
209
- }
210
- return issue;
211
- });
212
- const filteredIssues = filterIssues(mappedIssues ?? [], isValidate);
213
- if (mappedIssues?.length) {
161
+ let filteredIssues = filterIssues(result.issues ?? [], isValidate);
162
+ if (result.issues?.length) {
214
163
  const issues = filteredIssues.map((issue) => {
215
- let { isArray, isPrimitivesArray, $path, lastItemKey } = getPropertiesFromIssue(issue);
216
- if (isPrimitivesArray) $path = issue.path?.slice(0, issue.path.length - 1)?.map((item) => typeof item === "object" ? item.key : item.toString()).join(".") ?? "";
164
+ let $path = getIssuePath(issue);
165
+ const lastItem = issue.path?.[issue.path.length - 1];
166
+ const lastItemKey = typeof lastItem === "object" ? lastItem.key : lastItem;
167
+ const isArray = (typeof lastItem === "object" && "value" in lastItem ? Array.isArray(lastItem.value) : false) || ("type" in issue ? issue.type === "array" : false) || Array.isArray(getDotPath(processedState.value, $path));
168
+ if (!isArray && typeof lastItemKey === "number") $path = issue.path?.slice(0, issue.path.length - 1)?.map((item) => typeof item === "object" ? item.key : item.toString()).join(".") ?? "";
217
169
  return {
218
170
  ...issue,
219
171
  $path,
@@ -1 +1 @@
1
- import{createScopedUseRegle as e,useRootStorage as t}from"@regle/core";import{computed as n,getCurrentScope as r,isRef as i,onScopeDispose as a,ref as o,unref as s,watch as c}from"vue";function l(e){return e?.constructor?.name==`File`||e?.constructor?.name==`FileList`}function u(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):l(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}function d(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function f(e,t=0){if(t>20)return e;let n=e,r={}.toString.call(e).slice(8,-1);if(r==`Set`&&(n=new Set([...e].map(e=>f(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[f(e[0]),f(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,d(e))),r==`Array`||r==`Object`)for(let r in n=Array.isArray(e)?[]:{},e)n[r]=f(e[r],t++);return n}function p(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function m(e,t,n,r){var i,a;if(Array.isArray(t)&&(i=t.slice(0)),typeof t==`string`&&(i=t.split(`.`)),typeof t==`symbol`&&(i=[t]),!Array.isArray(i))throw Error(`props arg must be an array, a string or a symbol`);if(a=i.pop(),!a)return!1;g(a);for(var o;o=i.shift();)if(g(o),isNaN(parseInt(o))?(e[o]===void 0&&(e[o]={}),e=e[o]):(e.$each??=[],u(e.$each[o])&&(e.$each[o]={}),e=e.$each[o]),!e||typeof e!=`object`)return!1;return r?e[a]?e[a].$self=(e[a].$self??=[]).concat(n):e[a]={$self:n}:Array.isArray(e[a])?e[a]=e[a].concat(n):e[a]=n,!0}function h(e,t,n){if(!e)return n;var r,i;if(Array.isArray(t)&&(r=t.slice(0)),typeof t==`string`&&(r=t.split(`.`)),typeof t==`symbol`&&(r=[t]),!Array.isArray(r))throw Error(`props arg must be an array, a string or a symbol`);for(;r.length;)if(i=r.shift(),!e||!i||(e=e[i],e===void 0))return n;return e}function g(e){if(e==`__proto__`||e==`constructor`||e==`prototype`)throw Error(`setting of prototype values not supported`)}function _(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function v(e,l){let u={autoDirty:e?.autoDirty,lazy:e?.lazy,rewardEarly:e?.rewardEarly,clearExternalErrorsOnChange:e?.clearExternalErrorsOnChange};function d(e,d,g){let v=n(()=>s(d)),{syncState:y={onUpdate:!1,onValidate:!1},...b}=g??{},{onUpdate:x=!1,onValidate:S=!1}=y,C={...u,...b},w=n(()=>!p(T.value)),T=i(e)?e:o(e),E=o(p(T.value)?{...f(T.value)}:f(T.value)),D=p(T.value)?{...f(T.value)}:f(T.value),O=o({}),k=o([]),A;function j(e){let t=M(e),n=e.path?.[e.path.length-1],r=typeof n==`object`?n.key:n,i=(typeof n==`object`&&`value`in n?Array.isArray(n.value):!1)||(`type`in e?e.type===`array`:!1)||Array.isArray(h(T.value,t));return{isArray:i,isPrimitivesArray:!i&&typeof r==`number`,$path:t,lastItemKey:r,lastItem:n}}function M(e){return e.path?.map(e=>typeof e==`object`?e.key:e.toString()).join(`.`)??``}function N(e){let t=e.path?.at(-1),n=typeof t==`object`?typeof t.key==`string`:typeof t==`string`,r=e.path?.findLastIndex(e=>typeof e==`object`?typeof e.key==`number`:typeof e==`number`);if(!(!n&&r===-1)&&r!=null){let t=e.path?.slice(0,r+1);return{...e,path:t}}}if(!v.value?.[`~standard`])throw Error(`Only "standard-schema" compatible libraries are supported`);function P(e,t=!1){return!t&&C.rewardEarly?k.value.length?k.value.reduce((t,n)=>{if(`$currentArrayValue`in n&&p(n.$currentArrayValue)&&`$id`in n.$currentArrayValue){let r=n.$currentArrayValue.$id,i=e.find(e=>e?.$currentArrayValue?.$id===r);i&&t.push({...n,path:i?.path??[]})}else e.some(e=>M(e)===M(n))&&t.push(n);return t},[]):[]:e}function F(e,t=!1){let n={},r=e.issues?.map(e=>{let{isPrimitivesArray:t}=j(e);if(t)return e;let n=N(e);if(n){let t=h(T.value,M(n));Object.defineProperty(e,`$currentArrayValue`,{value:t,enumerable:!0,configurable:!0,writable:!0})}return e}),i=P(r??[],t);if(r?.length){let e=i.map(e=>{let{isArray:t,isPrimitivesArray:n,$path:r,lastItemKey:i}=j(e);return n&&(r=e.path?.slice(0,e.path.length-1)?.map(e=>typeof e==`object`?e.key:e.toString()).join(`.`)??``),{...e,$path:r,isArray:t,$property:i,$rule:`schema`,$message:e.message}});e.forEach(({isArray:e,$path:t,...r})=>{m(n,t,[r],e)}),k.value=e}else k.value=[];return n}async function I(e=!1){let t=v.value[`~standard`].validate(T.value);return t instanceof Promise&&(t=await t),w.value?O.value=P(t.issues??[],e)?.map(e=>({$message:e.message,$property:e.path?.[e.path.length-1]?.toString()??`-`,$rule:`schema`,...e}))??[]:O.value=F(t,e),t.issues||(e&&S||!e&&x)&&(L?.(),p(T.value)?T.value=_(T.value,t.value):T.value=t.value,R()),t}let L;function R(){L=c([T,v],()=>{C.silent||I()},{deep:!0})}R(),I(),A=async()=>{try{let e=await I(!0);return z?.regle?.$touch(),{valid:!e.issues?.length,data:T.value,errors:z?.regle?.$errors,issues:O.value}}catch(e){return Promise.reject(e)}},r()&&a(()=>{L()});let z=t({scopeRules:n(()=>({})),state:T,options:C,schemaErrors:O,initialState:E,originalState:D,shortcuts:l,schemaMode:!0,onValidate:A});return{r$:z.regle}}return d}const y=v();function b(e,t){return e}function x(){function e(e,t){return t}return e}const S=x();function C({modifiers:e,shortcuts:t}){return{useRegleSchema:v(e,t),inferSchema:x()}}const{useCollectScope:w,useScopedRegle:T}=e({customUseRegle:y}),E=t=>{let{customStore:n,customUseRegle:r=y,asRecord:i=!1}=t??{};return e({customStore:n,customUseRegle:r,asRecord:i})};export{E as createScopedUseRegleSchema,C as defineRegleSchemaConfig,S as inferSchema,w as useCollectSchemaScope,y as useRegleSchema,T as useScopedRegleSchema,b as withDeps};
1
+ import{createScopedUseRegle as e,useRootStorage as t}from"@regle/core";import{computed as n,getCurrentScope as r,isRef as i,onScopeDispose as a,ref as o,unref as s,watch as c}from"vue";function l(e){return e?.constructor?.name==`File`||e?.constructor?.name==`FileList`}function u(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):l(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}function d(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function f(e,t=0){if(t>20)return e;let n=e,r={}.toString.call(e).slice(8,-1);if(r==`Set`&&(n=new Set([...e].map(e=>f(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[f(e[0]),f(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,d(e))),r==`Array`||r==`Object`)for(let r in n=Array.isArray(e)?[]:{},e)n[r]=f(e[r],t++);return n}function p(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function m(e,t,n,r){var i,a;if(Array.isArray(t)&&(i=t.slice(0)),typeof t==`string`&&(i=t.split(`.`)),typeof t==`symbol`&&(i=[t]),!Array.isArray(i))throw Error(`props arg must be an array, a string or a symbol`);if(a=i.pop(),!a)return!1;g(a);for(var o;o=i.shift();)if(g(o),isNaN(parseInt(o))?(e[o]===void 0&&(e[o]={}),e=e[o]):(e.$each??=[],u(e.$each[o])&&(e.$each[o]={}),e=e.$each[o]),!e||typeof e!=`object`)return!1;return r?e[a]?e[a].$self=(e[a].$self??=[]).concat(n):e[a]={$self:n}:Array.isArray(e[a])?e[a]=e[a].concat(n):e[a]=n,!0}function h(e,t,n){if(!e)return n;var r,i;if(Array.isArray(t)&&(r=t.slice(0)),typeof t==`string`&&(r=t.split(`.`)),typeof t==`symbol`&&(r=[t]),!Array.isArray(r))throw Error(`props arg must be an array, a string or a symbol`);for(;r.length;)if(i=r.shift(),!e||!i||(e=e[i],e===void 0))return n;return e}function g(e){if(e==`__proto__`||e==`constructor`||e==`prototype`)throw Error(`setting of prototype values not supported`)}function _(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function v(e,l){let u={autoDirty:e?.autoDirty,lazy:e?.lazy,rewardEarly:e?.rewardEarly,clearExternalErrorsOnChange:e?.clearExternalErrorsOnChange};function d(e,d,g){let v=n(()=>s(d)),{syncState:y={onUpdate:!1,onValidate:!1},...b}=g??{},{onUpdate:x=!1,onValidate:S=!1}=y,C={...u,...b},w=n(()=>!p(T.value)),T=i(e)?e:o(e),E=o(p(T.value)?{...f(T.value)}:f(T.value)),D=p(T.value)?{...f(T.value)}:f(T.value),O=o({}),k=o([]),A;function j(e){return e.path?.map(e=>typeof e==`object`?e.key:e.toString()).join(`.`)??``}if(!v.value?.[`~standard`])throw Error(`Only "standard-schema" compatible libraries are supported`);function M(e,t=!1){return!t&&C.rewardEarly?k.value.length?k.value.filter(t=>e.some(e=>j(e)===j(t))):[]:e}function N(e,t=!1){let n={},r=M(e.issues??[],t);if(e.issues?.length){let e=r.map(e=>{let t=j(e),n=e.path?.[e.path.length-1],r=typeof n==`object`?n.key:n,i=(typeof n==`object`&&`value`in n?Array.isArray(n.value):!1)||(`type`in e?e.type===`array`:!1)||Array.isArray(h(T.value,t));return!i&&typeof r==`number`&&(t=e.path?.slice(0,e.path.length-1)?.map(e=>typeof e==`object`?e.key:e.toString()).join(`.`)??``),{...e,$path:t,isArray:i,$property:r,$rule:`schema`,$message:e.message}});e.forEach(({isArray:e,$path:t,...r})=>{m(n,t,[r],e)}),k.value=e}else k.value=[];return n}async function P(e=!1){let t=v.value[`~standard`].validate(T.value);return t instanceof Promise&&(t=await t),w.value?O.value=M(t.issues??[],e)?.map(e=>({$message:e.message,$property:e.path?.[e.path.length-1]?.toString()??`-`,$rule:`schema`,...e}))??[]:O.value=N(t,e),t.issues||(e&&S||!e&&x)&&(F?.(),p(T.value)?T.value=_(T.value,t.value):T.value=t.value,I()),t}let F;function I(){F=c([T,v],()=>{C.silent||P()},{deep:!0})}I(),P(),A=async()=>{try{let e=await P(!0);return L?.regle?.$touch(),{valid:!e.issues?.length,data:T.value,errors:L?.regle?.$errors,issues:O.value}}catch(e){return Promise.reject(e)}},r()&&a(()=>{F()});let L=t({scopeRules:n(()=>({})),state:T,options:C,schemaErrors:O,initialState:E,originalState:D,shortcuts:l,schemaMode:!0,onValidate:A});return{r$:L.regle}}return d}const y=v();function b(e,t){return e}function x(){function e(e,t){return t}return e}const S=x();function C({modifiers:e,shortcuts:t}){return{useRegleSchema:v(e,t),inferSchema:x()}}const{useCollectScope:w,useScopedRegle:T}=e({customUseRegle:y}),E=t=>{let{customStore:n,customUseRegle:r=y,asRecord:i=!1}=t??{};return e({customStore:n,customUseRegle:r,asRecord:i})};export{E as createScopedUseRegleSchema,C as defineRegleSchemaConfig,S as inferSchema,w as useCollectSchemaScope,y as useRegleSchema,T as useScopedRegleSchema,b as withDeps};
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@regle/schemas",
3
- "version": "1.12.2-beta.1",
3
+ "version": "1.12.2",
4
4
  "description": "Schemas adapter for Regle",
5
5
  "dependencies": {
6
6
  "@standard-schema/spec": "1.0.0",
7
7
  "type-fest": "5.2.0",
8
- "@regle/rules": "1.12.2-beta.1",
9
- "@regle/core": "1.12.2-beta.1"
8
+ "@regle/core": "1.12.2",
9
+ "@regle/rules": "1.12.2"
10
10
  },
11
11
  "peerDependencies": {
12
12
  "valibot": "^1.0.0",