@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.62 kB
JavaScript
import{valueOf as e,exists as t}from"./get.js";import{getProperties as r}from"./utils.js";import{originSpecificReadPropertyDefinition as n,originSpecificPropertyDefinition as o}from"./extensions/serializableProperty.js";function s(e,r,n){if(!e||!e.read||!1===e.read.enabled||!e.read.source)return!1;const o=e.read.source;if("string"==typeof o){if(o===r)return!0;if(o.includes(".")&&0===o.indexOf(r)&&t(o,n))return!0}else for(const s of o){if(s===r)return!0;if(s.includes(".")&&0===s.indexOf(r)&&t(s,n))return!0}return!1}function i(e){return e&&(!e.read||!1!==e.read.enabled&&!e.read.source)}function a(e,t,r,o,a){let f=n(t[r],a);i(f)&&(e[r]=!0);for(const i of Object.getOwnPropertyNames(t))f=n(t[i],a),s(f,r,o)&&(e[i]=!0)}function f(e,t,r,n){const s=r.metadatas,i=o(s[t],"any",n),a=i&&i.default;if(void 0===a)return;const f="function"==typeof a?a.call(e,t,n):a;void 0!==f&&r.set(t,f)}const c={origin:"service"};function u(t,o,s=c){if(!o||"object"!=typeof o)return;const i=r(t),u=i.metadatas,d={};for(const e of Object.getOwnPropertyNames(o))a(d,u,e,o,s);i.setDefaultOrigin(s.origin);for(const r of Object.getOwnPropertyNames(d)){const a=n(u[r],s).read,f=a&&a.source;let c;c=f&&"string"==typeof f?e(o,f):o[r],a&&a.reader&&(c=a.reader.call(t,c,o,s)),void 0!==c&&i.set(r,c)}if(!s||!s.ignoreDefaults){i.setDefaultOrigin("defaults");for(const e of Object.getOwnPropertyNames(u))d[e]||f(t,e,i,s)}i.setDefaultOrigin("user")}function d(e,t,r,n=c){const o={...n,messages:[]};r(o),o.messages?.forEach((t=>{"warning"!==t.type||e.loaded?n&&n.messages&&n.messages.push(t):e.loadWarnings.push(t)}))}export{u as read,d as readLoadable};