@symbo.ls/utils 3.14.663 → 3.14.685

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,11 @@
1
1
  # @symbo.ls/utils
2
2
 
3
+ ## 3.14.685
4
+
5
+ ### Patch Changes
6
+
7
+ - Auto-generated cross-repo patch release.
8
+
3
9
  ## 3.14.663
4
10
 
5
11
  ### 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 g=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var j=(n,e)=>{for(var i in e)u(n,i,{get:e[i],enumerable:!0})},E=(n,e,i,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of R(e))!U.call(n,r)&&r!==i&&u(n,r,{get:()=>e[r],enumerable:!(t=g(e,r))||t.enumerable});return n};var S=n=>E(u({},"__esModule",{value:!0}),n);var K={};j(K,{deepDefaults:()=>f,fetchLibraryData:()=>k,isWrappedLibrary:()=>p,mergeSharedLibraries:()=>T,normalizeIgnoreList:()=>w,normalizeLibraryKey:()=>l,resolveSharedLibraries:()=>G,sharedLibrary:()=>P});module.exports=S(K);var s=require("./types.js");const m="system",_="https://smbls-kv.nika-980.workers.dev",I="https://api.symbols.app";function l(n){const e=String(n||"").trim();if(!e)return{owner:m,key:"",full:""};let i=null,t=e;if(e.includes("/")){const o=e.indexOf("/");i=e.slice(0,o),t=e.slice(o+1)}t=t.replace(/\.symbo\.ls$/iu,""),i||(i=m);const r=t?`${i}/${t}`:"";return{owner:i,key:t,full:r}}const f=(n,e,i,t)=>{for(const r in e){const o=t?`${t}/${r}`:r;i&&i.has(o)||(r in n?(0,s.isObject)(n[r])&&(0,s.isObject)(e[r])&&f(n[r],e[r],i,o):n[r]=e[r])}},O=new Set,B=n=>n.replace(/\.js$/iu,""),w=n=>{const e=new Set;if(!Array.isArray(n))return e;for(const i of n){if(!(0,s.isString)(i))continue;const t=i.split("/").map(r=>B(r.trim())).filter(Boolean).join("/");t&&e.add(t)}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,i)=>{const t=e.sharePages===!1;for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&r!=="sharePages"&&!(r==="pages"&&t)&&!i.has(r))if((0,s.isObject)(e[r])&&(0,s.isObject)(n[r]))if(r==="designSystem")f(n[r],e[r],i,r);else for(const o in e[r])i.has(`${r}/${o}`)||o in n[r]||(n[r][o]=e[r][o]);else r in n||(n[r]=e[r])},T=(n,e)=>{if(!(!e||!e.length))for(let i=0;i<e.length;i++){let t=e[i],r=O;p(t)&&(r=w(t.ignoreList),t=t.library),(0,s.isObject)(t)&&C(n,t,r)}};async function k(n,e={}){if((e.provider||"kv")==="api")return h(n,e);const t=await F(n,e);return t||h(n,e)}async function F(n,e={}){const i=e.kvBaseUrl||_,t=e.env||"production",r=`${i}/kv/${encodeURIComponent(n)}?env=${t}`;try{const o=await fetch(r,{method:"GET"});return o.ok&&(await o.json())?.value||null}catch{return null}}async function h(n,e={}){const i=e.apiBaseUrl||I,{key:t}=l(n);try{const r=`${i}/core/projects/libraries/available?search=${encodeURIComponent(t)}&limit=10`,o=await fetch(r,{method:"GET"});if(!o.ok)return null;const a=await o.json(),c=(a?.items||a?.data||(Array.isArray(a)?a:[])).find($=>{const{key:A}=l($?.key);return A.toLowerCase()===t.toLowerCase()});if(!c?.id&&!c?._id)return null;const v=c.id||c._id,L=`${i}/core/projects/${encodeURIComponent(v)}/data?branch=main`,y=await fetch(L,{method:"GET"});if(!y.ok)return null;const d=await y.json();return d?.data||d||null}catch{return null}}async function b(n,e={}){if((0,s.isObject)(n))return n;if((0,s.isString)(n)){const{full:i}=l(n);if(!i)return null;try{const t=await k(i,e);return t||console.warn(`[smbls] Shared library "${i}" not found`),t}catch(t){return console.warn(`[smbls] Failed to fetch shared library "${i}":`,t.message),null}}return null}async function G(n,e={}){return!n||!n.length?[]:(await Promise.all(n.map(async t=>{if(p(t)){const r=await b(x(t),e);return r?{library:r,ignoreList:t.ignoreList}:null}return b(t,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 s,isString as p}from"./types.js";const y="system",$="https://smbls-kv.nika-980.workers.dev",A="https://api.symbols.app";function l(n){const e=String(n||"").trim();if(!e)return{owner:y,key:"",full:""};let i=null,t=e;if(e.includes("/")){const o=e.indexOf("/");i=e.slice(0,o),t=e.slice(o+1)}t=t.replace(/\.symbo\.ls$/iu,""),i||(i=y);const r=t?`${i}/${t}`:"";return{owner:i,key:t,full:r}}const d=(n,e,i,t)=>{for(const r in e){const o=t?`${t}/${r}`:r;i&&i.has(o)||(r in n?s(n[r])&&s(e[r])&&d(n[r],e[r],i,o):n[r]=e[r])}},g=new Set,R=n=>n.replace(/\.js$/iu,""),U=n=>{const e=new Set;if(!Array.isArray(n))return e;for(const i of n){if(!p(i))continue;const t=i.split("/").map(r=>R(r.trim())).filter(Boolean).join("/");t&&e.add(t)}return e},B=(n,e={})=>({library:n,ignoreList:Array.isArray(e.ignoreList)?e.ignoreList:[]}),m=n=>s(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,E=(n,e,i)=>{const t=e.sharePages===!1;for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&r!=="sharePages"&&!(r==="pages"&&t)&&!i.has(r))if(s(e[r])&&s(n[r]))if(r==="designSystem")d(n[r],e[r],i,r);else for(const o in e[r])i.has(`${r}/${o}`)||o in n[r]||(n[r][o]=e[r][o]);else r in n||(n[r]=e[r])},P=(n,e)=>{if(!(!e||!e.length))for(let i=0;i<e.length;i++){let t=e[i],r=g;m(t)&&(r=U(t.ignoreList),t=t.library),s(t)&&E(n,t,r)}};async function S(n,e={}){if((e.provider||"kv")==="api")return h(n,e);const t=await _(n,e);return t||h(n,e)}async function _(n,e={}){const i=e.kvBaseUrl||$,t=e.env||"production",r=`${i}/kv/${encodeURIComponent(n)}?env=${t}`;try{const o=await fetch(r,{method:"GET"});return o.ok&&(await o.json())?.value||null}catch{return null}}async function h(n,e={}){const i=e.apiBaseUrl||A,{key:t}=l(n);try{const r=`${i}/core/projects/libraries/available?search=${encodeURIComponent(t)}&limit=10`,o=await fetch(r,{method:"GET"});if(!o.ok)return null;const a=await o.json(),c=(a?.items||a?.data||(Array.isArray(a)?a:[])).find(v=>{const{key:L}=l(v?.key);return L.toLowerCase()===t.toLowerCase()});if(!c?.id&&!c?._id)return null;const w=c.id||c._id,k=`${i}/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(n,e={}){if(s(n))return n;if(p(n)){const{full:i}=l(n);if(!i)return null;try{const t=await S(i,e);return t||console.warn(`[smbls] Shared library "${i}" not found`),t}catch(t){return console.warn(`[smbls] Failed to fetch shared library "${i}":`,t.message),null}}return null}async function x(n,e={}){return!n||!n.length?[]:(await Promise.all(n.map(async t=>{if(m(t)){const r=await b(j(t),e);return r?{library:r,ignoreList:t.ignoreList}:null}return b(t,e)}))).filter(Boolean)}export{d as deepDefaults,S as fetchLibraryData,m as isWrappedLibrary,P as mergeSharedLibraries,U as normalizeIgnoreList,l 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.685",
4
4
  "license": "CC-BY-NC-4.0",
5
5
  "type": "module",
6
6
  "module": "./dist/esm/index.js",
@@ -123,8 +123,16 @@ 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 its `pages` private (`sharePages: false` on its
127
+ // context). Library site routes would otherwise auto-mount into every
128
+ // consumer that doesn't define the same route key — a library serving its
129
+ // own doc site (e.g. system/brand) must be able to opt out. Default stays
130
+ // ON (legacy behavior) so no existing library changes meaning.
131
+ const pagesArePrivate = sharedLib.sharePages === false
126
132
  for (const key in sharedLib) {
127
133
  if (!Object.prototype.hasOwnProperty.call(sharedLib, key)) continue
134
+ if (key === 'sharePages') continue // merge directive, not library content
135
+ if (key === 'pages' && pagesArePrivate) continue
128
136
  if (ignore.has(key)) continue // top-level skip: 'designSystem', 'app', 'state'
129
137
  if (isObject(sharedLib[key]) && isObject(context[key])) {
130
138
  if (key === 'designSystem') {