@uniformdev/context 12.2.1-alpha.171 → 12.2.1-alpha.177
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/api/api.d.ts +17 -2
- package/dist/api/api.js +2 -2
- package/dist/api/api.mjs +1 -1
- package/dist/chunk-GU2YFM6V.mjs +1 -0
- package/dist/cli/cli.js +1 -1
- package/dist/cli/cli.mjs +1 -1
- package/dist/index.d.ts +4 -674
- package/dist/index.esm.js +3 -3
- package/dist/index.js +3 -3
- package/dist/index.mjs +3 -3
- package/dist/types-1ad8439c.d.ts +987 -0
- package/package.json +3 -3
- package/dist/v2-manifest.swagger-d0899723.d.ts +0 -285
package/dist/api/api.d.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
import {
|
1
|
+
import { ao as paths$6, g as ManifestV2 } from '../types-1ad8439c';
|
2
|
+
import 'mitt';
|
2
3
|
|
3
4
|
/**
|
4
5
|
* This file was auto-generated by openapi-typescript.
|
@@ -378,6 +379,12 @@ interface paths$3 {
|
|
378
379
|
aggregate: components$4["schemas"]["AggregateData"];
|
379
380
|
/** Format: uuid */
|
380
381
|
projectId: string;
|
382
|
+
/**
|
383
|
+
* @description Skips updating aggregate inputs and upserts only the aggregate definition.
|
384
|
+
* Inputs data is still required, but is ignored and not saved or validated.
|
385
|
+
* Useful when creating aggregates that reference each other: Create the definitions, then the inputs.
|
386
|
+
*/
|
387
|
+
skipInputs?: boolean;
|
381
388
|
};
|
382
389
|
};
|
383
390
|
};
|
@@ -1504,7 +1511,15 @@ declare class ContextClient {
|
|
1504
1511
|
readonly signals: SignalClient;
|
1505
1512
|
}
|
1506
1513
|
|
1514
|
+
declare type DimensionDisplayData = {
|
1515
|
+
dim: string;
|
1516
|
+
type: 'Aggregate' | 'Enrichment' | 'Signal' | 'Intent' | 'Audience';
|
1517
|
+
category?: string;
|
1518
|
+
name: string;
|
1519
|
+
};
|
1520
|
+
declare function computeDimensionDefinitionDisplayData(dim: DimensionDefinition): DimensionDisplayData;
|
1521
|
+
declare function computeDimensionDisplayData(dim: string, manifest: ManifestV2): DimensionDisplayData | undefined;
|
1507
1522
|
/** Computes the standard display name for a given dimension from the dimensions API */
|
1508
1523
|
declare function computeDimensionDisplayName(dim: DimensionDefinition): string;
|
1509
1524
|
|
1510
|
-
export { Aggregate, AggregateClient, AggregateDeleteParameters, AggregateGetParameters, AggregateGetResponse, AggregatePutParameters, ApiClientError, ClientOptions, ContextClient, CookieCriteria, CurrentPageCriteria, DimensionClient, DimensionDefinition, DimensionGetParameters, DimensionGetResponse, EnrichmentCategory, EnrichmentCategoryWithValues, EnrichmentClient, EnrichmentDeleteParameters, EnrichmentGetParameters, EnrichmentGetResponse, EnrichmentPutParameters, EnrichmentValue, EnrichmentValueDeleteParameters, EnrichmentValuePutParameters, EventCriteria, ExceptProject, LimitPolicy, ManifestClient, ManifestGetParameters, ManifestGetResponse, PageViewCountCriteria, QueryStringCriteria, Quirk, QuirkClient, QuirkCriteria, QuirkDeleteParameters, QuirkGetParameters, QuirkGetResponse, QuirkPutParameters, RootSignalCriteriaGroup, SignalClient, SignalDeleteParameters, SignalGetParameters, SignalGetResponse, SignalPutParameters, SignalWithId, computeDimensionDisplayName, nullLimitPolicy };
|
1525
|
+
export { Aggregate, AggregateClient, AggregateDeleteParameters, AggregateGetParameters, AggregateGetResponse, AggregatePutParameters, ApiClientError, ClientOptions, ContextClient, CookieCriteria, CurrentPageCriteria, DimensionClient, DimensionDefinition, DimensionDisplayData, DimensionGetParameters, DimensionGetResponse, EnrichmentCategory, EnrichmentCategoryWithValues, EnrichmentClient, EnrichmentDeleteParameters, EnrichmentGetParameters, EnrichmentGetResponse, EnrichmentPutParameters, EnrichmentValue, EnrichmentValueDeleteParameters, EnrichmentValuePutParameters, EventCriteria, ExceptProject, LimitPolicy, ManifestClient, ManifestGetParameters, ManifestGetResponse, PageViewCountCriteria, QueryStringCriteria, Quirk, QuirkClient, QuirkCriteria, QuirkDeleteParameters, QuirkGetParameters, QuirkGetResponse, QuirkPutParameters, RootSignalCriteriaGroup, SignalClient, SignalDeleteParameters, SignalGetParameters, SignalGetResponse, SignalPutParameters, SignalWithId, computeDimensionDefinitionDisplayData, computeDimensionDisplayData, computeDimensionDisplayName, nullLimitPolicy };
|
package/dist/api/api.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
var
|
2
|
-
${
|
1
|
+
var b=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var $=(r,e,t)=>e in r?b(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var H=r=>b(r,"__esModule",{value:!0});var K=(r,e)=>{for(var t in e)b(r,t,{get:e[t],enumerable:!0})},z=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of v(e))!Q.call(r,o)&&(t||o!=="default")&&b(r,o,{get:()=>e[o],enumerable:!(i=V(e,o))||i.enumerable});return r};var q=(r=>(e,t)=>r&&r.get(e)||(t=z(H({}),e,1),r&&r.set(e,t),t))(typeof WeakMap!="undefined"?new WeakMap:0);var h=(r,e,t)=>($(r,typeof e!="symbol"?e+"":e,t),t),B=(r,e,t)=>{if(!e.has(r))throw TypeError("Cannot "+t)};var n=(r,e,t)=>(B(r,e,"read from private field"),t?t.call(r):e.get(r)),c=(r,e,t)=>{if(e.has(r))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(r):e.set(r,t)};var W={};K(W,{AggregateClient:()=>E,ApiClientError:()=>g,ContextClient:()=>M,DimensionClient:()=>D,EnrichmentClient:()=>f,ManifestClient:()=>R,QuirkClient:()=>I,SignalClient:()=>G,computeDimensionDefinitionDisplayData:()=>J,computeDimensionDisplayData:()=>Y,computeDimensionDisplayName:()=>F,nullLimitPolicy:()=>A});var A=async r=>await r(),g=class extends Error{constructor(e,t,i,o,s){super(`${e}
|
2
|
+
${o}${s?" "+s:""} (${t} ${i})`);this.errorMessage=e;this.fetchMethod=t;this.fetchUri=i;this.statusCode=o;this.statusText=s;Object.setPrototypeOf(this,g.prototype)}};var p=class{constructor(e){h(this,"options");var t,i,o,s,a,m;if(!e.apiKey&&!e.bearerToken)throw new Error("You must provide an API key or a bearer token");this.options={...e,fetch:(t=e.fetch)!=null?t:fetch,apiHost:(i=e.apiHost)!=null?i:"https://uniform.app",apiKey:(o=e.apiKey)!=null?o:null,projectId:(s=e.projectId)!=null?s:null,bearerToken:(a=e.bearerToken)!=null?a:null,limitPolicy:(m=e.limitPolicy)!=null?m:A}}async apiClient(e,t){return this.options.limitPolicy(async()=>{var s;let i=this.options.apiKey?{"x-api-key":this.options.apiKey}:{Authorization:`Bearer ${this.options.bearerToken}`},o=await fetch(e.toString(),{...t,headers:{...t==null?void 0:t.headers,...i}});if(!o.ok){let a="";try{let m=await o.text();try{let C=JSON.parse(m);C.errorMessage?a=Array.isArray(C.errorMessage)?C.errorMessage.join(", "):C.errorMessage:a=m}catch(C){a=m}}catch(m){a="General error"}throw new g(a,(s=t==null?void 0:t.method)!=null?s:"GET",e.toString(),o.status)}return(t==null?void 0:t.expectNoContent)?null:await o.json()})}createUrl(e,t){let i=new URL(`${this.options.apiHost}${e}`);return Object.entries(t!=null?t:{}).forEach(([o,s])=>{var a;typeof s!="undefined"&&s!==null&&i.searchParams.append(o,(a=s==null?void 0:s.toString())!=null?a:"")}),i}};var y,j=class extends p{constructor(e){super(e)}async get(e){let{projectId:t}=this.options,i=this.createUrl(n(j,y),{...e,projectId:t});return await this.apiClient(i)}async upsert(e){let t=this.createUrl(n(j,y));await this.apiClient(t,{method:"PUT",body:JSON.stringify({...e,projectId:this.options.projectId}),expectNoContent:!0})}async remove(e){let t=this.createUrl(n(j,y));await this.apiClient(t,{method:"DELETE",body:JSON.stringify({...e,projectId:this.options.projectId}),expectNoContent:!0})}},E=j;y=new WeakMap,c(E,y,"/api/v2/aggregate");var S,N=class extends p{constructor(e){super(e)}async get(e){let{projectId:t}=this.options,i=this.createUrl(n(N,S),{...e,projectId:t});return await this.apiClient(i)}},D=N;S=new WeakMap,c(D,S,"/api/v2/dimension");var P,U,u=class extends p{constructor(e){super(e)}async get(e){let{projectId:t}=this.options,i=this.createUrl(n(u,P),{...e,projectId:t});return await this.apiClient(i)}async upsertCategory(e){let t=this.createUrl(n(u,P));await this.apiClient(t,{method:"PUT",body:JSON.stringify({...e,projectId:this.options.projectId}),expectNoContent:!0})}async removeCategory(e){let t=this.createUrl(n(u,P));await this.apiClient(t,{method:"DELETE",body:JSON.stringify({...e,projectId:this.options.projectId}),expectNoContent:!0})}async upsertValue(e){let t=this.createUrl(n(u,U));await this.apiClient(t,{method:"PUT",body:JSON.stringify({...e,projectId:this.options.projectId}),expectNoContent:!0})}async removeValue(e){let t=this.createUrl(n(u,U));await this.apiClient(t,{method:"DELETE",body:JSON.stringify({...e,projectId:this.options.projectId}),expectNoContent:!0})}},f=u;P=new WeakMap,U=new WeakMap,c(f,P,"/api/v1/enrichments"),c(f,U,"/api/v1/enrichment-values");var T,k=class extends p{constructor(e){super(e)}async get(e){let{projectId:t}=this.options,i=this.createUrl(n(k,T),{...e,projectId:t});return await this.apiClient(i)}},R=k;T=new WeakMap,c(R,T,"/api/v2/manifest");var d,O=class extends p{constructor(e){super(e)}async get(e){let{projectId:t}=this.options,i=this.createUrl(n(O,d),{...e,projectId:t});return await this.apiClient(i)}async upsert(e){let t=this.createUrl(n(O,d));await this.apiClient(t,{method:"PUT",body:JSON.stringify({...e,projectId:this.options.projectId}),expectNoContent:!0})}async remove(e){let t=this.createUrl(n(O,d));await this.apiClient(t,{method:"DELETE",body:JSON.stringify({...e,projectId:this.options.projectId}),expectNoContent:!0})}},I=O;d=new WeakMap,c(I,d,"/api/v2/quirk");var x,w=class extends p{constructor(e){super(e)}async get(e){let{projectId:t}=this.options,i=this.createUrl(n(w,x),{...e,projectId:t});return await this.apiClient(i)}async upsert(e){let t=this.createUrl(n(w,x));await this.apiClient(t,{method:"PUT",body:JSON.stringify({...e,projectId:this.options.projectId}),expectNoContent:!0})}async remove(e){let t=this.createUrl(n(w,x));await this.apiClient(t,{method:"DELETE",body:JSON.stringify({...e,projectId:this.options.projectId}),expectNoContent:!0})}},G=w;x=new WeakMap,c(G,x,"/api/v2/signal");var M=class{constructor(e){h(this,"enrichments");h(this,"aggregates");h(this,"dimensions");h(this,"manifest");h(this,"quirks");h(this,"signals");this.enrichments=new f(e),this.aggregates=new E(e),this.dimensions=new D(e),this.manifest=new R(e),this.quirks=new I(e),this.signals=new G(e)}};var L="_";function J(r){let e=r.category==="ENR"?"Enrichment":r.category==="SIG"?"Signal":r.subcategory==="1"?"Intent":r.subcategory==="0"?"Audience":"Aggregate";return{dim:r.dim,name:r.name,type:e,category:r.category==="ENR"?r.subcategory:void 0}}function Y(r,e){var t,i,o,s;if((i=(t=e.project.pz)==null?void 0:t.agg)==null?void 0:i[r])return{dim:r,name:r,type:"Aggregate"};if((s=(o=e.project.pz)==null?void 0:o.sig)==null?void 0:s[r])return{dim:r,name:r,type:"Signal"};if(r.indexOf(L)>=0){let[a,m]=r.split(L);return{dim:r,name:m,type:"Enrichment",category:a}}}function F(r){let{type:e,name:t}=J(r);return`${e}: ${t}`}module.exports=q(W);0&&(module.exports={AggregateClient,ApiClientError,ContextClient,DimensionClient,EnrichmentClient,ManifestClient,QuirkClient,SignalClient,computeDimensionDefinitionDisplayData,computeDimensionDisplayData,computeDimensionDisplayName,nullLimitPolicy});
|
package/dist/api/api.mjs
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import{a as
|
1
|
+
import{a as p}from"../chunk-GU2YFM6V.mjs";import{a as G,b as O,c as u,d as x,e as C,f as h,g as E,h as A}from"../chunk-JKQJOIRC.mjs";import{d as i,e as y,f as D,i as n}from"../chunk-KZPEO35A.mjs";n();n();n();var a,l=class extends u{constructor(t){super(t)}async get(t){let{projectId:r}=this.options,o=this.createUrl(y(l,a),{...t,projectId:r});return await this.apiClient(o)}},s=l;a=new WeakMap,D(s,a,"/api/v2/dimension");var w=class{constructor(t){i(this,"enrichments");i(this,"aggregates");i(this,"dimensions");i(this,"manifest");i(this,"quirks");i(this,"signals");this.enrichments=new C(t),this.aggregates=new x(t),this.dimensions=new s(t),this.manifest=new h(t),this.quirks=new E(t),this.signals=new A(t)}};n();function S(e){let t=e.category==="ENR"?"Enrichment":e.category==="SIG"?"Signal":e.subcategory==="1"?"Intent":e.subcategory==="0"?"Audience":"Aggregate";return{dim:e.dim,name:e.name,type:t,category:e.category==="ENR"?e.subcategory:void 0}}function z(e,t){var r,o,g,f;if((o=(r=t.project.pz)==null?void 0:r.agg)==null?void 0:o[e])return{dim:e,name:e,type:"Aggregate"};if((f=(g=t.project.pz)==null?void 0:g.sig)==null?void 0:f[e])return{dim:e,name:e,type:"Signal"};if(e.indexOf(p)>=0){let[d,R]=e.split(p);return{dim:e,name:R,type:"Enrichment",category:d}}}function Q(e){let{type:t,name:r}=S(e);return`${t}: ${r}`}export{x as AggregateClient,O as ApiClientError,w as ContextClient,s as DimensionClient,C as EnrichmentClient,h as ManifestClient,E as QuirkClient,A as SignalClient,S as computeDimensionDefinitionDisplayData,z as computeDimensionDisplayData,Q as computeDimensionDisplayName,G as nullLimitPolicy};
|
@@ -0,0 +1 @@
|
|
1
|
+
import{i as R}from"./chunk-KZPEO35A.mjs";R();var A="_";export{A as a};
|
package/dist/cli/cli.js
CHANGED
@@ -95,7 +95,7 @@ ${C.join(`
|
|
95
95
|
`:""}var _u=Eu,Su={dump:_u};function cr(e,t){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+t+" instead, which is now safe by default.")}}var _s=ss.load,Th=ss.loadAll,Ss=Su.dump;var Uh=cr("safeLoad","load"),Rh=cr("safeLoadAll","loadAll"),$h=cr("safeDump","dump");var ca=require("fs"),Sr=require("path"),fa=require("fs"),ua=Q(require("fs"),1);g();function ot(){}ot.prototype={diff:function(t,n){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=i.callback;typeof i=="function"&&(r=i,i={}),this.options=i;var o=this;function s(A){return r?(setTimeout(function(){r(void 0,A)},0),!0):A}t=this.castInput(t),n=this.castInput(n),t=this.removeEmpty(this.tokenize(t)),n=this.removeEmpty(this.tokenize(n));var a=n.length,l=t.length,u=1,d=a+l,f=[{newPos:-1,components:[]}],p=this.extractCommon(f[0],n,t,0);if(f[0].newPos+1>=a&&p+1>=l)return s([{value:this.join(n),count:n.length}]);function y(){for(var A=-1*u;A<=u;A+=2){var m=void 0,P=f[A-1],E=f[A+1],G=(E?E.newPos:0)-A;P&&(f[A-1]=void 0);var B=P&&P.newPos+1<a,V=E&&0<=G&&G<l;if(!B&&!V){f[A]=void 0;continue}if(!B||V&&P.newPos<E.newPos?(m=ju(E),o.pushComponent(m.components,void 0,!0)):(m=P,m.newPos++,o.pushComponent(m.components,!0,void 0)),G=o.extractCommon(m,n,t,A),m.newPos+1>=a&&G+1>=l)return s(Pu(o,m.components,n,t,o.useLongestToken));f[A]=m}u++}if(r)(function A(){setTimeout(function(){if(u>d)return r();y()||A()},0)})();else for(;u<=d;){var C=y();if(C)return C}},pushComponent:function(t,n,i){var r=t[t.length-1];r&&r.added===n&&r.removed===i?t[t.length-1]={count:r.count+1,added:n,removed:i}:t.push({count:1,added:n,removed:i})},extractCommon:function(t,n,i,r){for(var o=n.length,s=i.length,a=t.newPos,l=a-r,u=0;a+1<o&&l+1<s&&this.equals(n[a+1],i[l+1]);)a++,l++,u++;return u&&t.components.push({count:u}),t.newPos=a,l},equals:function(t,n){return this.options.comparator?this.options.comparator(t,n):t===n||this.options.ignoreCase&&t.toLowerCase()===n.toLowerCase()},removeEmpty:function(t){for(var n=[],i=0;i<t.length;i++)t[i]&&n.push(t[i]);return n},castInput:function(t){return t},tokenize:function(t){return t.split("")},join:function(t){return t.join("")}};function Pu(e,t,n,i,r){for(var o=0,s=t.length,a=0,l=0;o<s;o++){var u=t[o];if(u.removed){if(u.value=e.join(i.slice(l,l+u.count)),l+=u.count,o&&t[o-1].added){var f=t[o-1];t[o-1]=t[o],t[o]=f}}else{if(!u.added&&r){var d=n.slice(a,a+u.count);d=d.map(function(y,C){var A=i[l+C];return A.length>y.length?A:y}),u.value=e.join(d)}else u.value=e.join(n.slice(a,a+u.count));a+=u.count,u.added||(l+=u.count)}}var p=t[s-1];return s>1&&typeof p.value=="string"&&(p.added||p.removed)&&e.equals("",p.value)&&(t[s-2].value+=p.value,t.pop()),t}function ju(e){return{newPos:e.newPos,components:e.components.slice(0)}}var kh=new ot;var Ps=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,js=/\S/,Is=new ot;Is.equals=function(e,t){return this.options.ignoreCase&&(e=e.toLowerCase(),t=t.toLowerCase()),e===t||this.options.ignoreWhitespace&&!js.test(e)&&!js.test(t)};Is.tokenize=function(e){for(var t=e.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),n=0;n<t.length-1;n++)!t[n+1]&&t[n+2]&&Ps.test(t[n])&&Ps.test(t[n+2])&&(t[n]+=t[n+2],t.splice(n+1,2),n--);return t};var fr=new ot;fr.tokenize=function(e){var t=[],n=e.split(/(\n|\r\n)/);n[n.length-1]||n.pop();for(var i=0;i<n.length;i++){var r=n[i];i%2&&!this.options.newlineIsToken?t[t.length-1]+=r:(this.options.ignoreWhitespace&&(r=r.trim()),t.push(r))}return t};function ur(e,t,n){return fr.diff(e,t,n)}var Iu=new ot;Iu.tokenize=function(e){return e.split(/(\S.+?[.!?])(?=\s+|$)/)};var Mu=new ot;Mu.tokenize=function(e){return e.split(/([{}:;,]|\s+)/)};function di(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?di=function(t){return typeof t}:di=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},di(e)}var Fu=Object.prototype.toString,pn=new ot;pn.useLongestToken=!0;pn.tokenize=fr.tokenize;pn.castInput=function(e){var t=this.options,n=t.undefinedReplacement,i=t.stringifyReplacer,r=i===void 0?function(o,s){return typeof s=="undefined"?n:s}:i;return typeof e=="string"?e:JSON.stringify(dr(e,null,null,r),r," ")};pn.equals=function(e,t){return ot.prototype.equals.call(pn,e.replace(/,([\r\n])/g,"$1"),t.replace(/,([\r\n])/g,"$1"))};function Ms(e,t,n){return pn.diff(e,t,n)}function dr(e,t,n,i,r){t=t||[],n=n||[],i&&(e=i(r,e));var o;for(o=0;o<t.length;o+=1)if(t[o]===e)return n[o];var s;if(Fu.call(e)==="[object Array]"){for(t.push(e),s=new Array(e.length),n.push(s),o=0;o<e.length;o+=1)s[o]=dr(e[o],t,n,i,r);return t.pop(),n.pop(),s}if(e&&e.toJSON&&(e=e.toJSON()),di(e)==="object"&&e!==null){t.push(e),s={},n.push(s);var a=[],l;for(l in e)e.hasOwnProperty(l)&&a.push(l);for(a.sort(),o=0;o<a.length;o+=1)l=a[o],s[l]=dr(e[l],t,n,i,l);t.pop(),n.pop()}else s=e;return s}var pr=new ot;pr.tokenize=function(e){return e.slice()};pr.join=pr.removeEmpty=function(e){return e};var ha=Q(aa(),1),Jt=Q(require("chalk"),1);async function Ae({objects:e,selectIdentifier:t,selectDisplayName:n=t,onSyncComplete:i}){let r=e.reduce((a,l)=>{let u=t(l);if(a[u])throw new Error(`Identifier ${u} was not unique.`);return a[u]={id:u,object:l,providerId:u,displayName:n(l)},a},{});async function*o(){for(let a of Object.values(r))yield a}function s(){return Object.entries(r).sort((a,l)=>a[0].localeCompare(l[0])).map(a=>a[1].object)}return{objects:o(),deleteObject:async a=>{delete r[a]},writeObject:async a=>{let l=t(a.object);r[l]=a},extractCurrent:s,onSyncComplete:i?a=>i(a,s()):void 0}}function W(e){var t,n;return e.option("apiKey",{describe:"Uniform API key. Defaults to CANVAS_CLI_API_KEY or UNIFORM_API_KEY env. Supports dotenv.",default:(n=(t=process.env.CANVAS_CLI_API_KEY)!=null?t:process.env.UPM_CLI_API_KEY)!=null?n: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"})}function k(e){var t,n,i;return e.option("project",{describe:"Uniform project ID. Defaults to UNIFORM_CLI_PROJECT_ID or UNIFORM_PROJECT_ID env. Supports dotenv.",default:(i=(n=(t=process.env.UNIFORM_CLI_PROJECT_ID)!=null?t:process.env.CANVAS_CLI_PROJECT_ID)!=null?n:process.env.UPM_CLI_PROJECT_ID)!=null?i:process.env.UNIFORM_PROJECT_ID,demandOption:!0,type:"string",alias:["p"]})}function xe(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 Ce(e){var t;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:(t=process.env.UNIFORM_CLI_DIFF_MODE)!=null?t:"off",type:"string",choices:["off","update","on"],alias:["d"]})}function Oe(e){let t=(0,Sr.extname)(e);return t===".yaml"||t===".yml"||t===".json"}function me(e,t,n){let i;if(n&&!t){let r=(0,Sr.extname)(n);r===".yaml"||r===".yml"?t="yaml":r===".json"&&(t="json")}else if(!t)throw new Error("Format must be specified when no filename is passed");switch(t){case"json":i=JSON.stringify(e,null,2);break;case"yaml":i=Ss(e);break;default:throw new Error(`Unsupported format: ${t}`)}n?(0,ca.writeFileSync)(n,i,"utf8"):console.log(i)}function At(e){let t=(0,fa.readFileSync)(e,"utf8");return _s(t,{filename:e,json:!0})}async function ve({directory:e,format:t="yaml",selectIdentifier:n,selectDisplayName:i=n}){(0,Ci.existsSync)(e)||(0,Ci.mkdirSync)(e,{recursive:!0});let r=await(0,Oi.readdir)(e,"utf-8"),o=new Set(r.filter(l=>{let u=(0,Nn.extname)(l);return u===".json"||u===".yaml"||u===".yml"})),s=l=>(0,Nn.join)(e,`${l}.${t}`);async function*a(){for(let l of o){let u=(0,Nn.join)(e,l);try{let d=await At(u);yield{id:n(d),displayName:i(d),providerId:u,object:d}}catch(d){throw console.error(la.default.red(`Failed to read ${u}, data is likely invalid.
|
96
96
|
${d==null?void 0:d.message}`)),d}}}return{objects:a(),deleteObject:async l=>{await(0,Oi.unlink)(l)},writeObject:async l=>{me(l.object,t,s(l.id))}}}function da(e,t){if(!t&&!ua.default.existsSync(e))return{};let n=At(e);if(typeof n!="object")throw new Error(`Package ${e} does not appear valid.`);return n}function pa(e,t){me(t,void 0,e)}async function ge({source:e,target:t,compareContents:n=(a,l)=>(0,ha.default)(a.object,l.object,(u,d,f)=>f==="created"||f==="modified"?!0:void 0),mode:i,allowEmptySource:r=!1,whatIf:o=!1,log:s=()=>{}}){var a,l;let u=new Map;for await(let p of t.objects)u.set(p.id,p);let d=[],f=!1;for await(let p of e.objects){f=!0;let y=p.id,C=u.get(y);if(C){if(!n(p,C)&&(i==="createOrUpdate"||i==="mirror")){let A=async(m,P)=>{var E;o||await t.writeObject(m,P),s({action:"update",id:y,providerId:m.providerId,displayName:(E=m.displayName)!=null?E:m.providerId,whatIf:o,diff:Ms(P.object,m.object)})};d.push(A(p,C))}u.delete(y)}else{let A=async(m,P)=>{var E;o||await t.writeObject(m),s({action:"create",id:P,providerId:P,displayName:(E=m.displayName)!=null?E:m.providerId,whatIf:o,diff:ur("",JSON.stringify(m.object,null,2))})};d.push(A(p,y))}}if(await Promise.all(d),i==="mirror"){if(!f&&!r)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 p=[];u.forEach(async y=>{let C=async A=>{var m;o||await t.deleteObject(A.providerId),s({action:"delete",id:A.id,providerId:A.providerId,displayName:(m=A.displayName)!=null?m:A.providerId,whatIf:o,diff:ur(JSON.stringify(A.object,null,2),"")})};p.push(C(y))}),await Promise.all(p)}await Promise.all([(a=e.onSyncComplete)==null?void 0:a.call(e,!1),(l=t.onSyncComplete)==null?void 0:l.call(t,!0)])}function ye(e){let{diffMode:t="off",indent:n,prefix:i}=e!=null?e:{};return function({action:r,displayName:o,whatIf:s,diff:a}){let l="";switch(r){case"create":l=Jt.default.green("[A]");break;case"update":l=Jt.default.white("[U]");break;case"delete":l=Jt.default.yellow("[D]");break}let u="";(t==="on"||t==="update"&&r==="update")&&(u=`
|
97
97
|
`+a.map(d=>d.added?Jt.default.green(d.value):d.removed?Jt.default.red(d.value):d.value).join("")),console.log(`${n!=null?n:""}${s?Jt.default.gray("[WHATIF]"):""}${l}${i!=null?i:""} ${o}${u}`)}}g();g();g();var ma=async e=>await e(),Zt=class extends Error{constructor(t,n,i,r,o){super(`${t}
|
98
|
-
${r}${o?" "+o:""} (${n} ${i})`);this.errorMessage=t;this.fetchMethod=n;this.fetchUri=i;this.statusCode=r;this.statusText=o;Object.setPrototypeOf(this,Zt.prototype)}};var Je=class{constructor(t){Mr(this,"options");var n,i,r,o,s,a;if(!t.apiKey&&!t.bearerToken)throw new Error("You must provide an API key or a bearer token");this.options={...t,fetch:(n=t.fetch)!=null?n:fetch,apiHost:(i=t.apiHost)!=null?i:"https://uniform.app",apiKey:(r=t.apiKey)!=null?r:null,projectId:(o=t.projectId)!=null?o:null,bearerToken:(s=t.bearerToken)!=null?s:null,limitPolicy:(a=t.limitPolicy)!=null?a:ma}}async apiClient(t,n){return this.options.limitPolicy(async()=>{var o;let i=this.options.apiKey?{"x-api-key":this.options.apiKey}:{Authorization:`Bearer ${this.options.bearerToken}`},r=await fetch(t.toString(),{...n,headers:{...n==null?void 0:n.headers,...i}});if(!r.ok){let s="";try{let a=await r.text();try{let l=JSON.parse(a);l.errorMessage?s=Array.isArray(l.errorMessage)?l.errorMessage.join(", "):l.errorMessage:s=a}catch(l){s=a}}catch(a){s="General error"}throw new Zt(s,(o=n==null?void 0:n.method)!=null?o:"GET",t.toString(),r.status)}return(n==null?void 0:n.expectNoContent)?null:await r.json()})}createUrl(t,n){let i=new URL(`${this.options.apiHost}${t}`);return Object.entries(n!=null?n:{}).forEach(([r,o])=>{var s;typeof o!="undefined"&&o!==null&&i.searchParams.append(r,(s=o==null?void 0:o.toString())!=null?s:"")}),i}};var yn,Tn=class extends Je{constructor(t){super(t)}async get(t){let{projectId:n}=this.options,i=this.createUrl(ce(Tn,yn),{...t,projectId:n});return await this.apiClient(i)}async upsert(t){let n=this.createUrl(ce(Tn,yn));await this.apiClient(n,{method:"PUT",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}async remove(t){let n=this.createUrl(ce(Tn,yn));await this.apiClient(n,{method:"DELETE",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}},Me=Tn;yn=new WeakMap,Ve(Me,yn,"/api/v2/aggregate");var ya={command:"get <id>",describe:"Fetch an aggregate",builder:e=>xe(W(k(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{let a=await new Me({apiKey:t,apiHost:e,fetch:ga.default,projectId:r}).get({aggregateId:n});a.aggregates.length===0?(console.error("Aggregate did not exist"),process.exit(1)):me(a.aggregates[0],i,o)}};g();var ba=Q(require("isomorphic-unfetch"));var wa={command:"list",describe:"List aggregates",aliases:["ls"],builder:e=>xe(W(k(e))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r})=>{let s=await new Me({apiKey:t,apiHost:e,fetch:ba.default,projectId:r}).get({});me(s.aggregates,n,i)}};g();var xa=Q(require("isomorphic-unfetch"));g();var xt=e=>e.id,Ct=e=>`${e.name} (pid: ${e.id})`;g();function Ee(e,t){return da(e,t)}function Ot(e,t){pa(e,t)}g();var Aa=Q(require("p-limit")),_e=(0,Aa.default)(8);g();function vi({client:e,type:t}){async function*n(){let i=(await e.get({type:t})).aggregates;for await(let r of i)yield{id:xt(r),displayName:Ct(r),providerId:r.id,object:r}}return{objects:n(),deleteObject:async i=>{await e.remove({aggregateId:i})},writeObject:async i=>{await e.upsert({aggregate:i.object})}}}var Ca={command:"pull <directory>",describe:"Pulls all aggregates to local files in a directory",builder:e=>W(k(Ce(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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new Me({apiKey:t,apiHost:e,fetch:xa.default,projectId:s,limitPolicy:_e}),u=vi({client:l}),d;if(Oe(n)){let y=Ee(n,!1);d=await Ae({objects:(p=y.aggregates)!=null?p:[],selectIdentifier:xt,selectDisplayName:Ct,onSyncComplete:async(C,A)=>{y.aggregates=A,Ot(n,y)}})}else d=await ve({directory:n,selectIdentifier:xt,selectDisplayName:Ct,format:i});await ge({source:u,target:d,mode:r,whatIf:o,log:ye({diffMode:a})})}};g();var Oa=Q(require("isomorphic-unfetch"));var va={command:"push <directory>",describe:"Pushes all aggregates from files in a directory or package to Uniform",builder:e=>W(k(Ce(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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new Me({apiKey:t,apiHost:e,fetch:Oa.default,projectId:o,limitPolicy:_e}),l;if(Oe(n)){let p=Ee(n,!0);l=await Ae({objects:(f=p.aggregates)!=null?f:[],selectIdentifier:xt,selectDisplayName:Ct})}else l=await ve({directory:n,selectIdentifier:xt,selectDisplayName:Ct});let d=vi({client:a});await ge({source:l,target:d,mode:i,whatIf:r,log:ye({diffMode:s})})}};g();var Ea=Q(require("isomorphic-unfetch"));var _a={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an aggregate",builder:e=>W(k(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new Me({apiKey:t,apiHost:e,fetch:Ea.default,projectId:i}).remove({aggregateId:n})}};g();var Sa=Q(require("isomorphic-unfetch"));var Pa={command:"update <filename>",aliases:["put"],describe:"Insert or update an aggregate",builder:e=>W(k(e.positional("filename",{demandOption:!0,describe:"Aggregate file to put"}))),handler:async({apiHost:e,apiKey:t,filename:n,project:i})=>{let r=new Me({apiKey:t,apiHost:e,fetch:Sa.default,projectId:i}),o=At(n);await r.upsert({aggregate:o})}};var ja={command:"aggregate <command>",aliases:["agg","intent","audience"],describe:"Commands for Context aggregates (intents, audiences)",builder:e=>e.command(Ca).command(va).command(ya).command(_a).command(wa).command(Pa).demandCommand(),handler:()=>{Ge.help()}};g();g();var Ia=Q(require("isomorphic-unfetch"));g();var bn,Un,Xt=class extends Je{constructor(t){super(t)}async get(t){let{projectId:n}=this.options,i=this.createUrl(ce(Xt,bn),{...t,projectId:n});return await this.apiClient(i)}async upsertCategory(t){let n=this.createUrl(ce(Xt,bn));await this.apiClient(n,{method:"PUT",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}async removeCategory(t){let n=this.createUrl(ce(Xt,bn));await this.apiClient(n,{method:"DELETE",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}async upsertValue(t){let n=this.createUrl(ce(Xt,Un));await this.apiClient(n,{method:"PUT",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}async removeValue(t){let n=this.createUrl(ce(Xt,Un));await this.apiClient(n,{method:"DELETE",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}},Re=Xt;bn=new WeakMap,Un=new WeakMap,Ve(Re,bn,"/api/v1/enrichments"),Ve(Re,Un,"/api/v1/enrichment-values");var Ma={command:"get <id>",describe:"Fetch an enrichment category and its values",builder:e=>xe(W(k(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{var l,u;let a=(u=(l=await new Re({apiKey:t,apiHost:e,fetch:Ia.default,projectId:r}).get())==null?void 0:l.enrichments)==null?void 0:u.filter(d=>d.id===n);a.length===0?(console.error("Enrichment did not exist"),process.exit(1)):me(a[0],i,o)}};g();var Fa=Q(require("isomorphic-unfetch"));var La={command:"list",describe:"List enrichments",aliases:["ls"],builder:e=>xe(W(k(e))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r})=>{let s=await new Re({apiKey:t,apiHost:e,fetch:Fa.default,projectId:r}).get();me(s.enrichments,n,i)}};g();var Na=Q(require("isomorphic-unfetch"));g();var vt=e=>e.id,Et=e=>`${e.name} (pid: ${e.id})`;g();function Ei({client:e}){async function*t(){let n=(await e.get()).enrichments;for await(let i of n)yield{id:vt(i),displayName:Et(i),providerId:i.id,object:i}}return{objects:t(),deleteObject:async n=>{await e.removeCategory({enrichmentId:n})},writeObject:async(n,i)=>{var s,a;await e.upsertCategory({enrichment:n.object});let r=Da({categoryId:n.id,values:n.object.values}),o=Da({categoryId:n.id,values:(a=(s=i==null?void 0:i.object)==null?void 0:s.values)!=null?a:[],client:e});await ge({source:r,target:o,mode:"mirror",whatIf:!1,log:ye({diffMode:"off",prefix:` ${n.displayName} value`,indent:"> "})})}}}var Da=({client:e,categoryId:t,values:n})=>({objects:async function*(){for(let r of n)yield{id:r.id,providerId:r.id,object:r,displayName:`${r.value} (pid: ${r.id})`}}(),deleteObject:async r=>{if(!e)throw new Error("Provider is read only");await e.removeValue({enrichmentId:t,enrichmentValueId:r})},writeObject:async r=>{if(!e)throw new Error("Provider is read only");await e.upsertValue({enrichmentId:t,enrichmentValue:r.object})}});var Ta={command:"pull <directory>",describe:"Pulls all enrichments to local files in a directory",builder:e=>W(k(Ce(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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new Re({apiKey:t,apiHost:e,fetch:Na.default,projectId:s,limitPolicy:_e}),u=Ei({client:l}),d;if(Oe(n)){let y=Ee(n,!1);d=await Ae({objects:(p=y.enrichments)!=null?p:[],selectIdentifier:vt,selectDisplayName:Et,onSyncComplete:async(C,A)=>{y.enrichments=A,Ot(n,y)}})}else d=await ve({directory:n,selectIdentifier:vt,selectDisplayName:Et,format:i});await ge({source:u,target:d,mode:r,whatIf:o,log:ye({diffMode:a})})}};g();var Ua=Q(require("isomorphic-unfetch"));var Ra={command:"push <directory>",describe:"Pushes all enrichments from files in a directory or package to Uniform",builder:e=>W(k(Ce(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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new Re({apiKey:t,apiHost:e,fetch:Ua.default,projectId:o,limitPolicy:_e}),l;if(Oe(n)){let p=Ee(n,!0);l=await Ae({objects:(f=p.enrichments)!=null?f:[],selectIdentifier:vt,selectDisplayName:Et})}else l=await ve({directory:n,selectIdentifier:vt,selectDisplayName:Et});let d=Ei({client:a});await ge({source:l,target:d,mode:i,whatIf:r,log:ye({diffMode:s})})}};g();var $a=Q(require("isomorphic-unfetch"));var Wa={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an enrichment category and its values",builder:e=>W(k(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new Re({apiKey:t,apiHost:e,fetch:$a.default,projectId:i}).removeCategory({enrichmentId:n})}};var ka={command:"enrichment <command>",aliases:["enr"],describe:"Commands for Context enrichments",builder:e=>e.command(Ta).command(Ra).command(Ma).command(Wa).command(La).demandCommand(),handler:()=>{Ge.help()}};g();g();var Rn=Q(require("chalk")),Ha=require("fs"),Ya=Q(require("isomorphic-unfetch")),Pi=require("process");g();var Si,Pr=class extends Je{constructor(t){super(t)}async get(t){let{projectId:n}=this.options,i=this.createUrl(ce(Pr,Si),{...t,projectId:n});return await this.apiClient(i)}},_i=Pr;Si=new WeakMap,Ve(_i,Si,"/api/v2/manifest");var Ga={command:"get [output]",aliases:["dl","download"],describe:"Download the Uniform Context manifest for a project",builder:e=>{var t,n,i;return e.option("apiKey",{alias:"k",demandOption:!0,string:!0,default:(t=process.env.UNIFORM_API_KEY)!=null?t:"",describe:"Uniform API key to use. Defaults to UNIFORM_API_KEY env if set."}).option("project",{describe:"Uniform project ID. Defaults to UCTX_CLI_PROJECT_ID or UNIFORM_PROJECT_ID env. Supports dotenv.",demandOption:!0,default:(i=(n=process.env.UCTX_CLI_PROJECT_ID)!=null?n:process.env.UNIFORM_PROJECT_ID)!=null?i:"",type:"string",alias:["p"]}).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."})},handler:async({apiKey:e,output:t,project:n,preview:i})=>{n||(console.error(Rn.default.red("You must specify the project ID")),(0,Pi.exit)(1));let r=Zd(),o=new _i({apiHost:r,projectId:n,apiKey:e,fetch:Ya.default});try{let s=await o.get({preview:i}),a=JSON.stringify(s,null,2);t?(0,Ha.writeFile)(t,a,l=>{l&&(console.error(`Error writing file to ${t}
|
98
|
+
${r}${o?" "+o:""} (${n} ${i})`);this.errorMessage=t;this.fetchMethod=n;this.fetchUri=i;this.statusCode=r;this.statusText=o;Object.setPrototypeOf(this,Zt.prototype)}};var Je=class{constructor(t){Mr(this,"options");var n,i,r,o,s,a;if(!t.apiKey&&!t.bearerToken)throw new Error("You must provide an API key or a bearer token");this.options={...t,fetch:(n=t.fetch)!=null?n:fetch,apiHost:(i=t.apiHost)!=null?i:"https://uniform.app",apiKey:(r=t.apiKey)!=null?r:null,projectId:(o=t.projectId)!=null?o:null,bearerToken:(s=t.bearerToken)!=null?s:null,limitPolicy:(a=t.limitPolicy)!=null?a:ma}}async apiClient(t,n){return this.options.limitPolicy(async()=>{var o;let i=this.options.apiKey?{"x-api-key":this.options.apiKey}:{Authorization:`Bearer ${this.options.bearerToken}`},r=await fetch(t.toString(),{...n,headers:{...n==null?void 0:n.headers,...i}});if(!r.ok){let s="";try{let a=await r.text();try{let l=JSON.parse(a);l.errorMessage?s=Array.isArray(l.errorMessage)?l.errorMessage.join(", "):l.errorMessage:s=a}catch(l){s=a}}catch(a){s="General error"}throw new Zt(s,(o=n==null?void 0:n.method)!=null?o:"GET",t.toString(),r.status)}return(n==null?void 0:n.expectNoContent)?null:await r.json()})}createUrl(t,n){let i=new URL(`${this.options.apiHost}${t}`);return Object.entries(n!=null?n:{}).forEach(([r,o])=>{var s;typeof o!="undefined"&&o!==null&&i.searchParams.append(r,(s=o==null?void 0:o.toString())!=null?s:"")}),i}};var yn,Tn=class extends Je{constructor(t){super(t)}async get(t){let{projectId:n}=this.options,i=this.createUrl(ce(Tn,yn),{...t,projectId:n});return await this.apiClient(i)}async upsert(t){let n=this.createUrl(ce(Tn,yn));await this.apiClient(n,{method:"PUT",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}async remove(t){let n=this.createUrl(ce(Tn,yn));await this.apiClient(n,{method:"DELETE",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}},Me=Tn;yn=new WeakMap,Ve(Me,yn,"/api/v2/aggregate");var ya={command:"get <id>",describe:"Fetch an aggregate",builder:e=>xe(W(k(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{let a=await new Me({apiKey:t,apiHost:e,fetch:ga.default,projectId:r}).get({aggregateId:n});a.aggregates.length===0?(console.error("Aggregate did not exist"),process.exit(1)):me(a.aggregates[0],i,o)}};g();var ba=Q(require("isomorphic-unfetch"));var wa={command:"list",describe:"List aggregates",aliases:["ls"],builder:e=>xe(W(k(e))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r})=>{let s=await new Me({apiKey:t,apiHost:e,fetch:ba.default,projectId:r}).get({});me(s.aggregates,n,i)}};g();var xa=Q(require("isomorphic-unfetch"));g();var xt=e=>e.id,Ct=e=>`${e.name} (pid: ${e.id})`;g();function Ee(e,t){return da(e,t)}function Ot(e,t){pa(e,t)}g();var Aa=Q(require("p-limit")),_e=(0,Aa.default)(8);g();function vi({client:e,type:t}){async function*n(){let r=(await e.get({type:t})).aggregates;for await(let o of r)yield{id:xt(o),displayName:Ct(o),providerId:o.id,object:o}}let i=[];return{objects:n(),deleteObject:async r=>{await e.remove({aggregateId:r})},writeObject:async r=>{await e.upsert({aggregate:r.object,skipInputs:!0}),i.push(r.object)},complete:async()=>{await Promise.all(i.map(r=>e.upsert({aggregate:r,skipInputs:!1})))}}}var Ca={command:"pull <directory>",describe:"Pulls all aggregates to local files in a directory",builder:e=>W(k(Ce(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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new Me({apiKey:t,apiHost:e,fetch:xa.default,projectId:s,limitPolicy:_e}),u=vi({client:l}),d;if(Oe(n)){let y=Ee(n,!1);d=await Ae({objects:(p=y.aggregates)!=null?p:[],selectIdentifier:xt,selectDisplayName:Ct,onSyncComplete:async(C,A)=>{y.aggregates=A,Ot(n,y)}})}else d=await ve({directory:n,selectIdentifier:xt,selectDisplayName:Ct,format:i});await ge({source:u,target:d,mode:r,whatIf:o,log:ye({diffMode:a})})}};g();var Oa=Q(require("isomorphic-unfetch"));var va={command:"push <directory>",describe:"Pushes all aggregates from files in a directory or package to Uniform",builder:e=>W(k(Ce(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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new Me({apiKey:t,apiHost:e,fetch:Oa.default,projectId:o,limitPolicy:_e}),l;if(Oe(n)){let p=Ee(n,!0);l=await Ae({objects:(f=p.aggregates)!=null?f:[],selectIdentifier:xt,selectDisplayName:Ct})}else l=await ve({directory:n,selectIdentifier:xt,selectDisplayName:Ct});let d=vi({client:a});await ge({source:l,target:d,mode:i,whatIf:r,log:ye({diffMode:s})}),await d.complete()}};g();var Ea=Q(require("isomorphic-unfetch"));var _a={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an aggregate",builder:e=>W(k(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new Me({apiKey:t,apiHost:e,fetch:Ea.default,projectId:i}).remove({aggregateId:n})}};g();var Sa=Q(require("isomorphic-unfetch"));var Pa={command:"update <filename>",aliases:["put"],describe:"Insert or update an aggregate",builder:e=>W(k(e.positional("filename",{demandOption:!0,describe:"Aggregate file to put"}))),handler:async({apiHost:e,apiKey:t,filename:n,project:i})=>{let r=new Me({apiKey:t,apiHost:e,fetch:Sa.default,projectId:i}),o=At(n);await r.upsert({aggregate:o})}};var ja={command:"aggregate <command>",aliases:["agg","intent","audience"],describe:"Commands for Context aggregates (intents, audiences)",builder:e=>e.command(Ca).command(va).command(ya).command(_a).command(wa).command(Pa).demandCommand(),handler:()=>{Ge.help()}};g();g();var Ia=Q(require("isomorphic-unfetch"));g();var bn,Un,Xt=class extends Je{constructor(t){super(t)}async get(t){let{projectId:n}=this.options,i=this.createUrl(ce(Xt,bn),{...t,projectId:n});return await this.apiClient(i)}async upsertCategory(t){let n=this.createUrl(ce(Xt,bn));await this.apiClient(n,{method:"PUT",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}async removeCategory(t){let n=this.createUrl(ce(Xt,bn));await this.apiClient(n,{method:"DELETE",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}async upsertValue(t){let n=this.createUrl(ce(Xt,Un));await this.apiClient(n,{method:"PUT",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}async removeValue(t){let n=this.createUrl(ce(Xt,Un));await this.apiClient(n,{method:"DELETE",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}},Re=Xt;bn=new WeakMap,Un=new WeakMap,Ve(Re,bn,"/api/v1/enrichments"),Ve(Re,Un,"/api/v1/enrichment-values");var Ma={command:"get <id>",describe:"Fetch an enrichment category and its values",builder:e=>xe(W(k(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{var l,u;let a=(u=(l=await new Re({apiKey:t,apiHost:e,fetch:Ia.default,projectId:r}).get())==null?void 0:l.enrichments)==null?void 0:u.filter(d=>d.id===n);a.length===0?(console.error("Enrichment did not exist"),process.exit(1)):me(a[0],i,o)}};g();var Fa=Q(require("isomorphic-unfetch"));var La={command:"list",describe:"List enrichments",aliases:["ls"],builder:e=>xe(W(k(e))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r})=>{let s=await new Re({apiKey:t,apiHost:e,fetch:Fa.default,projectId:r}).get();me(s.enrichments,n,i)}};g();var Na=Q(require("isomorphic-unfetch"));g();var vt=e=>e.id,Et=e=>`${e.name} (pid: ${e.id})`;g();function Ei({client:e}){async function*t(){let n=(await e.get()).enrichments;for await(let i of n)yield{id:vt(i),displayName:Et(i),providerId:i.id,object:i}}return{objects:t(),deleteObject:async n=>{await e.removeCategory({enrichmentId:n})},writeObject:async(n,i)=>{var s,a;await e.upsertCategory({enrichment:n.object});let r=Da({categoryId:n.id,values:n.object.values}),o=Da({categoryId:n.id,values:(a=(s=i==null?void 0:i.object)==null?void 0:s.values)!=null?a:[],client:e});await ge({source:r,target:o,mode:"mirror",whatIf:!1,log:ye({diffMode:"off",prefix:` ${n.displayName} value`,indent:"> "})})}}}var Da=({client:e,categoryId:t,values:n})=>({objects:async function*(){for(let r of n)yield{id:r.id,providerId:r.id,object:r,displayName:`${r.value} (pid: ${r.id})`}}(),deleteObject:async r=>{if(!e)throw new Error("Provider is read only");await e.removeValue({enrichmentId:t,enrichmentValueId:r})},writeObject:async r=>{if(!e)throw new Error("Provider is read only");await e.upsertValue({enrichmentId:t,enrichmentValue:r.object})}});var Ta={command:"pull <directory>",describe:"Pulls all enrichments to local files in a directory",builder:e=>W(k(Ce(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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new Re({apiKey:t,apiHost:e,fetch:Na.default,projectId:s,limitPolicy:_e}),u=Ei({client:l}),d;if(Oe(n)){let y=Ee(n,!1);d=await Ae({objects:(p=y.enrichments)!=null?p:[],selectIdentifier:vt,selectDisplayName:Et,onSyncComplete:async(C,A)=>{y.enrichments=A,Ot(n,y)}})}else d=await ve({directory:n,selectIdentifier:vt,selectDisplayName:Et,format:i});await ge({source:u,target:d,mode:r,whatIf:o,log:ye({diffMode:a})})}};g();var Ua=Q(require("isomorphic-unfetch"));var Ra={command:"push <directory>",describe:"Pushes all enrichments from files in a directory or package to Uniform",builder:e=>W(k(Ce(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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new Re({apiKey:t,apiHost:e,fetch:Ua.default,projectId:o,limitPolicy:_e}),l;if(Oe(n)){let p=Ee(n,!0);l=await Ae({objects:(f=p.enrichments)!=null?f:[],selectIdentifier:vt,selectDisplayName:Et})}else l=await ve({directory:n,selectIdentifier:vt,selectDisplayName:Et});let d=Ei({client:a});await ge({source:l,target:d,mode:i,whatIf:r,log:ye({diffMode:s})})}};g();var $a=Q(require("isomorphic-unfetch"));var Wa={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an enrichment category and its values",builder:e=>W(k(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new Re({apiKey:t,apiHost:e,fetch:$a.default,projectId:i}).removeCategory({enrichmentId:n})}};var ka={command:"enrichment <command>",aliases:["enr"],describe:"Commands for Context enrichments",builder:e=>e.command(Ta).command(Ra).command(Ma).command(Wa).command(La).demandCommand(),handler:()=>{Ge.help()}};g();g();var Rn=Q(require("chalk")),Ha=require("fs"),Ya=Q(require("isomorphic-unfetch")),Pi=require("process");g();var Si,Pr=class extends Je{constructor(t){super(t)}async get(t){let{projectId:n}=this.options,i=this.createUrl(ce(Pr,Si),{...t,projectId:n});return await this.apiClient(i)}},_i=Pr;Si=new WeakMap,Ve(_i,Si,"/api/v2/manifest");var Ga={command:"get [output]",aliases:["dl","download"],describe:"Download the Uniform Context manifest for a project",builder:e=>{var t,n,i;return e.option("apiKey",{alias:"k",demandOption:!0,string:!0,default:(t=process.env.UNIFORM_API_KEY)!=null?t:"",describe:"Uniform API key to use. Defaults to UNIFORM_API_KEY env if set."}).option("project",{describe:"Uniform project ID. Defaults to UCTX_CLI_PROJECT_ID or UNIFORM_PROJECT_ID env. Supports dotenv.",demandOption:!0,default:(i=(n=process.env.UCTX_CLI_PROJECT_ID)!=null?n:process.env.UNIFORM_PROJECT_ID)!=null?i:"",type:"string",alias:["p"]}).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."})},handler:async({apiKey:e,output:t,project:n,preview:i})=>{n||(console.error(Rn.default.red("You must specify the project ID")),(0,Pi.exit)(1));let r=Zd(),o=new _i({apiHost:r,projectId:n,apiKey:e,fetch:Ya.default});try{let s=await o.get({preview:i}),a=JSON.stringify(s,null,2);t?(0,Ha.writeFile)(t,a,l=>{l&&(console.error(`Error writing file to ${t}
|
99
99
|
`,l),(0,Pi.exit)(1)),console.log(Rn.default.green(`\u2705 ${t} has been updated from ${r}`))}):console.log(a)}catch(s){let a;s instanceof Zt?(s.statusCode===403&&(a=`The API key ${e} did not have permissions to fetch the manifest. Ensure ${i?"Context > Read Drafts":"Context > Manifest > Read"} permissions are granted.`),a=s.message):a=s.toString(),console.error(Rn.default.red("\u26A0 Error fetching Context manifest")),console.error(Rn.default.gray(` \u2757 ${a}`)),(0,Pi.exit)(1)}}},Zd=()=>process.env.UNIFORM_CLI_BASE_URL||"https://uniform.app";var Ba={command:"manifest <command>",describe:"Commands for context manifests",aliases:["man"],builder:e=>e.command(Ga).demandCommand(),handler:()=>{Ge.help()}};g();g();var qa=Q(require("isomorphic-unfetch"));g();var wn,$n=class extends Je{constructor(t){super(t)}async get(t){let{projectId:n}=this.options,i=this.createUrl(ce($n,wn),{...t,projectId:n});return await this.apiClient(i)}async upsert(t){let n=this.createUrl(ce($n,wn));await this.apiClient(n,{method:"PUT",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}async remove(t){let n=this.createUrl(ce($n,wn));await this.apiClient(n,{method:"DELETE",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}},Fe=$n;wn=new WeakMap,Ve(Fe,wn,"/api/v2/quirk");var za={command:"get <id>",describe:"Fetch a quirk",builder:e=>xe(W(k(e.positional("id",{demandOption:!0,describe:"Quirk public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{let a=await new Fe({apiKey:t,apiHost:e,fetch:qa.default,projectId:r}).get({quirkId:n,withIntegrations:!0});a.quirks.length===0?(console.error("Quirk did not exist"),process.exit(1)):me(a.quirks[0],i,o)}};g();var Va=Q(require("isomorphic-unfetch"));var Qa={command:"list",describe:"List quirks",aliases:["ls"],builder:e=>xe(W(k(e.option("withIntegrations",{alias:["i"],describe:"Whether to include meta-quirks created by integrations in the list. Defaults to false.",type:"boolean"})))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r,withIntegrations:o})=>{let a=await new Fe({apiKey:t,apiHost:e,fetch:Va.default,projectId:r}).get({withIntegrations:o});me(a.quirks,n,i)}};g();var Ka=Q(require("isomorphic-unfetch"));g();var _t=e=>e.id,St=e=>`${e.name} (pid: ${e.id})`;g();function ji({client:e}){async function*t(){let n=(await e.get({withIntegrations:!1})).quirks;for await(let i of n)yield{id:_t(i),displayName:St(i),providerId:i.id,object:i}}return{objects:t(),deleteObject:async n=>{await e.remove({quirkId:n})},writeObject:async n=>{await e.upsert({quirk:n.object})}}}var Ja={command:"pull <directory>",describe:"Pulls all quirks to local files in a directory",builder:e=>W(k(Ce(e.positional("directory",{describe:"Directory to save the quirks 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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new Fe({apiKey:t,apiHost:e,fetch:Ka.default,projectId:s,limitPolicy:_e}),u=ji({client:l}),d;if(Oe(n)){let y=Ee(n,!1);d=await Ae({objects:(p=y.quirks)!=null?p:[],selectIdentifier:_t,selectDisplayName:St,onSyncComplete:async(C,A)=>{y.quirks=A,Ot(n,y)}})}else d=await ve({directory:n,selectIdentifier:_t,selectDisplayName:St,format:i});await ge({source:u,target:d,mode:r,whatIf:o,log:ye({diffMode:a})})}};g();var Za=Q(require("isomorphic-unfetch"));var Xa={command:"push <directory>",describe:"Pushes all quirks from files in a directory or package to Uniform",builder:e=>W(k(Ce(e.positional("directory",{describe:"Directory to read the quirks 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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new Fe({apiKey:t,apiHost:e,fetch:Za.default,projectId:o,limitPolicy:_e}),l;if(Oe(n)){let p=Ee(n,!0);l=await Ae({objects:(f=p.quirks)!=null?f:[],selectIdentifier:_t,selectDisplayName:St})}else l=await ve({directory:n,selectIdentifier:_t,selectDisplayName:St});let d=ji({client:a});await ge({source:l,target:d,mode:i,whatIf:r,log:ye({diffMode:s})})}};g();var el=Q(require("isomorphic-unfetch"));var tl={command:"remove <id>",aliases:["delete","rm"],describe:"Delete a quirk",builder:e=>W(k(e.positional("id",{demandOption:!0,describe:"Quirk public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new Fe({apiKey:t,apiHost:e,fetch:el.default,projectId:i}).remove({quirkId:n})}};g();var nl=Q(require("isomorphic-unfetch"));var il={command:"update <filename>",aliases:["put"],describe:"Insert or update a quirk",builder:e=>W(k(e.positional("filename",{demandOption:!0,describe:"Quirk file to put"}))),handler:async({apiHost:e,apiKey:t,filename:n,project:i})=>{let r=new Fe({apiKey:t,apiHost:e,fetch:nl.default,projectId:i}),o=At(n);await r.upsert({quirk:o})}};var rl={command:"quirk <command>",aliases:["qk"],describe:"Commands for Context quirks",builder:e=>e.command(Ja).command(Xa).command(za).command(tl).command(Qa).command(il).demandCommand(),handler:()=>{Ge.help()}};g();g();var ol=Q(require("isomorphic-unfetch"));g();var An,Wn=class extends Je{constructor(t){super(t)}async get(t){let{projectId:n}=this.options,i=this.createUrl(ce(Wn,An),{...t,projectId:n});return await this.apiClient(i)}async upsert(t){let n=this.createUrl(ce(Wn,An));await this.apiClient(n,{method:"PUT",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}async remove(t){let n=this.createUrl(ce(Wn,An));await this.apiClient(n,{method:"DELETE",body:JSON.stringify({...t,projectId:this.options.projectId}),expectNoContent:!0})}},Le=Wn;An=new WeakMap,Ve(Le,An,"/api/v2/signal");var sl={command:"get <id>",describe:"Fetch a signal",builder:e=>xe(W(k(e.positional("id",{demandOption:!0,describe:"Signal public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{let a=await new Le({apiKey:t,apiHost:e,fetch:ol.default,projectId:r}).get({signalId:n});a.signals.length===0?(console.error("Signal did not exist"),process.exit(1)):me(a.signals[0],i,o)}};g();var al=Q(require("isomorphic-unfetch"));var ll={command:"list",describe:"List signals",aliases:["ls"],builder:e=>xe(W(k(e))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r})=>{let s=await new Le({apiKey:t,apiHost:e,fetch:al.default,projectId:r}).get();me(s.signals,n,i)}};g();var cl=Q(require("isomorphic-unfetch"));g();var Pt=e=>e.id,jt=e=>`${e.name} (pid: ${e.id})`;g();function Ii({client:e}){async function*t(){let n=(await e.get()).signals;for await(let i of n)yield{id:Pt(i),displayName:jt(i),providerId:i.id,object:i}}return{objects:t(),deleteObject:async n=>{await e.remove({signalId:n})},writeObject:async n=>{await e.upsert({signal:n.object})}}}var fl={command:"pull <directory>",describe:"Pulls all signals to local files in a directory",builder:e=>W(k(Ce(e.positional("directory",{describe:"Directory to save the signals 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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new Le({apiKey:t,apiHost:e,fetch:cl.default,projectId:s,limitPolicy:_e}),u=Ii({client:l}),d;if(Oe(n)){let y=Ee(n,!1);d=await Ae({objects:(p=y.signals)!=null?p:[],selectIdentifier:Pt,selectDisplayName:jt,onSyncComplete:async(C,A)=>{y.signals=A,Ot(n,y)}})}else d=await ve({directory:n,selectIdentifier:Pt,selectDisplayName:jt,format:i});await ge({source:u,target:d,mode:r,whatIf:o,log:ye({diffMode:a})})}};g();var ul=Q(require("isomorphic-unfetch"));var dl={command:"push <directory>",describe:"Pushes all signals from files in a directory or package to Uniform",builder:e=>W(k(Ce(e.positional("directory",{describe:"Directory to read the signals 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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new Le({apiKey:t,apiHost:e,fetch:ul.default,projectId:o,limitPolicy:_e}),l;if(Oe(n)){let p=Ee(n,!0);l=await Ae({objects:(f=p.signals)!=null?f:[],selectIdentifier:Pt,selectDisplayName:jt})}else l=await ve({directory:n,selectIdentifier:Pt,selectDisplayName:jt});let d=Ii({client:a});await ge({source:l,target:d,mode:i,whatIf:r,log:ye({diffMode:s})})}};g();var pl=Q(require("isomorphic-unfetch"));var hl={command:"remove <id>",aliases:["delete","rm"],describe:"Delete a signal",builder:e=>W(k(e.positional("id",{demandOption:!0,describe:"Signal public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new Le({apiKey:t,apiHost:e,fetch:pl.default,projectId:i}).remove({signalId:n})}};g();var ml=Q(require("isomorphic-unfetch"));var gl={command:"update <filename>",aliases:["put"],describe:"Insert or update a signal",builder:e=>W(k(e.positional("filename",{demandOption:!0,describe:"Signal file to put"}))),handler:async({apiHost:e,apiKey:t,filename:n,project:i})=>{let r=new Le({apiKey:t,apiHost:e,fetch:ml.default,projectId:i}),o=At(n);await r.upsert({signal:o})}};var yl={command:"signal <command>",aliases:["sig"],describe:"Commands for Context signals",builder:e=>e.command(fl).command(dl).command(sl).command(hl).command(ll).command(gl).demandCommand(),handler:()=>{Ge.help()}};var Xd={commands:[{command:"context <command>",aliases:["ctx"],describe:"Uniform Context commands",builder:e=>e.command(Ba).command(yl).command(ka).command(ja).command(rl).demandCommand(),handler:()=>{Ge.showHelp()}}]};module.exports=Sl(ep);0&&(module.exports={uniformCLI});
|
100
100
|
/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */
|
101
101
|
/**
|
package/dist/cli/cli.mjs
CHANGED
@@ -94,7 +94,7 @@ ${C.join(`
|
|
94
94
|
`+e.slice(s+1):l+=e.slice(r),l.slice(1)}function vf(e){for(var t="",n=0,i,r=0;r<e.length;n>=65536?r+=2:r++)n=bn(e,r),i=be[n],!i&&yn(n)?(t+=e[r],n>=65536&&(t+=e[r+1])):t+=i||gf(n);return t}function Ef(e,t,n){var i="",r=e.tag,o,s,a;for(o=0,s=n.length;o<s;o+=1)a=n[o],e.replacer&&(a=e.replacer.call(n,String(o),a)),(tt(e,t,a,!1,!1)||typeof a=="undefined"&&tt(e,t,null,!1,!1))&&(i!==""&&(i+=","+(e.condenseFlow?"":" ")),i+=e.dump);e.tag=r,e.dump="["+i+"]"}function zo(e,t,n,i){var r="",o=e.tag,s,a,l;for(s=0,a=n.length;s<a;s+=1)l=n[s],e.replacer&&(l=e.replacer.call(n,String(s),l)),(tt(e,t+1,l,!0,!0,!1,!0)||typeof l=="undefined"&&tt(e,t+1,null,!0,!0,!1,!0))&&((!i||r!=="")&&(r+=Ni(e,t)),e.dump&&mn===e.dump.charCodeAt(0)?r+="-":r+="- ",r+=e.dump);e.tag=o,e.dump=r||"[]"}function Sf(e,t,n){var i="",r=e.tag,o=Object.keys(n),s,a,l,u,d;for(s=0,a=o.length;s<a;s+=1)d="",i!==""&&(d+=", "),e.condenseFlow&&(d+='"'),l=o[s],u=n[l],e.replacer&&(u=e.replacer.call(n,l,u)),!!tt(e,t,l,!1,!1)&&(e.dump.length>1024&&(d+="? "),d+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),!!tt(e,t,u,!1,!1)&&(d+=e.dump,i+=d));e.tag=r,e.dump="{"+i+"}"}function If(e,t,n,i){var r="",o=e.tag,s=Object.keys(n),a,l,u,d,f,p;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new Ie("sortKeys must be a boolean or a function");for(a=0,l=s.length;a<l;a+=1)p="",(!i||r!=="")&&(p+=Ni(e,t)),u=s[a],d=n[u],e.replacer&&(d=e.replacer.call(n,u,d)),!!tt(e,t+1,u,!0,!0,!0)&&(f=e.tag!==null&&e.tag!=="?"||e.dump&&e.dump.length>1024,f&&(e.dump&&mn===e.dump.charCodeAt(0)?p+="?":p+="? "),p+=e.dump,f&&(p+=Ni(e,t)),!!tt(e,t+1,d,!0,f)&&(e.dump&&mn===e.dump.charCodeAt(0)?p+=":":p+=": ",p+=e.dump,r+=p));e.tag=o,e.dump=r||"{}"}function Vo(e,t,n){var i,r,o,s,a,l;for(r=n?e.explicitTypes:e.implicitTypes,o=0,s=r.length;o<s;o+=1)if(a=r[o],(a.instanceOf||a.predicate)&&(!a.instanceOf||typeof t=="object"&&t instanceof a.instanceOf)&&(!a.predicate||a.predicate(t))){if(n?a.multi&&a.representName?e.tag=a.representName(t):e.tag=a.tag:e.tag="?",a.represent){if(l=e.styleMap[a.tag]||a.defaultStyle,Po.call(a.represent)==="[object Function]")i=a.represent(t,l);else if(Mo.call(a.represent,l))i=a.represent[l](t,l);else throw new Ie("!<"+a.tag+'> tag resolver accepts not "'+l+'" style');e.dump=i}return!0}return!1}function tt(e,t,n,i,r,o,s){e.tag=null,e.dump=n,Vo(e,n,!1)||Vo(e,n,!0);var a=Po.call(e.dump),l=i,u;i&&(i=e.flowLevel<0||e.flowLevel>t);var d=a==="[object Object]"||a==="[object Array]",f,p;if(d&&(f=e.duplicates.indexOf(n),p=f!==-1),(e.tag!==null&&e.tag!=="?"||p||e.indent!==2&&t>0)&&(r=!1),p&&e.usedDuplicates[f])e.dump="*ref_"+f;else{if(d&&p&&!e.usedDuplicates[f]&&(e.usedDuplicates[f]=!0),a==="[object Object]")i&&Object.keys(e.dump).length!==0?(If(e,t,e.dump,r),p&&(e.dump="&ref_"+f+e.dump)):(Sf(e,t,e.dump),p&&(e.dump="&ref_"+f+" "+e.dump));else if(a==="[object Array]")i&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?zo(e,t-1,e.dump,r):zo(e,t,e.dump,r),p&&(e.dump="&ref_"+f+e.dump)):(Ef(e,t,e.dump),p&&(e.dump="&ref_"+f+" "+e.dump));else if(a==="[object String]")e.tag!=="?"&&Of(e,e.dump,t,o,l);else{if(a==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new Ie("unacceptable kind of an object to dump "+a)}e.tag!==null&&e.tag!=="?"&&(u=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?u="!"+u:u.slice(0,18)==="tag:yaml.org,2002:"?u="!!"+u.slice(18):u="!<"+u+">",e.dump=u+" "+e.dump)}return!0}function jf(e,t){var n=[],i=[],r,o;for(Ri(e,n,i),r=0,o=i.length;r<o;r+=1)t.duplicates.push(n[i[r]]);t.usedDuplicates=new Array(o)}function Ri(e,t,n){var i,r,o;if(e!==null&&typeof e=="object")if(r=t.indexOf(e),r!==-1)n.indexOf(r)===-1&&n.push(r);else if(t.push(e),Array.isArray(e))for(r=0,o=e.length;r<o;r+=1)Ri(e[r],t,n);else for(i=Object.keys(e),r=0,o=i.length;r<o;r+=1)Ri(e[i[r]],t,n)}function Pf(e,t){t=t||{};var n=new bf(t);n.noRefs||jf(e,n);var i=e;return n.replacer&&(i=n.replacer.call({"":i},"",i)),tt(n,0,i,!0,!0)?n.dump+`
|
95
95
|
`:""}var Mf=Pf,Ff={dump:Mf};function Ui(e,t){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+t+" instead, which is now safe by default.")}}var Ko=jo.load,Mh=jo.loadAll,Qo=Ff.dump;var Fh=Ui("safeLoad","load"),Lh=Ui("safeLoadAll","loadAll"),Dh=Ui("safeDump","dump");import{writeFileSync as cd}from"fs";import{extname as Fs}from"path";import{readFileSync as fd}from"fs";import ud from"fs";b();function nt(){}nt.prototype={diff:function(t,n){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=i.callback;typeof i=="function"&&(r=i,i={}),this.options=i;var o=this;function s(w){return r?(setTimeout(function(){r(void 0,w)},0),!0):w}t=this.castInput(t),n=this.castInput(n),t=this.removeEmpty(this.tokenize(t)),n=this.removeEmpty(this.tokenize(n));var a=n.length,l=t.length,u=1,d=a+l,f=[{newPos:-1,components:[]}],p=this.extractCommon(f[0],n,t,0);if(f[0].newPos+1>=a&&p+1>=l)return s([{value:this.join(n),count:n.length}]);function g(){for(var w=-1*u;w<=u;w+=2){var m=void 0,j=f[w-1],_=f[w+1],q=(_?_.newPos:0)-w;j&&(f[w-1]=void 0);var G=j&&j.newPos+1<a,K=_&&0<=q&&q<l;if(!G&&!K){f[w]=void 0;continue}if(!G||K&&j.newPos<_.newPos?(m=Df(_),o.pushComponent(m.components,void 0,!0)):(m=j,m.newPos++,o.pushComponent(m.components,!0,void 0)),q=o.extractCommon(m,n,t,w),m.newPos+1>=a&&q+1>=l)return s(Lf(o,m.components,n,t,o.useLongestToken));f[w]=m}u++}if(r)(function w(){setTimeout(function(){if(u>d)return r();g()||w()},0)})();else for(;u<=d;){var C=g();if(C)return C}},pushComponent:function(t,n,i){var r=t[t.length-1];r&&r.added===n&&r.removed===i?t[t.length-1]={count:r.count+1,added:n,removed:i}:t.push({count:1,added:n,removed:i})},extractCommon:function(t,n,i,r){for(var o=n.length,s=i.length,a=t.newPos,l=a-r,u=0;a+1<o&&l+1<s&&this.equals(n[a+1],i[l+1]);)a++,l++,u++;return u&&t.components.push({count:u}),t.newPos=a,l},equals:function(t,n){return this.options.comparator?this.options.comparator(t,n):t===n||this.options.ignoreCase&&t.toLowerCase()===n.toLowerCase()},removeEmpty:function(t){for(var n=[],i=0;i<t.length;i++)t[i]&&n.push(t[i]);return n},castInput:function(t){return t},tokenize:function(t){return t.split("")},join:function(t){return t.join("")}};function Lf(e,t,n,i,r){for(var o=0,s=t.length,a=0,l=0;o<s;o++){var u=t[o];if(u.removed){if(u.value=e.join(i.slice(l,l+u.count)),l+=u.count,o&&t[o-1].added){var f=t[o-1];t[o-1]=t[o],t[o]=f}}else{if(!u.added&&r){var d=n.slice(a,a+u.count);d=d.map(function(g,C){var w=i[l+C];return w.length>g.length?w:g}),u.value=e.join(d)}else u.value=e.join(n.slice(a,a+u.count));a+=u.count,u.added||(l+=u.count)}}var p=t[s-1];return s>1&&typeof p.value=="string"&&(p.added||p.removed)&&e.equals("",p.value)&&(t[s-2].value+=p.value,t.pop()),t}function Df(e){return{newPos:e.newPos,components:e.components.slice(0)}}var Th=new nt;var Jo=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,Zo=/\S/,Xo=new nt;Xo.equals=function(e,t){return this.options.ignoreCase&&(e=e.toLowerCase(),t=t.toLowerCase()),e===t||this.options.ignoreWhitespace&&!Zo.test(e)&&!Zo.test(t)};Xo.tokenize=function(e){for(var t=e.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),n=0;n<t.length-1;n++)!t[n+1]&&t[n+2]&&Jo.test(t[n])&&Jo.test(t[n+2])&&(t[n]+=t[n+2],t.splice(n+1,2),n--);return t};var $i=new nt;$i.tokenize=function(e){var t=[],n=e.split(/(\n|\r\n)/);n[n.length-1]||n.pop();for(var i=0;i<n.length;i++){var r=n[i];i%2&&!this.options.newlineIsToken?t[t.length-1]+=r:(this.options.ignoreWhitespace&&(r=r.trim()),t.push(r))}return t};function Wi(e,t,n){return $i.diff(e,t,n)}var Nf=new nt;Nf.tokenize=function(e){return e.split(/(\S.+?[.!?])(?=\s+|$)/)};var Tf=new nt;Tf.tokenize=function(e){return e.split(/([{}:;,]|\s+)/)};function qn(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?qn=function(t){return typeof t}:qn=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},qn(e)}var Rf=Object.prototype.toString,on=new nt;on.useLongestToken=!0;on.tokenize=$i.tokenize;on.castInput=function(e){var t=this.options,n=t.undefinedReplacement,i=t.stringifyReplacer,r=i===void 0?function(o,s){return typeof s=="undefined"?n:s}:i;return typeof e=="string"?e:JSON.stringify(Hi(e,null,null,r),r," ")};on.equals=function(e,t){return nt.prototype.equals.call(on,e.replace(/,([\r\n])/g,"$1"),t.replace(/,([\r\n])/g,"$1"))};function es(e,t,n){return on.diff(e,t,n)}function Hi(e,t,n,i,r){t=t||[],n=n||[],i&&(e=i(r,e));var o;for(o=0;o<t.length;o+=1)if(t[o]===e)return n[o];var s;if(Rf.call(e)==="[object Array]"){for(t.push(e),s=new Array(e.length),n.push(s),o=0;o<e.length;o+=1)s[o]=Hi(e[o],t,n,i,r);return t.pop(),n.pop(),s}if(e&&e.toJSON&&(e=e.toJSON()),qn(e)==="object"&&e!==null){t.push(e),s={},n.push(s);var a=[],l;for(l in e)e.hasOwnProperty(l)&&a.push(l);for(a.sort(),o=0;o<a.length;o+=1)l=a[o],s[l]=Hi(e[l],t,n,i,l);t.pop(),n.pop()}else s=e;return s}var ki=new nt;ki.tokenize=function(e){return e.slice()};ki.join=ki.removeEmpty=function(e){return e};var Ns=pa(Ps(),1);import cn from"chalk";async function Ae({objects:e,selectIdentifier:t,selectDisplayName:n=t,onSyncComplete:i}){let r=e.reduce((a,l)=>{let u=t(l);if(a[u])throw new Error(`Identifier ${u} was not unique.`);return a[u]={id:u,object:l,providerId:u,displayName:n(l)},a},{});async function*o(){for(let a of Object.values(r))yield a}function s(){return Object.entries(r).sort((a,l)=>a[0].localeCompare(l[0])).map(a=>a[1].object)}return{objects:o(),deleteObject:async a=>{delete r[a]},writeObject:async a=>{let l=t(a.object);r[l]=a},extractCurrent:s,onSyncComplete:i?a=>i(a,s()):void 0}}function H(e){var t,n;return e.option("apiKey",{describe:"Uniform API key. Defaults to CANVAS_CLI_API_KEY or UNIFORM_API_KEY env. Supports dotenv.",default:(n=(t=process.env.CANVAS_CLI_API_KEY)!=null?t:process.env.UPM_CLI_API_KEY)!=null?n: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"})}function k(e){var t,n,i;return e.option("project",{describe:"Uniform project ID. Defaults to UNIFORM_CLI_PROJECT_ID or UNIFORM_PROJECT_ID env. Supports dotenv.",default:(i=(n=(t=process.env.UNIFORM_CLI_PROJECT_ID)!=null?t:process.env.CANVAS_CLI_PROJECT_ID)!=null?n:process.env.UPM_CLI_PROJECT_ID)!=null?i:process.env.UNIFORM_PROJECT_ID,demandOption:!0,type:"string",alias:["p"]})}function we(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 xe(e){var t;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:(t=process.env.UNIFORM_CLI_DIFF_MODE)!=null?t:"off",type:"string",choices:["off","update","on"],alias:["d"]})}function Ce(e){let t=Fs(e);return t===".yaml"||t===".yml"||t===".json"}function he(e,t,n){let i;if(n&&!t){let r=Fs(n);r===".yaml"||r===".yml"?t="yaml":r===".json"&&(t="json")}else if(!t)throw new Error("Format must be specified when no filename is passed");switch(t){case"json":i=JSON.stringify(e,null,2);break;case"yaml":i=Qo(e);break;default:throw new Error(`Unsupported format: ${t}`)}n?cd(n,i,"utf8"):console.log(i)}function yt(e){let t=fd(e,"utf8");return Ko(t,{filename:e,json:!0})}async function Oe({directory:e,format:t="yaml",selectIdentifier:n,selectDisplayName:i=n}){rd(e)||od(e,{recursive:!0});let r=await sd(e,"utf-8"),o=new Set(r.filter(l=>{let u=ld(l);return u===".json"||u===".yaml"||u===".yml"})),s=l=>Ms(e,`${l}.${t}`);async function*a(){for(let l of o){let u=Ms(e,l);try{let d=await yt(u);yield{id:n(d),displayName:i(d),providerId:u,object:d}}catch(d){throw console.error(id.red(`Failed to read ${u}, data is likely invalid.
|
96
96
|
${d==null?void 0:d.message}`)),d}}}return{objects:a(),deleteObject:async l=>{await ad(l)},writeObject:async l=>{he(l.object,t,s(l.id))}}}function Ls(e,t){if(!t&&!ud.existsSync(e))return{};let n=yt(e);if(typeof n!="object")throw new Error(`Package ${e} does not appear valid.`);return n}function Ds(e,t){he(t,void 0,e)}async function me({source:e,target:t,compareContents:n=(a,l)=>(0,Ns.default)(a.object,l.object,(u,d,f)=>f==="created"||f==="modified"?!0:void 0),mode:i,allowEmptySource:r=!1,whatIf:o=!1,log:s=()=>{}}){var a,l;let u=new Map;for await(let p of t.objects)u.set(p.id,p);let d=[],f=!1;for await(let p of e.objects){f=!0;let g=p.id,C=u.get(g);if(C){if(!n(p,C)&&(i==="createOrUpdate"||i==="mirror")){let w=async(m,j)=>{var _;o||await t.writeObject(m,j),s({action:"update",id:g,providerId:m.providerId,displayName:(_=m.displayName)!=null?_:m.providerId,whatIf:o,diff:es(j.object,m.object)})};d.push(w(p,C))}u.delete(g)}else{let w=async(m,j)=>{var _;o||await t.writeObject(m),s({action:"create",id:j,providerId:j,displayName:(_=m.displayName)!=null?_:m.providerId,whatIf:o,diff:Wi("",JSON.stringify(m.object,null,2))})};d.push(w(p,g))}}if(await Promise.all(d),i==="mirror"){if(!f&&!r)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 p=[];u.forEach(async g=>{let C=async w=>{var m;o||await t.deleteObject(w.providerId),s({action:"delete",id:w.id,providerId:w.providerId,displayName:(m=w.displayName)!=null?m:w.providerId,whatIf:o,diff:Wi(JSON.stringify(w.object,null,2),"")})};p.push(C(g))}),await Promise.all(p)}await Promise.all([(a=e.onSyncComplete)==null?void 0:a.call(e,!1),(l=t.onSyncComplete)==null?void 0:l.call(t,!0)])}function ge(e){let{diffMode:t="off",indent:n,prefix:i}=e!=null?e:{};return function({action:r,displayName:o,whatIf:s,diff:a}){let l="";switch(r){case"create":l=cn.green("[A]");break;case"update":l=cn.white("[U]");break;case"delete":l=cn.yellow("[D]");break}let u="";(t==="on"||t==="update"&&r==="update")&&(u=`
|
97
|
-
`+a.map(d=>d.added?cn.green(d.value):d.removed?cn.red(d.value):d.value).join("")),console.log(`${n!=null?n:""}${s?cn.gray("[WHATIF]"):""}${l}${i!=null?i:""} ${o}${u}`)}}var Ts={command:"get <id>",describe:"Fetch an aggregate",builder:e=>we(H(k(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{let a=await new De({apiKey:t,apiHost:e,fetch:dd,projectId:r}).get({aggregateId:n});a.aggregates.length===0?(console.error("Aggregate did not exist"),process.exit(1)):he(a.aggregates[0],i,o)}};b();import pd from"isomorphic-unfetch";var Rs={command:"list",describe:"List aggregates",aliases:["ls"],builder:e=>we(H(k(e))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r})=>{let s=await new De({apiKey:t,apiHost:e,fetch:pd,projectId:r}).get({});he(s.aggregates,n,i)}};b();import md from"isomorphic-unfetch";b();var bt=e=>e.id,At=e=>`${e.name} (pid: ${e.id})`;b();function _e(e,t){return Ls(e,t)}function wt(e,t){Ds(e,t)}b();import hd from"p-limit";var ve=hd(8);b();function ti({client:e,type:t}){async function*n(){let i=(await e.get({type:t})).aggregates;for await(let r of i)yield{id:bt(r),displayName:At(r),providerId:r.id,object:r}}return{objects:n(),deleteObject:async i=>{await e.remove({aggregateId:i})},writeObject:async i=>{await e.upsert({aggregate:i.object})}}}var Us={command:"pull <directory>",describe:"Pulls all aggregates to local files in a directory",builder:e=>H(k(xe(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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new De({apiKey:t,apiHost:e,fetch:md,projectId:s,limitPolicy:ve}),u=ti({client:l}),d;if(Ce(n)){let g=_e(n,!1);d=await Ae({objects:(p=g.aggregates)!=null?p:[],selectIdentifier:bt,selectDisplayName:At,onSyncComplete:async(C,w)=>{g.aggregates=w,wt(n,g)}})}else d=await Oe({directory:n,selectIdentifier:bt,selectDisplayName:At,format:i});await me({source:u,target:d,mode:r,whatIf:o,log:ge({diffMode:a})})}};b();import gd from"isomorphic-unfetch";var $s={command:"push <directory>",describe:"Pushes all aggregates from files in a directory or package to Uniform",builder:e=>H(k(xe(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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new De({apiKey:t,apiHost:e,fetch:gd,projectId:o,limitPolicy:ve}),l;if(Ce(n)){let p=_e(n,!0);l=await Ae({objects:(f=p.aggregates)!=null?f:[],selectIdentifier:bt,selectDisplayName:At})}else l=await Oe({directory:n,selectIdentifier:bt,selectDisplayName:At});let d=ti({client:a});await me({source:l,target:d,mode:i,whatIf:r,log:ge({diffMode:s})})}};b();import yd from"isomorphic-unfetch";var Ws={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an aggregate",builder:e=>H(k(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new De({apiKey:t,apiHost:e,fetch:yd,projectId:i}).remove({aggregateId:n})}};b();import bd from"isomorphic-unfetch";var Hs={command:"update <filename>",aliases:["put"],describe:"Insert or update an aggregate",builder:e=>H(k(e.positional("filename",{demandOption:!0,describe:"Aggregate file to put"}))),handler:async({apiHost:e,apiKey:t,filename:n,project:i})=>{let r=new De({apiKey:t,apiHost:e,fetch:bd,projectId:i}),o=yt(n);await r.upsert({aggregate:o})}};var ks={command:"aggregate <command>",aliases:["agg","intent","audience"],describe:"Commands for Context aggregates (intents, audiences)",builder:e=>e.command(Us).command($s).command(Ts).command(Ws).command(Rs).command(Hs).demandCommand(),handler:()=>{ke.help()}};b();b();import Ad from"isomorphic-unfetch";var Ys={command:"get <id>",describe:"Fetch an enrichment category and its values",builder:e=>we(H(k(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{var l,u;let a=(u=(l=await new Ve({apiKey:t,apiHost:e,fetch:Ad,projectId:r}).get())==null?void 0:l.enrichments)==null?void 0:u.filter(d=>d.id===n);a.length===0?(console.error("Enrichment did not exist"),process.exit(1)):he(a[0],i,o)}};b();import wd from"isomorphic-unfetch";var Bs={command:"list",describe:"List enrichments",aliases:["ls"],builder:e=>we(H(k(e))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r})=>{let s=await new Ve({apiKey:t,apiHost:e,fetch:wd,projectId:r}).get();he(s.enrichments,n,i)}};b();import xd from"isomorphic-unfetch";b();var xt=e=>e.id,Ct=e=>`${e.name} (pid: ${e.id})`;b();function ni({client:e}){async function*t(){let n=(await e.get()).enrichments;for await(let i of n)yield{id:xt(i),displayName:Ct(i),providerId:i.id,object:i}}return{objects:t(),deleteObject:async n=>{await e.removeCategory({enrichmentId:n})},writeObject:async(n,i)=>{var s,a;await e.upsertCategory({enrichment:n.object});let r=qs({categoryId:n.id,values:n.object.values}),o=qs({categoryId:n.id,values:(a=(s=i==null?void 0:i.object)==null?void 0:s.values)!=null?a:[],client:e});await me({source:r,target:o,mode:"mirror",whatIf:!1,log:ge({diffMode:"off",prefix:` ${n.displayName} value`,indent:"> "})})}}}var qs=({client:e,categoryId:t,values:n})=>({objects:async function*(){for(let r of n)yield{id:r.id,providerId:r.id,object:r,displayName:`${r.value} (pid: ${r.id})`}}(),deleteObject:async r=>{if(!e)throw new Error("Provider is read only");await e.removeValue({enrichmentId:t,enrichmentValueId:r})},writeObject:async r=>{if(!e)throw new Error("Provider is read only");await e.upsertValue({enrichmentId:t,enrichmentValue:r.object})}});var Gs={command:"pull <directory>",describe:"Pulls all enrichments to local files in a directory",builder:e=>H(k(xe(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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new Ve({apiKey:t,apiHost:e,fetch:xd,projectId:s,limitPolicy:ve}),u=ni({client:l}),d;if(Ce(n)){let g=_e(n,!1);d=await Ae({objects:(p=g.enrichments)!=null?p:[],selectIdentifier:xt,selectDisplayName:Ct,onSyncComplete:async(C,w)=>{g.enrichments=w,wt(n,g)}})}else d=await Oe({directory:n,selectIdentifier:xt,selectDisplayName:Ct,format:i});await me({source:u,target:d,mode:r,whatIf:o,log:ge({diffMode:a})})}};b();import Cd from"isomorphic-unfetch";var zs={command:"push <directory>",describe:"Pushes all enrichments from files in a directory or package to Uniform",builder:e=>H(k(xe(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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new Ve({apiKey:t,apiHost:e,fetch:Cd,projectId:o,limitPolicy:ve}),l;if(Ce(n)){let p=_e(n,!0);l=await Ae({objects:(f=p.enrichments)!=null?f:[],selectIdentifier:xt,selectDisplayName:Ct})}else l=await Oe({directory:n,selectIdentifier:xt,selectDisplayName:Ct});let d=ni({client:a});await me({source:l,target:d,mode:i,whatIf:r,log:ge({diffMode:s})})}};b();import Od from"isomorphic-unfetch";var Vs={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an enrichment category and its values",builder:e=>H(k(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new Ve({apiKey:t,apiHost:e,fetch:Od,projectId:i}).removeCategory({enrichmentId:n})}};var Ks={command:"enrichment <command>",aliases:["enr"],describe:"Commands for Context enrichments",builder:e=>e.command(Gs).command(zs).command(Ys).command(Vs).command(Bs).demandCommand(),handler:()=>{ke.help()}};b();b();import ii from"chalk";import{writeFile as _d}from"fs";import vd from"isomorphic-unfetch";import{exit as nr}from"process";var Qs={command:"get [output]",aliases:["dl","download"],describe:"Download the Uniform Context manifest for a project",builder:e=>{var t,n,i;return e.option("apiKey",{alias:"k",demandOption:!0,string:!0,default:(t=process.env.UNIFORM_API_KEY)!=null?t:"",describe:"Uniform API key to use. Defaults to UNIFORM_API_KEY env if set."}).option("project",{describe:"Uniform project ID. Defaults to UCTX_CLI_PROJECT_ID or UNIFORM_PROJECT_ID env. Supports dotenv.",demandOption:!0,default:(i=(n=process.env.UCTX_CLI_PROJECT_ID)!=null?n:process.env.UNIFORM_PROJECT_ID)!=null?i:"",type:"string",alias:["p"]}).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."})},handler:async({apiKey:e,output:t,project:n,preview:i})=>{n||(console.error(ii.red("You must specify the project ID")),nr(1));let r=Ed(),o=new rr({apiHost:r,projectId:n,apiKey:e,fetch:vd});try{let s=await o.get({preview:i}),a=JSON.stringify(s,null,2);t?_d(t,a,l=>{l&&(console.error(`Error writing file to ${t}
|
97
|
+
`+a.map(d=>d.added?cn.green(d.value):d.removed?cn.red(d.value):d.value).join("")),console.log(`${n!=null?n:""}${s?cn.gray("[WHATIF]"):""}${l}${i!=null?i:""} ${o}${u}`)}}var Ts={command:"get <id>",describe:"Fetch an aggregate",builder:e=>we(H(k(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{let a=await new De({apiKey:t,apiHost:e,fetch:dd,projectId:r}).get({aggregateId:n});a.aggregates.length===0?(console.error("Aggregate did not exist"),process.exit(1)):he(a.aggregates[0],i,o)}};b();import pd from"isomorphic-unfetch";var Rs={command:"list",describe:"List aggregates",aliases:["ls"],builder:e=>we(H(k(e))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r})=>{let s=await new De({apiKey:t,apiHost:e,fetch:pd,projectId:r}).get({});he(s.aggregates,n,i)}};b();import md from"isomorphic-unfetch";b();var bt=e=>e.id,At=e=>`${e.name} (pid: ${e.id})`;b();function _e(e,t){return Ls(e,t)}function wt(e,t){Ds(e,t)}b();import hd from"p-limit";var ve=hd(8);b();function ti({client:e,type:t}){async function*n(){let r=(await e.get({type:t})).aggregates;for await(let o of r)yield{id:bt(o),displayName:At(o),providerId:o.id,object:o}}let i=[];return{objects:n(),deleteObject:async r=>{await e.remove({aggregateId:r})},writeObject:async r=>{await e.upsert({aggregate:r.object,skipInputs:!0}),i.push(r.object)},complete:async()=>{await Promise.all(i.map(r=>e.upsert({aggregate:r,skipInputs:!1})))}}}var Us={command:"pull <directory>",describe:"Pulls all aggregates to local files in a directory",builder:e=>H(k(xe(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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new De({apiKey:t,apiHost:e,fetch:md,projectId:s,limitPolicy:ve}),u=ti({client:l}),d;if(Ce(n)){let g=_e(n,!1);d=await Ae({objects:(p=g.aggregates)!=null?p:[],selectIdentifier:bt,selectDisplayName:At,onSyncComplete:async(C,w)=>{g.aggregates=w,wt(n,g)}})}else d=await Oe({directory:n,selectIdentifier:bt,selectDisplayName:At,format:i});await me({source:u,target:d,mode:r,whatIf:o,log:ge({diffMode:a})})}};b();import gd from"isomorphic-unfetch";var $s={command:"push <directory>",describe:"Pushes all aggregates from files in a directory or package to Uniform",builder:e=>H(k(xe(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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new De({apiKey:t,apiHost:e,fetch:gd,projectId:o,limitPolicy:ve}),l;if(Ce(n)){let p=_e(n,!0);l=await Ae({objects:(f=p.aggregates)!=null?f:[],selectIdentifier:bt,selectDisplayName:At})}else l=await Oe({directory:n,selectIdentifier:bt,selectDisplayName:At});let d=ti({client:a});await me({source:l,target:d,mode:i,whatIf:r,log:ge({diffMode:s})}),await d.complete()}};b();import yd from"isomorphic-unfetch";var Ws={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an aggregate",builder:e=>H(k(e.positional("id",{demandOption:!0,describe:"Aggregate public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new De({apiKey:t,apiHost:e,fetch:yd,projectId:i}).remove({aggregateId:n})}};b();import bd from"isomorphic-unfetch";var Hs={command:"update <filename>",aliases:["put"],describe:"Insert or update an aggregate",builder:e=>H(k(e.positional("filename",{demandOption:!0,describe:"Aggregate file to put"}))),handler:async({apiHost:e,apiKey:t,filename:n,project:i})=>{let r=new De({apiKey:t,apiHost:e,fetch:bd,projectId:i}),o=yt(n);await r.upsert({aggregate:o})}};var ks={command:"aggregate <command>",aliases:["agg","intent","audience"],describe:"Commands for Context aggregates (intents, audiences)",builder:e=>e.command(Us).command($s).command(Ts).command(Ws).command(Rs).command(Hs).demandCommand(),handler:()=>{ke.help()}};b();b();import Ad from"isomorphic-unfetch";var Ys={command:"get <id>",describe:"Fetch an enrichment category and its values",builder:e=>we(H(k(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{var l,u;let a=(u=(l=await new Ve({apiKey:t,apiHost:e,fetch:Ad,projectId:r}).get())==null?void 0:l.enrichments)==null?void 0:u.filter(d=>d.id===n);a.length===0?(console.error("Enrichment did not exist"),process.exit(1)):he(a[0],i,o)}};b();import wd from"isomorphic-unfetch";var Bs={command:"list",describe:"List enrichments",aliases:["ls"],builder:e=>we(H(k(e))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r})=>{let s=await new Ve({apiKey:t,apiHost:e,fetch:wd,projectId:r}).get();he(s.enrichments,n,i)}};b();import xd from"isomorphic-unfetch";b();var xt=e=>e.id,Ct=e=>`${e.name} (pid: ${e.id})`;b();function ni({client:e}){async function*t(){let n=(await e.get()).enrichments;for await(let i of n)yield{id:xt(i),displayName:Ct(i),providerId:i.id,object:i}}return{objects:t(),deleteObject:async n=>{await e.removeCategory({enrichmentId:n})},writeObject:async(n,i)=>{var s,a;await e.upsertCategory({enrichment:n.object});let r=qs({categoryId:n.id,values:n.object.values}),o=qs({categoryId:n.id,values:(a=(s=i==null?void 0:i.object)==null?void 0:s.values)!=null?a:[],client:e});await me({source:r,target:o,mode:"mirror",whatIf:!1,log:ge({diffMode:"off",prefix:` ${n.displayName} value`,indent:"> "})})}}}var qs=({client:e,categoryId:t,values:n})=>({objects:async function*(){for(let r of n)yield{id:r.id,providerId:r.id,object:r,displayName:`${r.value} (pid: ${r.id})`}}(),deleteObject:async r=>{if(!e)throw new Error("Provider is read only");await e.removeValue({enrichmentId:t,enrichmentValueId:r})},writeObject:async r=>{if(!e)throw new Error("Provider is read only");await e.upsertValue({enrichmentId:t,enrichmentValue:r.object})}});var Gs={command:"pull <directory>",describe:"Pulls all enrichments to local files in a directory",builder:e=>H(k(xe(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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new Ve({apiKey:t,apiHost:e,fetch:xd,projectId:s,limitPolicy:ve}),u=ni({client:l}),d;if(Ce(n)){let g=_e(n,!1);d=await Ae({objects:(p=g.enrichments)!=null?p:[],selectIdentifier:xt,selectDisplayName:Ct,onSyncComplete:async(C,w)=>{g.enrichments=w,wt(n,g)}})}else d=await Oe({directory:n,selectIdentifier:xt,selectDisplayName:Ct,format:i});await me({source:u,target:d,mode:r,whatIf:o,log:ge({diffMode:a})})}};b();import Cd from"isomorphic-unfetch";var zs={command:"push <directory>",describe:"Pushes all enrichments from files in a directory or package to Uniform",builder:e=>H(k(xe(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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new Ve({apiKey:t,apiHost:e,fetch:Cd,projectId:o,limitPolicy:ve}),l;if(Ce(n)){let p=_e(n,!0);l=await Ae({objects:(f=p.enrichments)!=null?f:[],selectIdentifier:xt,selectDisplayName:Ct})}else l=await Oe({directory:n,selectIdentifier:xt,selectDisplayName:Ct});let d=ni({client:a});await me({source:l,target:d,mode:i,whatIf:r,log:ge({diffMode:s})})}};b();import Od from"isomorphic-unfetch";var Vs={command:"remove <id>",aliases:["delete","rm"],describe:"Delete an enrichment category and its values",builder:e=>H(k(e.positional("id",{demandOption:!0,describe:"Enrichment category public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new Ve({apiKey:t,apiHost:e,fetch:Od,projectId:i}).removeCategory({enrichmentId:n})}};var Ks={command:"enrichment <command>",aliases:["enr"],describe:"Commands for Context enrichments",builder:e=>e.command(Gs).command(zs).command(Ys).command(Vs).command(Bs).demandCommand(),handler:()=>{ke.help()}};b();b();import ii from"chalk";import{writeFile as _d}from"fs";import vd from"isomorphic-unfetch";import{exit as nr}from"process";var Qs={command:"get [output]",aliases:["dl","download"],describe:"Download the Uniform Context manifest for a project",builder:e=>{var t,n,i;return e.option("apiKey",{alias:"k",demandOption:!0,string:!0,default:(t=process.env.UNIFORM_API_KEY)!=null?t:"",describe:"Uniform API key to use. Defaults to UNIFORM_API_KEY env if set."}).option("project",{describe:"Uniform project ID. Defaults to UCTX_CLI_PROJECT_ID or UNIFORM_PROJECT_ID env. Supports dotenv.",demandOption:!0,default:(i=(n=process.env.UCTX_CLI_PROJECT_ID)!=null?n:process.env.UNIFORM_PROJECT_ID)!=null?i:"",type:"string",alias:["p"]}).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."})},handler:async({apiKey:e,output:t,project:n,preview:i})=>{n||(console.error(ii.red("You must specify the project ID")),nr(1));let r=Ed(),o=new rr({apiHost:r,projectId:n,apiKey:e,fetch:vd});try{let s=await o.get({preview:i}),a=JSON.stringify(s,null,2);t?_d(t,a,l=>{l&&(console.error(`Error writing file to ${t}
|
98
98
|
`,l),nr(1)),console.log(ii.green(`\u2705 ${t} has been updated from ${r}`))}):console.log(a)}catch(s){let a;s instanceof ir?(s.statusCode===403&&(a=`The API key ${e} did not have permissions to fetch the manifest. Ensure ${i?"Context > Read Drafts":"Context > Manifest > Read"} permissions are granted.`),a=s.message):a=s.toString(),console.error(ii.red("\u26A0 Error fetching Context manifest")),console.error(ii.gray(` \u2757 ${a}`)),nr(1)}}},Ed=()=>process.env.UNIFORM_CLI_BASE_URL||"https://uniform.app";var Js={command:"manifest <command>",describe:"Commands for context manifests",aliases:["man"],builder:e=>e.command(Qs).demandCommand(),handler:()=>{ke.help()}};b();b();import Sd from"isomorphic-unfetch";var Zs={command:"get <id>",describe:"Fetch a quirk",builder:e=>we(H(k(e.positional("id",{demandOption:!0,describe:"Quirk public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{let a=await new Ne({apiKey:t,apiHost:e,fetch:Sd,projectId:r}).get({quirkId:n,withIntegrations:!0});a.quirks.length===0?(console.error("Quirk did not exist"),process.exit(1)):he(a.quirks[0],i,o)}};b();import Id from"isomorphic-unfetch";var Xs={command:"list",describe:"List quirks",aliases:["ls"],builder:e=>we(H(k(e.option("withIntegrations",{alias:["i"],describe:"Whether to include meta-quirks created by integrations in the list. Defaults to false.",type:"boolean"})))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r,withIntegrations:o})=>{let a=await new Ne({apiKey:t,apiHost:e,fetch:Id,projectId:r}).get({withIntegrations:o});he(a.quirks,n,i)}};b();import jd from"isomorphic-unfetch";b();var Ot=e=>e.id,_t=e=>`${e.name} (pid: ${e.id})`;b();function ri({client:e}){async function*t(){let n=(await e.get({withIntegrations:!1})).quirks;for await(let i of n)yield{id:Ot(i),displayName:_t(i),providerId:i.id,object:i}}return{objects:t(),deleteObject:async n=>{await e.remove({quirkId:n})},writeObject:async n=>{await e.upsert({quirk:n.object})}}}var ea={command:"pull <directory>",describe:"Pulls all quirks to local files in a directory",builder:e=>H(k(xe(e.positional("directory",{describe:"Directory to save the quirks 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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new Ne({apiKey:t,apiHost:e,fetch:jd,projectId:s,limitPolicy:ve}),u=ri({client:l}),d;if(Ce(n)){let g=_e(n,!1);d=await Ae({objects:(p=g.quirks)!=null?p:[],selectIdentifier:Ot,selectDisplayName:_t,onSyncComplete:async(C,w)=>{g.quirks=w,wt(n,g)}})}else d=await Oe({directory:n,selectIdentifier:Ot,selectDisplayName:_t,format:i});await me({source:u,target:d,mode:r,whatIf:o,log:ge({diffMode:a})})}};b();import Pd from"isomorphic-unfetch";var ta={command:"push <directory>",describe:"Pushes all quirks from files in a directory or package to Uniform",builder:e=>H(k(xe(e.positional("directory",{describe:"Directory to read the quirks 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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new Ne({apiKey:t,apiHost:e,fetch:Pd,projectId:o,limitPolicy:ve}),l;if(Ce(n)){let p=_e(n,!0);l=await Ae({objects:(f=p.quirks)!=null?f:[],selectIdentifier:Ot,selectDisplayName:_t})}else l=await Oe({directory:n,selectIdentifier:Ot,selectDisplayName:_t});let d=ri({client:a});await me({source:l,target:d,mode:i,whatIf:r,log:ge({diffMode:s})})}};b();import Md from"isomorphic-unfetch";var na={command:"remove <id>",aliases:["delete","rm"],describe:"Delete a quirk",builder:e=>H(k(e.positional("id",{demandOption:!0,describe:"Quirk public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new Ne({apiKey:t,apiHost:e,fetch:Md,projectId:i}).remove({quirkId:n})}};b();import Fd from"isomorphic-unfetch";var ia={command:"update <filename>",aliases:["put"],describe:"Insert or update a quirk",builder:e=>H(k(e.positional("filename",{demandOption:!0,describe:"Quirk file to put"}))),handler:async({apiHost:e,apiKey:t,filename:n,project:i})=>{let r=new Ne({apiKey:t,apiHost:e,fetch:Fd,projectId:i}),o=yt(n);await r.upsert({quirk:o})}};var ra={command:"quirk <command>",aliases:["qk"],describe:"Commands for Context quirks",builder:e=>e.command(ea).command(ta).command(Zs).command(na).command(Xs).command(ia).demandCommand(),handler:()=>{ke.help()}};b();b();import Ld from"isomorphic-unfetch";var oa={command:"get <id>",describe:"Fetch a signal",builder:e=>we(H(k(e.positional("id",{demandOption:!0,describe:"Signal public ID to fetch"})))),handler:async({apiHost:e,apiKey:t,id:n,format:i,project:r,filename:o})=>{let a=await new Te({apiKey:t,apiHost:e,fetch:Ld,projectId:r}).get({signalId:n});a.signals.length===0?(console.error("Signal did not exist"),process.exit(1)):he(a.signals[0],i,o)}};b();import Dd from"isomorphic-unfetch";var sa={command:"list",describe:"List signals",aliases:["ls"],builder:e=>we(H(k(e))),handler:async({apiHost:e,apiKey:t,format:n,filename:i,project:r})=>{let s=await new Te({apiKey:t,apiHost:e,fetch:Dd,projectId:r}).get();he(s.signals,n,i)}};b();import Nd from"isomorphic-unfetch";b();var vt=e=>e.id,Et=e=>`${e.name} (pid: ${e.id})`;b();function oi({client:e}){async function*t(){let n=(await e.get()).signals;for await(let i of n)yield{id:vt(i),displayName:Et(i),providerId:i.id,object:i}}return{objects:t(),deleteObject:async n=>{await e.remove({signalId:n})},writeObject:async n=>{await e.upsert({signal:n.object})}}}var aa={command:"pull <directory>",describe:"Pulls all signals to local files in a directory",builder:e=>H(k(xe(e.positional("directory",{describe:"Directory to save the signals 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:t,directory:n,format:i,mode:r,whatIf:o,project:s,diff:a})=>{var p;let l=new Te({apiKey:t,apiHost:e,fetch:Nd,projectId:s,limitPolicy:ve}),u=oi({client:l}),d;if(Ce(n)){let g=_e(n,!1);d=await Ae({objects:(p=g.signals)!=null?p:[],selectIdentifier:vt,selectDisplayName:Et,onSyncComplete:async(C,w)=>{g.signals=w,wt(n,g)}})}else d=await Oe({directory:n,selectIdentifier:vt,selectDisplayName:Et,format:i});await me({source:u,target:d,mode:r,whatIf:o,log:ge({diffMode:a})})}};b();import Td from"isomorphic-unfetch";var la={command:"push <directory>",describe:"Pushes all signals from files in a directory or package to Uniform",builder:e=>H(k(xe(e.positional("directory",{describe:"Directory to read the signals 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:t,directory:n,mode:i,whatIf:r,project:o,diff:s})=>{var f;let a=new Te({apiKey:t,apiHost:e,fetch:Td,projectId:o,limitPolicy:ve}),l;if(Ce(n)){let p=_e(n,!0);l=await Ae({objects:(f=p.signals)!=null?f:[],selectIdentifier:vt,selectDisplayName:Et})}else l=await Oe({directory:n,selectIdentifier:vt,selectDisplayName:Et});let d=oi({client:a});await me({source:l,target:d,mode:i,whatIf:r,log:ge({diffMode:s})})}};b();import Rd from"isomorphic-unfetch";var ca={command:"remove <id>",aliases:["delete","rm"],describe:"Delete a signal",builder:e=>H(k(e.positional("id",{demandOption:!0,describe:"Signal public ID to delete"}))),handler:async({apiHost:e,apiKey:t,id:n,project:i})=>{await new Te({apiKey:t,apiHost:e,fetch:Rd,projectId:i}).remove({signalId:n})}};b();import Ud from"isomorphic-unfetch";var fa={command:"update <filename>",aliases:["put"],describe:"Insert or update a signal",builder:e=>H(k(e.positional("filename",{demandOption:!0,describe:"Signal file to put"}))),handler:async({apiHost:e,apiKey:t,filename:n,project:i})=>{let r=new Te({apiKey:t,apiHost:e,fetch:Ud,projectId:i}),o=yt(n);await r.upsert({signal:o})}};var ua={command:"signal <command>",aliases:["sig"],describe:"Commands for Context signals",builder:e=>e.command(aa).command(la).command(oa).command(ca).command(sa).command(fa).demandCommand(),handler:()=>{ke.help()}};var qb={commands:[{command:"context <command>",aliases:["ctx"],describe:"Uniform Context commands",builder:e=>e.command(Js).command(ua).command(Ks).command(ks).command(ra).demandCommand(),handler:()=>{ke.showHelp()}}]};export{qb as uniformCLI};
|
99
99
|
/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */
|
100
100
|
/**
|