UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.94 kB
import{handlesGroup as r}from"../handleUtils.js";import{clone as n}from"../lang.js";import{assumeNonNull as t}from"../maybe.js";function e(r){return r?r.__accessor__?r.__accessor__:r.propertyInvalidated?r:null:null}function i(r,n){return null!=r&&r.metadatas&&null!=r.metadatas[n]}function u(r,n){const t=e(r);return t?t.getDependsInfo(r,n,""):""}function o(r,n,t){if(t){return a(r,n,{policy:t,path:""})}return a(r,n,null)}function a(r,e,i){return e?Object.keys(e).reduce(((r,u)=>{let o=null,l="merge";if(i&&(o=i.path?`${i.path}.${u}`:u,l=i.policy(o)),"replace"===l)return r[u]=e[u],r;if("replace-arrays"===l&&Array.isArray(r[u]))return r[u]=e[u],r;if(void 0===r[u])return r[u]=n(e[u]),r;let s=r[u],c=e[u];if(s===c)return r;if(Array.isArray(c)||Array.isArray(r))s=s?Array.isArray(s)?r[u]=s.concat():r[u]=[s]:r[u]=[],c&&(Array.isArray(c)||(c=[c]),c.forEach((r=>{s.includes(r)||s.push(r)})));else if(c&&"object"==typeof c)if(i){const n=i.path;i.path=t(o),r[u]=a(s,c,i),i.path=n}else r[u]=a(s,c,null);else r.hasOwnProperty(u)&&!e.hasOwnProperty(u)||(r[u]=c);return r}),r||{}):r}function l(r){return r&&("string"!=typeof r||r.includes("."))?s(r):r}function s(r){return Array.isArray(r)?r:r.split(".")}function c(r){return r.includes(",")?r.split(",").map((r=>r.trim())):[r.trim()]}function f(r){if(Array.isArray(r)){const n=[];for(const t of r)n.push(...c(t));return n}return c(r)}function p(r){if(!r.includes("?"))return null;const n=s(r),t=new Array(n.length);for(let e=0;e<n.length;e++){const r=n[e];t[e]="?"===r[r.length-1],t[e]&&(n[e]=r.slice(0,-1))}return{fullPath:n.join("."),conditional:t}}function y(n,t,e,i){const u=f(t);if(1!==u.length){const t=u.map((r=>i(n,r,e)));return r(t)}return i(n,u[0],e)}function h(r){let n=!1;return()=>{n||(n=!0,r())}}export{u as getDependsInfo,e as getProperties,i as isPropertyDeclared,o as merge,h as once,y as parse,p as parseConditionalPath,s as pathToArray,l as pathToStringOrArray,f as splitPath};