@symbo.ls/utils 3.14.663 → 3.14.691

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @symbo.ls/utils
2
2
 
3
+ ## 3.14.691
4
+
5
+ ### Patch Changes
6
+
7
+ - Auto-generated cross-repo patch release.
8
+
9
+ ## 3.14.685
10
+
11
+ ### Patch Changes
12
+
13
+ - Auto-generated cross-repo patch release.
14
+
3
15
  ## 3.14.663
4
16
 
5
17
  ### Patch Changes
@@ -1 +1 @@
1
- "use strict";var u=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var g=(n,t)=>{for(var e in t)u(n,e,{get:t[e],enumerable:!0})},E=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of U(t))!j.call(n,i)&&i!==e&&u(n,i,{get:()=>t[i],enumerable:!(r=R(t,i))||r.enumerable});return n};var S=n=>E(u({},"__esModule",{value:!0}),n);var P={};g(P,{deepDefaults:()=>f,fetchLibraryData:()=>k,isWrappedLibrary:()=>d,mergeSharedLibraries:()=>F,normalizeIgnoreList:()=>w,normalizeLibraryKey:()=>c,resolveSharedLibraries:()=>K,sharedLibrary:()=>x});module.exports=S(P);var s=require("./types.js");const m="system",_="https://smbls-kv.nika-980.workers.dev",I="https://api.symbols.app";function c(n){const t=String(n||"").trim();if(!t)return{owner:m,key:"",full:""};let e=null,r=t;if(t.includes("/")){const o=t.indexOf("/");e=t.slice(0,o),r=t.slice(o+1)}r=r.replace(/\.symbo\.ls$/iu,""),e||(e=m);const i=r?`${e}/${r}`:"";return{owner:e,key:r,full:i}}const f=(n,t,e,r)=>{for(const i in t){const o=r?`${r}/${i}`:i;e&&e.has(o)||(i in n?(0,s.isObject)(n[i])&&(0,s.isObject)(t[i])&&f(n[i],t[i],e,o):n[i]=t[i])}},O=new Set,B=n=>n.replace(/\.js$/iu,""),w=n=>{const t=new Set;if(!Array.isArray(n))return t;for(const e of n){if(!(0,s.isString)(e))continue;const r=e.split("/").map(i=>B(i.trim())).filter(Boolean).join("/");r&&t.add(r)}return t},x=(n,t={})=>({library:n,ignoreList:Array.isArray(t.ignoreList)?t.ignoreList:[]}),d=n=>(0,s.isObject)(n)&&Array.isArray(n.ignoreList)&&("library"in n||"key"in n||"name"in n),C=n=>n.library!==void 0?n.library:n.key??n.name,T=(n,t,e)=>{for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&!e.has(r))if((0,s.isObject)(t[r])&&(0,s.isObject)(n[r]))if(r==="designSystem")f(n[r],t[r],e,r);else for(const i in t[r])e.has(`${r}/${i}`)||i in n[r]||(n[r][i]=t[r][i]);else r in n||(n[r]=t[r])},F=(n,t)=>{if(!(!t||!t.length))for(let e=0;e<t.length;e++){let r=t[e],i=O;d(r)&&(i=w(r.ignoreList),r=r.library),(0,s.isObject)(r)&&T(n,r,i)}};async function k(n,t={}){if((t.provider||"kv")==="api")return h(n,t);const r=await G(n,t);return r||h(n,t)}async function G(n,t={}){const e=t.kvBaseUrl||_,r=t.env||"production",i=`${e}/kv/${encodeURIComponent(n)}?env=${r}`;try{const o=await fetch(i,{method:"GET"});return o.ok&&(await o.json())?.value||null}catch{return null}}async function h(n,t={}){const e=t.apiBaseUrl||I,{key:r}=c(n);try{const i=`${e}/core/projects/libraries/available?search=${encodeURIComponent(r)}&limit=10`,o=await fetch(i,{method:"GET"});if(!o.ok)return null;const a=await o.json(),l=(a?.items||a?.data||(Array.isArray(a)?a:[])).find($=>{const{key:A}=c($?.key);return A.toLowerCase()===r.toLowerCase()});if(!l?.id&&!l?._id)return null;const L=l.id||l._id,v=`${e}/core/projects/${encodeURIComponent(L)}/data?branch=main`,y=await fetch(v,{method:"GET"});if(!y.ok)return null;const p=await y.json();return p?.data||p||null}catch{return null}}async function b(n,t={}){if((0,s.isObject)(n))return n;if((0,s.isString)(n)){const{full:e}=c(n);if(!e)return null;try{const r=await k(e,t);return r||console.warn(`[smbls] Shared library "${e}" not found`),r}catch(r){return console.warn(`[smbls] Failed to fetch shared library "${e}":`,r.message),null}}return null}async function K(n,t={}){return!n||!n.length?[]:(await Promise.all(n.map(async r=>{if(d(r)){const i=await b(C(r),t);return i?{library:i,ignoreList:r.ignoreList}:null}return b(r,t)}))).filter(Boolean)}
1
+ "use strict";var u=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var j=(n,e)=>{for(var t in e)u(n,t,{get:e[t],enumerable:!0})},I=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of R(e))!U.call(n,i)&&i!==t&&u(n,i,{get:()=>e[i],enumerable:!(r=A(e,i))||r.enumerable});return n};var S=n=>I(u({},"__esModule",{value:!0}),n);var K={};j(K,{deepDefaults:()=>f,fetchLibraryData:()=>k,isWrappedLibrary:()=>p,mergeSharedLibraries:()=>T,normalizeIgnoreList:()=>d,normalizeLibraryKey:()=>c,resolveSharedLibraries:()=>G,sharedLibrary:()=>P});module.exports=S(K);var s=require("./types.js");const h="system",E="https://smbls-kv.nika-980.workers.dev",_="https://api.symbols.app";function c(n){const e=String(n||"").trim();if(!e)return{owner:h,key:"",full:""};let t=null,r=e;if(e.includes("/")){const o=e.indexOf("/");t=e.slice(0,o),r=e.slice(o+1)}r=r.replace(/\.symbo\.ls$/iu,""),t||(t=h);const i=r?`${t}/${r}`:"";return{owner:t,key:r,full:i}}const f=(n,e,t,r)=>{for(const i in e){const o=r?`${r}/${i}`:i;t&&t.has(o)||(i in n?(0,s.isObject)(n[i])&&(0,s.isObject)(e[i])&&f(n[i],e[i],t,o):n[i]=e[i])}},O=new Set,B=n=>n.replace(/\.js$/iu,""),d=n=>{const e=new Set;if(!Array.isArray(n))return e;for(const t of n){if(!(0,s.isString)(t))continue;const r=t.split("/").map(i=>B(i.trim())).filter(Boolean).join("/");r&&e.add(r)}return e},P=(n,e={})=>({library:n,ignoreList:Array.isArray(e.ignoreList)?e.ignoreList:[]}),p=n=>(0,s.isObject)(n)&&Array.isArray(n.ignoreList)&&("library"in n||"key"in n||"name"in n),x=n=>n.library!==void 0?n.library:n.key??n.name,C=(n,e,t)=>{const r=d(e.sharedLibIgnore);e.sharePages===!1&&r.add("pages");const i=r.size?new Set([...t,...r]):t;for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&!(o==="sharePages"||o==="sharedLibIgnore")&&!i.has(o))if((0,s.isObject)(e[o])&&(0,s.isObject)(n[o]))if(o==="designSystem")f(n[o],e[o],i,o);else for(const a in e[o])i.has(`${o}/${a}`)||a in n[o]||(n[o][a]=e[o][a]);else o in n||(n[o]=e[o])},T=(n,e)=>{if(!(!e||!e.length))for(let t=0;t<e.length;t++){let r=e[t],i=O;p(r)&&(i=d(r.ignoreList),r=r.library),(0,s.isObject)(r)&&C(n,r,i)}};async function k(n,e={}){if((e.provider||"kv")==="api")return b(n,e);const r=await F(n,e);return r||b(n,e)}async function F(n,e={}){const t=e.kvBaseUrl||E,r=e.env||"production",i=`${t}/kv/${encodeURIComponent(n)}?env=${r}`;try{const o=await fetch(i,{method:"GET"});return o.ok&&(await o.json())?.value||null}catch{return null}}async function b(n,e={}){const t=e.apiBaseUrl||_,{key:r}=c(n);try{const i=`${t}/core/projects/libraries/available?search=${encodeURIComponent(r)}&limit=10`,o=await fetch(i,{method:"GET"});if(!o.ok)return null;const a=await o.json(),l=(a?.items||a?.data||(Array.isArray(a)?a:[])).find(g=>{const{key:$}=c(g?.key);return $.toLowerCase()===r.toLowerCase()});if(!l?.id&&!l?._id)return null;const L=l.id||l._id,v=`${t}/core/projects/${encodeURIComponent(L)}/data?branch=main`,y=await fetch(v,{method:"GET"});if(!y.ok)return null;const m=await y.json();return m?.data||m||null}catch{return null}}async function w(n,e={}){if((0,s.isObject)(n))return n;if((0,s.isString)(n)){const{full:t}=c(n);if(!t)return null;try{const r=await k(t,e);return r||console.warn(`[smbls] Shared library "${t}" not found`),r}catch(r){return console.warn(`[smbls] Failed to fetch shared library "${t}":`,r.message),null}}return null}async function G(n,e={}){return!n||!n.length?[]:(await Promise.all(n.map(async r=>{if(p(r)){const i=await w(x(r),e);return i?{library:i,ignoreList:r.ignoreList}:null}return w(r,e)}))).filter(Boolean)}
@@ -1 +1 @@
1
- import{isObject as s,isString as d}from"./types.js";const y="system",$="https://smbls-kv.nika-980.workers.dev",A="https://api.symbols.app";function c(r){const t=String(r||"").trim();if(!t)return{owner:y,key:"",full:""};let e=null,n=t;if(t.includes("/")){const o=t.indexOf("/");e=t.slice(0,o),n=t.slice(o+1)}n=n.replace(/\.symbo\.ls$/iu,""),e||(e=y);const i=n?`${e}/${n}`:"";return{owner:e,key:n,full:i}}const p=(r,t,e,n)=>{for(const i in t){const o=n?`${n}/${i}`:i;e&&e.has(o)||(i in r?s(r[i])&&s(t[i])&&p(r[i],t[i],e,o):r[i]=t[i])}},R=new Set,U=r=>r.replace(/\.js$/iu,""),j=r=>{const t=new Set;if(!Array.isArray(r))return t;for(const e of r){if(!d(e))continue;const n=e.split("/").map(i=>U(i.trim())).filter(Boolean).join("/");n&&t.add(n)}return t},B=(r,t={})=>({library:r,ignoreList:Array.isArray(t.ignoreList)?t.ignoreList:[]}),m=r=>s(r)&&Array.isArray(r.ignoreList)&&("library"in r||"key"in r||"name"in r),g=r=>r.library!==void 0?r.library:r.key??r.name,E=(r,t,e)=>{for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&!e.has(n))if(s(t[n])&&s(r[n]))if(n==="designSystem")p(r[n],t[n],e,n);else for(const i in t[n])e.has(`${n}/${i}`)||i in r[n]||(r[n][i]=t[n][i]);else n in r||(r[n]=t[n])},x=(r,t)=>{if(!(!t||!t.length))for(let e=0;e<t.length;e++){let n=t[e],i=R;m(n)&&(i=j(n.ignoreList),n=n.library),s(n)&&E(r,n,i)}};async function S(r,t={}){if((t.provider||"kv")==="api")return h(r,t);const n=await _(r,t);return n||h(r,t)}async function _(r,t={}){const e=t.kvBaseUrl||$,n=t.env||"production",i=`${e}/kv/${encodeURIComponent(r)}?env=${n}`;try{const o=await fetch(i,{method:"GET"});return o.ok&&(await o.json())?.value||null}catch{return null}}async function h(r,t={}){const e=t.apiBaseUrl||A,{key:n}=c(r);try{const i=`${e}/core/projects/libraries/available?search=${encodeURIComponent(n)}&limit=10`,o=await fetch(i,{method:"GET"});if(!o.ok)return null;const a=await o.json(),l=(a?.items||a?.data||(Array.isArray(a)?a:[])).find(L=>{const{key:v}=c(L?.key);return v.toLowerCase()===n.toLowerCase()});if(!l?.id&&!l?._id)return null;const w=l.id||l._id,k=`${e}/core/projects/${encodeURIComponent(w)}/data?branch=main`,u=await fetch(k,{method:"GET"});if(!u.ok)return null;const f=await u.json();return f?.data||f||null}catch{return null}}async function b(r,t={}){if(s(r))return r;if(d(r)){const{full:e}=c(r);if(!e)return null;try{const n=await S(e,t);return n||console.warn(`[smbls] Shared library "${e}" not found`),n}catch(n){return console.warn(`[smbls] Failed to fetch shared library "${e}":`,n.message),null}}return null}async function C(r,t={}){return!r||!r.length?[]:(await Promise.all(r.map(async n=>{if(m(n)){const i=await b(g(n),t);return i?{library:i,ignoreList:n.ignoreList}:null}return b(n,t)}))).filter(Boolean)}export{p as deepDefaults,S as fetchLibraryData,m as isWrappedLibrary,x as mergeSharedLibraries,j as normalizeIgnoreList,c as normalizeLibraryKey,C as resolveSharedLibraries,B as sharedLibrary};
1
+ import{isObject as a,isString as d}from"./types.js";const p="system",$="https://smbls-kv.nika-980.workers.dev",A="https://api.symbols.app";function c(n){const e=String(n||"").trim();if(!e)return{owner:p,key:"",full:""};let t=null,r=e;if(e.includes("/")){const i=e.indexOf("/");t=e.slice(0,i),r=e.slice(i+1)}r=r.replace(/\.symbo\.ls$/iu,""),t||(t=p);const o=r?`${t}/${r}`:"";return{owner:t,key:r,full:o}}const y=(n,e,t,r)=>{for(const o in e){const i=r?`${r}/${o}`:o;t&&t.has(i)||(o in n?a(n[o])&&a(e[o])&&y(n[o],e[o],t,i):n[o]=e[o])}},R=new Set,U=n=>n.replace(/\.js$/iu,""),m=n=>{const e=new Set;if(!Array.isArray(n))return e;for(const t of n){if(!d(t))continue;const r=t.split("/").map(o=>U(o.trim())).filter(Boolean).join("/");r&&e.add(r)}return e},B=(n,e={})=>({library:n,ignoreList:Array.isArray(e.ignoreList)?e.ignoreList:[]}),h=n=>a(n)&&Array.isArray(n.ignoreList)&&("library"in n||"key"in n||"name"in n),j=n=>n.library!==void 0?n.library:n.key??n.name,I=(n,e,t)=>{const r=m(e.sharedLibIgnore);e.sharePages===!1&&r.add("pages");const o=r.size?new Set([...t,...r]):t;for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&!(i==="sharePages"||i==="sharedLibIgnore")&&!o.has(i))if(a(e[i])&&a(n[i]))if(i==="designSystem")y(n[i],e[i],o,i);else for(const s in e[i])o.has(`${i}/${s}`)||s in n[i]||(n[i][s]=e[i][s]);else i in n||(n[i]=e[i])},P=(n,e)=>{if(!(!e||!e.length))for(let t=0;t<e.length;t++){let r=e[t],o=R;h(r)&&(o=m(r.ignoreList),r=r.library),a(r)&&I(n,r,o)}};async function S(n,e={}){if((e.provider||"kv")==="api")return b(n,e);const r=await E(n,e);return r||b(n,e)}async function E(n,e={}){const t=e.kvBaseUrl||$,r=e.env||"production",o=`${t}/kv/${encodeURIComponent(n)}?env=${r}`;try{const i=await fetch(o,{method:"GET"});return i.ok&&(await i.json())?.value||null}catch{return null}}async function b(n,e={}){const t=e.apiBaseUrl||A,{key:r}=c(n);try{const o=`${t}/core/projects/libraries/available?search=${encodeURIComponent(r)}&limit=10`,i=await fetch(o,{method:"GET"});if(!i.ok)return null;const s=await i.json(),l=(s?.items||s?.data||(Array.isArray(s)?s:[])).find(v=>{const{key:g}=c(v?.key);return g.toLowerCase()===r.toLowerCase()});if(!l?.id&&!l?._id)return null;const k=l.id||l._id,L=`${t}/core/projects/${encodeURIComponent(k)}/data?branch=main`,u=await fetch(L,{method:"GET"});if(!u.ok)return null;const f=await u.json();return f?.data||f||null}catch{return null}}async function w(n,e={}){if(a(n))return n;if(d(n)){const{full:t}=c(n);if(!t)return null;try{const r=await S(t,e);return r||console.warn(`[smbls] Shared library "${t}" not found`),r}catch(r){return console.warn(`[smbls] Failed to fetch shared library "${t}":`,r.message),null}}return null}async function x(n,e={}){return!n||!n.length?[]:(await Promise.all(n.map(async r=>{if(h(r)){const o=await w(j(r),e);return o?{library:o,ignoreList:r.ignoreList}:null}return w(r,e)}))).filter(Boolean)}export{y as deepDefaults,S as fetchLibraryData,h as isWrappedLibrary,P as mergeSharedLibraries,m as normalizeIgnoreList,c as normalizeLibraryKey,x as resolveSharedLibraries,B as sharedLibrary};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symbo.ls/utils",
3
- "version": "3.14.663",
3
+ "version": "3.14.691",
4
4
  "license": "CC-BY-NC-4.0",
5
5
  "type": "module",
6
6
  "module": "./dist/esm/index.js",
@@ -123,15 +123,30 @@ const wrappedLibraryRef = (entry) =>
123
123
  entry.library !== undefined ? entry.library : (entry.key ?? entry.name)
124
124
 
125
125
  const mergeOneLibrary = (context, sharedLib, ignore) => {
126
+ // A library can declare parts of itself private via `sharedLibIgnore` on
127
+ // its own context — same path grammar as the consumer-side `ignoreList`
128
+ // (top-level keys or nested 'components/Header'). A library serving its
129
+ // own doc site (e.g. system/brand with `sharedLibIgnore: ['pages']`)
130
+ // must be able to keep its routes out of every consumer; without it,
131
+ // library pages auto-mount into any consumer that doesn't define the same
132
+ // route key. `sharePages: false` is the earlier, narrower alias — kept
133
+ // working, superseded by sharedLibIgnore.
134
+ const libIgnore = normalizeIgnoreList(sharedLib.sharedLibIgnore)
135
+ if (sharedLib.sharePages === false) libIgnore.add('pages')
136
+ const skip = libIgnore.size
137
+ ? new Set([...ignore, ...libIgnore])
138
+ : ignore
126
139
  for (const key in sharedLib) {
127
140
  if (!Object.prototype.hasOwnProperty.call(sharedLib, key)) continue
128
- if (ignore.has(key)) continue // top-level skip: 'designSystem', 'app', 'state'
141
+ // merge directives, not library content
142
+ if (key === 'sharePages' || key === 'sharedLibIgnore') continue
143
+ if (skip.has(key)) continue // top-level skip: 'designSystem', 'app', 'state'
129
144
  if (isObject(sharedLib[key]) && isObject(context[key])) {
130
145
  if (key === 'designSystem') {
131
- deepDefaults(context[key], sharedLib[key], ignore, key)
146
+ deepDefaults(context[key], sharedLib[key], skip, key)
132
147
  } else {
133
148
  for (const k in sharedLib[key]) {
134
- if (ignore.has(`${key}/${k}`)) continue // nested skip: 'components/Header'
149
+ if (skip.has(`${key}/${k}`)) continue // nested skip: 'components/Header'
135
150
  if (!(k in context[key])) context[key][k] = sharedLib[key][k]
136
151
  }
137
152
  }