@uniformdev/context 17.1.1-alpha.231 → 17.2.1-alpha.134

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/dist/cli/cli.js CHANGED
@@ -119,7 +119,7 @@ ${g.join(`
119
119
  `,e.length-p>a&&n>p?s+=e.slice(p,n)+`
120
120
  `+e.slice(n+1):s+=e.slice(p),s.slice(1)}function D8(e){for(var a="",t=0,i,p=0;p<e.length;t>=65536?p+=2:p++)t=qt(e,p),i=We[t],!i&&Gt(t)?(a+=e[p],t>=65536&&(a+=e[p+1])):a+=i||y8(t);return a}function T8(e,a,t){var i="",p=e.tag,r,n,d;for(r=0,n=t.length;r<n;r+=1)d=t[r],e.replacer&&(d=e.replacer.call(t,String(r),d)),($1(e,a,d,!1,!1)||typeof d=="undefined"&&$1(e,a,null,!1,!1))&&(i!==""&&(i+=","+(e.condenseFlow?"":" ")),i+=e.dump);e.tag=p,e.dump="["+i+"]"}function q2(e,a,t,i){var p="",r=e.tag,n,d,s;for(n=0,d=t.length;n<d;n+=1)s=t[n],e.replacer&&(s=e.replacer.call(t,String(n),s)),($1(e,a+1,s,!0,!0,!1,!0)||typeof s=="undefined"&&$1(e,a+1,null,!0,!0,!1,!0))&&((!i||p!=="")&&(p+=Sr(e,a)),e.dump&&Wt===e.dump.charCodeAt(0)?p+="-":p+="- ",p+=e.dump);e.tag=r,e.dump=p||"[]"}function P8(e,a,t){var i="",p=e.tag,r=Object.keys(t),n,d,s,o,l;for(n=0,d=r.length;n<d;n+=1)l="",i!==""&&(l+=", "),e.condenseFlow&&(l+='"'),s=r[n],o=t[s],e.replacer&&(o=e.replacer.call(t,s,o)),$1(e,a,s,!1,!1)&&(e.dump.length>1024&&(l+="? "),l+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),$1(e,a,o,!1,!1)&&(l+=e.dump,i+=l));e.tag=p,e.dump="{"+i+"}"}function F8(e,a,t,i){var p="",r=e.tag,n=Object.keys(t),d,s,o,l,m,c;if(e.sortKeys===!0)n.sort();else if(typeof e.sortKeys=="function")n.sort(e.sortKeys);else if(e.sortKeys)throw new Je("sortKeys must be a boolean or a function");for(d=0,s=n.length;d<s;d+=1)c="",(!i||p!=="")&&(c+=Sr(e,a)),o=n[d],l=t[o],e.replacer&&(l=e.replacer.call(t,o,l)),$1(e,a+1,o,!0,!0,!0)&&(m=e.tag!==null&&e.tag!=="?"||e.dump&&e.dump.length>1024,m&&(e.dump&&Wt===e.dump.charCodeAt(0)?c+="?":c+="? "),c+=e.dump,m&&(c+=Sr(e,a)),$1(e,a+1,l,!0,m)&&(e.dump&&Wt===e.dump.charCodeAt(0)?c+=":":c+=": ",c+=e.dump,p+=c));e.tag=r,e.dump=p||"{}"}function H2(e,a,t){var i,p,r,n,d,s;for(p=t?e.explicitTypes:e.implicitTypes,r=0,n=p.length;r<n;r+=1)if(d=p[r],(d.instanceOf||d.predicate)&&(!d.instanceOf||typeof a=="object"&&a instanceof d.instanceOf)&&(!d.predicate||d.predicate(a))){if(t?d.multi&&d.representName?e.tag=d.representName(a):e.tag=d.tag:e.tag="?",d.represent){if(s=e.styleMap[d.tag]||d.defaultStyle,r0.call(d.represent)==="[object Function]")i=d.represent(a,s);else if(n0.call(d.represent,s))i=d.represent[s](a,s);else throw new Je("!<"+d.tag+'> tag resolver accepts not "'+s+'" style');e.dump=i}return!0}return!1}function $1(e,a,t,i,p,r,n){e.tag=null,e.dump=t,H2(e,t,!1)||H2(e,t,!0);var d=r0.call(e.dump),s=i,o;i&&(i=e.flowLevel<0||e.flowLevel>a);var l=d==="[object Object]"||d==="[object Array]",m,c;if(l&&(m=e.duplicates.indexOf(t),c=m!==-1),(e.tag!==null&&e.tag!=="?"||c||e.indent!==2&&a>0)&&(p=!1),c&&e.usedDuplicates[m])e.dump="*ref_"+m;else{if(l&&c&&!e.usedDuplicates[m]&&(e.usedDuplicates[m]=!0),d==="[object Object]")i&&Object.keys(e.dump).length!==0?(F8(e,a,e.dump,p),c&&(e.dump="&ref_"+m+e.dump)):(P8(e,a,e.dump),c&&(e.dump="&ref_"+m+" "+e.dump));else if(d==="[object Array]")i&&e.dump.length!==0?(e.noArrayIndent&&!n&&a>0?q2(e,a-1,e.dump,p):q2(e,a,e.dump,p),c&&(e.dump="&ref_"+m+e.dump)):(T8(e,a,e.dump),c&&(e.dump="&ref_"+m+" "+e.dump));else if(d==="[object String]")e.tag!=="?"&&O8(e,e.dump,a,r,s);else{if(d==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new Je("unacceptable kind of an object to dump "+d)}e.tag!==null&&e.tag!=="?"&&(o=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?o="!"+o:o.slice(0,18)==="tag:yaml.org,2002:"?o="!!"+o.slice(18):o="!<"+o+">",e.dump=o+" "+e.dump)}return!0}function j8(e,a){var t=[],i=[],p,r;for(Or(e,t,i),p=0,r=i.length;p<r;p+=1)a.duplicates.push(t[i[p]]);a.usedDuplicates=new Array(r)}function Or(e,a,t){var i,p,r;if(e!==null&&typeof e=="object")if(p=a.indexOf(e),p!==-1)t.indexOf(p)===-1&&t.push(p);else if(a.push(e),Array.isArray(e))for(p=0,r=e.length;p<r;p+=1)Or(e[p],a,t);else for(i=Object.keys(e),p=0,r=i.length;p<r;p+=1)Or(e[i[p]],a,t)}function I8(e,a){a=a||{};var t=new x8(a);t.noRefs||j8(e,t);var i=e;return t.replacer&&(i=t.replacer.call({"":i},"",i)),$1(t,0,i,!0,!0)?t.dump+`
121
121
  `:""}var M8=I8,V8={dump:M8};function Fr(e,a){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+a+" instead, which is now safe by default.")}}var g0=p0.load,nu=p0.loadAll,v0=V8.dump;var du=Fr("safeLoad","load"),su=Fr("safeLoadAll","loadAll"),ou=Fr("safeDump","dump");var Qo=require("fs"),dd=require("path"),Jo=require("fs"),Zo=r1(L0(),1),nd=r1(ho(),1),Xo=r1(require("fs"),1);function Y1(){}Y1.prototype={diff:function(a,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},p=i.callback;typeof i=="function"&&(p=i,i={}),this.options=i;var r=this;function n(v){return p?(setTimeout(function(){p(void 0,v)},0),!0):v}a=this.castInput(a),t=this.castInput(t),a=this.removeEmpty(this.tokenize(a)),t=this.removeEmpty(this.tokenize(t));var d=t.length,s=a.length,o=1,l=d+s;i.maxEditLength&&(l=Math.min(l,i.maxEditLength));var m=[{newPos:-1,components:[]}],c=this.extractCommon(m[0],t,a,0);if(m[0].newPos+1>=d&&c+1>=s)return n([{value:this.join(t),count:t.length}]);function u(){for(var v=-1*o;v<=o;v+=2){var h=void 0,_=m[v-1],A=m[v+1],j=(A?A.newPos:0)-v;_&&(m[v-1]=void 0);var $=_&&_.newPos+1<d,H=A&&0<=j&&j<s;if(!$&&!H){m[v]=void 0;continue}if(!$||H&&_.newPos<A.newPos?(h=T3(A),r.pushComponent(h.components,void 0,!0)):(h=_,h.newPos++,r.pushComponent(h.components,!0,void 0)),j=r.extractCommon(h,t,a,v),h.newPos+1>=d&&j+1>=s)return n(D3(r,h.components,t,a,r.useLongestToken));m[v]=h}o++}if(p)(function v(){setTimeout(function(){if(o>l)return p();u()||v()},0)})();else for(;o<=l;){var g=u();if(g)return g}},pushComponent:function(a,t,i){var p=a[a.length-1];p&&p.added===t&&p.removed===i?a[a.length-1]={count:p.count+1,added:t,removed:i}:a.push({count:1,added:t,removed:i})},extractCommon:function(a,t,i,p){for(var r=t.length,n=i.length,d=a.newPos,s=d-p,o=0;d+1<r&&s+1<n&&this.equals(t[d+1],i[s+1]);)d++,s++,o++;return o&&a.components.push({count:o}),a.newPos=d,s},equals:function(a,t){return this.options.comparator?this.options.comparator(a,t):a===t||this.options.ignoreCase&&a.toLowerCase()===t.toLowerCase()},removeEmpty:function(a){for(var t=[],i=0;i<a.length;i++)a[i]&&t.push(a[i]);return t},castInput:function(a){return a},tokenize:function(a){return a.split("")},join:function(a){return a.join("")}};function D3(e,a,t,i,p){for(var r=0,n=a.length,d=0,s=0;r<n;r++){var o=a[r];if(o.removed){if(o.value=e.join(i.slice(s,s+o.count)),s+=o.count,r&&a[r-1].added){var m=a[r-1];a[r-1]=a[r],a[r]=m}}else{if(!o.added&&p){var l=t.slice(d,d+o.count);l=l.map(function(u,g){var v=i[s+g];return v.length>u.length?v:u}),o.value=e.join(l)}else o.value=e.join(t.slice(d,d+o.count));d+=o.count,o.added||(s+=o.count)}}var c=a[n-1];return n>1&&typeof c.value=="string"&&(c.added||c.removed)&&e.equals("",c.value)&&(a[n-2].value+=c.value,a.pop()),a}function T3(e){return{newPos:e.newPos,components:e.components.slice(0)}}var Ju=new Y1;var go=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,vo=/\S/,wo=new Y1;wo.equals=function(e,a){return this.options.ignoreCase&&(e=e.toLowerCase(),a=a.toLowerCase()),e===a||this.options.ignoreWhitespace&&!vo.test(e)&&!vo.test(a)};wo.tokenize=function(e){for(var a=e.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),t=0;t<a.length-1;t++)!a[t+1]&&a[t+2]&&go.test(a[t])&&go.test(a[t+2])&&(a[t]+=a[t+2],a.splice(t+1,2),t--);return a};var Wn=new Y1;Wn.tokenize=function(e){var a=[],t=e.split(/(\n|\r\n)/);t[t.length-1]||t.pop();for(var i=0;i<t.length;i++){var p=t[i];i%2&&!this.options.newlineIsToken?a[a.length-1]+=p:(this.options.ignoreWhitespace&&(p=p.trim()),a.push(p))}return a};function zn(e,a,t){return Wn.diff(e,a,t)}var P3=new Y1;P3.tokenize=function(e){return e.split(/(\S.+?[.!?])(?=\s+|$)/)};var F3=new Y1;F3.tokenize=function(e){return e.split(/([{}:;,]|\s+)/)};function gp(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?gp=function(a){return typeof a}:gp=function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},gp(e)}var j3=Object.prototype.toString,_t=new Y1;_t.useLongestToken=!0;_t.tokenize=Wn.tokenize;_t.castInput=function(e){var a=this.options,t=a.undefinedReplacement,i=a.stringifyReplacer,p=i===void 0?function(r,n){return typeof n=="undefined"?t:n}:i;return typeof e=="string"?e:JSON.stringify(qn(e,null,null,p),p," ")};_t.equals=function(e,a){return Y1.prototype.equals.call(_t,e.replace(/,([\r\n])/g,"$1"),a.replace(/,([\r\n])/g,"$1"))};function bo(e,a,t){return _t.diff(e,a,t)}function qn(e,a,t,i,p){a=a||[],t=t||[],i&&(e=i(p,e));var r;for(r=0;r<a.length;r+=1)if(a[r]===e)return t[r];var n;if(j3.call(e)==="[object Array]"){for(a.push(e),n=new Array(e.length),t.push(n),r=0;r<e.length;r+=1)n[r]=qn(e[r],a,t,i,p);return a.pop(),t.pop(),n}if(e&&e.toJSON&&(e=e.toJSON()),gp(e)==="object"&&e!==null){a.push(e),n={},t.push(n);var d=[],s;for(s in e)e.hasOwnProperty(s)&&d.push(s);for(d.sort(),r=0;r<d.length;r+=1)s=d[r],n[s]=qn(e[s],a,t,i,s);a.pop(),t.pop()}else n=e;return n}var Hn=new Y1;Hn.tokenize=function(e){return e.slice()};Hn.join=Hn.removeEmpty=function(e){return e};var tl=r1(Ko(),1);async function Ce({objects:e,selectIdentifier:a,selectDisplayName:t=a,onSyncComplete:i}){let p=e.reduce((d,s)=>{let o=a(s);if(d[o])throw new Error(`Identifier ${o} was not unique.`);return d[o]={id:o,object:s,providerId:o,displayName:t(s)},d},{});async function*r(){for(let d of Object.values(p))yield d}function n(){return Object.entries(p).sort((d,s)=>d[0].localeCompare(s[0])).map(d=>d[1].object)}return{objects:r(),deleteObject:async d=>{delete p[d]},writeObject:async d=>{let s=a(d.object);p[s]=d},extractCurrent:n,onSyncComplete:i?d=>i(d,n()):void 0}}var Xm=wr(br());function T(e){var a,t;return e.option("apiKey",{describe:"Uniform API key. Defaults to CANVAS_CLI_API_KEY or UNIFORM_API_KEY env. Supports dotenv.",default:(t=(a=process.env.CANVAS_CLI_API_KEY)!=null?a:process.env.UPM_CLI_API_KEY)!=null?t:process.env.UNIFORM_API_KEY,demandOption:!0,type:"string"}).option("apiHost",{describe:"Uniform host. Defaults to UNIFORM_CLI_BASE_URL env or https://uniform.app. Supports dotenv.",default:process.env.UNIFORM_CLI_BASE_URL||"https://uniform.app",demandOption:!0,type:"string"}).option("proxy",{describe:"HTTPS proxy to use for Uniform API calls. Defaults to HTTPS_PROXY, https_proxy, ALL_PROXY, or all_proxy env vars (in that order). Supports dotenv.",default:process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy,type:"string"})}function P(e){return e&&console.log(`\u{1F991} Using proxy ${e}`),(a,t)=>{if(e){let i={...t,agent:new Zo.HttpsProxyAgent(e)};return(0,nd.default)(a,i)}return(0,nd.default)(a,t)}}function F(e){var a,t,i;return e.option("project",{describe:"Uniform project ID. Defaults to UNIFORM_CLI_PROJECT_ID or UNIFORM_PROJECT_ID env. Supports dotenv.",default:(i=(t=(a=process.env.UNIFORM_CLI_PROJECT_ID)!=null?a:process.env.CANVAS_CLI_PROJECT_ID)!=null?t:process.env.UPM_CLI_PROJECT_ID)!=null?i:process.env.UNIFORM_PROJECT_ID,demandOption:!0,type:"string",alias:["p"]})}function Se(e){return e.option("format",{alias:["f"],describe:"Output format",default:"yaml",choices:["yaml","json"],type:"string"}).option("filename",{alias:["o"],describe:"Output filename. If not specified, write to stdout.",type:"string"})}function Ee(e){var a;return e.option("diff",{describe:"Whether to show diffs in stdout. off = no diffs; update = on for updates; on = updates, creates, deletes. Can be set by UNIFORM_CLI_DIFF_MODE environment variable.",default:(a=process.env.UNIFORM_CLI_DIFF_MODE)!=null?a:"off",type:"string",choices:["off","update","on"],alias:["d"]})}function Oe(e){let a=(0,dd.extname)(e);return a===".yaml"||a===".yml"||a===".json"}function he(e,a,t){let i;if(t&&!a){let p=(0,dd.extname)(t);p===".yaml"||p===".yml"?a="yaml":p===".json"&&(a="json")}else if(!a)throw new Error("Format must be specified when no filename is passed");switch(a){case"json":i=JSON.stringify(e,null,2);break;case"yaml":i=v0(e);break;default:throw new Error(`Unsupported format: ${a}`)}t?(0,Qo.writeFileSync)(t,i,"utf8"):console.log(i)}function B1(e){let a=(0,Jo.readFileSync)(e,"utf8");return g0(a,{filename:e,json:!0})}async function Ne({directory:e,format:a="yaml",selectIdentifier:t,selectDisplayName:i=t}){(0,Op.existsSync)(e)||(0,Op.mkdirSync)(e,{recursive:!0});let p=await(0,Np.readdir)(e,"utf-8"),r=new Set(p.filter(s=>{let o=(0,mi.extname)(s);return o===".json"||o===".yaml"||o===".yml"})),n=s=>(0,mi.join)(e,`${s}.${a}`);async function*d(){for(let s of r){let o=(0,mi.join)(e,s);try{let l=await B1(o);yield{id:t(l),displayName:i(l),providerId:o,object:l}}catch(l){throw console.error(Xm.default.red(`Failed to read ${o}, data is likely invalid.
122
- ${l==null?void 0:l.message}`)),l}}}return{objects:d(),deleteObject:async s=>{await(0,Np.unlink)(s)},writeObject:async s=>{he(s.object,a,n(s.id))}}}function el(e,a){if(!a&&!Xo.default.existsSync(e))return{};let t=B1(e);if(typeof t!="object")throw new Error(`Package ${e} does not appear valid.`);return t}function al(e,a){he(a,void 0,e)}async function ge({source:e,target:a,compareContents:t=(d,s)=>(0,tl.default)(d.object,s.object,(o,l,m)=>m==="created"||m==="modified"?!0:void 0),mode:i,allowEmptySource:p=!1,whatIf:r=!1,log:n=()=>{}}){var d,s;let o=new Map;for await(let c of a.objects)o.set(c.id,c);let l=[],m=!1;for await(let c of e.objects){m=!0;let u=c.id,g=o.get(u);if(g){if(!t(c,g)&&(i==="createOrUpdate"||i==="mirror")){let v=async(h,_)=>{var A;if(!r)try{await a.writeObject(h,_)}catch(j){throw new Ep(j,h)}n({action:"update",id:u,providerId:h.providerId,displayName:(A=h.displayName)!=null?A:h.providerId,whatIf:r,diff:bo(_.object,h.object)})};l.push(v(c,g))}o.delete(u)}else{let v=async(h,_)=>{var A;if(!r)try{await a.writeObject(h)}catch(j){throw new Ep(j,h)}n({action:"create",id:_,providerId:_,displayName:(A=h.displayName)!=null?A:h.providerId,whatIf:r,diff:zn("",JSON.stringify(h.object,null,2))})};l.push(v(c,u))}}if(await Promise.all(l),i==="mirror"){if(!m&&!p)throw new Error("Source is empty and mode is mirror. This would cause deletion of everything in the target, and most likely indicates an error in source definition.");let c=[];o.forEach(async u=>{let g=async v=>{var h;if(!r)try{await a.deleteObject(v.providerId)}catch(_){throw new Ep(_,v)}n({action:"delete",id:v.id,providerId:v.providerId,displayName:(h=v.displayName)!=null?h:v.providerId,whatIf:r,diff:zn(JSON.stringify(v.object,null,2),"")})};c.push(g(u))}),await Promise.all(c)}await Promise.all([(d=e.onSyncComplete)==null?void 0:d.call(e,!1),(s=a.onSyncComplete)==null?void 0:s.call(a,!0)])}var Ep=class extends Error{constructor(e,a){var t;super(`Error syncing ${(t=a.displayName)!=null?t:a.providerId} (${a.providerId})
122
+ ${l==null?void 0:l.message}`)),l}}}return{objects:d(),deleteObject:async s=>{await(0,Np.unlink)(s)},writeObject:async s=>{he(s.object,a,n(s.id))}}}function el(e,a){if(!a&&!Xo.default.existsSync(e))return{};let t=B1(e);if(typeof t!="object")throw new Error(`Package ${e} does not appear valid.`);return t}function al(e,a){he(a,void 0,e)}async function ge({source:e,target:a,compareContents:t=(d,s)=>(0,tl.default)(d.object,s.object,(o,l,m)=>m==="created"||m==="modified"?!0:void 0),mode:i,allowEmptySource:p=!1,whatIf:r=!1,log:n=()=>{}}){var d,s;let o=new Map;for await(let c of a.objects)o.set(c.id,c);let l=[],m=!1;for await(let c of e.objects){m=!0;let u=c.id,g=o.get(u);if(g){if(!t(c,g)&&(i==="createOrUpdate"||i==="mirror")){let v=async(h,_)=>{var A;if(!r)try{await a.writeObject(h,_)}catch(j){throw new Ep(j,h)}n({action:"update",id:u,providerId:h.providerId,displayName:(A=h.displayName)!=null?A:h.providerId,whatIf:r,diff:bo(_.object,h.object)})};l.push(v(c,g))}o.delete(u)}else{let v=async(h,_)=>{var A;if(!r)try{await a.writeObject(h)}catch(j){throw new Ep(j,h)}n({action:"create",id:_,providerId:_,displayName:(A=h.displayName)!=null?A:h.providerId,whatIf:r,diff:zn("",JSON.stringify(h.object,null,2))})};l.push(v(c,u))}}if(await Promise.all(l),i==="mirror"){if(!m&&!p)throw new Error("Source is empty and mode is mirror. This would cause deletion of everything in the target, and most likely indicates an error in source definition.");let c=[];o.forEach(async u=>{let g=async v=>{var h;if(!r)try{await a.deleteObject(v.providerId,v)}catch(_){throw new Ep(_,v)}n({action:"delete",id:v.id,providerId:v.providerId,displayName:(h=v.displayName)!=null?h:v.providerId,whatIf:r,diff:zn(JSON.stringify(v.object,null,2),"")})};c.push(g(u))}),await Promise.all(c)}await Promise.all([(d=e.onSyncComplete)==null?void 0:d.call(e,!1),(s=a.onSyncComplete)==null?void 0:s.call(a,!0)])}var Ep=class extends Error{constructor(e,a){var t;super(`Error syncing ${(t=a.displayName)!=null?t:a.providerId} (${a.providerId})
123
123
  ${e}`),this.stack=void 0,Object.setPrototypeOf(this,Ep.prototype)}},St=wr(br());function ve(e){let{diffMode:a="off",indent:t,prefix:i}=e!=null?e:{};return function({action:p,displayName:r,whatIf:n,diff:d}){let s="";switch(p){case"create":s=St.default.green("[A]");break;case"update":s=St.default.white("[U]");break;case"delete":s=St.default.yellow("[D]");break}let o="";(a==="on"||a==="update"&&p==="update")&&(o=`
124
124
  `+d.map(l=>l.added?St.default.green(l.value):l.removed?St.default.red(l.value):l.value).join("")),console.log(`${t!=null?t:""}${n?St.default.gray("[WHATIF]"):""}${s}${i!=null?i:""} ${r}${o}`)}}var il=async e=>await e(),k1=class extends Error{constructor(t,i,p,r,n,d){super(`${t}
125
125
  ${r}${n?" "+n:""} (${i} ${p}${d?` Request ID: ${d}`:""})`);this.errorMessage=t;this.fetchMethod=i;this.fetchUri=p;this.statusCode=r;this.statusText=n;this.requestId=d;Object.setPrototypeOf(this,k1.prototype)}};var ze=class{constructor(a){Ad(this,"options");var i,p,r,n,d,s;if(!a.apiKey&&!a.bearerToken)throw new Error("You must provide an API key or a bearer token");let t=a.fetch;if(!t)if(typeof window!="undefined")t=window.fetch.bind(window);else if(typeof fetch!="undefined")t=fetch;else throw new Error("You must provide or polyfill a fetch implementation when not in a browser");this.options={...a,fetch:t,apiHost:(i=a.apiHost)!=null?i:"https://uniform.app",apiKey:(p=a.apiKey)!=null?p:null,projectId:(r=a.projectId)!=null?r:null,bearerToken:(n=a.bearerToken)!=null?n:null,limitPolicy:(d=a.limitPolicy)!=null?d:il,bypassCache:(s=a.bypassCache)!=null?s:!1}}async apiClient(a,t){return this.options.limitPolicy(async()=>{var r;let i=this.options.apiKey?{"x-api-key":this.options.apiKey}:{Authorization:`Bearer ${this.options.bearerToken}`};this.options.bypassCache&&(i["x-bypass-cache"]="true");let p=await this.options.fetch(a.toString(),{...t,headers:{...t==null?void 0:t.headers,...i}});if(!p.ok){let n="";try{let d=await p.text();try{let s=JSON.parse(d);s.errorMessage?n=Array.isArray(s.errorMessage)?s.errorMessage.join(", "):s.errorMessage:n=d}catch(s){n=d}}catch(d){n="General error"}throw new k1(n,(r=t==null?void 0:t.method)!=null?r:"GET",a.toString(),p.status,p.statusText,ze.getRequestId(p))}return t!=null&&t.expectNoContent?null:await p.json()})}createUrl(a,t){let i=new URL(`${this.options.apiHost}${a}`);return Object.entries(t!=null?t:{}).forEach(([p,r])=>{var n;typeof r!="undefined"&&r!==null&&i.searchParams.append(p,Array.isArray(r)?r.join(","):(n=r==null?void 0:r.toString())!=null?n:"")}),i}static getRequestId(a){let t=a.headers.get("apigw-requestid");if(t)return t}};var Et,ci=class extends ze{constructor(a){super(a)}async get(a){let{projectId:t}=this.options,i=this.createUrl(le(ci,Et),{...a,projectId:t});return await this.apiClient(i)}async upsert(a){let t=this.createUrl(le(ci,Et));await this.apiClient(t,{method:"PUT",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}async remove(a){let t=this.createUrl(le(ci,Et));await this.apiClient(t,{method:"DELETE",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}},Dp=ci;Et=new WeakMap,n1(Dp,Et,"/api/v2/aggregate");var e1=class extends Dp{constructor(a){super({...a,bypassCache:!0})}};var pl={command:"get <id>",describe:"Fetch an aggregate",builder:e=>Se(T(F(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to fetch"})))),handler:async({apiHost:e,apiKey:a,proxy:t,id:i,format:p,project:r,filename:n})=>{let d=P(t),o=await new e1({apiKey:a,apiHost:e,fetch:d,projectId:r}).get({aggregateId:i});o.aggregates.length===0?(console.error("Aggregate did not exist"),process.exit(1)):he(o.aggregates[0],p,n)}};var rl={command:"list",describe:"List aggregates",aliases:["ls"],builder:e=>Se(T(F(e))),handler:async({apiHost:e,apiKey:a,proxy:t,format:i,filename:p,project:r})=>{let n=P(t),s=await new e1({apiKey:a,apiHost:e,fetch:n,projectId:r}).get({});he(s.aggregates,i,p)}};var va=e=>e.id,wa=e=>`${e.name} (pid: ${e.id})`;function _e(e,a){return el(e,a)}function D1(e,a){al(e,a)}var nl=r1(require("p-limit")),De=(0,nl.default)(8);function Tp({client:e,type:a}){async function*t(){let p=(await e.get({type:a})).aggregates;for await(let r of p)yield{id:va(r),displayName:wa(r),providerId:r.id,object:r}}let i=[];return{objects:t(),deleteObject:async p=>{await e.remove({aggregateId:p})},writeObject:async p=>{await e.upsert({aggregate:p.object,skipInputs:!0}),i.push(p.object)},complete:async()=>{await Promise.all(i.map(p=>e.upsert({aggregate:p,skipInputs:!1})))}}}var dl={command:"pull <directory>",describe:"Pulls all aggregates to local files in a directory",builder:e=>T(F(Ee(e.positional("directory",{describe:"Directory to save the aggregates to. If a filename ending in yaml or json is used, a package file will be created instead of files in the directory.",type:"string"}).option("format",{alias:["f"],describe:"Output format",default:"yaml",choices:["yaml","json"],type:"string"}).option("what-if",{alias:["w"],describe:"What-if mode reports what would be done but changes no files",default:!1,type:"boolean"}).option("mode",{alias:["m"],describe:'What kind of changes can be made. "create" = create new files, update nothing. "createOrUpdate" = create new files, update existing, delete nothing. "mirror" = create, update, and delete to mirror state',choices:["create","createOrUpdate","mirror"],default:"mirror",type:"string"})))),handler:async({apiHost:e,apiKey:a,proxy:t,directory:i,format:p,mode:r,whatIf:n,project:d,diff:s})=>{var g;let o=P(t),l=new e1({apiKey:a,apiHost:e,fetch:o,projectId:d,limitPolicy:De}),m=Tp({client:l}),c;if(Oe(i)){let v=_e(i,!1);c=await Ce({objects:(g=v.aggregates)!=null?g:[],selectIdentifier:va,selectDisplayName:wa,onSyncComplete:async(h,_)=>{v.aggregates=_,D1(i,v)}})}else c=await Ne({directory:i,selectIdentifier:va,selectDisplayName:wa,format:p});await ge({source:m,target:c,mode:r,whatIf:n,log:ve({diffMode:s})})}};var sl={command:"push <directory>",describe:"Pushes all aggregates from files in a directory or package to Uniform",builder:e=>T(F(Ee(e.positional("directory",{describe:"Directory to read the aggregates from. If a filename is used, a package will be read instead.",type:"string"}).option("what-if",{alias:["w"],describe:"What-if mode reports what would be done but changes nothing",default:!1,type:"boolean"}).option("mode",{alias:["m"],describe:'What kind of changes can be made. "create" = create new, update nothing. "createOrUpdate" = create new, update existing, delete nothing. "mirror" = create, update, and delete',choices:["create","createOrUpdate","mirror"],default:"mirror",type:"string"})))),handler:async({apiHost:e,apiKey:a,proxy:t,directory:i,mode:p,whatIf:r,project:n,diff:d})=>{var u;let s=P(t),o=new e1({apiKey:a,apiHost:e,fetch:s,projectId:n,limitPolicy:De}),l;if(Oe(i)){let g=_e(i,!0);l=await Ce({objects:(u=g.aggregates)!=null?u:[],selectIdentifier:va,selectDisplayName:wa})}else l=await Ne({directory:i,selectIdentifier:va,selectDisplayName:wa});let c=Tp({client:o});await ge({source:l,target:c,mode:p,whatIf:r,log:ve({diffMode:d})}),await c.complete()}};var ol={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an aggregate",builder:e=>T(F(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to delete"}))),handler:async({apiHost:e,apiKey:a,proxy:t,id:i,project:p})=>{let r=P(t);await new e1({apiKey:a,apiHost:e,fetch:r,projectId:p}).remove({aggregateId:i})}};var ll={command:"update <filename>",aliases:["put"],describe:"Insert or update an aggregate",builder:e=>T(F(e.positional("filename",{demandOption:!0,describe:"Aggregate file to put"}))),handler:async({apiHost:e,apiKey:a,proxy:t,filename:i,project:p})=>{let r=P(t),n=new e1({apiKey:a,apiHost:e,fetch:r,projectId:p}),d=B1(i);await n.upsert({aggregate:d})}};var ml={command:"aggregate <command>",aliases:["agg","intent","audience"],describe:"Commands for Context aggregates (intents, audiences)",builder:e=>e.command(dl).command(sl).command(pl).command(ol).command(rl).command(ll).demandCommand(),handler:()=>{Qe.help()}};var Ot,fi,Qa=class extends ze{constructor(a){super(a)}async get(a){let{projectId:t}=this.options,i=this.createUrl(le(Qa,Ot),{...a,projectId:t});return await this.apiClient(i)}async upsertCategory(a){let t=this.createUrl(le(Qa,Ot));await this.apiClient(t,{method:"PUT",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}async removeCategory(a){let t=this.createUrl(le(Qa,Ot));await this.apiClient(t,{method:"DELETE",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}async upsertValue(a){let t=this.createUrl(le(Qa,fi));await this.apiClient(t,{method:"PUT",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}async removeValue(a){let t=this.createUrl(le(Qa,fi));await this.apiClient(t,{method:"DELETE",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}},ui=Qa;Ot=new WeakMap,fi=new WeakMap,n1(ui,Ot,"/api/v1/enrichments"),n1(ui,fi,"/api/v1/enrichment-values");var S1=class extends ui{constructor(a){super({...a,bypassCache:!0})}};var cl={command:"get <id>",describe:"Fetch an enrichment category and its values",builder:e=>Se(T(F(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to fetch"})))),handler:async({apiHost:e,apiKey:a,proxy:t,id:i,format:p,project:r,filename:n})=>{var l,m;let d=P(t),o=(m=(l=await new S1({apiKey:a,apiHost:e,fetch:d,projectId:r}).get())==null?void 0:l.enrichments)==null?void 0:m.filter(c=>c.id===i);o.length===0?(console.error("Enrichment did not exist"),process.exit(1)):he(o[0],p,n)}};var ul={command:"list",describe:"List enrichments",aliases:["ls"],builder:e=>Se(T(F(e))),handler:async({apiHost:e,apiKey:a,proxy:t,format:i,filename:p,project:r})=>{let n=P(t),s=await new S1({apiKey:a,apiHost:e,fetch:n,projectId:r}).get();he(s.enrichments,i,p)}};var ba=e=>e.id,ya=e=>`${e.name} (pid: ${e.id})`;function Pp({client:e}){async function*a(){let t=(await e.get()).enrichments;for await(let i of t)yield{id:ba(i),displayName:ya(i),providerId:i.id,object:i}}return{objects:a(),deleteObject:async t=>{await e.removeCategory({enrichmentId:t})},writeObject:async(t,i)=>{var n,d;await e.upsertCategory({enrichment:t.object});let p=fl({categoryId:t.id,values:t.object.values}),r=fl({categoryId:t.id,values:(d=(n=i==null?void 0:i.object)==null?void 0:n.values)!=null?d:[],client:e});await ge({source:p,target:r,mode:"mirror",whatIf:!1,log:ve({diffMode:"off",prefix:` ${t.displayName} value`,indent:"> "})})}}}var fl=({client:e,categoryId:a,values:t})=>({objects:async function*(){for(let p of t)yield{id:p.id,providerId:p.id,object:p,displayName:`${p.value} (pid: ${p.id})`}}(),deleteObject:async p=>{if(!e)throw new Error("Provider is read only");await e.removeValue({enrichmentId:a,enrichmentValueId:p})},writeObject:async p=>{if(!e)throw new Error("Provider is read only");await e.upsertValue({enrichmentId:a,enrichmentValue:p.object})}});var hl={command:"pull <directory>",describe:"Pulls all enrichments to local files in a directory",builder:e=>T(F(Ee(e.positional("directory",{describe:"Directory to save the enrichments to. If a filename ending in yaml or json is used, a package file will be created instead of files in the directory.",type:"string"}).option("format",{alias:["f"],describe:"Output format",default:"yaml",choices:["yaml","json"],type:"string"}).option("what-if",{alias:["w"],describe:"What-if mode reports what would be done but changes no files",default:!1,type:"boolean"}).option("mode",{alias:["m"],describe:'What kind of changes can be made. "create" = create new files, update nothing. "createOrUpdate" = create new files, update existing, delete nothing. "mirror" = create, update, and delete to mirror state',choices:["create","createOrUpdate","mirror"],default:"mirror",type:"string"})))),handler:async({apiHost:e,apiKey:a,proxy:t,directory:i,format:p,mode:r,whatIf:n,project:d,diff:s})=>{var g;let o=P(t),l=new S1({apiKey:a,apiHost:e,fetch:o,projectId:d,limitPolicy:De}),m=Pp({client:l}),c;if(Oe(i)){let v=_e(i,!1);c=await Ce({objects:(g=v.enrichments)!=null?g:[],selectIdentifier:ba,selectDisplayName:ya,onSyncComplete:async(h,_)=>{v.enrichments=_,D1(i,v)}})}else c=await Ne({directory:i,selectIdentifier:ba,selectDisplayName:ya,format:p});await ge({source:m,target:c,mode:r,whatIf:n,log:ve({diffMode:s})})}};var gl={command:"push <directory>",describe:"Pushes all enrichments from files in a directory or package to Uniform",builder:e=>T(F(Ee(e.positional("directory",{describe:"Directory to read the enrichments from. If a filename is used, a package will be read instead.",type:"string"}).option("what-if",{alias:["w"],describe:"What-if mode reports what would be done but changes nothing",default:!1,type:"boolean"}).option("mode",{alias:["m"],describe:'What kind of changes can be made. "create" = create new, update nothing. "createOrUpdate" = create new, update existing, delete nothing. "mirror" = create, update, and delete',choices:["create","createOrUpdate","mirror"],default:"mirror",type:"string"})))),handler:async({apiHost:e,apiKey:a,proxy:t,directory:i,mode:p,whatIf:r,project:n,diff:d})=>{var u;let s=P(t),o=new S1({apiKey:a,apiHost:e,fetch:s,projectId:n,limitPolicy:De}),l;if(Oe(i)){let g=_e(i,!0);l=await Ce({objects:(u=g.enrichments)!=null?u:[],selectIdentifier:ba,selectDisplayName:ya})}else l=await Ne({directory:i,selectIdentifier:ba,selectDisplayName:ya});let c=Pp({client:o});await ge({source:l,target:c,mode:p,whatIf:r,log:ve({diffMode:d})})}};var vl={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an enrichment category and its values",builder:e=>T(F(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to delete"}))),handler:async({apiHost:e,apiKey:a,proxy:t,id:i,project:p})=>{let r=P(t);await new S1({apiKey:a,apiHost:e,fetch:r,projectId:p}).removeCategory({enrichmentId:i})}};var wl={command:"enrichment <command>",aliases:["enr"],describe:"Commands for Context enrichments",builder:e=>e.command(hl).command(gl).command(cl).command(vl).command(ul).demandCommand(),handler:()=>{Qe.help()}};var Up=r1(gd()),zl=require("fs"),wd=require("process");var kp,vd=class extends ze{constructor(a){super(a)}async get(a){let{projectId:t}=this.options,i=this.createUrl(le(vd,kp),{...a,projectId:t});return await this.apiClient(i)}async publish(){let{projectId:a}=this.options,t=this.createUrl("/api/v1/publish",{siteId:a});await this.apiClient(t,{method:"POST",expectNoContent:!0})}},Bp=vd;kp=new WeakMap,n1(Bp,kp,"/api/v2/manifest");var Ft=class extends Bp{constructor(a){super({...a,bypassCache:!0})}};var Gl={command:"get [output]",aliases:["dl","download"],describe:"Download the Uniform Context manifest for a project",builder:e=>T(F(e.option("preview",{describe:"If set, fetches the unpublished preview manifest (The API key must have permission)",default:!1,type:"boolean",alias:["d"]}).option("output",{string:!0,alias:"o",default:process.env.UNIFORM_MANIFEST_PATH,describe:"Path to write manifest to. Defaults to UNIFORM_MANIFEST_PATH env if set.",demandOption:!0}))),handler:async({apiKey:e,apiHost:a,proxy:t,output:i,project:p,preview:r})=>{let n=P(t),d=new Ft({apiHost:a,projectId:p,apiKey:e,fetch:n});try{let s=await d.get({preview:r}),o=JSON.stringify(s,null,2);i?(0,zl.writeFile)(i,o,l=>{l&&(console.error(`Error writing file to ${i}
package/dist/cli/cli.mjs CHANGED
@@ -119,7 +119,7 @@ ${g.join(`
119
119
  `,e.length-p>a&&n>p?s+=e.slice(p,n)+`
120
120
  `+e.slice(n+1):s+=e.slice(p),s.slice(1)}function P8(e){for(var a="",t=0,i,p=0;p<e.length;t>=65536?p+=2:p++)t=Rt(e,p),i=ze[t],!i&&Wt(t)?(a+=e[p],t>=65536&&(a+=e[p+1])):a+=i||x8(t);return a}function F8(e,a,t){var i="",p=e.tag,r,n,d;for(r=0,n=t.length;r<n;r+=1)d=t[r],e.replacer&&(d=e.replacer.call(t,String(r),d)),(R1(e,a,d,!1,!1)||typeof d=="undefined"&&R1(e,a,null,!1,!1))&&(i!==""&&(i+=","+(e.condenseFlow?"":" ")),i+=e.dump);e.tag=p,e.dump="["+i+"]"}function N2(e,a,t,i){var p="",r=e.tag,n,d,s;for(n=0,d=t.length;n<d;n+=1)s=t[n],e.replacer&&(s=e.replacer.call(t,String(n),s)),(R1(e,a+1,s,!0,!0,!1,!0)||typeof s=="undefined"&&R1(e,a+1,null,!0,!0,!1,!0))&&((!i||p!=="")&&(p+=hr(e,a)),e.dump&&qt===e.dump.charCodeAt(0)?p+="-":p+="- ",p+=e.dump);e.tag=r,e.dump=p||"[]"}function j8(e,a,t){var i="",p=e.tag,r=Object.keys(t),n,d,s,o,l;for(n=0,d=r.length;n<d;n+=1)l="",i!==""&&(l+=", "),e.condenseFlow&&(l+='"'),s=r[n],o=t[s],e.replacer&&(o=e.replacer.call(t,s,o)),R1(e,a,s,!1,!1)&&(e.dump.length>1024&&(l+="? "),l+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),R1(e,a,o,!1,!1)&&(l+=e.dump,i+=l));e.tag=p,e.dump="{"+i+"}"}function I8(e,a,t,i){var p="",r=e.tag,n=Object.keys(t),d,s,o,l,m,c;if(e.sortKeys===!0)n.sort();else if(typeof e.sortKeys=="function")n.sort(e.sortKeys);else if(e.sortKeys)throw new Ze("sortKeys must be a boolean or a function");for(d=0,s=n.length;d<s;d+=1)c="",(!i||p!=="")&&(c+=hr(e,a)),o=n[d],l=t[o],e.replacer&&(l=e.replacer.call(t,o,l)),R1(e,a+1,o,!0,!0,!0)&&(m=e.tag!==null&&e.tag!=="?"||e.dump&&e.dump.length>1024,m&&(e.dump&&qt===e.dump.charCodeAt(0)?c+="?":c+="? "),c+=e.dump,m&&(c+=hr(e,a)),R1(e,a+1,l,!0,m)&&(e.dump&&qt===e.dump.charCodeAt(0)?c+=":":c+=": ",c+=e.dump,p+=c));e.tag=r,e.dump=p||"{}"}function D2(e,a,t){var i,p,r,n,d,s;for(p=t?e.explicitTypes:e.implicitTypes,r=0,n=p.length;r<n;r+=1)if(d=p[r],(d.instanceOf||d.predicate)&&(!d.instanceOf||typeof a=="object"&&a instanceof d.instanceOf)&&(!d.predicate||d.predicate(a))){if(t?d.multi&&d.representName?e.tag=d.representName(a):e.tag=d.tag:e.tag="?",d.represent){if(s=e.styleMap[d.tag]||d.defaultStyle,H2.call(d.represent)==="[object Function]")i=d.represent(a,s);else if(W2.call(d.represent,s))i=d.represent[s](a,s);else throw new Ze("!<"+d.tag+'> tag resolver accepts not "'+s+'" style');e.dump=i}return!0}return!1}function R1(e,a,t,i,p,r,n){e.tag=null,e.dump=t,D2(e,t,!1)||D2(e,t,!0);var d=H2.call(e.dump),s=i,o;i&&(i=e.flowLevel<0||e.flowLevel>a);var l=d==="[object Object]"||d==="[object Array]",m,c;if(l&&(m=e.duplicates.indexOf(t),c=m!==-1),(e.tag!==null&&e.tag!=="?"||c||e.indent!==2&&a>0)&&(p=!1),c&&e.usedDuplicates[m])e.dump="*ref_"+m;else{if(l&&c&&!e.usedDuplicates[m]&&(e.usedDuplicates[m]=!0),d==="[object Object]")i&&Object.keys(e.dump).length!==0?(I8(e,a,e.dump,p),c&&(e.dump="&ref_"+m+e.dump)):(j8(e,a,e.dump),c&&(e.dump="&ref_"+m+" "+e.dump));else if(d==="[object Array]")i&&e.dump.length!==0?(e.noArrayIndent&&!n&&a>0?N2(e,a-1,e.dump,p):N2(e,a,e.dump,p),c&&(e.dump="&ref_"+m+e.dump)):(F8(e,a,e.dump),c&&(e.dump="&ref_"+m+" "+e.dump));else if(d==="[object String]")e.tag!=="?"&&D8(e,e.dump,a,r,s);else{if(d==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new Ze("unacceptable kind of an object to dump "+d)}e.tag!==null&&e.tag!=="?"&&(o=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?o="!"+o:o.slice(0,18)==="tag:yaml.org,2002:"?o="!!"+o.slice(18):o="!<"+o+">",e.dump=o+" "+e.dump)}return!0}function M8(e,a){var t=[],i=[],p,r;for(vr(e,t,i),p=0,r=i.length;p<r;p+=1)a.duplicates.push(t[i[p]]);a.usedDuplicates=new Array(r)}function vr(e,a,t){var i,p,r;if(e!==null&&typeof e=="object")if(p=a.indexOf(e),p!==-1)t.indexOf(p)===-1&&t.push(p);else if(a.push(e),Array.isArray(e))for(p=0,r=e.length;p<r;p+=1)vr(e[p],a,t);else for(i=Object.keys(e),p=0,r=i.length;p<r;p+=1)vr(e[i[p]],a,t)}function V8(e,a){a=a||{};var t=new C8(a);t.noRefs||M8(e,t);var i=e;return t.replacer&&(i=t.replacer.call({"":i},"",i)),R1(t,0,i,!0,!0)?t.dump+`
121
121
  `:""}var L8=V8,B8={dump:L8};function xr(e,a){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+a+" instead, which is now safe by default.")}}var a0=q2.load,Pu=q2.loadAll,t0=B8.dump;var Fu=xr("safeLoad","load"),ju=xr("safeLoadAll","loadAll"),Iu=xr("safeDump","dump");var Lo=Ja(x0(),1),Kn=Ja(Xs(),1);import{writeFileSync as s7}from"fs";import{extname as Vo}from"path";import{readFileSync as o7}from"fs";import l7 from"fs";function G1(){}G1.prototype={diff:function(a,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},p=i.callback;typeof i=="function"&&(p=i,i={}),this.options=i;var r=this;function n(v){return p?(setTimeout(function(){p(void 0,v)},0),!0):v}a=this.castInput(a),t=this.castInput(t),a=this.removeEmpty(this.tokenize(a)),t=this.removeEmpty(this.tokenize(t));var d=t.length,s=a.length,o=1,l=d+s;i.maxEditLength&&(l=Math.min(l,i.maxEditLength));var m=[{newPos:-1,components:[]}],c=this.extractCommon(m[0],t,a,0);if(m[0].newPos+1>=d&&c+1>=s)return n([{value:this.join(t),count:t.length}]);function u(){for(var v=-1*o;v<=o;v+=2){var h=void 0,_=m[v-1],A=m[v+1],j=(A?A.newPos:0)-v;_&&(m[v-1]=void 0);var $=_&&_.newPos+1<d,H=A&&0<=j&&j<s;if(!$&&!H){m[v]=void 0;continue}if(!$||H&&_.newPos<A.newPos?(h=j3(A),r.pushComponent(h.components,void 0,!0)):(h=_,h.newPos++,r.pushComponent(h.components,!0,void 0)),j=r.extractCommon(h,t,a,v),h.newPos+1>=d&&j+1>=s)return n(F3(r,h.components,t,a,r.useLongestToken));m[v]=h}o++}if(p)(function v(){setTimeout(function(){if(o>l)return p();u()||v()},0)})();else for(;o<=l;){var g=u();if(g)return g}},pushComponent:function(a,t,i){var p=a[a.length-1];p&&p.added===t&&p.removed===i?a[a.length-1]={count:p.count+1,added:t,removed:i}:a.push({count:1,added:t,removed:i})},extractCommon:function(a,t,i,p){for(var r=t.length,n=i.length,d=a.newPos,s=d-p,o=0;d+1<r&&s+1<n&&this.equals(t[d+1],i[s+1]);)d++,s++,o++;return o&&a.components.push({count:o}),a.newPos=d,s},equals:function(a,t){return this.options.comparator?this.options.comparator(a,t):a===t||this.options.ignoreCase&&a.toLowerCase()===t.toLowerCase()},removeEmpty:function(a){for(var t=[],i=0;i<a.length;i++)a[i]&&t.push(a[i]);return t},castInput:function(a){return a},tokenize:function(a){return a.split("")},join:function(a){return a.join("")}};function F3(e,a,t,i,p){for(var r=0,n=a.length,d=0,s=0;r<n;r++){var o=a[r];if(o.removed){if(o.value=e.join(i.slice(s,s+o.count)),s+=o.count,r&&a[r-1].added){var m=a[r-1];a[r-1]=a[r],a[r]=m}}else{if(!o.added&&p){var l=t.slice(d,d+o.count);l=l.map(function(u,g){var v=i[s+g];return v.length>u.length?v:u}),o.value=e.join(l)}else o.value=e.join(t.slice(d,d+o.count));d+=o.count,o.added||(s+=o.count)}}var c=a[n-1];return n>1&&typeof c.value=="string"&&(c.added||c.removed)&&e.equals("",c.value)&&(a[n-2].value+=c.value,a.pop()),a}function j3(e){return{newPos:e.newPos,components:e.components.slice(0)}}var Nf=new G1;var eo=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,ao=/\S/,to=new G1;to.equals=function(e,a){return this.options.ignoreCase&&(e=e.toLowerCase(),a=a.toLowerCase()),e===a||this.options.ignoreWhitespace&&!ao.test(e)&&!ao.test(a)};to.tokenize=function(e){for(var a=e.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),t=0;t<a.length-1;t++)!a[t+1]&&a[t+2]&&eo.test(a[t])&&eo.test(a[t+2])&&(a[t]+=a[t+2],a.splice(t+1,2),t--);return a};var In=new G1;In.tokenize=function(e){var a=[],t=e.split(/(\n|\r\n)/);t[t.length-1]||t.pop();for(var i=0;i<t.length;i++){var p=t[i];i%2&&!this.options.newlineIsToken?a[a.length-1]+=p:(this.options.ignoreWhitespace&&(p=p.trim()),a.push(p))}return a};function Mn(e,a,t){return In.diff(e,a,t)}var I3=new G1;I3.tokenize=function(e){return e.split(/(\S.+?[.!?])(?=\s+|$)/)};var M3=new G1;M3.tokenize=function(e){return e.split(/([{}:;,]|\s+)/)};function lp(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?lp=function(a){return typeof a}:lp=function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},lp(e)}var V3=Object.prototype.toString,bt=new G1;bt.useLongestToken=!0;bt.tokenize=In.tokenize;bt.castInput=function(e){var a=this.options,t=a.undefinedReplacement,i=a.stringifyReplacer,p=i===void 0?function(r,n){return typeof n=="undefined"?t:n}:i;return typeof e=="string"?e:JSON.stringify(Fn(e,null,null,p),p," ")};bt.equals=function(e,a){return G1.prototype.equals.call(bt,e.replace(/,([\r\n])/g,"$1"),a.replace(/,([\r\n])/g,"$1"))};function io(e,a,t){return bt.diff(e,a,t)}function Fn(e,a,t,i,p){a=a||[],t=t||[],i&&(e=i(p,e));var r;for(r=0;r<a.length;r+=1)if(a[r]===e)return t[r];var n;if(V3.call(e)==="[object Array]"){for(a.push(e),n=new Array(e.length),t.push(n),r=0;r<e.length;r+=1)n[r]=Fn(e[r],a,t,i,p);return a.pop(),t.pop(),n}if(e&&e.toJSON&&(e=e.toJSON()),lp(e)==="object"&&e!==null){a.push(e),n={},t.push(n);var d=[],s;for(s in e)e.hasOwnProperty(s)&&d.push(s);for(d.sort(),r=0;r<d.length;r+=1)s=d[r],n[s]=Fn(e[s],a,t,i,s);a.pop(),t.pop()}else n=e;return n}var jn=new G1;jn.tokenize=function(e){return e.slice()};jn.join=jn.removeEmpty=function(e){return e};var Uo=Ja(Io(),1);async function Ce({objects:e,selectIdentifier:a,selectDisplayName:t=a,onSyncComplete:i}){let p=e.reduce((d,s)=>{let o=a(s);if(d[o])throw new Error(`Identifier ${o} was not unique.`);return d[o]={id:o,object:s,providerId:o,displayName:t(s)},d},{});async function*r(){for(let d of Object.values(p))yield d}function n(){return Object.entries(p).sort((d,s)=>d[0].localeCompare(s[0])).map(d=>d[1].object)}return{objects:r(),deleteObject:async d=>{delete p[d]},writeObject:async d=>{let s=a(d.object);p[s]=d},extractCurrent:n,onSyncComplete:i?d=>i(d,n()):void 0}}var t7=sr(or());function T(e){var a,t;return e.option("apiKey",{describe:"Uniform API key. Defaults to CANVAS_CLI_API_KEY or UNIFORM_API_KEY env. Supports dotenv.",default:(t=(a=process.env.CANVAS_CLI_API_KEY)!=null?a:process.env.UPM_CLI_API_KEY)!=null?t:process.env.UNIFORM_API_KEY,demandOption:!0,type:"string"}).option("apiHost",{describe:"Uniform host. Defaults to UNIFORM_CLI_BASE_URL env or https://uniform.app. Supports dotenv.",default:process.env.UNIFORM_CLI_BASE_URL||"https://uniform.app",demandOption:!0,type:"string"}).option("proxy",{describe:"HTTPS proxy to use for Uniform API calls. Defaults to HTTPS_PROXY, https_proxy, ALL_PROXY, or all_proxy env vars (in that order). Supports dotenv.",default:process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy,type:"string"})}function P(e){return e&&console.log(`\u{1F991} Using proxy ${e}`),(a,t)=>{if(e){let i={...t,agent:new Lo.HttpsProxyAgent(e)};return(0,Kn.default)(a,i)}return(0,Kn.default)(a,t)}}function F(e){var a,t,i;return e.option("project",{describe:"Uniform project ID. Defaults to UNIFORM_CLI_PROJECT_ID or UNIFORM_PROJECT_ID env. Supports dotenv.",default:(i=(t=(a=process.env.UNIFORM_CLI_PROJECT_ID)!=null?a:process.env.CANVAS_CLI_PROJECT_ID)!=null?t:process.env.UPM_CLI_PROJECT_ID)!=null?i:process.env.UNIFORM_PROJECT_ID,demandOption:!0,type:"string",alias:["p"]})}function Se(e){return e.option("format",{alias:["f"],describe:"Output format",default:"yaml",choices:["yaml","json"],type:"string"}).option("filename",{alias:["o"],describe:"Output filename. If not specified, write to stdout.",type:"string"})}function Ee(e){var a;return e.option("diff",{describe:"Whether to show diffs in stdout. off = no diffs; update = on for updates; on = updates, creates, deletes. Can be set by UNIFORM_CLI_DIFF_MODE environment variable.",default:(a=process.env.UNIFORM_CLI_DIFF_MODE)!=null?a:"off",type:"string",choices:["off","update","on"],alias:["d"]})}function Oe(e){let a=Vo(e);return a===".yaml"||a===".yml"||a===".json"}function ge(e,a,t){let i;if(t&&!a){let p=Vo(t);p===".yaml"||p===".yml"?a="yaml":p===".json"&&(a="json")}else if(!a)throw new Error("Format must be specified when no filename is passed");switch(a){case"json":i=JSON.stringify(e,null,2);break;case"yaml":i=t0(e);break;default:throw new Error(`Unsupported format: ${a}`)}t?s7(t,i,"utf8"):console.log(i)}function V1(e){let a=o7(e,"utf8");return a0(a,{filename:e,json:!0})}async function Ne({directory:e,format:a="yaml",selectIdentifier:t,selectDisplayName:i=t}){i7(e)||p7(e,{recursive:!0});let p=await r7(e,"utf-8"),r=new Set(p.filter(s=>{let o=d7(s);return o===".json"||o===".yaml"||o===".yml"})),n=s=>Mo(e,`${s}.${a}`);async function*d(){for(let s of r){let o=Mo(e,s);try{let l=await V1(o);yield{id:t(l),displayName:i(l),providerId:o,object:l}}catch(l){throw console.error(t7.default.red(`Failed to read ${o}, data is likely invalid.
122
- ${l==null?void 0:l.message}`)),l}}}return{objects:d(),deleteObject:async s=>{await n7(s)},writeObject:async s=>{ge(s.object,a,n(s.id))}}}function Bo(e,a){if(!a&&!l7.existsSync(e))return{};let t=V1(e);if(typeof t!="object")throw new Error(`Package ${e} does not appear valid.`);return t}function ko(e,a){ge(a,void 0,e)}async function ve({source:e,target:a,compareContents:t=(d,s)=>(0,Uo.default)(d.object,s.object,(o,l,m)=>m==="created"||m==="modified"?!0:void 0),mode:i,allowEmptySource:p=!1,whatIf:r=!1,log:n=()=>{}}){var d,s;let o=new Map;for await(let c of a.objects)o.set(c.id,c);let l=[],m=!1;for await(let c of e.objects){m=!0;let u=c.id,g=o.get(u);if(g){if(!t(c,g)&&(i==="createOrUpdate"||i==="mirror")){let v=async(h,_)=>{var A;if(!r)try{await a.writeObject(h,_)}catch(j){throw new yp(j,h)}n({action:"update",id:u,providerId:h.providerId,displayName:(A=h.displayName)!=null?A:h.providerId,whatIf:r,diff:io(_.object,h.object)})};l.push(v(c,g))}o.delete(u)}else{let v=async(h,_)=>{var A;if(!r)try{await a.writeObject(h)}catch(j){throw new yp(j,h)}n({action:"create",id:_,providerId:_,displayName:(A=h.displayName)!=null?A:h.providerId,whatIf:r,diff:Mn("",JSON.stringify(h.object,null,2))})};l.push(v(c,u))}}if(await Promise.all(l),i==="mirror"){if(!m&&!p)throw new Error("Source is empty and mode is mirror. This would cause deletion of everything in the target, and most likely indicates an error in source definition.");let c=[];o.forEach(async u=>{let g=async v=>{var h;if(!r)try{await a.deleteObject(v.providerId)}catch(_){throw new yp(_,v)}n({action:"delete",id:v.id,providerId:v.providerId,displayName:(h=v.displayName)!=null?h:v.providerId,whatIf:r,diff:Mn(JSON.stringify(v.object,null,2),"")})};c.push(g(u))}),await Promise.all(c)}await Promise.all([(d=e.onSyncComplete)==null?void 0:d.call(e,!1),(s=a.onSyncComplete)==null?void 0:s.call(a,!0)])}var yp=class extends Error{constructor(e,a){var t;super(`Error syncing ${(t=a.displayName)!=null?t:a.providerId} (${a.providerId})
122
+ ${l==null?void 0:l.message}`)),l}}}return{objects:d(),deleteObject:async s=>{await n7(s)},writeObject:async s=>{ge(s.object,a,n(s.id))}}}function Bo(e,a){if(!a&&!l7.existsSync(e))return{};let t=V1(e);if(typeof t!="object")throw new Error(`Package ${e} does not appear valid.`);return t}function ko(e,a){ge(a,void 0,e)}async function ve({source:e,target:a,compareContents:t=(d,s)=>(0,Uo.default)(d.object,s.object,(o,l,m)=>m==="created"||m==="modified"?!0:void 0),mode:i,allowEmptySource:p=!1,whatIf:r=!1,log:n=()=>{}}){var d,s;let o=new Map;for await(let c of a.objects)o.set(c.id,c);let l=[],m=!1;for await(let c of e.objects){m=!0;let u=c.id,g=o.get(u);if(g){if(!t(c,g)&&(i==="createOrUpdate"||i==="mirror")){let v=async(h,_)=>{var A;if(!r)try{await a.writeObject(h,_)}catch(j){throw new yp(j,h)}n({action:"update",id:u,providerId:h.providerId,displayName:(A=h.displayName)!=null?A:h.providerId,whatIf:r,diff:io(_.object,h.object)})};l.push(v(c,g))}o.delete(u)}else{let v=async(h,_)=>{var A;if(!r)try{await a.writeObject(h)}catch(j){throw new yp(j,h)}n({action:"create",id:_,providerId:_,displayName:(A=h.displayName)!=null?A:h.providerId,whatIf:r,diff:Mn("",JSON.stringify(h.object,null,2))})};l.push(v(c,u))}}if(await Promise.all(l),i==="mirror"){if(!m&&!p)throw new Error("Source is empty and mode is mirror. This would cause deletion of everything in the target, and most likely indicates an error in source definition.");let c=[];o.forEach(async u=>{let g=async v=>{var h;if(!r)try{await a.deleteObject(v.providerId,v)}catch(_){throw new yp(_,v)}n({action:"delete",id:v.id,providerId:v.providerId,displayName:(h=v.displayName)!=null?h:v.providerId,whatIf:r,diff:Mn(JSON.stringify(v.object,null,2),"")})};c.push(g(u))}),await Promise.all(c)}await Promise.all([(d=e.onSyncComplete)==null?void 0:d.call(e,!1),(s=a.onSyncComplete)==null?void 0:s.call(a,!0)])}var yp=class extends Error{constructor(e,a){var t;super(`Error syncing ${(t=a.displayName)!=null?t:a.providerId} (${a.providerId})
123
123
  ${e}`),this.stack=void 0,Object.setPrototypeOf(this,yp.prototype)}},At=sr(or());function we(e){let{diffMode:a="off",indent:t,prefix:i}=e!=null?e:{};return function({action:p,displayName:r,whatIf:n,diff:d}){let s="";switch(p){case"create":s=At.default.green("[A]");break;case"update":s=At.default.white("[U]");break;case"delete":s=At.default.yellow("[D]");break}let o="";(a==="on"||a==="update"&&p==="update")&&(o=`
124
124
  `+d.map(l=>l.added?At.default.green(l.value):l.removed?At.default.red(l.value):l.value).join("")),console.log(`${t!=null?t:""}${n?At.default.gray("[WHATIF]"):""}${s}${i!=null?i:""} ${r}${o}`)}}var Ro=async e=>await e(),L1=class extends Error{constructor(t,i,p,r,n,d){super(`${t}
125
125
  ${r}${n?" "+n:""} (${i} ${p}${d?` Request ID: ${d}`:""})`);this.errorMessage=t;this.fetchMethod=i;this.fetchUri=p;this.statusCode=r;this.statusText=n;this.requestId=d;Object.setPrototypeOf(this,L1.prototype)}};var Ge=class{constructor(a){cd(this,"options");var i,p,r,n,d,s;if(!a.apiKey&&!a.bearerToken)throw new Error("You must provide an API key or a bearer token");let t=a.fetch;if(!t)if(typeof window!="undefined")t=window.fetch.bind(window);else if(typeof fetch!="undefined")t=fetch;else throw new Error("You must provide or polyfill a fetch implementation when not in a browser");this.options={...a,fetch:t,apiHost:(i=a.apiHost)!=null?i:"https://uniform.app",apiKey:(p=a.apiKey)!=null?p:null,projectId:(r=a.projectId)!=null?r:null,bearerToken:(n=a.bearerToken)!=null?n:null,limitPolicy:(d=a.limitPolicy)!=null?d:Ro,bypassCache:(s=a.bypassCache)!=null?s:!1}}async apiClient(a,t){return this.options.limitPolicy(async()=>{var r;let i=this.options.apiKey?{"x-api-key":this.options.apiKey}:{Authorization:`Bearer ${this.options.bearerToken}`};this.options.bypassCache&&(i["x-bypass-cache"]="true");let p=await this.options.fetch(a.toString(),{...t,headers:{...t==null?void 0:t.headers,...i}});if(!p.ok){let n="";try{let d=await p.text();try{let s=JSON.parse(d);s.errorMessage?n=Array.isArray(s.errorMessage)?s.errorMessage.join(", "):s.errorMessage:n=d}catch(s){n=d}}catch(d){n="General error"}throw new L1(n,(r=t==null?void 0:t.method)!=null?r:"GET",a.toString(),p.status,p.statusText,Ge.getRequestId(p))}return t!=null&&t.expectNoContent?null:await p.json()})}createUrl(a,t){let i=new URL(`${this.options.apiHost}${a}`);return Object.entries(t!=null?t:{}).forEach(([p,r])=>{var n;typeof r!="undefined"&&r!==null&&i.searchParams.append(p,Array.isArray(r)?r.join(","):(n=r==null?void 0:r.toString())!=null?n:"")}),i}static getRequestId(a){let t=a.headers.get("apigw-requestid");if(t)return t}};var Ct,si=class extends Ge{constructor(a){super(a)}async get(a){let{projectId:t}=this.options,i=this.createUrl(me(si,Ct),{...a,projectId:t});return await this.apiClient(i)}async upsert(a){let t=this.createUrl(me(si,Ct));await this.apiClient(t,{method:"PUT",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}async remove(a){let t=this.createUrl(me(si,Ct));await this.apiClient(t,{method:"DELETE",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}},_p=si;Ct=new WeakMap,n1(_p,Ct,"/api/v2/aggregate");var a1=class extends _p{constructor(a){super({...a,bypassCache:!0})}};var $o={command:"get <id>",describe:"Fetch an aggregate",builder:e=>Se(T(F(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to fetch"})))),handler:async({apiHost:e,apiKey:a,proxy:t,id:i,format:p,project:r,filename:n})=>{let d=P(t),o=await new a1({apiKey:a,apiHost:e,fetch:d,projectId:r}).get({aggregateId:i});o.aggregates.length===0?(console.error("Aggregate did not exist"),process.exit(1)):ge(o.aggregates[0],p,n)}};var qo={command:"list",describe:"List aggregates",aliases:["ls"],builder:e=>Se(T(F(e))),handler:async({apiHost:e,apiKey:a,proxy:t,format:i,filename:p,project:r})=>{let n=P(t),s=await new a1({apiKey:a,apiHost:e,fetch:n,projectId:r}).get({});ge(s.aggregates,i,p)}};var ha=e=>e.id,ga=e=>`${e.name} (pid: ${e.id})`;function De(e,a){return Bo(e,a)}function B1(e,a){ko(e,a)}import m7 from"p-limit";var Te=m7(8);function xp({client:e,type:a}){async function*t(){let p=(await e.get({type:a})).aggregates;for await(let r of p)yield{id:ha(r),displayName:ga(r),providerId:r.id,object:r}}let i=[];return{objects:t(),deleteObject:async p=>{await e.remove({aggregateId:p})},writeObject:async p=>{await e.upsert({aggregate:p.object,skipInputs:!0}),i.push(p.object)},complete:async()=>{await Promise.all(i.map(p=>e.upsert({aggregate:p,skipInputs:!1})))}}}var Ho={command:"pull <directory>",describe:"Pulls all aggregates to local files in a directory",builder:e=>T(F(Ee(e.positional("directory",{describe:"Directory to save the aggregates to. If a filename ending in yaml or json is used, a package file will be created instead of files in the directory.",type:"string"}).option("format",{alias:["f"],describe:"Output format",default:"yaml",choices:["yaml","json"],type:"string"}).option("what-if",{alias:["w"],describe:"What-if mode reports what would be done but changes no files",default:!1,type:"boolean"}).option("mode",{alias:["m"],describe:'What kind of changes can be made. "create" = create new files, update nothing. "createOrUpdate" = create new files, update existing, delete nothing. "mirror" = create, update, and delete to mirror state',choices:["create","createOrUpdate","mirror"],default:"mirror",type:"string"})))),handler:async({apiHost:e,apiKey:a,proxy:t,directory:i,format:p,mode:r,whatIf:n,project:d,diff:s})=>{var g;let o=P(t),l=new a1({apiKey:a,apiHost:e,fetch:o,projectId:d,limitPolicy:Te}),m=xp({client:l}),c;if(Oe(i)){let v=De(i,!1);c=await Ce({objects:(g=v.aggregates)!=null?g:[],selectIdentifier:ha,selectDisplayName:ga,onSyncComplete:async(h,_)=>{v.aggregates=_,B1(i,v)}})}else c=await Ne({directory:i,selectIdentifier:ha,selectDisplayName:ga,format:p});await ve({source:m,target:c,mode:r,whatIf:n,log:we({diffMode:s})})}};var Wo={command:"push <directory>",describe:"Pushes all aggregates from files in a directory or package to Uniform",builder:e=>T(F(Ee(e.positional("directory",{describe:"Directory to read the aggregates from. If a filename is used, a package will be read instead.",type:"string"}).option("what-if",{alias:["w"],describe:"What-if mode reports what would be done but changes nothing",default:!1,type:"boolean"}).option("mode",{alias:["m"],describe:'What kind of changes can be made. "create" = create new, update nothing. "createOrUpdate" = create new, update existing, delete nothing. "mirror" = create, update, and delete',choices:["create","createOrUpdate","mirror"],default:"mirror",type:"string"})))),handler:async({apiHost:e,apiKey:a,proxy:t,directory:i,mode:p,whatIf:r,project:n,diff:d})=>{var u;let s=P(t),o=new a1({apiKey:a,apiHost:e,fetch:s,projectId:n,limitPolicy:Te}),l;if(Oe(i)){let g=De(i,!0);l=await Ce({objects:(u=g.aggregates)!=null?u:[],selectIdentifier:ha,selectDisplayName:ga})}else l=await Ne({directory:i,selectIdentifier:ha,selectDisplayName:ga});let c=xp({client:o});await ve({source:l,target:c,mode:p,whatIf:r,log:we({diffMode:d})}),await c.complete()}};var zo={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an aggregate",builder:e=>T(F(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to delete"}))),handler:async({apiHost:e,apiKey:a,proxy:t,id:i,project:p})=>{let r=P(t);await new a1({apiKey:a,apiHost:e,fetch:r,projectId:p}).remove({aggregateId:i})}};var Go={command:"update <filename>",aliases:["put"],describe:"Insert or update an aggregate",builder:e=>T(F(e.positional("filename",{demandOption:!0,describe:"Aggregate file to put"}))),handler:async({apiHost:e,apiKey:a,proxy:t,filename:i,project:p})=>{let r=P(t),n=new a1({apiKey:a,apiHost:e,fetch:r,projectId:p}),d=V1(i);await n.upsert({aggregate:d})}};var Yo={command:"aggregate <command>",aliases:["agg","intent","audience"],describe:"Commands for Context aggregates (intents, audiences)",builder:e=>e.command(Ho).command(Wo).command($o).command(zo).command(qo).command(Go).demandCommand(),handler:()=>{Je.help()}};var St,li,Ka=class extends Ge{constructor(a){super(a)}async get(a){let{projectId:t}=this.options,i=this.createUrl(me(Ka,St),{...a,projectId:t});return await this.apiClient(i)}async upsertCategory(a){let t=this.createUrl(me(Ka,St));await this.apiClient(t,{method:"PUT",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}async removeCategory(a){let t=this.createUrl(me(Ka,St));await this.apiClient(t,{method:"DELETE",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}async upsertValue(a){let t=this.createUrl(me(Ka,li));await this.apiClient(t,{method:"PUT",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}async removeValue(a){let t=this.createUrl(me(Ka,li));await this.apiClient(t,{method:"DELETE",body:JSON.stringify({...a,projectId:this.options.projectId}),expectNoContent:!0})}},oi=Ka;St=new WeakMap,li=new WeakMap,n1(oi,St,"/api/v1/enrichments"),n1(oi,li,"/api/v1/enrichment-values");var C1=class extends oi{constructor(a){super({...a,bypassCache:!0})}};var Ko={command:"get <id>",describe:"Fetch an enrichment category and its values",builder:e=>Se(T(F(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to fetch"})))),handler:async({apiHost:e,apiKey:a,proxy:t,id:i,format:p,project:r,filename:n})=>{var l,m;let d=P(t),o=(m=(l=await new C1({apiKey:a,apiHost:e,fetch:d,projectId:r}).get())==null?void 0:l.enrichments)==null?void 0:m.filter(c=>c.id===i);o.length===0?(console.error("Enrichment did not exist"),process.exit(1)):ge(o[0],p,n)}};var Qo={command:"list",describe:"List enrichments",aliases:["ls"],builder:e=>Se(T(F(e))),handler:async({apiHost:e,apiKey:a,proxy:t,format:i,filename:p,project:r})=>{let n=P(t),s=await new C1({apiKey:a,apiHost:e,fetch:n,projectId:r}).get();ge(s.enrichments,i,p)}};var va=e=>e.id,wa=e=>`${e.name} (pid: ${e.id})`;function Ap({client:e}){async function*a(){let t=(await e.get()).enrichments;for await(let i of t)yield{id:va(i),displayName:wa(i),providerId:i.id,object:i}}return{objects:a(),deleteObject:async t=>{await e.removeCategory({enrichmentId:t})},writeObject:async(t,i)=>{var n,d;await e.upsertCategory({enrichment:t.object});let p=Jo({categoryId:t.id,values:t.object.values}),r=Jo({categoryId:t.id,values:(d=(n=i==null?void 0:i.object)==null?void 0:n.values)!=null?d:[],client:e});await ve({source:p,target:r,mode:"mirror",whatIf:!1,log:we({diffMode:"off",prefix:` ${t.displayName} value`,indent:"> "})})}}}var Jo=({client:e,categoryId:a,values:t})=>({objects:async function*(){for(let p of t)yield{id:p.id,providerId:p.id,object:p,displayName:`${p.value} (pid: ${p.id})`}}(),deleteObject:async p=>{if(!e)throw new Error("Provider is read only");await e.removeValue({enrichmentId:a,enrichmentValueId:p})},writeObject:async p=>{if(!e)throw new Error("Provider is read only");await e.upsertValue({enrichmentId:a,enrichmentValue:p.object})}});var Zo={command:"pull <directory>",describe:"Pulls all enrichments to local files in a directory",builder:e=>T(F(Ee(e.positional("directory",{describe:"Directory to save the enrichments to. If a filename ending in yaml or json is used, a package file will be created instead of files in the directory.",type:"string"}).option("format",{alias:["f"],describe:"Output format",default:"yaml",choices:["yaml","json"],type:"string"}).option("what-if",{alias:["w"],describe:"What-if mode reports what would be done but changes no files",default:!1,type:"boolean"}).option("mode",{alias:["m"],describe:'What kind of changes can be made. "create" = create new files, update nothing. "createOrUpdate" = create new files, update existing, delete nothing. "mirror" = create, update, and delete to mirror state',choices:["create","createOrUpdate","mirror"],default:"mirror",type:"string"})))),handler:async({apiHost:e,apiKey:a,proxy:t,directory:i,format:p,mode:r,whatIf:n,project:d,diff:s})=>{var g;let o=P(t),l=new C1({apiKey:a,apiHost:e,fetch:o,projectId:d,limitPolicy:Te}),m=Ap({client:l}),c;if(Oe(i)){let v=De(i,!1);c=await Ce({objects:(g=v.enrichments)!=null?g:[],selectIdentifier:va,selectDisplayName:wa,onSyncComplete:async(h,_)=>{v.enrichments=_,B1(i,v)}})}else c=await Ne({directory:i,selectIdentifier:va,selectDisplayName:wa,format:p});await ve({source:m,target:c,mode:r,whatIf:n,log:we({diffMode:s})})}};var Xo={command:"push <directory>",describe:"Pushes all enrichments from files in a directory or package to Uniform",builder:e=>T(F(Ee(e.positional("directory",{describe:"Directory to read the enrichments from. If a filename is used, a package will be read instead.",type:"string"}).option("what-if",{alias:["w"],describe:"What-if mode reports what would be done but changes nothing",default:!1,type:"boolean"}).option("mode",{alias:["m"],describe:'What kind of changes can be made. "create" = create new, update nothing. "createOrUpdate" = create new, update existing, delete nothing. "mirror" = create, update, and delete',choices:["create","createOrUpdate","mirror"],default:"mirror",type:"string"})))),handler:async({apiHost:e,apiKey:a,proxy:t,directory:i,mode:p,whatIf:r,project:n,diff:d})=>{var u;let s=P(t),o=new C1({apiKey:a,apiHost:e,fetch:s,projectId:n,limitPolicy:Te}),l;if(Oe(i)){let g=De(i,!0);l=await Ce({objects:(u=g.enrichments)!=null?u:[],selectIdentifier:va,selectDisplayName:wa})}else l=await Ne({directory:i,selectIdentifier:va,selectDisplayName:wa});let c=Ap({client:o});await ve({source:l,target:c,mode:p,whatIf:r,log:we({diffMode:d})})}};var el={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an enrichment category and its values",builder:e=>T(F(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to delete"}))),handler:async({apiHost:e,apiKey:a,proxy:t,id:i,project:p})=>{let r=P(t);await new C1({apiKey:a,apiHost:e,fetch:r,projectId:p}).removeCategory({enrichmentId:i})}};var al={command:"enrichment <command>",aliases:["enr"],describe:"Commands for Context enrichments",builder:e=>e.command(Zo).command(Xo).command(Ko).command(el).command(Qo).demandCommand(),handler:()=>{Je.help()}};var Fp=Ja(pd());import{writeFile as I7}from"fs";import{exit as Dl}from"process";var Pp,rd=class extends Ge{constructor(a){super(a)}async get(a){let{projectId:t}=this.options,i=this.createUrl(me(rd,Pp),{...a,projectId:t});return await this.apiClient(i)}async publish(){let{projectId:a}=this.options,t=this.createUrl("/api/v1/publish",{siteId:a});await this.apiClient(t,{method:"POST",expectNoContent:!0})}},Tp=rd;Pp=new WeakMap,n1(Tp,Pp,"/api/v2/manifest");var Tt=class extends Tp{constructor(a){super({...a,bypassCache:!0})}};var Tl={command:"get [output]",aliases:["dl","download"],describe:"Download the Uniform Context manifest for a project",builder:e=>T(F(e.option("preview",{describe:"If set, fetches the unpublished preview manifest (The API key must have permission)",default:!1,type:"boolean",alias:["d"]}).option("output",{string:!0,alias:"o",default:process.env.UNIFORM_MANIFEST_PATH,describe:"Path to write manifest to. Defaults to UNIFORM_MANIFEST_PATH env if set.",demandOption:!0}))),handler:async({apiKey:e,apiHost:a,proxy:t,output:i,project:p,preview:r})=>{let n=P(t),d=new Tt({apiHost:a,projectId:p,apiKey:e,fetch:n});try{let s=await d.get({preview:r}),o=JSON.stringify(s,null,2);i?I7(i,o,l=>{l&&(console.error(`Error writing file to ${i}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/context",
3
- "version": "17.1.1-alpha.231+6a4608662",
3
+ "version": "17.2.1-alpha.134+48f54e4c4",
4
4
  "description": "Uniform Context core package",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "./dist/index.js",
@@ -58,8 +58,8 @@
58
58
  },
59
59
  "devDependencies": {
60
60
  "@types/js-cookie": "3.0.2",
61
- "@types/yargs": "17.0.12",
62
- "@uniformdev/cli": "^17.1.1-alpha.231+6a4608662",
61
+ "@types/yargs": "17.0.13",
62
+ "@uniformdev/cli": "^17.2.1-alpha.134+48f54e4c4",
63
63
  "benny": "3.7.1",
64
64
  "yargs": "17.5.1"
65
65
  },
@@ -76,5 +76,5 @@
76
76
  "publishConfig": {
77
77
  "access": "public"
78
78
  },
79
- "gitHead": "6a46086627e0ac9d6b37542e01dd01c3468331b7"
79
+ "gitHead": "48f54e4c4bd691afe1103ef8b698662f6a02ca63"
80
80
  }