croct 0.1.0-alpha6 → 0.1.0-alpha7
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/index.js +144 -133
- package/package.json +1 -2
package/index.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {createRequire}from'module';import {createReadStream,realpathSync}from'fs';import {ApiKey}from'@croct/sdk/apiKey';import {InMemoryCache,AutoSaveCache,AdaptedCache,NoopCache}from'@croct/cache';import
|
|
3
|
-
var $c=Object.create;var xa=Object.defineProperty;var zc=Object.getOwnPropertyDescriptor;var _c=Object.getOwnPropertyNames;var Lc=Object.getPrototypeOf,Fc=Object.prototype.hasOwnProperty;var jc=(o=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(o,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):o)(function(o){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});var be=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),Wc=(o,e)=>{for(var t in e)xa(o,t,{get:e[t],enumerable:true});},Vc=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of _c(e))!Fc.call(o,r)&&r!==t&&xa(o,r,{get:()=>e[r],enumerable:!(n=zc(e,r))||n.enumerable});return o};var ft=(o,e,t)=>(t=o!=null?$c(Lc(o)):{},Vc(xa(t,"default",{value:o,enumerable:true}),o));var ps=be((ue,ss)=>{var ke=jc("commander");ue=ss.exports={};ue.program=new ke.Command;ue.Argument=ke.Argument;ue.Command=ke.Command;ue.CommanderError=ke.CommanderError;ue.Help=ke.Help;ue.InvalidArgumentError=ke.InvalidArgumentError;ue.InvalidOptionArgumentError=ke.InvalidArgumentError;ue.Option=ke.Option;ue.createCommand=o=>new ke.Command(o);ue.createOption=(o,e)=>new ke.Option(o,e);ue.createArgument=(o,e)=>new ke.Argument(o,e);});var va=be($n=>{Object.defineProperty($n,"__esModule",{value:true});$n.TimeZone=void 0;var qt=class o{constructor(e){this.id=e;}static getTimesZoneIds(){return o.SUPPORTED_TIMEZONE_IDS===void 0&&(o.SUPPORTED_TIMEZONE_IDS=new Set(["UTC","CET","CST6CDT","EET","EST","EST5EDT","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","HST","MET","MST","MST7MDT","PST8PDT","WET",...Intl.supportedValuesOf("timeZone")])),o.SUPPORTED_TIMEZONE_IDS}static of(e){if(!o.getTimesZoneIds().has(e))throw new Error(`The timezone ${e} is not supported.`);return new o(e)}getId(){return this.id}toString(){return this.id}equals(e){return this.id===e.id}toJSON(){return this.toString()}};$n.TimeZone=qt;qt.UTC=new qt("UTC");});var Pa=be(zn=>{var wa;Object.defineProperty(zn,"__esModule",{value:true});zn.SystemClock=void 0;var Uc=Gt(),qc=va(),Ht=class{constructor(e){this.zone=e;}static of(e){return new this(e)}getZone(){return this.zone}getInstant(){return Uc.Instant.ofEpochMilli(Date.now())}equals(e){return e===this||e instanceof wa&&e.zone.equals(this.zone)}};zn.SystemClock=Ht;wa=Ht;Ht.UTC=new wa(qc.TimeZone.UTC);});var Ca=be(_n=>{Object.defineProperty(_n,"__esModule",{value:true});_n.DefaultClockProvider=void 0;var Hc=Pa(),ms;(function(o){let e=null;function t(){return e===null&&(e=Hc.SystemClock.UTC),e}o.getClock=t;function n(r){e=r;}o.setClock=n;})(ms||(_n.DefaultClockProvider=ms={}));});var Kt=be(pe=>{Object.defineProperty(pe,"__esModule",{value:true});pe.intDiv=pe.multiplyExact=pe.subtractExact=pe.addExact=pe.floorMod=pe.floorDiv=void 0;function ds(o,e){let t=Math.trunc(o/e);return Math.sign(o)!==Math.sign(e)&&t*e!==o&&t--,t}pe.floorDiv=ds;function Gc(o,e){return o-ds(o,e)*e}pe.floorMod=Gc;function Kc(o,e){let t=o+e;if(!Number.isSafeInteger(t))throw new Error("The result overflows the range of safe integers.");return t}pe.addExact=Kc;function Zc(o,e){let t=o-e;if(!Number.isSafeInteger(t))throw new Error("The result overflows the range of safe integers.");return t}pe.subtractExact=Zc;function Jc(o,e){let t=o*e;if(!Number.isSafeInteger(t))throw new Error("The result overflows the range of safe integers.");return t}pe.multiplyExact=Jc;function Qc(o,e){let t=Math.trunc(o/e);if(!Number.isSafeInteger(t))throw new Error("The result overflows the range of safe integers.");return t}pe.intDiv=Qc;});var Fn=be(Ln=>{Object.defineProperty(Ln,"__esModule",{value:true});Ln.LocalDate=void 0;var V=Kt(),ce=class o{constructor(e,t,n){this.year=e,this.month=t,this.day=n;}static of(e,t,n){if(!Number.isSafeInteger(e)||e<o.MIN_YEAR||e>o.MAX_YEAR)throw new Error(`Year must be a safe integer between ${o.MIN_YEAR} and ${o.MAX_YEAR}.`);if(!Number.isInteger(t)||t<1||t>12)throw new Error("Month must be an integer between 1 and 12.");let r=o.getMonthLength(t,o.isLeapYear(e));if(!Number.isInteger(n)||n<1||n>r)throw new Error(`Day must be an integer between 1 and ${r}.`);return new o(e,t,n)}static ofEpochDay(e){if(e<o.MIN_EPOCH_DAY||e>o.MAX_EPOCH_DAY)throw new Error(`The day ${e} is out of the range [${o.MIN_EPOCH_DAY} - ${o.MAX_EPOCH_DAY}].`);let t=(0, V.addExact)(e,719468),n=(0, V.floorDiv)(t,146097),r=(0, V.floorMod)(t,146097),i=(0, V.intDiv)(r,1460);i-=(0, V.intDiv)(r,36524),i+=(0, V.intDiv)(r,146096);let a=(0, V.intDiv)(r-i,365),s=a+n*400,p=365*a+(0, V.intDiv)(a,4)-(0, V.intDiv)(a,100),c=r-p,l=(0, V.intDiv)(c*5+2,153);s+=(0, V.intDiv)(l,10);let m=c-(0, V.intDiv)(l*306+5,10)+1;return l=(l+2)%12+1,o.of(s,l,m)}static fromNative(e){return o.of(e.getFullYear(),e.getMonth()+1,e.getDate())}static parse(e){let{groups:t}=e.match(o.PATTERN)??{};if(t===void 0)throw new Error(`Invalid ISO-8601 date string: ${e}`);let n=Number.parseInt(t.year,10),r=Number.parseInt(t.month,10),i=Number.parseInt(t.day,10);return o.of(n,r,i)}getYear(){return this.year}getMonth(){return this.month}getDay(){return this.day}equals(e){return this===e?true:this.year===e.year&&this.month===e.month&&this.day===e.day}plusYears(e){if(e===0)return this;let t=(0, V.addExact)(this.year,e);return o.resolvePreviousValid(t,this.month,this.day)}minusYears(e){return this.plusYears(-e)}plusMonths(e){if(e===0)return this;let t=this.year+(0, V.intDiv)(e,12),n=this.month+e%12,r=t+(0, V.floorDiv)(n-1,12),i=(0, V.floorMod)(n-1,12)+1;return o.resolvePreviousValid(r,i,this.day)}minusMonths(e){return this.plusMonths(-e)}plusWeeks(e){return e===0?this:this.plusDays((0, V.multiplyExact)(e,7))}minusWeeks(e){return this.plusWeeks(-e)}plusDays(e){if(e===0)return this;let t=this.day+e;if(t>0){if(t<=28)return o.of(this.year,this.month,t);if(t<=59){let n=o.getMonthLength(this.month,o.isLeapYear(this.year));return t<=n?o.of(this.year,this.month,t):this.month<12?o.of(this.year,this.month+1,t-n):o.of(this.year+1,1,t-n)}}return o.ofEpochDay((0, V.addExact)(this.toEpochDay(),e))}minusDays(e){return this.plusDays(-e)}isAfter(e){return this.compare(e)>0}isAfterOrEqual(e){return this.compare(e)>=0}isBefore(e){return this.compare(e)<0}isBeforeOrEqual(e){return this.compare(e)<=0}static isValid(e){try{o.parse(e);}catch{return false}return true}compare(e){return this.year!==e.year?this.year-e.year:this.month!==e.month?this.month-e.month:this.day-e.day}toEpochDay(){let{year:e}=this;this.month<=2&&e--;let t=(0, V.floorDiv)(e,400),n=(this.month+9)%12,r=(0, V.intDiv)(153*n+2,5)+this.day-1,i=e-t*400;return 365*i+(0, V.intDiv)(i,4)-(0, V.intDiv)(i,100)+r+t*146097-719468}toString(){let e=`${this.month}`.padStart(2,"0"),t=`${this.day}`.padStart(2,"0");return `${this.year}-${e}-${t}`}static resolvePreviousValid(e,t,n){let r=o.getMonthLength(t,o.isLeapYear(e));return o.of(e,t,Math.min(n,r))}static isLeapYear(e){return e%4===0&&(e%100!==0||e%400===0)}static getMonthLength(e,t){switch(e){case 2:return t?29:28;case 4:case 6:case 9:case 11:return 30;default:return 31}}toJSON(){return this.toString()}};Ln.LocalDate=ce;ce.PATTERN=/^(?<year>[+-]?\d{4,19})-(?<month>\d{2})-(?<day>\d{2})$/;ce.MIN_EPOCH_DAY=-365961662;ce.MAX_EPOCH_DAY=364522971;ce.MIN_YEAR=-999999;ce.MAX_YEAR=999999;ce.MIN=new ce(ce.MIN_YEAR,1,1);ce.MAX=new ce(ce.MAX_YEAR,12,31);});var Wn=be(jn=>{Object.defineProperty(jn,"__esModule",{value:true});jn.LocalTime=void 0;var De=Kt(),H=class o{constructor(e,t,n,r){this.hour=e,this.minute=t,this.second=n,this.nanos=r;}static of(e,t=0,n=0,r=0){if(!Number.isInteger(e)||e<0||e>23)throw new Error("Hour must be an integer between 0 and 23.");if(!Number.isInteger(t)||t<0||t>59)throw new Error("Minute must be an integer between 0 and 59.");if(!Number.isInteger(n)||n<0||n>59)throw new Error("Second must be an integer between 0 and 59.");if(!Number.isInteger(r)||r<0||r>999999999)throw new Error("Nanosecond of second must be an integer between 0 and 999999999.");return new o(e,t,n,r)}static ofSecondOfDay(e,t=0){if(e<0||e>o.SECONDS_PER_DAY-1)throw new Error(`The second value ${e} is out of the range [0 - ${o.SECONDS_PER_DAY-1}] of local time.`);if(t<0||t>o.NANOS_PER_SECOND-1)throw new Error(`The nanosecond value ${t} is out of the range [0 - ${o.NANOS_PER_SECOND-1}] of local time.`);let n=e,r=(0, De.intDiv)(n,o.SECONDS_PER_HOUR);n-=r*o.SECONDS_PER_HOUR;let i=(0, De.intDiv)(n,o.SECONDS_PER_MINUTE);return n-=i*o.SECONDS_PER_MINUTE,o.of(r,i,n,t)}static fromNative(e){return new o(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()*o.NANOS_PER_MILLI)}static startOfDay(){return new o(0,0,0,0)}static endOfDay(){return new o(23,59,59,999999999)}static parse(e){let{groups:t}=e.match(o.PATTERN)??{};if(t===void 0)throw new Error(`Invalid ISO-8601 time string: ${e}`);let n=Number.parseInt(t.hour,10),r=Number.parseInt(t.minute,10),i=Number.parseInt(t.second??"0",10),a=Number.parseInt(t.fraction?.padEnd(9,"0")??"0",10);return o.of(n,r,i,a)}getHour(){return this.hour}getMinute(){return this.minute}getSecond(){return this.second}getNano(){return this.nanos}toMinuteOfDay(){return this.hour*o.MINUTES_PER_HOUR+this.minute}toSecondOfDay(){return this.toMinuteOfDay()*o.SECONDS_PER_MINUTE+this.second}toMilliOfDay(){return (0, De.intDiv)(this.toNanoOfDay(),o.NANOS_PER_MILLI)}toMicroOfDay(){return (0, De.intDiv)(this.toNanoOfDay(),o.NANOS_PER_MICRO)}toNanoOfDay(){return this.toSecondOfDay()*o.NANOS_PER_SECOND+this.nanos}plusHours(e){if(e===0)return this;let n=(e%o.HOURS_PER_DAY+this.hour+o.HOURS_PER_DAY)%o.HOURS_PER_DAY;return new o(n,this.minute,this.second,this.nanos)}minusHours(e){return this.plusHours(-e)}plusMinutes(e){if(e===0)return this;let t=e%o.MINUTES_PER_DAY,n=this.toMinuteOfDay(),r=(t+n+o.MINUTES_PER_DAY)%o.MINUTES_PER_DAY;if(n===r)return this;let i=(0, De.intDiv)(r,o.MINUTES_PER_HOUR),a=r%o.MINUTES_PER_HOUR;return new o(i,a,this.second,this.nanos)}minusMinutes(e){return this.plusMinutes(-e)}plusSeconds(e){if(e===0)return this;let t=e%o.SECONDS_PER_DAY,n=this.toSecondOfDay(),r=(t+n+o.SECONDS_PER_DAY)%o.SECONDS_PER_DAY;if(n===r)return this;let i=(0, De.intDiv)(r,o.SECONDS_PER_HOUR),a=(0, De.intDiv)(r,o.SECONDS_PER_MINUTE)%o.MINUTES_PER_HOUR,s=r%o.SECONDS_PER_MINUTE;return o.of(i,a,s,this.nanos)}minusSeconds(e){return this.plusSeconds(-e)}plusMillis(e){return e===0?this:this.plusNanos(e%o.MILLIS_PER_DAY*o.NANOS_PER_MILLI)}minusMillis(e){return this.plusMillis(-e)}plusMicros(e){return e===0?this:this.plusNanos(e%o.MICROS_PER_DAY*o.NANOS_PER_MICRO)}minusMicros(e){return this.plusMicros(-e)}plusNanos(e){if(e===0)return this;let t=e%o.NANOS_PER_DAY,n=this.toNanoOfDay(),r=(t+n+o.NANOS_PER_DAY)%o.NANOS_PER_DAY;if(n===r)return this;let i=(0, De.intDiv)(r,o.NANOS_PER_HOUR),a=(0, De.intDiv)(r,o.NANOS_PER_MINUTE)%o.MINUTES_PER_HOUR,s=(0, De.intDiv)(r,o.NANOS_PER_SECOND)%o.SECONDS_PER_MINUTE,p=r%o.NANOS_PER_SECOND;return o.of(i,a,s,p)}minusNanos(e){return this.plusNanos(-e)}equals(e){return this===e?true:this.hour===e.hour&&this.minute===e.minute&&this.second===e.second&&this.nanos===e.nanos}isAfter(e){return this.compare(e)>0}isAfterOrEqual(e){return this.compare(e)>=0}isBefore(e){return this.compare(e)<0}isBeforeOrEqual(e){return this.compare(e)<=0}static isValid(e){try{o.parse(e);}catch{return false}return true}compare(e){return this.hour!==e.hour?this.hour-e.hour:this.minute!==e.minute?this.minute-e.minute:this.second!==e.second?this.second-e.second:this.nanos-e.nanos}toString(){let e=`${this.hour}`.padStart(2,"0"),t=`${this.minute}`.padStart(2,"0"),n=`${e}:${t}`;if(this.second===0&&this.nanos===0)return n;let r=`${this.second}`.padStart(2,"0");if(n+=`:${r}`,this.nanos>0){let i=`${this.nanos}`.padStart(9,"0").replace(/0+$/,""),a=Math.floor((i.length+2)/3)*3;n+=`.${i.padEnd(a,"0")}`;}return n}toJSON(){return this.toString()}};jn.LocalTime=H;H.PATTERN=/^(?<hour>\d{2}):(?<minute>\d{2})(?::(?<second>\d{2})(?:.(?<fraction>\d{1,9}))?)?$/;H.HOURS_PER_DAY=24;H.MINUTES_PER_DAY=1440;H.MINUTES_PER_HOUR=60;H.SECONDS_PER_DAY=86400;H.SECONDS_PER_HOUR=3600;H.SECONDS_PER_MINUTE=60;H.MICROS_PER_DAY=864e8;H.MICROS_PER_SECOND=1e6;H.MILLIS_PER_DAY=864e5;H.MILLIS_PER_SECOND=1e3;H.NANOS_PER_DAY=864e11;H.NANOS_PER_HOUR=36e11;H.NANOS_PER_MINUTE=6e10;H.NANOS_PER_SECOND=1e9;H.NANOS_PER_MILLI=1e6;H.NANOS_PER_MICRO=1e3;});var Aa=be(Un=>{Object.defineProperty(Un,"__esModule",{value:true});Un.LocalDateTime=void 0;var gs=Ca(),Bc=Gt(),Vn=Fn(),k=Wn(),G=Kt(),ka=class o{constructor(e,t){this.date=e,this.time=t;}static nowIn(e,t=gs.DefaultClockProvider.getClock()){return o.ofInstant(t.getInstant(),e)}static now(e=gs.DefaultClockProvider.getClock()){return o.ofInstant(e.getInstant(),e.getZone())}static ofInstant(e,t){return o.fromZonedDate(e.toDate(),t)}static fromZonedDate(e,t){let i=e.toLocaleString("sv-SE",{timeZone:t.getId(),calendar:e.getUTCFullYear()<200?"gregory":"iso8601",hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3}).match(/(?<year>\d{1,4})-(?<month>\d{2})-(?<day>\d{2}) (?<hour>\d{2}):(?<minute>\d{2}):(?<second>\d{2}),(?<fraction>\d{3})/)?.groups;return o.of(Vn.LocalDate.of(Number.parseInt(i.year,10),Number.parseInt(i.month,10),Number.parseInt(i.day,10)),k.LocalTime.of(Number.parseInt(i.hour,10),Number.parseInt(i.minute,10),Number.parseInt(i.second,10),Number.parseInt(i.fraction.padEnd(9,"0"),10)))}static ofEpochSecond(e,t=0){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t))throw new Error("The timestamp must be a safe integer.");let n=(0, G.floorDiv)(e,k.LocalTime.SECONDS_PER_DAY),r=(0, G.floorMod)(e,k.LocalTime.SECONDS_PER_DAY),i=Vn.LocalDate.ofEpochDay(n),a=k.LocalTime.ofSecondOfDay(r,t);return o.of(i,a)}static fromNative(e){return o.of(Vn.LocalDate.fromNative(e),k.LocalTime.fromNative(e))}static of(e,t){return new o(e,t??k.LocalTime.startOfDay())}static parse(e){let t=e.split("T");if(t.length!==2)throw new Error(`Malformed local date-time "${e}".`);return o.of(Vn.LocalDate.parse(t[0]),k.LocalTime.parse(t[1]))}getLocalDate(){return this.date}getLocalTime(){return this.time}getDay(){return this.date.getDay()}getMonth(){return this.date.getMonth()}getYear(){return this.date.getYear()}getHour(){return this.time.getHour()}getMinute(){return this.time.getMinute()}getSecond(){return this.time.getSecond()}getNano(){return this.time.getNano()}plusYears(e){return o.of(this.date.plusYears(e),this.time)}minusYears(e){return this.plusYears(-e)}plusMonths(e){return o.of(this.date.plusMonths(e),this.time)}minusMonths(e){return this.plusMonths(-e)}plusWeeks(e){return o.of(this.date.plusWeeks(e),this.time)}minusWeeks(e){return this.plusWeeks(-e)}plusDays(e){return o.of(this.date.plusDays(e),this.time)}minusDays(e){return this.plusDays(-e)}plusHours(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.HOURS_PER_DAY),n=e%k.LocalTime.HOURS_PER_DAY,r=n*k.LocalTime.NANOS_PER_HOUR+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusHours(n))}minusHours(e){return this.plusHours(-e)}plusMinutes(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.MINUTES_PER_DAY),n=e%k.LocalTime.MINUTES_PER_DAY,r=n*k.LocalTime.NANOS_PER_MINUTE+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusMinutes(n))}minusMinutes(e){return this.plusMinutes(-e)}plusSeconds(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.SECONDS_PER_DAY),n=e%k.LocalTime.SECONDS_PER_DAY,r=n*k.LocalTime.NANOS_PER_SECOND+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusSeconds(n))}minusSeconds(e){return this.plusSeconds(-e)}plusMillis(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.MILLIS_PER_DAY),n=e%k.LocalTime.MILLIS_PER_DAY,r=n*k.LocalTime.NANOS_PER_MILLI+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusMillis(n))}minusMillis(e){return this.plusMillis(-e)}plusMicros(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.MICROS_PER_DAY),n=e%k.LocalTime.MICROS_PER_DAY,r=n*k.LocalTime.NANOS_PER_MICRO+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusMicros(n))}minusMicros(e){return this.plusMicros(-e)}plusNanos(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.NANOS_PER_DAY),n=e%k.LocalTime.NANOS_PER_DAY,r=n+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusNanos(n))}minusNanos(e){return this.plusNanos(-e)}equals(e){return this===e?true:this.date.equals(e.date)&&this.time.equals(e.time)}isAfter(e){return this.compare(e)>0}isAfterOrEqual(e){return this.compare(e)>=0}isBefore(e){return this.compare(e)<0}isBeforeOrEqual(e){return this.compare(e)<=0}static isValid(e){try{o.parse(e);}catch{return false}return true}compare(e){let t=this.date.compare(e.date);return t!==0?t:this.time.compare(e.time)}toInstant(e){let t=this.date.toEpochDay(),n=(0, G.multiplyExact)(t,k.LocalTime.SECONDS_PER_DAY),r=(0, G.subtractExact)((0, G.addExact)(n,this.time.toSecondOfDay()),14*k.LocalTime.SECONDS_PER_HOUR),i=(0, G.addExact)(r,26*k.LocalTime.SECONDS_PER_HOUR),a=o.of(this.date,k.LocalTime.of(this.time.getHour(),this.time.getMinute(),this.time.getSecond())),s=new Date(r*k.LocalTime.MILLIS_PER_SECOND),p=o.fromZonedDate(s,e),c=Math.min(o.getTimeZoneMultiple(s,e.getId()),o.getTimeZoneMultiple(new Date(i*k.LocalTime.MILLIS_PER_SECOND),e.getId()));for(;!p.equals(a)&&(s.setTime((0, G.addExact)(s.getTime(),c*k.LocalTime.MILLIS_PER_SECOND)),p=o.fromZonedDate(s,e),!p.isAfter(a)););let l=(0, G.intDiv)(s.getTime(),k.LocalTime.MILLIS_PER_SECOND),m=this.time.getNano();return Bc.Instant.ofEpochSecond(l,m)}static getTimeZoneMultiple(e,t){let n=Math.abs(o.getTimeZoneOffset(e,t));return n%k.LocalTime.SECONDS_PER_HOUR===0?k.LocalTime.SECONDS_PER_HOUR:n%(k.LocalTime.SECONDS_PER_HOUR/2)===0?k.LocalTime.SECONDS_PER_HOUR/2:k.LocalTime.SECONDS_PER_HOUR/4}static getTimeZoneOffset(e,t){let r=new Intl.DateTimeFormat("sv-SE",{timeZone:t,calendar:"iso8601",timeZoneName:"short"}).format(e).match(/GMT([+-]\d+)(?::(\d+))?/),i=Number.parseInt(r?.[1]??"0",10),a=Number.parseInt(r?.[2]??"0",10);return i*k.LocalTime.SECONDS_PER_HOUR+a*k.LocalTime.SECONDS_PER_MINUTE}toString(){return `${this.date.toString()}T${this.time.toString()}`}toJSON(){return this.toString()}};Un.LocalDateTime=ka;});var Gt=be(qn=>{Object.defineProperty(qn,"__esModule",{value:true});qn.Instant=void 0;var Yc=Ca(),Xc=Fn(),el=Aa(),F=Wn(),z=Kt(),le=class o{constructor(e,t){this.nanos=0,this.seconds=e,this.nanos=t;}static now(e=Yc.DefaultClockProvider.getClock()){return e.getInstant()}static fromDate(e){return o.ofEpochMilli(e.getTime())}static ofEpochMilli(e){if(!Number.isSafeInteger(e))throw new Error("The timestamp must be a safe integer.");let t=(0, z.floorDiv)(e,F.LocalTime.MILLIS_PER_SECOND),r=(0, z.floorMod)(e,F.LocalTime.MILLIS_PER_SECOND)*F.LocalTime.NANOS_PER_MILLI;return o.ofEpochSecond(t,r)}static ofEpochSecond(e,t=0){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t))throw new Error("The timestamp must be a safe integer.");if(e===0&&t===0)return o.EPOCH;if(e<o.MIN_SECOND||e>o.MAX_SECOND)throw new Error(`The value ${e} is out of the range [${o.MIN_SECOND} - ${o.MAX_SECOND}] of instant.`);let n=e,r=t;return t!==0&&(n=(0, z.addExact)(n,(0, z.floorDiv)(t,F.LocalTime.NANOS_PER_SECOND)),r=(0, z.floorMod)(t,F.LocalTime.NANOS_PER_SECOND)),new o(n,r)}static parse(e){let n=e.match(o.PATTERN)?.groups;if(n==null)throw new Error(`Unrecognized UTC ISO-8601 date-time string "${e}".`);let r=Xc.LocalDate.of(Number.parseInt(n.year,10),Number.parseInt(n.month,10),Number.parseInt(n.day,10)).toEpochDay(),i=F.LocalTime.of(Number.parseInt(n.hour,10),Number.parseInt(n.minute??"0",10),Number.parseInt(n.second??"0",10),Number.parseInt(n.fraction?.padEnd(9,"0")??"0",10)).toNanoOfDay();return o.ofEpochSecond((0, z.multiplyExact)(r,F.LocalTime.SECONDS_PER_DAY),i)}static compareAscending(e,t){return e.compare(t)}static compareDescending(e,t){return t.compare(e)}getSeconds(){return this.seconds}getNano(){return this.nanos}toEpochMillis(){if(this.seconds<0&&this.nanos>0){let n=(0, z.multiplyExact)(this.seconds+1,F.LocalTime.MILLIS_PER_SECOND),r=(0, z.intDiv)(this.nanos,F.LocalTime.NANOS_PER_MILLI)-F.LocalTime.MILLIS_PER_SECOND;return (0, z.addExact)(n,r)}let e=(0, z.multiplyExact)(this.seconds,F.LocalTime.MILLIS_PER_SECOND),t=(0, z.intDiv)(this.nanos,F.LocalTime.NANOS_PER_MILLI);return (0, z.addExact)(e,t)}toDate(){return new Date(this.toEpochMillis())}toString(){let e=this.seconds%12622780800,t=el.LocalDateTime.ofEpochSecond(e,this.nanos),n=t.getYear()+(0, z.intDiv)(this.seconds,146097*86400)*400,r="";n<0?r="-":n>9999&&(r="+");let a=r+Math.abs(n).toString().padStart(4,"0")+t.toString().slice(4);return t.getSecond()===0&&t.getNano()===0&&(a+=":00"),a+="Z",a}toJSON(){return this.toString()}equals(e){return this.seconds===e.seconds&&this.nanos===e.nanos}plusDays(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_DAY);return this.plusSeconds(t)}minusDays(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_DAY);return this.minusSeconds(t)}plusHours(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_HOUR);return this.plusSeconds(t)}minusHours(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_HOUR);return this.minusSeconds(t)}plusMinutes(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_MINUTE);return this.plusSeconds(t)}minusMinutes(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_MINUTE);return this.minusSeconds(t)}plusSeconds(e){return e===0?this:o.ofEpochSecond((0, z.addExact)(this.seconds,e),this.nanos)}minusSeconds(e){return e===0?this:o.ofEpochSecond((0, z.subtractExact)(this.seconds,e),this.nanos)}plusMillis(e){if(e===0)return this;let t=(0, z.intDiv)(e,F.LocalTime.MILLIS_PER_SECOND),n=(0, z.addExact)(this.seconds,t),r=e%F.LocalTime.MILLIS_PER_SECOND,i=this.nanos+r*F.LocalTime.NANOS_PER_MILLI;return o.ofEpochSecond(n,i)}minusMillis(e){return this.plusMillis(-e)}plusMicros(e){if(e===0)return this;let t=(0, z.intDiv)(e,F.LocalTime.MICROS_PER_SECOND),n=(0, z.addExact)(this.seconds,t),r=e%F.LocalTime.MICROS_PER_SECOND,i=this.nanos+r*F.LocalTime.NANOS_PER_MICRO;return o.ofEpochSecond(n,i)}minusMicros(e){return this.plusMicros(-e)}plusNanos(e){if(e===0)return this;let t=(0, z.intDiv)(e,F.LocalTime.NANOS_PER_SECOND),n=(0, z.addExact)(this.seconds,t),r=e%F.LocalTime.NANOS_PER_SECOND,i=this.nanos+r;return o.ofEpochSecond(n,i)}minusNanos(e){return this.plusNanos(-e)}isAfter(e){return this.compare(e)>0}isAfterOrEqual(e){return this.compare(e)>=0}isBefore(e){return this.compare(e)<0}static isValid(e){try{o.parse(e);}catch{return false}return true}isBeforeOrEqual(e){return this.compare(e)<=0}compare(e){return this.seconds!==e.seconds?this.seconds-e.seconds:this.nanos-e.nanos}};qn.Instant=le;le.EPOCH=new le(0,0);le.MIN_SECOND=-31619087596800;le.MIN=new le(le.MIN_SECOND,0);le.MAX_SECOND=31494784780799;le.MAX=new le(le.MAX_SECOND,999999999);le.PATTERN=/^(?<year>[+-]?\d{4,19})-(?<month>\d{2})-(?<day>\d{2})T(?<hour>\d{2})(?::(?<minute>\d{2})(:(?<second>\d{2})(?:.(?<fraction>\d{1,9}))?)?)?Z$/;});var ys=be(Hn=>{Object.defineProperty(Hn,"__esModule",{value:true});Hn.Weekday=void 0;var fs;(function(o){o.SUNDAY="SUNDAY",o.MONDAY="MONDAY",o.TUESDAY="TUESDAY",o.WEDNESDAY="WEDNESDAY",o.THURSDAY="THURSDAY",o.FRIDAY="FRIDAY",o.SATURDAY="SATURDAY";})(fs||(Hn.Weekday=fs={}));});var hs=be(Gn=>{Object.defineProperty(Gn,"__esModule",{value:true});Gn.TimeInterval=void 0;var yt=Gt(),Ea=class o{constructor(e,t){this.start=e,this.end=t;}static all(){return new o(yt.Instant.MIN,yt.Instant.MAX)}static between(e,t){if(t.isBefore(e))throw new Error("The end instant must be equal or after start instant.");return new o(e,t)}static parse(e){let t=e.split("/");if(t.length!==2||t[0]===""||t[1]==="")throw new Error(`Malformed time interval "${e}".`);return o.between(yt.Instant.parse(t[0]),yt.Instant.parse(t[1]))}static startingAt(e){return o.all().withStart(e)}static endingAt(e){return o.all().withEnd(e)}withStart(e){return o.between(e,this.end)}withEnd(e){return o.between(this.start,e)}getStart(){return this.start}getEnd(){return this.end}isEmpty(){return this.start.equals(this.end)}isUnboundedStart(){return this.start.equals(yt.Instant.MIN)}isUnboundedEnd(){return this.end.equals(yt.Instant.MAX)}encloses(e){return this.start.isBeforeOrEqual(e.start)&&this.end.isAfterOrEqual(e.end)}abuts(e){return this.start.equals(e.end)||this.end.equals(e.start)}isConnected(e){return this.equals(e)||this.start.isBeforeOrEqual(e.end)&&this.end.isAfterOrEqual(e.start)}overlaps(e){return this.equals(e)||this.start.isBefore(e.end)&&this.end.isAfter(e.start)}intersection(e){if(!this.isConnected(e))throw new Error("The intervals are not connected.");return this.start.isAfterOrEqual(e.start)&&this.end.isBefore(e.end)?this:e.start.isAfterOrEqual(this.start)&&e.end.isBeforeOrEqual(this.end)?e:o.between(this.start.isAfterOrEqual(e.start)?this.start:e.start,this.end.isBeforeOrEqual(e.end)?this.end:e.end)}union(e){if(!this.isConnected(e))throw new Error("The intervals are not connected.");return this.start.isAfterOrEqual(e.start)&&this.end.isBefore(e.end)?e:e.start.isAfterOrEqual(this.start)&&e.end.isBeforeOrEqual(this.end)?this:o.between(this.start.isAfterOrEqual(e.start)?e.start:this.start,this.end.isBeforeOrEqual(e.end)?e.end:this.end)}span(e){return o.between(this.start.isAfterOrEqual(e.start)?e.start:this.start,this.end.isBeforeOrEqual(e.end)?e.end:this.end)}isAfter(e){return this.start.isAfterOrEqual(e.end)&&!this.equals(e)}isBefore(e){return this.end.isBeforeOrEqual(e.start)&&!this.equals(e)}static isValid(e){try{o.parse(e);}catch{return false}return true}startsBefore(e){return this.start.isBefore(e)}startsAtOrBefore(e){return this.start.isBeforeOrEqual(e)}startsAfter(e){return this.start.isAfter(e)}startsAtOrAfter(e){return this.start.isAfterOrEqual(e)}endsBefore(e){return this.end.isBefore(e)}endsAtOrBefore(e){return this.end.isBeforeOrEqual(e)}endsAfter(e){return this.end.isAfter(e)}endsAtOrAfter(e){return this.end.isAfterOrEqual(e)}contains(e){return this.start.isBeforeOrEqual(e)&&this.end.isAfter(e)}equals(e){return e instanceof o&&this.start.equals(e.start)&&this.end.equals(e.end)}toString(){return `${this.start.toString()}/${this.end.toString()}`}toJSON(){return this.toString()}};Gn.TimeInterval=Ea;});var Zt=be(X=>{Object.defineProperty(X,"__esModule",{value:true});X.TimeInterval=X.TimeZone=X.LocalDateTime=X.LocalTime=X.LocalDate=X.Weekday=X.Instant=void 0;var tl=Gt();Object.defineProperty(X,"Instant",{enumerable:true,get:function(){return tl.Instant}});var nl=ys();Object.defineProperty(X,"Weekday",{enumerable:true,get:function(){return nl.Weekday}});var rl=Fn();Object.defineProperty(X,"LocalDate",{enumerable:true,get:function(){return rl.LocalDate}});var il=Wn();Object.defineProperty(X,"LocalTime",{enumerable:true,get:function(){return il.LocalTime}});var ol=Aa();Object.defineProperty(X,"LocalDateTime",{enumerable:true,get:function(){return ol.LocalDateTime}});var al=va();Object.defineProperty(X,"TimeZone",{enumerable:true,get:function(){return al.TimeZone}});var sl=hs();Object.defineProperty(X,"TimeInterval",{enumerable:true,get:function(){return sl.TimeInterval}});});var cs=ft(ps()),{program:ld,createCommand:ud,createArgument:md,createOption:dd,CommanderError:gd,InvalidArgumentError:Fe,InvalidOptionArgumentError:fd,Command:ls,Argument:us,Option:oe,Help:yd}=cs.default;var gt=ft(Zt()),Dc=ft(Pa());var Kn=class{constructor(e){this.configuration=e;}prompt(e){return this.interact({type:e.type==="password"?"invisible":"text",message:e.message,initial:e.default,validate:e.validate})}select(e){let t=e.default!==void 0?e.options.findIndex(n=>n.value===e.default):-1;return this.interact({type:e.options.length>10?"autocomplete":"select",instructions:false,message:e.message,choices:e.options.map(n=>({title:n.label,value:n.value,disabled:n.disabled})),initial:t===-1?void 0:t})}selectMultiple(e){return this.interact({type:e.options.length>10?"autocompleteMultiselect":"multiselect",hint:"<space> to select. <a> to toggle all. <enter> to submit.",message:e.message,instructions:false,min:e.min,max:e.max,choices:e.options.map(t=>({title:t.label,value:t.value,disabled:t.disabled,selected:t.selected}))})}confirm(e){return this.interact({type:"confirm",message:e.message,initial:e.default??false})}wait(e){let t={enter:"[enter]",space:"[space]"},n={[t.enter]:"",[t.space]:" "},r=`Press <${e.key}> to continue`,i=e.key!==void 0?n[e.key]??e.key:void 0,a=false;return this.interact({type:"invisible",message:e.message,validate:s=>i===void 0||s===i?true:r,onState:function(p){if(!a){if(p.value===""){this.error&&e.key!==t.enter&&this.bell();return}i===void 0||p.value===i?(a=true,this.submit()):(this.bell(),this.reset(),i!==void 0&&(this.error=true,this.errorMsg=r));}}})}async interact(e,t){this.configuration.onInteractionStart?.();let{output:n,onAbort:r}=this.configuration,i={name:"value",...e,stdin:this.configuration.input,stdout:this.configuration.output,onState:function(s){e.onState?.apply(this,[s]),s.aborted&&(n.write("\x1B[?25h"),n.write(`
|
|
4
|
-
`),r());}};try{return await
|
|
2
|
+
import {createRequire}from'module';import {createReadStream,realpathSync}from'fs';import {ApiKey}from'@croct/sdk/apiKey';import {InMemoryCache,AutoSaveCache,AdaptedCache,NoopCache}from'@croct/cache';import Tc from'open';import {homedir}from'os';import ed from'xdg-app-paths';import td from'ci-info';import {FilteredLogger,LogLevel}from'@croct/logging';import sl from'prompts';import {Readable,PassThrough}from'stream';import Ea from'cli-cursor';import nt from'chalk';import hs from'node:readline';import {WriteStream}from'tty';import pl from'is-unicode-supported';import {render}from'@croct/md-lite/rendering.js';import ll from'terminal-link';import {unescape}from'@croct/md-lite/parsing.js';import {strip}from'node-emoji';import {JsonParser,JsonObjectNode,JsonArrayNode}from'@croct/json5-parser/index.js';import {JsonObjectNode as JsonObjectNode$1,JsonParser as JsonParser$1,JsonArrayNode as JsonArrayNode$1,JsonPrimitiveNode,JsonIdentifierNode,JsonTokenNode,JsonTokenType,isIdentifier}from'@croct/json5-parser';import*as g from'@babel/types';import {traverseFast}from'@babel/types';import {traverse}from'@babel/core';import {parse as parse$1}from'@babel/parser';import {createHash,randomUUID}from'crypto';import*as hr from'recast';import {parse}from'recast/parsers/babel-ts.js';import {stringSimilarity}from'string-similarity-js';import {realpath,lstat,readdir,symlink,link,mkdir,writeFile,rm as rm$1,readFile,mkdtemp,cp as cp$1}from'fs/promises';import {tmpdir}from'node:os';import {sep,basename,dirname,relative,isAbsolute,join,delimiter}from'path';import {Minimatch,minimatch}from'minimatch';import {deepEqual}from'fast-equals';import Jl from'tar-stream';import Ql from'gunzip-maybe';import {z,ZodPromise,ZodOptional,ZodTuple,ZodArray,ZodRecord,ZodObject,ZodEffects,ZodAny,ZodPipeline,ZodUnion,ZodDiscriminatedUnion}from'zod';import Ue from'jsep';import iu from'@jsep-plugin/object';import ou from'@jsep-plugin/spread';import sc from'is-plain-obj';import Cm from'strip-ansi';import vc from'semver';import {spawn,spawnSync}from'child_process';import Dm from'ignore';import Fm from'clipboardy';import {Token}from'@croct/sdk/token';import Ac from'boxen';import _e from'node:process';import {AsyncLocalStorage}from'node:async_hooks';const require = createRequire(import.meta.url);
|
|
3
|
+
var Nc=Object.create;var Ia=Object.defineProperty;var $c=Object.getOwnPropertyDescriptor;var zc=Object.getOwnPropertyNames;var _c=Object.getPrototypeOf,Lc=Object.prototype.hasOwnProperty;var Fc=(o=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(o,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):o)(function(o){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});var Ie=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),jc=(o,e)=>{for(var t in e)Ia(o,t,{get:e[t],enumerable:true});},Wc=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of zc(e))!Lc.call(o,r)&&r!==t&&Ia(o,r,{get:()=>e[r],enumerable:!(n=$c(e,r))||n.enumerable});return o};var ft=(o,e,t)=>(t=o!=null?Nc(_c(o)):{},Wc(Ia(t,"default",{value:o,enumerable:true}),o));var ss=Ie((me,as)=>{var Ae=Fc("commander");me=as.exports={};me.program=new Ae.Command;me.Argument=Ae.Argument;me.Command=Ae.Command;me.CommanderError=Ae.CommanderError;me.Help=Ae.Help;me.InvalidArgumentError=Ae.InvalidArgumentError;me.InvalidOptionArgumentError=Ae.InvalidArgumentError;me.Option=Ae.Option;me.createCommand=o=>new Ae.Command(o);me.createOption=(o,e)=>new Ae.Option(o,e);me.createArgument=(o,e)=>new Ae.Argument(o,e);});var xa=Ie(Nn=>{Object.defineProperty(Nn,"__esModule",{value:true});Nn.TimeZone=void 0;var Ut=class o{constructor(e){this.id=e;}static getTimesZoneIds(){return o.SUPPORTED_TIMEZONE_IDS===void 0&&(o.SUPPORTED_TIMEZONE_IDS=new Set(["UTC","CET","CST6CDT","EET","EST","EST5EDT","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","HST","MET","MST","MST7MDT","PST8PDT","WET",...Intl.supportedValuesOf("timeZone")])),o.SUPPORTED_TIMEZONE_IDS}static of(e){if(!o.getTimesZoneIds().has(e))throw new Error(`The timezone ${e} is not supported.`);return new o(e)}getId(){return this.id}toString(){return this.id}equals(e){return this.id===e.id}toJSON(){return this.toString()}};Nn.TimeZone=Ut;Ut.UTC=new Ut("UTC");});var wa=Ie($n=>{var va;Object.defineProperty($n,"__esModule",{value:true});$n.SystemClock=void 0;var Vc=Ht(),Uc=xa(),qt=class{constructor(e){this.zone=e;}static of(e){return new this(e)}getZone(){return this.zone}getInstant(){return Vc.Instant.ofEpochMilli(Date.now())}equals(e){return e===this||e instanceof va&&e.zone.equals(this.zone)}};$n.SystemClock=qt;va=qt;qt.UTC=new va(Uc.TimeZone.UTC);});var Ca=Ie(zn=>{Object.defineProperty(zn,"__esModule",{value:true});zn.DefaultClockProvider=void 0;var qc=wa(),us;(function(o){let e=null;function t(){return e===null&&(e=qc.SystemClock.UTC),e}o.getClock=t;function n(r){e=r;}o.setClock=n;})(us||(zn.DefaultClockProvider=us={}));});var Gt=Ie(ce=>{Object.defineProperty(ce,"__esModule",{value:true});ce.intDiv=ce.multiplyExact=ce.subtractExact=ce.addExact=ce.floorMod=ce.floorDiv=void 0;function ms(o,e){let t=Math.trunc(o/e);return Math.sign(o)!==Math.sign(e)&&t*e!==o&&t--,t}ce.floorDiv=ms;function Hc(o,e){return o-ms(o,e)*e}ce.floorMod=Hc;function Gc(o,e){let t=o+e;if(!Number.isSafeInteger(t))throw new Error("The result overflows the range of safe integers.");return t}ce.addExact=Gc;function Kc(o,e){let t=o-e;if(!Number.isSafeInteger(t))throw new Error("The result overflows the range of safe integers.");return t}ce.subtractExact=Kc;function Zc(o,e){let t=o*e;if(!Number.isSafeInteger(t))throw new Error("The result overflows the range of safe integers.");return t}ce.multiplyExact=Zc;function Jc(o,e){let t=Math.trunc(o/e);if(!Number.isSafeInteger(t))throw new Error("The result overflows the range of safe integers.");return t}ce.intDiv=Jc;});var Ln=Ie(_n=>{Object.defineProperty(_n,"__esModule",{value:true});_n.LocalDate=void 0;var V=Gt(),le=class o{constructor(e,t,n){this.year=e,this.month=t,this.day=n;}static of(e,t,n){if(!Number.isSafeInteger(e)||e<o.MIN_YEAR||e>o.MAX_YEAR)throw new Error(`Year must be a safe integer between ${o.MIN_YEAR} and ${o.MAX_YEAR}.`);if(!Number.isInteger(t)||t<1||t>12)throw new Error("Month must be an integer between 1 and 12.");let r=o.getMonthLength(t,o.isLeapYear(e));if(!Number.isInteger(n)||n<1||n>r)throw new Error(`Day must be an integer between 1 and ${r}.`);return new o(e,t,n)}static ofEpochDay(e){if(e<o.MIN_EPOCH_DAY||e>o.MAX_EPOCH_DAY)throw new Error(`The day ${e} is out of the range [${o.MIN_EPOCH_DAY} - ${o.MAX_EPOCH_DAY}].`);let t=(0, V.addExact)(e,719468),n=(0, V.floorDiv)(t,146097),r=(0, V.floorMod)(t,146097),i=(0, V.intDiv)(r,1460);i-=(0, V.intDiv)(r,36524),i+=(0, V.intDiv)(r,146096);let a=(0, V.intDiv)(r-i,365),s=a+n*400,p=365*a+(0, V.intDiv)(a,4)-(0, V.intDiv)(a,100),c=r-p,l=(0, V.intDiv)(c*5+2,153);s+=(0, V.intDiv)(l,10);let m=c-(0, V.intDiv)(l*306+5,10)+1;return l=(l+2)%12+1,o.of(s,l,m)}static fromNative(e){return o.of(e.getFullYear(),e.getMonth()+1,e.getDate())}static parse(e){let{groups:t}=e.match(o.PATTERN)??{};if(t===void 0)throw new Error(`Invalid ISO-8601 date string: ${e}`);let n=Number.parseInt(t.year,10),r=Number.parseInt(t.month,10),i=Number.parseInt(t.day,10);return o.of(n,r,i)}getYear(){return this.year}getMonth(){return this.month}getDay(){return this.day}equals(e){return this===e?true:this.year===e.year&&this.month===e.month&&this.day===e.day}plusYears(e){if(e===0)return this;let t=(0, V.addExact)(this.year,e);return o.resolvePreviousValid(t,this.month,this.day)}minusYears(e){return this.plusYears(-e)}plusMonths(e){if(e===0)return this;let t=this.year+(0, V.intDiv)(e,12),n=this.month+e%12,r=t+(0, V.floorDiv)(n-1,12),i=(0, V.floorMod)(n-1,12)+1;return o.resolvePreviousValid(r,i,this.day)}minusMonths(e){return this.plusMonths(-e)}plusWeeks(e){return e===0?this:this.plusDays((0, V.multiplyExact)(e,7))}minusWeeks(e){return this.plusWeeks(-e)}plusDays(e){if(e===0)return this;let t=this.day+e;if(t>0){if(t<=28)return o.of(this.year,this.month,t);if(t<=59){let n=o.getMonthLength(this.month,o.isLeapYear(this.year));return t<=n?o.of(this.year,this.month,t):this.month<12?o.of(this.year,this.month+1,t-n):o.of(this.year+1,1,t-n)}}return o.ofEpochDay((0, V.addExact)(this.toEpochDay(),e))}minusDays(e){return this.plusDays(-e)}isAfter(e){return this.compare(e)>0}isAfterOrEqual(e){return this.compare(e)>=0}isBefore(e){return this.compare(e)<0}isBeforeOrEqual(e){return this.compare(e)<=0}static isValid(e){try{o.parse(e);}catch{return false}return true}compare(e){return this.year!==e.year?this.year-e.year:this.month!==e.month?this.month-e.month:this.day-e.day}toEpochDay(){let{year:e}=this;this.month<=2&&e--;let t=(0, V.floorDiv)(e,400),n=(this.month+9)%12,r=(0, V.intDiv)(153*n+2,5)+this.day-1,i=e-t*400;return 365*i+(0, V.intDiv)(i,4)-(0, V.intDiv)(i,100)+r+t*146097-719468}toString(){let e=`${this.month}`.padStart(2,"0"),t=`${this.day}`.padStart(2,"0");return `${this.year}-${e}-${t}`}static resolvePreviousValid(e,t,n){let r=o.getMonthLength(t,o.isLeapYear(e));return o.of(e,t,Math.min(n,r))}static isLeapYear(e){return e%4===0&&(e%100!==0||e%400===0)}static getMonthLength(e,t){switch(e){case 2:return t?29:28;case 4:case 6:case 9:case 11:return 30;default:return 31}}toJSON(){return this.toString()}};_n.LocalDate=le;le.PATTERN=/^(?<year>[+-]?\d{4,19})-(?<month>\d{2})-(?<day>\d{2})$/;le.MIN_EPOCH_DAY=-365961662;le.MAX_EPOCH_DAY=364522971;le.MIN_YEAR=-999999;le.MAX_YEAR=999999;le.MIN=new le(le.MIN_YEAR,1,1);le.MAX=new le(le.MAX_YEAR,12,31);});var jn=Ie(Fn=>{Object.defineProperty(Fn,"__esModule",{value:true});Fn.LocalTime=void 0;var De=Gt(),H=class o{constructor(e,t,n,r){this.hour=e,this.minute=t,this.second=n,this.nanos=r;}static of(e,t=0,n=0,r=0){if(!Number.isInteger(e)||e<0||e>23)throw new Error("Hour must be an integer between 0 and 23.");if(!Number.isInteger(t)||t<0||t>59)throw new Error("Minute must be an integer between 0 and 59.");if(!Number.isInteger(n)||n<0||n>59)throw new Error("Second must be an integer between 0 and 59.");if(!Number.isInteger(r)||r<0||r>999999999)throw new Error("Nanosecond of second must be an integer between 0 and 999999999.");return new o(e,t,n,r)}static ofSecondOfDay(e,t=0){if(e<0||e>o.SECONDS_PER_DAY-1)throw new Error(`The second value ${e} is out of the range [0 - ${o.SECONDS_PER_DAY-1}] of local time.`);if(t<0||t>o.NANOS_PER_SECOND-1)throw new Error(`The nanosecond value ${t} is out of the range [0 - ${o.NANOS_PER_SECOND-1}] of local time.`);let n=e,r=(0, De.intDiv)(n,o.SECONDS_PER_HOUR);n-=r*o.SECONDS_PER_HOUR;let i=(0, De.intDiv)(n,o.SECONDS_PER_MINUTE);return n-=i*o.SECONDS_PER_MINUTE,o.of(r,i,n,t)}static fromNative(e){return new o(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()*o.NANOS_PER_MILLI)}static startOfDay(){return new o(0,0,0,0)}static endOfDay(){return new o(23,59,59,999999999)}static parse(e){let{groups:t}=e.match(o.PATTERN)??{};if(t===void 0)throw new Error(`Invalid ISO-8601 time string: ${e}`);let n=Number.parseInt(t.hour,10),r=Number.parseInt(t.minute,10),i=Number.parseInt(t.second??"0",10),a=Number.parseInt(t.fraction?.padEnd(9,"0")??"0",10);return o.of(n,r,i,a)}getHour(){return this.hour}getMinute(){return this.minute}getSecond(){return this.second}getNano(){return this.nanos}toMinuteOfDay(){return this.hour*o.MINUTES_PER_HOUR+this.minute}toSecondOfDay(){return this.toMinuteOfDay()*o.SECONDS_PER_MINUTE+this.second}toMilliOfDay(){return (0, De.intDiv)(this.toNanoOfDay(),o.NANOS_PER_MILLI)}toMicroOfDay(){return (0, De.intDiv)(this.toNanoOfDay(),o.NANOS_PER_MICRO)}toNanoOfDay(){return this.toSecondOfDay()*o.NANOS_PER_SECOND+this.nanos}plusHours(e){if(e===0)return this;let n=(e%o.HOURS_PER_DAY+this.hour+o.HOURS_PER_DAY)%o.HOURS_PER_DAY;return new o(n,this.minute,this.second,this.nanos)}minusHours(e){return this.plusHours(-e)}plusMinutes(e){if(e===0)return this;let t=e%o.MINUTES_PER_DAY,n=this.toMinuteOfDay(),r=(t+n+o.MINUTES_PER_DAY)%o.MINUTES_PER_DAY;if(n===r)return this;let i=(0, De.intDiv)(r,o.MINUTES_PER_HOUR),a=r%o.MINUTES_PER_HOUR;return new o(i,a,this.second,this.nanos)}minusMinutes(e){return this.plusMinutes(-e)}plusSeconds(e){if(e===0)return this;let t=e%o.SECONDS_PER_DAY,n=this.toSecondOfDay(),r=(t+n+o.SECONDS_PER_DAY)%o.SECONDS_PER_DAY;if(n===r)return this;let i=(0, De.intDiv)(r,o.SECONDS_PER_HOUR),a=(0, De.intDiv)(r,o.SECONDS_PER_MINUTE)%o.MINUTES_PER_HOUR,s=r%o.SECONDS_PER_MINUTE;return o.of(i,a,s,this.nanos)}minusSeconds(e){return this.plusSeconds(-e)}plusMillis(e){return e===0?this:this.plusNanos(e%o.MILLIS_PER_DAY*o.NANOS_PER_MILLI)}minusMillis(e){return this.plusMillis(-e)}plusMicros(e){return e===0?this:this.plusNanos(e%o.MICROS_PER_DAY*o.NANOS_PER_MICRO)}minusMicros(e){return this.plusMicros(-e)}plusNanos(e){if(e===0)return this;let t=e%o.NANOS_PER_DAY,n=this.toNanoOfDay(),r=(t+n+o.NANOS_PER_DAY)%o.NANOS_PER_DAY;if(n===r)return this;let i=(0, De.intDiv)(r,o.NANOS_PER_HOUR),a=(0, De.intDiv)(r,o.NANOS_PER_MINUTE)%o.MINUTES_PER_HOUR,s=(0, De.intDiv)(r,o.NANOS_PER_SECOND)%o.SECONDS_PER_MINUTE,p=r%o.NANOS_PER_SECOND;return o.of(i,a,s,p)}minusNanos(e){return this.plusNanos(-e)}equals(e){return this===e?true:this.hour===e.hour&&this.minute===e.minute&&this.second===e.second&&this.nanos===e.nanos}isAfter(e){return this.compare(e)>0}isAfterOrEqual(e){return this.compare(e)>=0}isBefore(e){return this.compare(e)<0}isBeforeOrEqual(e){return this.compare(e)<=0}static isValid(e){try{o.parse(e);}catch{return false}return true}compare(e){return this.hour!==e.hour?this.hour-e.hour:this.minute!==e.minute?this.minute-e.minute:this.second!==e.second?this.second-e.second:this.nanos-e.nanos}toString(){let e=`${this.hour}`.padStart(2,"0"),t=`${this.minute}`.padStart(2,"0"),n=`${e}:${t}`;if(this.second===0&&this.nanos===0)return n;let r=`${this.second}`.padStart(2,"0");if(n+=`:${r}`,this.nanos>0){let i=`${this.nanos}`.padStart(9,"0").replace(/0+$/,""),a=Math.floor((i.length+2)/3)*3;n+=`.${i.padEnd(a,"0")}`;}return n}toJSON(){return this.toString()}};Fn.LocalTime=H;H.PATTERN=/^(?<hour>\d{2}):(?<minute>\d{2})(?::(?<second>\d{2})(?:.(?<fraction>\d{1,9}))?)?$/;H.HOURS_PER_DAY=24;H.MINUTES_PER_DAY=1440;H.MINUTES_PER_HOUR=60;H.SECONDS_PER_DAY=86400;H.SECONDS_PER_HOUR=3600;H.SECONDS_PER_MINUTE=60;H.MICROS_PER_DAY=864e8;H.MICROS_PER_SECOND=1e6;H.MILLIS_PER_DAY=864e5;H.MILLIS_PER_SECOND=1e3;H.NANOS_PER_DAY=864e11;H.NANOS_PER_HOUR=36e11;H.NANOS_PER_MINUTE=6e10;H.NANOS_PER_SECOND=1e9;H.NANOS_PER_MILLI=1e6;H.NANOS_PER_MICRO=1e3;});var ka=Ie(Vn=>{Object.defineProperty(Vn,"__esModule",{value:true});Vn.LocalDateTime=void 0;var ds=Ca(),Qc=Ht(),Wn=Ln(),k=jn(),G=Gt(),Pa=class o{constructor(e,t){this.date=e,this.time=t;}static nowIn(e,t=ds.DefaultClockProvider.getClock()){return o.ofInstant(t.getInstant(),e)}static now(e=ds.DefaultClockProvider.getClock()){return o.ofInstant(e.getInstant(),e.getZone())}static ofInstant(e,t){return o.fromZonedDate(e.toDate(),t)}static fromZonedDate(e,t){let i=e.toLocaleString("sv-SE",{timeZone:t.getId(),calendar:e.getUTCFullYear()<200?"gregory":"iso8601",hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3}).match(/(?<year>\d{1,4})-(?<month>\d{2})-(?<day>\d{2}) (?<hour>\d{2}):(?<minute>\d{2}):(?<second>\d{2}),(?<fraction>\d{3})/)?.groups;return o.of(Wn.LocalDate.of(Number.parseInt(i.year,10),Number.parseInt(i.month,10),Number.parseInt(i.day,10)),k.LocalTime.of(Number.parseInt(i.hour,10),Number.parseInt(i.minute,10),Number.parseInt(i.second,10),Number.parseInt(i.fraction.padEnd(9,"0"),10)))}static ofEpochSecond(e,t=0){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t))throw new Error("The timestamp must be a safe integer.");let n=(0, G.floorDiv)(e,k.LocalTime.SECONDS_PER_DAY),r=(0, G.floorMod)(e,k.LocalTime.SECONDS_PER_DAY),i=Wn.LocalDate.ofEpochDay(n),a=k.LocalTime.ofSecondOfDay(r,t);return o.of(i,a)}static fromNative(e){return o.of(Wn.LocalDate.fromNative(e),k.LocalTime.fromNative(e))}static of(e,t){return new o(e,t??k.LocalTime.startOfDay())}static parse(e){let t=e.split("T");if(t.length!==2)throw new Error(`Malformed local date-time "${e}".`);return o.of(Wn.LocalDate.parse(t[0]),k.LocalTime.parse(t[1]))}getLocalDate(){return this.date}getLocalTime(){return this.time}getDay(){return this.date.getDay()}getMonth(){return this.date.getMonth()}getYear(){return this.date.getYear()}getHour(){return this.time.getHour()}getMinute(){return this.time.getMinute()}getSecond(){return this.time.getSecond()}getNano(){return this.time.getNano()}plusYears(e){return o.of(this.date.plusYears(e),this.time)}minusYears(e){return this.plusYears(-e)}plusMonths(e){return o.of(this.date.plusMonths(e),this.time)}minusMonths(e){return this.plusMonths(-e)}plusWeeks(e){return o.of(this.date.plusWeeks(e),this.time)}minusWeeks(e){return this.plusWeeks(-e)}plusDays(e){return o.of(this.date.plusDays(e),this.time)}minusDays(e){return this.plusDays(-e)}plusHours(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.HOURS_PER_DAY),n=e%k.LocalTime.HOURS_PER_DAY,r=n*k.LocalTime.NANOS_PER_HOUR+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusHours(n))}minusHours(e){return this.plusHours(-e)}plusMinutes(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.MINUTES_PER_DAY),n=e%k.LocalTime.MINUTES_PER_DAY,r=n*k.LocalTime.NANOS_PER_MINUTE+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusMinutes(n))}minusMinutes(e){return this.plusMinutes(-e)}plusSeconds(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.SECONDS_PER_DAY),n=e%k.LocalTime.SECONDS_PER_DAY,r=n*k.LocalTime.NANOS_PER_SECOND+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusSeconds(n))}minusSeconds(e){return this.plusSeconds(-e)}plusMillis(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.MILLIS_PER_DAY),n=e%k.LocalTime.MILLIS_PER_DAY,r=n*k.LocalTime.NANOS_PER_MILLI+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusMillis(n))}minusMillis(e){return this.plusMillis(-e)}plusMicros(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.MICROS_PER_DAY),n=e%k.LocalTime.MICROS_PER_DAY,r=n*k.LocalTime.NANOS_PER_MICRO+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusMicros(n))}minusMicros(e){return this.plusMicros(-e)}plusNanos(e){if(e===0)return this;let t=(0, G.intDiv)(e,k.LocalTime.NANOS_PER_DAY),n=e%k.LocalTime.NANOS_PER_DAY,r=n+this.time.toNanoOfDay(),i=t+(0, G.floorDiv)(r,k.LocalTime.NANOS_PER_DAY);return o.of(this.date.plusDays(i),this.time.plusNanos(n))}minusNanos(e){return this.plusNanos(-e)}equals(e){return this===e?true:this.date.equals(e.date)&&this.time.equals(e.time)}isAfter(e){return this.compare(e)>0}isAfterOrEqual(e){return this.compare(e)>=0}isBefore(e){return this.compare(e)<0}isBeforeOrEqual(e){return this.compare(e)<=0}static isValid(e){try{o.parse(e);}catch{return false}return true}compare(e){let t=this.date.compare(e.date);return t!==0?t:this.time.compare(e.time)}toInstant(e){let t=this.date.toEpochDay(),n=(0, G.multiplyExact)(t,k.LocalTime.SECONDS_PER_DAY),r=(0, G.subtractExact)((0, G.addExact)(n,this.time.toSecondOfDay()),14*k.LocalTime.SECONDS_PER_HOUR),i=(0, G.addExact)(r,26*k.LocalTime.SECONDS_PER_HOUR),a=o.of(this.date,k.LocalTime.of(this.time.getHour(),this.time.getMinute(),this.time.getSecond())),s=new Date(r*k.LocalTime.MILLIS_PER_SECOND),p=o.fromZonedDate(s,e),c=Math.min(o.getTimeZoneMultiple(s,e.getId()),o.getTimeZoneMultiple(new Date(i*k.LocalTime.MILLIS_PER_SECOND),e.getId()));for(;!p.equals(a)&&(s.setTime((0, G.addExact)(s.getTime(),c*k.LocalTime.MILLIS_PER_SECOND)),p=o.fromZonedDate(s,e),!p.isAfter(a)););let l=(0, G.intDiv)(s.getTime(),k.LocalTime.MILLIS_PER_SECOND),m=this.time.getNano();return Qc.Instant.ofEpochSecond(l,m)}static getTimeZoneMultiple(e,t){let n=Math.abs(o.getTimeZoneOffset(e,t));return n%k.LocalTime.SECONDS_PER_HOUR===0?k.LocalTime.SECONDS_PER_HOUR:n%(k.LocalTime.SECONDS_PER_HOUR/2)===0?k.LocalTime.SECONDS_PER_HOUR/2:k.LocalTime.SECONDS_PER_HOUR/4}static getTimeZoneOffset(e,t){let r=new Intl.DateTimeFormat("sv-SE",{timeZone:t,calendar:"iso8601",timeZoneName:"short"}).format(e).match(/GMT([+-]\d+)(?::(\d+))?/),i=Number.parseInt(r?.[1]??"0",10),a=Number.parseInt(r?.[2]??"0",10);return i*k.LocalTime.SECONDS_PER_HOUR+a*k.LocalTime.SECONDS_PER_MINUTE}toString(){return `${this.date.toString()}T${this.time.toString()}`}toJSON(){return this.toString()}};Vn.LocalDateTime=Pa;});var Ht=Ie(Un=>{Object.defineProperty(Un,"__esModule",{value:true});Un.Instant=void 0;var Bc=Ca(),Yc=Ln(),Xc=ka(),F=jn(),z=Gt(),ue=class o{constructor(e,t){this.nanos=0,this.seconds=e,this.nanos=t;}static now(e=Bc.DefaultClockProvider.getClock()){return e.getInstant()}static fromDate(e){return o.ofEpochMilli(e.getTime())}static ofEpochMilli(e){if(!Number.isSafeInteger(e))throw new Error("The timestamp must be a safe integer.");let t=(0, z.floorDiv)(e,F.LocalTime.MILLIS_PER_SECOND),r=(0, z.floorMod)(e,F.LocalTime.MILLIS_PER_SECOND)*F.LocalTime.NANOS_PER_MILLI;return o.ofEpochSecond(t,r)}static ofEpochSecond(e,t=0){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t))throw new Error("The timestamp must be a safe integer.");if(e===0&&t===0)return o.EPOCH;if(e<o.MIN_SECOND||e>o.MAX_SECOND)throw new Error(`The value ${e} is out of the range [${o.MIN_SECOND} - ${o.MAX_SECOND}] of instant.`);let n=e,r=t;return t!==0&&(n=(0, z.addExact)(n,(0, z.floorDiv)(t,F.LocalTime.NANOS_PER_SECOND)),r=(0, z.floorMod)(t,F.LocalTime.NANOS_PER_SECOND)),new o(n,r)}static parse(e){let n=e.match(o.PATTERN)?.groups;if(n==null)throw new Error(`Unrecognized UTC ISO-8601 date-time string "${e}".`);let r=Yc.LocalDate.of(Number.parseInt(n.year,10),Number.parseInt(n.month,10),Number.parseInt(n.day,10)).toEpochDay(),i=F.LocalTime.of(Number.parseInt(n.hour,10),Number.parseInt(n.minute??"0",10),Number.parseInt(n.second??"0",10),Number.parseInt(n.fraction?.padEnd(9,"0")??"0",10)).toNanoOfDay();return o.ofEpochSecond((0, z.multiplyExact)(r,F.LocalTime.SECONDS_PER_DAY),i)}static compareAscending(e,t){return e.compare(t)}static compareDescending(e,t){return t.compare(e)}getSeconds(){return this.seconds}getNano(){return this.nanos}toEpochMillis(){if(this.seconds<0&&this.nanos>0){let n=(0, z.multiplyExact)(this.seconds+1,F.LocalTime.MILLIS_PER_SECOND),r=(0, z.intDiv)(this.nanos,F.LocalTime.NANOS_PER_MILLI)-F.LocalTime.MILLIS_PER_SECOND;return (0, z.addExact)(n,r)}let e=(0, z.multiplyExact)(this.seconds,F.LocalTime.MILLIS_PER_SECOND),t=(0, z.intDiv)(this.nanos,F.LocalTime.NANOS_PER_MILLI);return (0, z.addExact)(e,t)}toDate(){return new Date(this.toEpochMillis())}toString(){let e=this.seconds%12622780800,t=Xc.LocalDateTime.ofEpochSecond(e,this.nanos),n=t.getYear()+(0, z.intDiv)(this.seconds,146097*86400)*400,r="";n<0?r="-":n>9999&&(r="+");let a=r+Math.abs(n).toString().padStart(4,"0")+t.toString().slice(4);return t.getSecond()===0&&t.getNano()===0&&(a+=":00"),a+="Z",a}toJSON(){return this.toString()}equals(e){return this.seconds===e.seconds&&this.nanos===e.nanos}plusDays(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_DAY);return this.plusSeconds(t)}minusDays(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_DAY);return this.minusSeconds(t)}plusHours(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_HOUR);return this.plusSeconds(t)}minusHours(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_HOUR);return this.minusSeconds(t)}plusMinutes(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_MINUTE);return this.plusSeconds(t)}minusMinutes(e){if(e===0)return this;let t=(0, z.multiplyExact)(e,F.LocalTime.SECONDS_PER_MINUTE);return this.minusSeconds(t)}plusSeconds(e){return e===0?this:o.ofEpochSecond((0, z.addExact)(this.seconds,e),this.nanos)}minusSeconds(e){return e===0?this:o.ofEpochSecond((0, z.subtractExact)(this.seconds,e),this.nanos)}plusMillis(e){if(e===0)return this;let t=(0, z.intDiv)(e,F.LocalTime.MILLIS_PER_SECOND),n=(0, z.addExact)(this.seconds,t),r=e%F.LocalTime.MILLIS_PER_SECOND,i=this.nanos+r*F.LocalTime.NANOS_PER_MILLI;return o.ofEpochSecond(n,i)}minusMillis(e){return this.plusMillis(-e)}plusMicros(e){if(e===0)return this;let t=(0, z.intDiv)(e,F.LocalTime.MICROS_PER_SECOND),n=(0, z.addExact)(this.seconds,t),r=e%F.LocalTime.MICROS_PER_SECOND,i=this.nanos+r*F.LocalTime.NANOS_PER_MICRO;return o.ofEpochSecond(n,i)}minusMicros(e){return this.plusMicros(-e)}plusNanos(e){if(e===0)return this;let t=(0, z.intDiv)(e,F.LocalTime.NANOS_PER_SECOND),n=(0, z.addExact)(this.seconds,t),r=e%F.LocalTime.NANOS_PER_SECOND,i=this.nanos+r;return o.ofEpochSecond(n,i)}minusNanos(e){return this.plusNanos(-e)}isAfter(e){return this.compare(e)>0}isAfterOrEqual(e){return this.compare(e)>=0}isBefore(e){return this.compare(e)<0}static isValid(e){try{o.parse(e);}catch{return false}return true}isBeforeOrEqual(e){return this.compare(e)<=0}compare(e){return this.seconds!==e.seconds?this.seconds-e.seconds:this.nanos-e.nanos}};Un.Instant=ue;ue.EPOCH=new ue(0,0);ue.MIN_SECOND=-31619087596800;ue.MIN=new ue(ue.MIN_SECOND,0);ue.MAX_SECOND=31494784780799;ue.MAX=new ue(ue.MAX_SECOND,999999999);ue.PATTERN=/^(?<year>[+-]?\d{4,19})-(?<month>\d{2})-(?<day>\d{2})T(?<hour>\d{2})(?::(?<minute>\d{2})(:(?<second>\d{2})(?:.(?<fraction>\d{1,9}))?)?)?Z$/;});var fs=Ie(qn=>{Object.defineProperty(qn,"__esModule",{value:true});qn.Weekday=void 0;var gs;(function(o){o.SUNDAY="SUNDAY",o.MONDAY="MONDAY",o.TUESDAY="TUESDAY",o.WEDNESDAY="WEDNESDAY",o.THURSDAY="THURSDAY",o.FRIDAY="FRIDAY",o.SATURDAY="SATURDAY";})(gs||(qn.Weekday=gs={}));});var ys=Ie(Hn=>{Object.defineProperty(Hn,"__esModule",{value:true});Hn.TimeInterval=void 0;var yt=Ht(),Aa=class o{constructor(e,t){this.start=e,this.end=t;}static all(){return new o(yt.Instant.MIN,yt.Instant.MAX)}static between(e,t){if(t.isBefore(e))throw new Error("The end instant must be equal or after start instant.");return new o(e,t)}static parse(e){let t=e.split("/");if(t.length!==2||t[0]===""||t[1]==="")throw new Error(`Malformed time interval "${e}".`);return o.between(yt.Instant.parse(t[0]),yt.Instant.parse(t[1]))}static startingAt(e){return o.all().withStart(e)}static endingAt(e){return o.all().withEnd(e)}withStart(e){return o.between(e,this.end)}withEnd(e){return o.between(this.start,e)}getStart(){return this.start}getEnd(){return this.end}isEmpty(){return this.start.equals(this.end)}isUnboundedStart(){return this.start.equals(yt.Instant.MIN)}isUnboundedEnd(){return this.end.equals(yt.Instant.MAX)}encloses(e){return this.start.isBeforeOrEqual(e.start)&&this.end.isAfterOrEqual(e.end)}abuts(e){return this.start.equals(e.end)||this.end.equals(e.start)}isConnected(e){return this.equals(e)||this.start.isBeforeOrEqual(e.end)&&this.end.isAfterOrEqual(e.start)}overlaps(e){return this.equals(e)||this.start.isBefore(e.end)&&this.end.isAfter(e.start)}intersection(e){if(!this.isConnected(e))throw new Error("The intervals are not connected.");return this.start.isAfterOrEqual(e.start)&&this.end.isBefore(e.end)?this:e.start.isAfterOrEqual(this.start)&&e.end.isBeforeOrEqual(this.end)?e:o.between(this.start.isAfterOrEqual(e.start)?this.start:e.start,this.end.isBeforeOrEqual(e.end)?this.end:e.end)}union(e){if(!this.isConnected(e))throw new Error("The intervals are not connected.");return this.start.isAfterOrEqual(e.start)&&this.end.isBefore(e.end)?e:e.start.isAfterOrEqual(this.start)&&e.end.isBeforeOrEqual(this.end)?this:o.between(this.start.isAfterOrEqual(e.start)?e.start:this.start,this.end.isBeforeOrEqual(e.end)?e.end:this.end)}span(e){return o.between(this.start.isAfterOrEqual(e.start)?e.start:this.start,this.end.isBeforeOrEqual(e.end)?e.end:this.end)}isAfter(e){return this.start.isAfterOrEqual(e.end)&&!this.equals(e)}isBefore(e){return this.end.isBeforeOrEqual(e.start)&&!this.equals(e)}static isValid(e){try{o.parse(e);}catch{return false}return true}startsBefore(e){return this.start.isBefore(e)}startsAtOrBefore(e){return this.start.isBeforeOrEqual(e)}startsAfter(e){return this.start.isAfter(e)}startsAtOrAfter(e){return this.start.isAfterOrEqual(e)}endsBefore(e){return this.end.isBefore(e)}endsAtOrBefore(e){return this.end.isBeforeOrEqual(e)}endsAfter(e){return this.end.isAfter(e)}endsAtOrAfter(e){return this.end.isAfterOrEqual(e)}contains(e){return this.start.isBeforeOrEqual(e)&&this.end.isAfter(e)}equals(e){return e instanceof o&&this.start.equals(e.start)&&this.end.equals(e.end)}toString(){return `${this.start.toString()}/${this.end.toString()}`}toJSON(){return this.toString()}};Hn.TimeInterval=Aa;});var Kt=Ie(Y=>{Object.defineProperty(Y,"__esModule",{value:true});Y.TimeInterval=Y.TimeZone=Y.LocalDateTime=Y.LocalTime=Y.LocalDate=Y.Weekday=Y.Instant=void 0;var el=Ht();Object.defineProperty(Y,"Instant",{enumerable:true,get:function(){return el.Instant}});var tl=fs();Object.defineProperty(Y,"Weekday",{enumerable:true,get:function(){return tl.Weekday}});var nl=Ln();Object.defineProperty(Y,"LocalDate",{enumerable:true,get:function(){return nl.LocalDate}});var rl=jn();Object.defineProperty(Y,"LocalTime",{enumerable:true,get:function(){return rl.LocalTime}});var il=ka();Object.defineProperty(Y,"LocalDateTime",{enumerable:true,get:function(){return il.LocalDateTime}});var ol=xa();Object.defineProperty(Y,"TimeZone",{enumerable:true,get:function(){return ol.TimeZone}});var al=ys();Object.defineProperty(Y,"TimeInterval",{enumerable:true,get:function(){return al.TimeInterval}});});var ps=ft(ss()),{program:pd,createCommand:cd,createArgument:ld,createOption:ud,CommanderError:md,InvalidArgumentError:Le,InvalidOptionArgumentError:dd,Command:cs,Argument:ls,Option:se,Help:gd}=ps.default;var gt=ft(Kt()),Oc=ft(wa());var Gn=class{constructor(e){this.configuration=e;}prompt(e){return this.interact({type:e.type==="password"?"invisible":"text",message:e.message,initial:e.default,validate:e.validate})}select(e){let t=e.default!==void 0?e.options.findIndex(n=>n.value===e.default):-1;return this.interact({type:e.options.length>10?"autocomplete":"select",instructions:false,message:e.message,choices:e.options.map((n,r)=>({title:n.label,value:`${r}`,disabled:n.disabled})),initial:t===-1?void 0:t}).then(n=>e.options[Number.parseInt(n,10)].value)}selectMultiple(e){return this.interact({type:e.options.length>10?"autocompleteMultiselect":"multiselect",hint:"<space> to select. <a> to toggle all. <enter> to submit.",message:e.message,instructions:false,min:e.min,max:e.max,choices:e.options.map((t,n)=>({title:t.label,value:`${n}`,disabled:t.disabled,selected:t.selected}))}).then(t=>t.map(n=>e.options[Number.parseInt(n,10)].value))}confirm(e){return this.interact({type:"confirm",message:e.message,initial:e.default??false})}wait(e){let t={enter:"[enter]",space:"[space]"},n={[t.enter]:"",[t.space]:" "},r=`Press <${e.key}> to continue`,i=e.key!==void 0?n[e.key]??e.key:void 0,a=false;return this.interact({type:"invisible",message:e.message,validate:s=>i===void 0||s===i?true:r,onState:function(p){if(!a){if(p.value===""){this.error&&e.key!==t.enter&&this.bell();return}i===void 0||p.value===i?(a=true,this.submit()):(this.bell(),this.reset(),i!==void 0&&(this.error=true,this.errorMsg=r));}}})}async interact(e,t){this.configuration.onInteractionStart?.();let{output:n,onAbort:r}=this.configuration,i={name:"value",...e,stdin:this.configuration.input,stdout:this.configuration.output,onState:function(s){e.onState?.apply(this,[s]),s.aborted&&(n.write("\x1B[?25h"),n.write(`
|
|
4
|
+
`),r());}};try{return await sl(i,t).then(a=>a.value)}finally{this.configuration.onInteractionEnd?.();}}};var tt=pl(),Zt={neutral:"cyan",info:"blue",error:"red",warning:"yellow",success:"green"},dl={neutral:tt?"\u279C":">",info:tt?"\u2139":"i",error:tt?"\u2718":"\xD7",warning:tt?"\u26A0":"\u203C",success:tt?"\u2714":"\u221A"};function X(o,e={}){let t=e.basic===true?o:gl(o);if(tt||(t=strip(t)),e.text!==void 0&&(t=nt[Zt[e.text]](t)),e.icon!==void 0){let{semantic:n,symbol:r}=e.icon;t=r!==void 0?`${nt[Zt[n]](r[tt?"unicode":"ascii"])} ${t}`:`${nt[Zt[n]](dl[n])} ${t}`;}return t}function gl(o){return render(o,{fragment:e=>e.children.join(""),text:e=>e.content,bold:e=>nt.bold(e.children),italic:e=>nt.italic(e.children),strike:e=>nt.strikethrough(e.children),code:e=>nt.cyan(e.content),link:e=>ll(e.children,e.href,{fallback:(t,n)=>`${t} (${n})`}),image:e=>unescape(e.source),paragraph:e=>`${e.children.join("")}
|
|
5
5
|
|
|
6
|
-
`}).trim()}var
|
|
6
|
+
`}).trim()}var Ss=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map(o=>nt.cyan(o)),Ra=class o{constructor(e,t,n={}){this.tasks=[];this.interval=null;this.promise=null;this.active=false;this.frame=0;this.lineCount=0;this.output=t,this.options=n,this.tasks=e.map(r=>({title:r.title,subtitle:r.subtitle,status:"pending",task:r.task}));}suspend(){this.active&&(this.stopRendering(true),Ea.show());}stop(e){this.active&&(this.active=false,this.stopRendering(e!==void 0?!e:this.options.clear===true),Ea.show(),this.options.onStop?.(this));}start(){return this.promise!==null&&!this.active?this.promise:(this.promise===null&&(this.active=true,this.promise=this.execute()),this.active&&(Ea.hide(),this.resumeRendering()),this.promise)}async execute(){try{await(this.options.concurrent===!0?Promise.all(this.tasks.map(e=>this.startTask(e))):this.tasks.reduce((e,t)=>e.then(()=>this.startTask(t)),Promise.resolve())),this.options.manual!==!0&&this.stop();}catch(e){throw this.stop(),e}}startTask(e){return this.updateTask(e,{status:"loading"}),e.task({confirm:(t,n)=>this.updateTask(e,{status:"success",title:t,subtitle:n}),alert:(t,n)=>this.updateTask(e,{status:"error",title:t,subtitle:n}),warn:(t,n)=>this.updateTask(e,{status:"warning",title:t,subtitle:n}),update:(t,n)=>this.updateTask(e,{status:"loading",title:t,subtitle:n})})}setStatus(e,t){if(!this.active)throw new Error("Cannot update task status once the task is finished");this.updateTask(this.tasks[e],t);}updateTask(e,t){e.status=t.status,t.title!==void 0&&(e.title=t.title),e.subtitle=t.subtitle;}stopRendering(e){this.interval!==null&&(clearInterval(this.interval),this.interval=null,this.clear(),e||this.render());}resumeRendering(){this.render(),this.interval=setInterval(()=>{this.frame++,this.clear(),this.render();},80);}clear(){for(let e=0;e<this.lineCount;e++)hs.moveCursor(this.output,0,-1),hs.clearLine(this.output,0);this.lineCount=0;}render(){this.lineCount=0;let e=this.output instanceof WriteStream?this.output.columns:0;for(let t of this.tasks){let n=this.formatTask(t),r=n.split(`
|
|
7
7
|
`).map(i=>e===0?1:Math.ceil([...i].length/e));this.lineCount+=r.reduce((i,a)=>i+a,0),this.output.write(`${n}
|
|
8
|
-
`);}}formatTask(e){let t=o.getSemantic(e.status),n=e.status==="loading"?`${
|
|
9
|
-
${
|
|
10
|
-
`);}format(e,t,n="neutral"){let r=
|
|
11
|
-
${
|
|
8
|
+
`);}}formatTask(e){let t=o.getSemantic(e.status),n=e.status==="loading"?`${Ss[this.frame%Ss.length]} ${X(e.title)}`:X(e.title,{icon:{semantic:t,symbol:e.status==="pending"?{unicode:"\u25F7",ascii:"\u25A0"}:void 0}});return e.subtitle!==void 0&&(n+=`
|
|
9
|
+
${X(e.subtitle,{text:t,icon:{semantic:t,symbol:{unicode:"\u21B3",ascii:"\u203A"}}})}`),n}static getSemantic(e){return e==="loading"||e==="pending"?"neutral":e}},Kn=class{constructor(e){this.watchers=[];this.output=e;}suspend(){for(let e of this.watchers)e.suspend();}stop(e){for(let t of this.watchers)t.stop(e);}resume(){this.watchers[this.watchers.length-1]?.start();}notify(e){let t=this.addWatcher({tasks:[{title:e,task:()=>Promise.resolve()}]},{manual:true});return t.start(),{stop:(n=false)=>{t.stop(n);},update:(n,r)=>{t.setStatus(0,{status:"loading",title:n,subtitle:r});},confirm:(n,r)=>{t.setStatus(0,{status:"success",title:n,subtitle:r}),t.stop(true);},alert:(n,r)=>{t.setStatus(0,{status:"error",title:n,subtitle:r}),t.stop(true);},warn:(n,r)=>{t.setStatus(0,{status:"warning",title:n,subtitle:r}),t.stop(true);}}}monitor(e){let t=this.addWatcher(e),n=t.start();return {wait:()=>n,stop:()=>t.stop()}}addWatcher(e,t={}){for(let r of this.watchers)r.suspend();let n=new Ra(e.tasks,this.output,{clear:e.clear,concurrent:e.concurrent,...t,onStop:r=>this.removeWatcher(r)});return this.watchers.push(n),n}removeWatcher(e){let t=this.watchers.indexOf(e),n=t===this.watchers.length-1;this.watchers.splice(t,1),n&&this.resume();}};var Zn=class{constructor(e){this.notifiers=[];this.stopped=false;this.output=e;}suspend(){this.stop();}stop(){this.notifiers.forEach(e=>{e.stopped=true;});}resume(){this.notifiers.forEach(e=>{e.stopped=false;});}monitor(e){let t=e.tasks.map(r=>this.notify(r.title,e.clear)),n=e.concurrent===true?Promise.all(e.tasks.map((r,i)=>r.task(t[i]))):e.tasks.reduce((r,i,a)=>r.then(()=>i.task(t[a])),Promise.resolve());return {stop:()=>{t.forEach(r=>r.stop(false));},wait:()=>n.then(()=>{})}}notify(e,t=false){let n=(i,a,s,p=!t)=>{!this.stopped&&!r.stopped&&p&&this.log(i??r.lastStatus,a??r.latestDetails,s);let c=this.notifiers.indexOf(r);c!==-1&&this.notifiers.splice(c,1);},r={stopped:false,lastStatus:e,latestDetails:void 0,stop:(i=false)=>{n(r.lastStatus,r.latestDetails,"neutral",i);},update:(i,a)=>{r.lastStatus=i??r.lastStatus,r.latestDetails=a;},confirm:(i,a)=>{n(i,a,"success");},alert:(i,a)=>{n(i,a,"error");},warn:(i,a)=>{n(i,a,"warning");}};return this.notifiers.push(r),r}log(e,t,n){this.output.write(`${this.format(e,t,n)}
|
|
10
|
+
`);}format(e,t,n="neutral"){let r=X(e,{icon:{semantic:n}});return t!==void 0&&(r+=`
|
|
11
|
+
${X(t,{text:n,icon:{semantic:n,symbol:{unicode:"\u21B3",ascii:"\u203A"}}})}`),r}};var Jt=class{constructor(e){this.output=e.output,this.onExit=e.onExit,this.quiet=e.quiet??false,this.formatter=e.formatter,this.linkOpener=e.linkOpener,this.taskMonitor=(e.interactive??true)&&!this.quiet?new Kn(this.output):new Zn(this.quiet?new PassThrough:this.output);}suspend(){this.taskMonitor.suspend();}resume(){this.taskMonitor.resume();}stop(){this.taskMonitor.stop(false);}async open(e){await this.linkOpener(e);}break(){this.write(`
|
|
12
12
|
`);}announce(e){this.write(`${this.formatter.formatCallout(e)}
|
|
13
13
|
`);}log(e,t){this.writeLog(e,t??"neutral");}confirm(e){this.writeLog(e,"success");}inform(e){this.writeLog(e,"info");}warn(e){this.writeLog(e,"warning");}alert(e){this.writeLog(e,"error");}debug(e){this.writeLog(e,"neutral");}notify(e){return this.taskMonitor.notify(e)}monitor(e){return typeof e=="function"?new Promise((t,n)=>{let r=this.taskMonitor.monitor(e(t,i=>{r.stop(),n(i);}));}):this.taskMonitor.monitor(e).wait()}report(e){this.stop(),this.write(`${this.formatter.formatError(e)}
|
|
14
|
-
`,true);}exit(){return this.stop(),this.onExit()}writeLog(e,t){this.write(`${
|
|
15
|
-
`);}write(e,t=false){(!this.quiet||t)&&(this.suspend(),this.output.write(e),this.resume());}};var d=class o extends Error{constructor(e,t={}){super(e),this.help=t,this.reason=t.reason??"other",Object.setPrototypeOf(this,o.prototype);}static formatMessage(e){let t=o.extractMessage(e).trim();return t.length===0?t:t.charAt(0).toUpperCase()+t.slice(1)+(/^[^\n.]+$/.test(t)?".":"")}static formatCause(e){let t=o.formatMessage(e);return t.length===0?t:t.charAt(0).toLowerCase()+t.slice(1)}static extractMessage(e){return e instanceof Error?e.message:typeof e=="string"&&e!==""?e:"unknown error"}static describeType(e){switch(true){case e===null:return "null";case typeof e=="object":return e.constructor.name!=="Object"?e.constructor.name:"object";default:return typeof e}}};var
|
|
14
|
+
`,true);}exit(){return this.stop(),this.onExit()}writeLog(e,t){this.write(`${X(e,t==="neutral"?{}:{icon:{semantic:t}})}
|
|
15
|
+
`);}write(e,t=false){(!this.quiet||t)&&(this.suspend(),this.output.write(e),this.resume());}};var d=class o extends Error{constructor(e,t={}){super(e),this.help=t,this.reason=t.reason??"other",Object.setPrototypeOf(this,o.prototype);}static formatMessage(e){let t=o.extractMessage(e).trim();return t.length===0?t:t.charAt(0).toUpperCase()+t.slice(1)+(/^[^\n.]+$/.test(t)?".":"")}static formatCause(e){let t=o.formatMessage(e);return t.length===0?t:t.charAt(0).toLowerCase()+t.slice(1)}static extractMessage(e){return e instanceof Error?e.message:typeof e=="string"&&e!==""?e:"unknown error"}static describeType(e){switch(true){case e===null:return "null";case typeof e=="object":return e.constructor.name!=="Object"?e.constructor.name:"object";default:return typeof e}}};var ee=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var O=class o{constructor(e,t,n){this.min=t,this.max=n,this.versions=e??[];}static isValid(e){try{return o.parse(e),!0}catch{return false}}static between(e,t){if(e===t)return new o([e]);if(e>t)throw new Error(`Out of order range ${e}-${t}`);return new o(void 0,e,t)}static of(e){return new o([e])}static either(...e){if(e.length===0)throw new Error("No versions specified.");return new o([...new Set(e)].sort((t,n)=>t-n))}static parse(e){if(/^\d+$/.test(e))return new o([Number.parseInt(e,10)]);let{groups:t}=e.match(/^((?<range>(?<min>\d+)\s*-\s*(?<max>\d+))|(?<set>\d+(\s*,\s*\d+)+))$/)??{};if(t===void 0)throw new Error(`Invalid version pattern: ${e}`);return t.range!==void 0?o.between(Number.parseInt(t.min,10),Number.parseInt(t.max,10)):o.either(...t.set.split(",").map(n=>Number.parseInt(n,10)))}isRange(){return this.min!==void 0&&this.max!==void 0}isSet(){return this.versions.length>0}isExact(){return this.versions.length===1}getCardinality(){return this.min!==void 0&&this.max!==void 0?this.max-this.min+1:this.versions.length}getExactVersion(){if(!this.isExact())throw new Error("Not an exact version.");return this.versions[0]}getMinVersion(){return this.min??Math.min(...this.versions)}getMaxVersion(){return this.max??Math.max(...this.versions)}getVersions(){let{min:e,max:t}=this;if(e===void 0||t===void 0)return this.versions;let n=[];for(let r=e;r<=t;r++)n.push(r);return n}intersects(e){if(e.isRange())return e.intersects(this);if(this.isRange()){if(e.isRange())return this.getMinVersion()<=e.getMaxVersion()&&e.getMinVersion()<=this.getMaxVersion();if(e.isExact()){let a=e.getExactVersion();return this.getMinVersion()<=a&&a<=this.getMaxVersion()}let r=this.getMinVersion(),i=this.getMaxVersion();return e.getVersions().some(a=>r<=a&&a<=i)}let t=this.getVersions(),n=e.getVersions();return t.length===0||n.length===0?false:t.some(r=>n.includes(r))}contains(e){if(this.isExact()&&e.isExact())return this.getExactVersion()===e.getExactVersion();if(this.isRange()){if(e.isRange())return this.getMinVersion()<=e.getMinVersion()&&e.getMaxVersion()<=this.getMaxVersion();if(e.isExact()){let i=e.getExactVersion();return this.getMinVersion()<=i&&i<=this.getMaxVersion()}let n=this.getMinVersion(),r=this.getMaxVersion();return e.getVersions().every(i=>n<=i&&i<=r)}if(!e.isSet())return false;let t=this.getVersions();return e.getVersions().every(n=>t.includes(n))}without(e){if(!this.intersects(e))return this;if(e.contains(this))throw new Error("A version cannot be empty.");if(this.isRange()){if(e.isExact()){if(this.getMinVersion()===e.getExactVersion())return o.between(e.getExactVersion()+1,this.getMaxVersion());if(this.getMaxVersion()===e.getExactVersion())return o.between(this.getMinVersion(),e.getExactVersion()-1)}else if(e.isRange()){if(this.getMinVersion()===e.getMinVersion())return o.between(e.getMaxVersion()+1,this.getMaxVersion());if(this.getMaxVersion()===e.getMaxVersion())return o.between(this.getMinVersion(),e.getMinVersion()-1)}else if(e.isSet()&&e.getVersions().every((i,a)=>i===e.getMinVersion()+a)){if(this.getMinVersion()===e.getMinVersion())return o.between(e.getMaxVersion()+1,this.getMaxVersion());if(this.getMaxVersion()===e.getMaxVersion())return o.between(this.getMinVersion(),e.getMinVersion()-1)}}if(e.isRange()){let n=e.getMinVersion(),r=e.getMaxVersion();return o.either(...this.getVersions().filter(i=>i<n||i>r))}let t=e.getVersions();return o.either(...this.getVersions().filter(n=>!t.includes(n)))}with(e){if(this.contains(e))return this;if(e.isRange())return e.with(this);if(this.isRange()){if(e.isExact()){if(this.getMaxVersion()+1===e.getExactVersion())return o.between(this.getMinVersion(),e.getExactVersion());if(e.getExactVersion()+1===this.getMinVersion())return o.between(e.getExactVersion(),this.getMaxVersion())}else if(e.isRange()){if(this.getMaxVersion()+1===e.getMinVersion()||e.getMaxVersion()+1===this.getMinVersion())return o.between(Math.min(this.getMinVersion(),e.getMinVersion()),Math.max(this.getMaxVersion(),e.getMaxVersion()))}else if(e.isSet()&&this.contains(this))return this}return o.either(...this.getVersions(),...e.getVersions())}equals(e){if(e.min!==this.min||e.max!==this.max||e.versions.length!==this.versions.length)return false;for(let t=0;t<this.versions.length;t++)if(this.versions[t]!==e.versions[t])return false;return true}toString(){return this.isSet()?this.versions.join(", "):`${this.min} - ${this.max}`}toJSON(){return this.toString()}};function te(o,...e){let t=[];for(let i=0;i<o.length;i++)t.push(o[i]),i<e.length&&t.push(e[i]);let n=t.join("").split(`
|
|
16
16
|
`);if(n.length<2)return t.join("");let r=n[1].search(/\S/);return n.map(i=>i.slice(r)).join(`
|
|
17
|
-
`).trim()}function ht(o){return o.normalize("NFD").replace(/(^[^a-z]+|[^a-z0-9_ -]+)/ig,"").split(/[^a-z0-9]+/i).map((e,t)=>t===0?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("")}var
|
|
17
|
+
`).trim()}function ht(o){return o.normalize("NFD").replace(/(^[^a-z]+|[^a-z0-9_ -]+)/ig,"").split(/[^a-z0-9]+/i).map((e,t)=>t===0?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("")}var qe=class o{static{this.CONTENT_PACKAGE="@croct/content";}constructor(e){this.projectDirectory=e.projectDirectory,this.packageManager=e.packageManager,this.workspaceApi=e.workspaceApi,this.formatter=e.formatter,this.fileSystem=e.fileSystem,this.importConfigLoader=e.tsConfigLoader;}async generateSlotExample(e,t){let n=this.projectDirectory.get(),r=[];for(let i of await this.generateSlotExampleFiles(e,t)){let a=this.fileSystem.joinPaths(n,this.fileSystem.getDirectoryName(i.path));await this.fileSystem.createDirectory(a,{recursive:true}).catch(()=>null);let s=this.fileSystem.joinPaths(n,i.path);await this.fileSystem.writeTextFile(s,i.code,{overwrite:true}),r.push(s);}await this.formatter.format(r);}async setup(e){let{input:t,output:n}=e,r=await this.getInstallationPlan(e),i={...r.configuration,paths:{content:".",components:await this.resolvePath(["components","Components","component","Component"],r.configuration.paths.components),examples:await this.resolvePath(["examples","Examples"],r.configuration.paths.examples)}},a={...e,configuration:{...e.configuration,...i,applications:e.configuration.applications}},s=[];if(s.push({title:"Install dependencies",task:async p=>{p.update("Installing dependencies");try{await this.packageManager.addDependencies(["croct"],!0),await this.packageManager.addDependencies([...r.dependencies,o.CONTENT_PACKAGE]),p.confirm("Dependencies installed");}catch(c){p.alert("Failed to install dependencies",d.formatMessage(c));}}}),s.push(...r.tasks),Object.keys(i.slots).length>0&&s.push({title:"Download content",task:async p=>{p.update("Downloading content");try{await this.updateContent(a,{notifier:p,clean:!0});}catch(c){p.alert("Failed to download content",d.formatMessage(c));}}}),await this.isTypeScriptProject()&&s.push({title:"Generate types",task:async p=>{p.update("Generating types");try{await this.updateTypes(a,{notifier:p,clean:!0});}catch(c){p.alert("Failed to generate types",d.formatMessage(c));}try{await this.registerTypeFile(a,p);}catch(c){p.alert("Failed to register type file",d.formatMessage(c));}}}),s.push({title:"Register script",task:async p=>{p.update("Registering script");try{await this.packageManager.addScript("postinstall","croct install"),p.confirm("Script registered");}catch(c){p.alert("Failed to register script",d.formatMessage(c));}}}),s.length>0){if(t!==void 0){n.break(),n.inform("**Installation plan**");for(let{title:p}of s)n.log(` - ${p}`);if(n.break(),!await t.confirm({message:"Proceed?",default:true}))return n.exit()}await n.monitor({tasks:s});}return i}async resolvePath(e,t){if(t!=="")return t;let n=["src"],r=await this.locateFile(...n.flatMap(i=>e.map(a=>this.fileSystem.joinPaths(i,a))),...e,...n);return r===null?e[0]:n.includes(r)?this.fileSystem.joinPaths(r,e[0]):r}async update(e,t={}){await this.updateContent(e,t),await this.isTypeScriptProject()&&(await this.updateTypes(e,t),t.clean===true&&await this.registerTypeFile(e));}async updateContent(e,t={}){let{output:n,configuration:r}=e,i=t.notifier??n.notify("Updating content");if(Object.entries(r.slots).length===0){i.confirm("No slots to update");return}let s=await this.mountContentPackageFolder();if(s===null){i.alert(`The package ${o.CONTENT_PACKAGE} is not installed`);return}let p=this.fileSystem.joinPaths(s.directory,"slot");for await(let M of this.fileSystem.list(p,0))M.type==="directory"&&await this.fileSystem.delete(this.fileSystem.joinPaths(p,M.name),{recursive:true});let c={},l={},m={};for(let[M,j]of Object.entries(await this.loadContent(e,t.clean))){let T=Math.max(...j.map(({version:q})=>q));for(let{version:q,content:be}of j)for(let[pe,os]of Object.entries(be)){let Vt=`${M}@${q}`;c[pe]===void 0&&(c[pe]={});let Sa=`${ht(`${M}-${pe}`)}V${q}`,ba=`./${pe}/${Vt}`;m[pe]===void 0&&(m[pe]={}),c[pe][Vt]=ba,m[pe][Vt]=`${Sa}`,l[Sa]=ba,q===T&&(c[pe][M]=ba,m[pe][M]=`${Sa}`);let Mc=this.fileSystem.joinPaths(p,pe);await this.fileSystem.isDirectory(Mc)||await this.fileSystem.createDirectory(this.fileSystem.joinPaths(p,pe),{recursive:true}),await this.fileSystem.writeTextFile(this.fileSystem.joinPaths(p,pe,`${Vt}.js`),`export default ${JSON.stringify(os,null,2)};`,{overwrite:true}),await this.fileSystem.writeTextFile(this.fileSystem.joinPaths(p,pe,`${Vt}.cjs`),`module.exports = ${JSON.stringify(os,null,2)};`,{overwrite:true});}}let f=Object.entries(l).map(([M,j])=>`import ${M} from '${j}.js';`).join(`
|
|
18
18
|
`),b=`const contentMap = ${JSON.stringify(m,null,2).replace(/(?<=: )"(.*?)"/g,"$1")};
|
|
19
19
|
|
|
20
20
|
`;await this.fileSystem.writeTextFile(this.fileSystem.joinPaths(p,"getSlotContent.js"),`${f}
|
|
21
21
|
|
|
22
|
-
${b}`+
|
|
22
|
+
${b}`+te`
|
|
23
23
|
const defaultLocale = ${JSON.stringify(r.defaultLocale)};
|
|
24
24
|
|
|
25
25
|
export function getSlotContent(slotId, language = defaultLocale) {
|
|
26
|
-
if (
|
|
27
|
-
return
|
|
26
|
+
if (contentMap[language]?.[slotId] !== undefined) {
|
|
27
|
+
return contentMap[language][slotId];
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
if (language !== defaultLocale) {
|
|
@@ -36,13 +36,13 @@ ${b}`+ae`
|
|
|
36
36
|
`,{overwrite:true});let A=Object.entries(l).map(([M,j])=>`const ${M} = require('${j}.cjs');`).join(`
|
|
37
37
|
`);await this.fileSystem.writeTextFile(this.fileSystem.joinPaths(p,"getSlotContent.cjs"),`${A}
|
|
38
38
|
|
|
39
|
-
${b}`+
|
|
39
|
+
${b}`+te`
|
|
40
40
|
const defaultLocale = ${JSON.stringify(r.defaultLocale)};
|
|
41
41
|
|
|
42
42
|
module.exports = {
|
|
43
43
|
getSlotContent: function getSlotContent(slotId, language = defaultLocale) {
|
|
44
|
-
if (
|
|
45
|
-
return
|
|
44
|
+
if (contentMap[language]?.[slotId] !== undefined) {
|
|
45
|
+
return contentMap[language][slotId];
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
if (language !== defaultLocale) {
|
|
@@ -52,14 +52,14 @@ ${b}`+ae`
|
|
|
52
52
|
return null;
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
|
-
`,{overwrite:true});let
|
|
55
|
+
`,{overwrite:true});let v=`const contentMap = ${JSON.stringify(c,null,2).replace(/"(\.\/.*?)"/g,'() => import("$1.js")')};
|
|
56
56
|
|
|
57
|
-
`;await this.fileSystem.writeTextFile(this.fileSystem.joinPaths(p,"loadSlotContent.js"),
|
|
57
|
+
`;await this.fileSystem.writeTextFile(this.fileSystem.joinPaths(p,"loadSlotContent.js"),v+te`
|
|
58
58
|
const defaultLocale = ${JSON.stringify(r.defaultLocale)};
|
|
59
59
|
|
|
60
60
|
export function loadSlotContent(slotId, language = defaultLocale) {
|
|
61
|
-
if (
|
|
62
|
-
return
|
|
61
|
+
if (contentMap[language]?.[slotId] !== undefined) {
|
|
62
|
+
return contentMap[language][slotId]().then(module => module.default);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
if (language !== defaultLocale) {
|
|
@@ -70,13 +70,13 @@ ${b}`+ae`
|
|
|
70
70
|
}
|
|
71
71
|
`,{overwrite:true});let y=`const contentMap = ${JSON.stringify(c,null,2).replace(/"(\.\/.*?)"/g,'() => Promise.resolve(require("$1.cjs"))')};
|
|
72
72
|
|
|
73
|
-
`;await this.fileSystem.writeTextFile(this.fileSystem.joinPaths(p,"loadSlotContent.cjs"),y+
|
|
73
|
+
`;await this.fileSystem.writeTextFile(this.fileSystem.joinPaths(p,"loadSlotContent.cjs"),y+te`
|
|
74
74
|
const defaultLocale = ${JSON.stringify(r.defaultLocale)};
|
|
75
75
|
|
|
76
76
|
module.exports = {
|
|
77
77
|
loadSlotContent: function loadSlotContent(slotId, language = defaultLocale) {
|
|
78
|
-
if (
|
|
79
|
-
return
|
|
78
|
+
if (contentMap[language]?.[slotId] !== undefined) {
|
|
79
|
+
return contentMap[language][slotId]().then(module => module.default);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
if (language !== defaultLocale) {
|
|
@@ -86,13 +86,24 @@ ${b}`+ae`
|
|
|
86
86
|
return Promise.resolve(null);
|
|
87
87
|
}
|
|
88
88
|
};
|
|
89
|
-
`,{overwrite:true}),i.confirm("Content updated");}async loadContent(e,t=false){let{configuration:n}=e;if(n.paths.content===void 0)return this.loadRemoteContent(e);let r=this.fileSystem.joinPaths(n.paths.content,"slots.json");if(!t&&await this.fileSystem.exists(r))return this.loadLocalContent(r);let i=await this.loadRemoteContent(e);return await this.saveContent(i,r),i}async saveContent(e,t){let n=this.fileSystem.getDirectoryName(t);await this.fileSystem.createDirectory(n,{recursive:true}),await this.fileSystem.writeTextFile(t,JSON.stringify(e,null,2),{overwrite:true});}async loadLocalContent(e){let t;try{t=await this.fileSystem.readTextFile(e);}catch{return {}}try{return JSON.parse(t)}catch(n){throw new
|
|
90
|
-
|
|
89
|
+
`,{overwrite:true}),i.confirm("Content updated");}async loadContent(e,t=false){let{configuration:n}=e;if(n.paths.content===void 0)return this.loadRemoteContent(e);let r=this.fileSystem.joinPaths(n.paths.content,"slots.json");if(!t&&await this.fileSystem.exists(r))return this.loadLocalContent(r);let i=await this.loadRemoteContent(e);return await this.saveContent(i,r),i}async saveContent(e,t){let n=this.fileSystem.getDirectoryName(t);await this.fileSystem.createDirectory(n,{recursive:true}),await this.fileSystem.writeTextFile(t,JSON.stringify(e,null,2),{overwrite:true});}async loadLocalContent(e){let t;try{t=await this.fileSystem.readTextFile(e);}catch{return {}}try{return JSON.parse(t)}catch(n){throw new ee("Failed to parse content file.",{reason:"invalid_input",cause:n,details:[`File: ${e}`]})}}async loadRemoteContent(e){let t=await this.resolveVersions(e.configuration),n=Object.entries(t.slots),r={};for(let[i,a]of n)r[i]=O.parse(a).getVersions();return Object.fromEntries(await Promise.all(n.map(async([i])=>[i,await Promise.all(r[i].map(a=>this.workspaceApi.getSlotStaticContent({organizationSlug:t.organization,workspaceSlug:t.workspace,slotSlug:i},a).then(s=>({version:a,content:Object.fromEntries(s.map(({locale:p,content:c})=>[p,c]))}))))])))}async updateTypes(e,t={}){let{output:n,configuration:r}=e,i=t.notifier??n.notify("Updating types"),a=this.getTypeFile(r.paths.content??this.projectDirectory.get());if(t.clean===true||!await this.fileSystem.exists(a)){let s="";(Object.keys(r.slots).length>0||Object.keys(r.components).length>0)&&(s=`${await this.generateTypes(r)}`),s=te`
|
|
90
|
+
/**
|
|
91
|
+
* Generated by the Croct CLI.
|
|
92
|
+
*
|
|
93
|
+
* Any manual changes will be overwritten.
|
|
94
|
+
*
|
|
95
|
+
* To regenerate, run \`croct update\`.
|
|
96
|
+
*/
|
|
97
|
+
|
|
98
|
+
// module
|
|
99
|
+
|
|
100
|
+
export {};
|
|
101
|
+
`.replace("// module",s),await this.fileSystem.writeTextFile(a,s,{overwrite:true});}i.confirm("Types updated");}async generateTypes(e){let{organization:t,workspace:n,components:r,slots:i}=await this.resolveVersions(e);return this.workspaceApi.generateTypes({organizationSlug:t,workspaceSlug:n,target:"PLUG_JS",components:Object.entries(r).map(([a,s])=>({id:a,version:s})),slots:Object.entries(i).map(([a,s])=>({id:a,version:s}))})}async registerTypeFile(e,t){let n=await this.getTypeScriptConfigPath([e.configuration.paths.components,e.configuration.paths.examples]),r=t??e.output.notify("Registering type file");if(n===null)throw new ee("TypeScript configuration not found");let i=this.projectDirectory.get();if(!this.fileSystem.isSubPath(i,n)){let c=this.fileSystem.getRelativePath(i,n);throw new ee(`TypeScript configuration is outside the project directory: \`${c}\``)}let a=e.configuration.paths.content??this.projectDirectory.get(),s=this.fileSystem.getRelativePath(this.fileSystem.getDirectoryName(n),this.getTypeFile(a)).replace(/\\/g,"/"),p=JsonParser.parse(await this.fileSystem.readTextFile(n),JsonObjectNode);if(p.has("files")){let c=p.get("files",JsonArrayNode).toJSON();if(c.includes(s))return r.confirm("Type file already registered");let l=this.getTypeFile(".");for(let m=0;m<c.length;m++){let f=`${c[m]}`;f!==s&&f.endsWith(l)&&c.splice(m,1);}c.push(s),p.set("files",c);}else p.set("files",[s]);await this.fileSystem.writeTextFile(n,p.toString(),{overwrite:true}),r.confirm("Type file registered");}async resolveVersions(e){let t=Object.keys(e.components),n=Object.keys(e.slots);if(t.length===0&&n.length===0)return e;let[r,i]=await Promise.all([this.workspaceApi.getSlots({organizationSlug:e.organization,workspaceSlug:e.workspace}),this.workspaceApi.getComponents({organizationSlug:e.organization,workspaceSlug:e.workspace})]);return {...e,components:Object.fromEntries(Object.entries(e.components).flatMap(([a,s])=>{let p=O.parse(s).getVersions().filter(c=>i.some(l=>l.slug===a&&c<=l.version.major));return p.length===0?[]:[[a,O.either(...p).toString()]]})),slots:Object.fromEntries(Object.entries(e.slots).flatMap(([a,s])=>{let p=O.parse(s).getVersions().filter(c=>r.some(l=>l.slug===a&&c<=l.version.major));return p.length===0?[]:[[a,O.either(...p).toString()]]}))}}async mountContentPackageFolder(){let e=await this.packageManager.getDependency(o.CONTENT_PACKAGE);if(e===null)return null;if(await this.fileSystem.isSymbolicLink(e.directory)){let t=await this.fileSystem.getRealPath(e.directory);await this.fileSystem.delete(e.directory),await this.fileSystem.copy(t,e.directory);}return e}async locateFile(...e){let t=this.projectDirectory.get();for(let n of e){if(this.fileSystem.isAbsolutePath(n))throw new ee("The file path must be relative");let r=this.fileSystem.joinPaths(t,n);if(await this.fileSystem.exists(r))return n}return null}async readFile(...e){let t=await this.locateFile(...e);return t===null?null:this.fileSystem.readTextFile(this.fileSystem.joinPaths(this.projectDirectory.get(),t))}getTypeFile(e){return this.fileSystem.joinPaths(e,"slots.d.ts")}isTypeScriptProject(){return this.packageManager.hasDirectDependency("typescript")}async getTypeScriptConfigPath(e=[]){let t=this.projectDirectory.get(),n=await this.importConfigLoader.load(t,{fileNames:["tsconfig.json"],sourcePaths:e.length===0?[t]:e});return n===null?null:n.matchedConfigPath}};var Me=class o{constructor(e=2){this.code="";this.indentationLevel=0;this.indentationSize=e;}indent(){return this.indentationLevel++,this}outdent(){return this.indentationLevel>0&&this.indentationLevel--,this}newLine(e=1){return this.code+=`
|
|
91
102
|
`.repeat(e),this}write(e,t=true){return this.code+=this.indentCode(`${e}`)+(t?`
|
|
92
103
|
`:""),this}appendString(e,t){return this.append(t+e.replace(new RegExp(t,"g"),`\\${t}`)+t)}appendIndentation(){return this.write("",false)}appendName(e,t=true){return this.code+=o.formatName(e,t),this}writeValue(e,t){return this.appendIndentation().appendValue(e,t)}append(e){return this.code+=this.indentCode(e,false),this}appendValue(e,t){let{delimiter:n,stringKeys:r=false}=t;switch(typeof e){case "string":{let i=e.replace(new RegExp(n,"g"),`\\${n}`);return this.append(`${n}${i}${n}`)}case "number":case "boolean":return this.append(`${e}`);case "object":{if(e===null)return this.append("null");if(Array.isArray(e)){if(e.length===0)return this.append("[]");this.append("[").newLine().indent();for(let a=0;a<e.length;a++)this.appendIndentation().appendValue(e[a],t),a<e.length-1&&this.append(", ").newLine();return this.outdent().newLine().write("]",false)}let i=Object.entries(e);if(i.length===0)return this.append("{}");this.append("{").newLine().indent();for(let a=0;a<i.length;a++){let[s,p]=i[a];this.appendIndentation(),r||!isIdentifier(s)?this.appendValue(s,t):this.append(s),this.append(": ").appendValue(p,t),a<i.length-1&&this.append(", ").newLine();}return this.outdent().newLine().write("}",false)}default:return this.append("undefined")}}indentCode(e,t=true){let n=" ".repeat(this.indentationLevel*this.indentationSize);return (t?n:"")+e.replace(/\n/g,`
|
|
93
|
-
${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/[^a-z0-9]/gi,"_");return e.includes("_")?t?n[0].toUpperCase()+n.slice(1):n:n.replace(/(^[a-z_])|_([a-z])/gi,(r,i,a,s)=>t||s>0?(i??a).toUpperCase():(i??a).toLowerCase())}};function
|
|
104
|
+
${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/[^a-z0-9]/gi,"_");return e.includes("_")?t?n[0].toUpperCase()+n.slice(1):n:n.replace(/(^[a-z_])|_([a-z])/gi,(r,i,a,s)=>t||s>0?(i??a).toUpperCase():(i??a).toLowerCase())}};function Jn(o){let e=o.split(/(?<![A-Z])(?=[A-Z])|_/),t=e[0];return [t[0].toUpperCase()+t.slice(1).toLowerCase(),...e.slice(1).map(i=>i.toLowerCase())].join(" ")}function bs(o){return o.normalize("NFD").toLocaleLowerCase().replace(/(^[^a-z]+|[^a-z0-9_ &-]+)/ig,"").split(/[^a-z0-9]+/i).filter(e=>e!=="").join("-")}function St(o){return Object.entries(o).sort(([,e],[,t])=>{let n=e.position??Number.MAX_SAFE_INTEGER,r=t.position??Number.MAX_SAFE_INTEGER;return n-r})}var Qn=class o{constructor({fileSystem:e,...t}){this.options=t,this.fileSystem=e;}generate(e){let t=this.generateSlotFile(e);return {files:[this.generatePageFile(e,t.path),t]}}generatePageFile(e,t){let n=this.createWriter();return this.writePageSnippet(n,e.definition.title??"Croct example",this.fileSystem.getRelativePath(this.fileSystem.getDirectoryName(this.options.pagePath),t).replace(/\\/g,"/")),{path:this.options.pagePath,language:"html",code:n.toString()}}writePageSnippet(e,t,n){e.write('<html lang="en">').write("<head>").indent().write('<meta charset="UTF-8">').write(`<title>${o.escapeEntities(t)}</title>`).write(`<script type="module" src="${n}"></script>`).outdent().write("</head>").write("<body>").indent().write(`<div id="${this.options.containerId}"></div>`).outdent().write("</body>").write("</html>",false);}generateSlotFile(e){let t=this.createWriter();return this.writeSlotSnippet(t,e),{path:this.options.slotPath,language:this.options.language,code:t.toString()}}writeSlotSnippet(e,t){e.write("import croct from '@croct/plug';"),e.newLine().write(`croct.plug({appId: '${this.options.appId}'});`).newLine(),this.renderListener(e,t);}renderListener(e,t){e.write("document.addEventListener('DOMContentLoaded', async () => {").indent(),e.write("const {content} = ",false).append(`await croct.fetch('${t.id}@${t.version}'`),this.options.fallbackContent!==void 0&&e.append(", {").indent().newLine().write("fallback: ",false).appendValue(this.options.fallbackContent,{delimiter:"'"}).newLine().outdent().write("}",false),e.append(");"),e.newLine(2).write(`document.querySelector('#${this.options.containerId}')`,false),this.options.language==="typescript"&&e.append("!"),e.append(".innerHTML = `").newLine().indent(),this.writeContentSnippet(e,t.definition,"content"),e.outdent().write("`;").outdent().write("});");}writeContentSnippet(e,t,n){switch(t.type){case "text":case "number":e.append(`\${${n}}`);break;case "boolean":t.label!==void 0?e.append(`\${${n} ? `).appendValue(t.label.true??"Yes",{delimiter:"'"}).append(" : ").appendValue(t.label.false??"No",{delimiter:"'"}).append("}"):e.append(`\${${n} ? 'Yes' : 'No'}`);break;case "list":{let r=t.itemLabel!==void 0?ht(t.itemLabel):"item";e.write("<ol>").indent().write(`\${${n}.map(${r} => \``).indent().write("<li>").indent();let i=o.isInline(t.items);i&&e.appendIndentation(),this.writeContentSnippet(e,t.items,r),i&&e.newLine(),e.outdent().write("</li>").outdent().write("`).join('')}").outdent().write("</ol>");break}case "structure":e.write("<ul>").indent();for(let[r,i]of St(t.attributes))i.private!==true&&(i.optional===true&&(e.write(`\${${n}.${r} && \``),e.indent()),this.writeAttributeSnippet(e,i,`${n}.${r}`),i.optional===true&&(e.outdent(),e.write("`}")));e.outdent().write("</ul>");break;case "union":for(let[r,i]of Object.entries(t.types))e.write(`\${${n}._type === '${r}' && \``).indent(),this.writeContentSnippet(e,i,n),e.outdent().write("`}");break}}writeAttributeSnippet(e,t,n){let r=t.type,i=t.label!==void 0?o.escapeEntities(t.label).replace(/`/g,"\\`"):Jn(n.split(".").pop());switch(r.type){case "boolean":case "text":case "number":{e.write("<li>",false).append(`<strong>${i}:</strong> `),this.writeContentSnippet(e,r,n),e.append("</li>").newLine();break}default:e.write("<li>").indent().write(`<strong>${i}</strong>`),this.writeContentSnippet(e,r,n),e.outdent().write("</li>");break}}static isInline(e){return ["number","text","boolean"].includes(e.type)}static escapeEntities(e){return e.replace(/([&<>])/g,t=>({"&":"&","<":"<",">":">"})[t]??t)}createWriter(){return new Me(this.options.indentationSize)}};var Bn=class o extends qe{constructor({bundlers:e,...t}){super(t),this.bundlers=e;}async generateSlotExampleFiles(e,t){let{configuration:n}=t,[r,i,a]=await Promise.all([this.isTypeScriptProject(),this.detectBundler(),this.workspaceApi.getApplication({organizationSlug:n.organization,workspaceSlug:n.workspace,applicationSlug:n.applications.development})]);if(a===null)throw new ee(`Development application ${n.applications.development} not found.`,{reason:"not_found"});let s=this.fileSystem.joinPaths(t.configuration.paths.examples,e.slug),c=new Qn({fileSystem:this.fileSystem,language:r?"typescript":"javascript",appId:a.publicId,fallbackContent:i===null?o.extractFallbackContent(e.content[t.configuration.defaultLocale],e.resolvedDefinition):void 0,containerId:"slot",slotPath:this.fileSystem.joinPaths(s,`slot.${r?"ts":"js"}`),pagePath:this.fileSystem.joinPaths(s,"index.html")}).generate({id:e.slug,version:e.version.major,definition:e.resolvedDefinition});return Promise.resolve(c.files)}static extractFallbackContent(e,t){switch(e.type){case "text":case "boolean":case "number":return e.value.type==="static"?e.value.value:e.value.default!==void 0?e.value.default:null;case "list":return e.items.map(n=>o.extractFallbackContent(n,t.items));case "structure":{let n=t,r={};for(let[i,a]of St(n.attributes)){if(a.private===true)continue;let s=o.extractFallbackContent(e.attributes[i],n.attributes[i].type);(a.optional!==true||s!==null)&&(r[i]=s);}return r}}}async detectBundler(){for(let e of this.bundlers)if(await this.packageManager.hasDirectDependency(e))return Promise.resolve(e);return Promise.resolve(null)}getInstallationPlan(e){return Promise.resolve({tasks:[],dependencies:["@croct/plug"],configuration:e.configuration})}};var Fe=class o{constructor(e,t){this.fileSystem=e,this.path=t;}getName(){return this.fileSystem.getBaseName(this.path)}exists(){return this.fileSystem.exists(this.path)}async hasVariable(e){let t=await this.read();if(t==="")return false;let n=o.escapeRegex(e);return new RegExp(`^${n}\\s*=`,"m").test(t)}async setVariables(e){let t=await this.read();try{for(let[n,r]of Object.entries(e))await this.setVariable(n,r);}catch(n){throw await this.write(t),n}}async setVariable(e,t){let n=await this.read(),r=o.escapeRegex(e);if(n==="")return this.write(`${e}=${t}`);let i=n.replace(new RegExp(`${r}\\s*=\\s*((?!['"\`]).*$|\`(?:\\.|[^\`])*\`|'(?:\\.|[^'])*'|"(?:\\.|[^"])*")`,"m"),`${e}=${t}`);return i!==n?this.write(i):this.write(`${n}${n.endsWith(`
|
|
94
105
|
`)?"":`
|
|
95
|
-
`}${e}=${t}`)}async write(e){await this.fileSystem.writeTextFile(this.path,e,{overwrite:true});}async read(){return await this.exists()?this.fileSystem.readTextFile(this.path):""}static escapeRegex(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}};var It=class o{constructor({fileSystem:e,...t}){this.options=t,this.fileSystem=e;}generate(e){let t=o.replaceVariables(this.options.slotFilePath,e.id),n=o.replaceVariables(this.options.slotComponentName,e.id);return {files:[this.generatePageFile(e,{name:n,path:t,importPath:o.replaceVariables(this.options.slotImportPath,e.id),definition:e}),this.generateSlotFile(e,t,n)]}}generatePageFile(e,t){let n=this.createWriter(),r=o.replaceVariables(this.options.pageFilePath,e.id),i=o.replaceVariables(this.options.pageComponentName,e.id);return this.writePageSnippet(n,i,t),{path:r,language:this.options.language,code:n.toString()}}generateSlotFile(e,t,n){let r=this.createWriter();return this.writeSlotSnippet(r,e,n),{path:t,language:this.options.language,code:r.toString()}}writePageSnippet(e,t,n){this.writePageHeader(e,n),e.newLine(),this.writePageSignature(e,t),e.indent().write("return (").indent(),this.hasSuspenseBoundary()&&e.write('<Suspense fallback="\u2728 Personalizing...">').indent(),this.writeSlotRendering(e,n.name),this.hasSuspenseBoundary()&&e.outdent().write("</Suspense>"),e.outdent().write(");").outdent().write("}",false);}writeSlotRendering(e,t){e.write(`<${t} />`);}writePageSignature(e,t){e.write(this.options.language==="tsx"?`export default function ${t}(): ReactElement {`:`export default function ${t}() {`);}writePageHeader(e,t){switch(this.options.language){case "jsx":this.hasSuspenseBoundary()&&e.write("import {Suspense} from 'react';");break;case "tsx":e.write(this.hasSuspenseBoundary()?"import {type ReactElement, Suspense} from 'react';":"import type {ReactElement} from 'react';");break}e.write(`import ${t.name} from '${t.importPath}';`);}writeSlotSnippet(e,t,n){this.writeSlotHeader(e,t),this.writeSlotSignature(e,t,n),e.indent(),this.writeSlotFetch(e,t),e.write("return (").indent(),this.writeRenderingSnippet(e,t.definition,this.options.contentVariable),e.outdent().write(");").outdent().write("};");}writeSlotSignature(e,t,n){e.write(`export default ${this.isSlotFetchAsync()?"async ":""}function ${n}`,false),this.appendSlotParams(e,t),this.options.language==="tsx"&&e.append(`: ${this.isSlotFetchBlocking()?"Promise<ReactElement>":"ReactElement"}`),e.write(" {");}appendSlotParams(e,t){e.append("()");}writeRenderingSnippet(e,t,n){switch(t.type){case "number":case "text":e.append(`{${n}}`);break;case "boolean":t.label!==void 0?e.append(`{${n} ? `).appendValue(t.label.true??"Yes",{delimiter:"'"}).append(" : ").appendValue(t.label.false??"No",{delimiter:"'"}).append("}"):e.append(`{${n} ? 'Yes' : 'No'}`);break;case "list":{let r=t.itemLabel!==void 0?ht(t.itemLabel):"item";e.write("<ol>").indent().write(`{${n}.map((${r}, index) => (`).indent().write("<li key={index}>").indent();let i=o.isInline(t.items);i&&e.appendIndentation(),this.writeRenderingSnippet(e,t.items,r),i&&e.newLine(),e.outdent().write("</li>").outdent().write("))}").outdent().write("</ol>");break}case "structure":e.write("<ul>").indent();for(let[r,i]of St(t.attributes))i.private!==true&&(i.optional===true&&(e.write(`{${n}.${r} && (`),e.indent()),this.writeAttributeSnippet(e,{name:r,...i},n),i.optional===true&&(e.outdent(),e.write(")}")));e.outdent().write("</ul>");break;case "union":{let r=!n.includes(".");r&&e.write("<>").indent();for(let[i,a]of Object.entries(t.types))e.write(`{${n}._type === '${i}' && (`).indent(),this.writeRenderingSnippet(e,a,n),e.outdent().write(")}");r&&e.outdent().write("</>");break}}}writeAttributeSnippet(e,t,n){let r=t.type,i=o.escapeEntities(t.label??Qn(t.name));switch(r.type){case "boolean":case "text":case "number":{e.write("<li>",false).append(`<strong>${i}:</strong> `),this.writeRenderingSnippet(e,r,`${n}.${t.name}`),e.append("</li>").newLine();break}default:e.write("<li>").indent().write(`<strong>${i}</strong>`),this.writeRenderingSnippet(e,r,`${n}.${t.name}`),e.outdent().write("</li>");break}}static escapeEntities(e){return e.replace(/([&"<>])/g,t=>({"&":"&",'"':""","<":"<",">":">"})[t]??t)}createWriter(){return new Me(this.options.indentationSize)}static replaceVariables(e,t){return e.replace(/%name%/g,o.formatName(t,true)).replace(/%slug%/g,Is(t))}static formatName(e,t=false){return Me.formatName(e,t)}static isInline(e){return ["number","text","boolean"].includes(e.type)}};var xt=class extends It{writeSlotHeader(e){switch(this.options.language){case "jsx":e.write("import {useContent} from '@croct/plug-react';");break;case "tsx":e.write("import type {ReactElement} from 'react';"),e.write("import {useContent} from '@croct/plug-react';");break}e.newLine();}writeSlotFetch(e,t){let n=this.options.contentVariable;e.write(`const ${n} = useContent('${t.id}@${t.version}');`).newLine();}isSlotFetchAsync(){return false}isSlotFetchBlocking(){return false}hasSuspenseBoundary(){return false}};var Xn=class o extends He{constructor(e){super(e),this.codemod=e.codemod,this.bundlers=e.bundlers,this.importResolver=e.importResolver;}async generateSlotExampleFiles(e,t){let n=await this.isTypeScriptProject(),r=this.fileSystem.joinPaths(t.configuration.paths.components,`%slug%${n?".tsx":".jsx"}`),i=this.fileSystem.joinPaths(t.configuration.paths.examples,`%slug%-example${n?".tsx":".jsx"}`);return new xt({fileSystem:this.fileSystem,language:await this.isTypeScriptProject()?"tsx":"jsx",contentVariable:"content",slotImportPath:await this.importResolver.getImportPath(r,this.fileSystem.getDirectoryName(i)),slotFilePath:r,slotComponentName:"%name%",pageFilePath:i,pageComponentName:"%name%Example"}).generate({id:e.slug,version:e.version.major,definition:e.resolvedDefinition}).files}async getInstallationPlan(e){let{configuration:t}=e,n=await this.getProjectInfo();return {dependencies:["@croct/plug-react"],tasks:this.getInstallationTasks({...e,project:n}),configuration:t}}async getProjectInfo(){let e="src",t=await this.getEnvVarProperty(),n=this.projectDirectory.get();return {typescript:await this.isTypeScriptProject(),sourceDirectory:e,provider:{file:await this.locateFile(...["App","main","index"].flatMap(r=>["js","jsx","ts","tsx"].map(i=>`${r}.${i}`)).map(r=>this.fileSystem.joinPaths(e,r)))},env:t===null?void 0:{property:t,productionFile:new je(this.fileSystem,this.fileSystem.joinPaths(n,".env.production")),developmentFile:new je(this.fileSystem,this.fileSystem.joinPaths(n,".env.development"))}}}getInstallationTasks(e){let t=[],n=e.project.env,{configuration:r}=e,i=null,a=()=>(i===null&&(i=Promise.all([this.workspaceApi.getApplication({organizationSlug:r.organization,workspaceSlug:r.workspace,applicationSlug:r.applications.development}),r.applications.production===void 0?null:this.workspaceApi.getApplication({organizationSlug:r.organization,workspaceSlug:r.workspace,applicationSlug:r.applications.production})]).then(([s,p])=>s===null?Promise.reject(new B(`Development application ${r.applications.development} not found`,{reason:"not_found"})):{development:s.publicId,production:p?.publicId})),i);if(n!==void 0){let{developmentFile:s,productionFile:p,property:c}=n,l=c.split(".").pop();t.push({title:"Setup environment variables",task:async m=>{m.update("Setting up environment variables");try{let f=await a();await Promise.all([s.setVariable(l,f.development),f.production===void 0?Promise.resolve():p.setVariable(l,f.production)]),m.confirm("Environment variables updated");}catch(f){m.alert("Failed to update environment variables",d.formatMessage(f));}}});}return t.push({title:"Configure provider",task:async s=>{s.update("Configuring provider");let p=e.project.provider.file;try{p===null?s.alert("No root component found"):(s.update("Configuring provider"),await this.installProvider(p,{props:{appId:o.getAppIdProperty(await a(),n?.property)}}),s.confirm("Provider configured"));}catch(c){s.alert("Failed to install provider",d.formatMessage(c));}}}),t}async installProvider(e,t){await this.codemod.provider.apply(this.fileSystem.joinPaths(this.projectDirectory.get(),e),t);}async getEnvVarProperty(){for(let e of this.bundlers)if(await this.packageManager.hasDirectDependency(e.package))return `${e.prefix}CROCT_APP_ID`;return null}static getAppIdProperty(e,t){return t!==void 0?{type:"reference",path:t.split(".")}:e.production===void 0?{type:"literal",value:e.development}:{type:"ternary",condition:{operator:"===",left:{type:"reference",path:["process","env","NODE_ENV"]},right:{type:"literal",value:"production"}},consequent:{type:"literal",value:e.production},alternate:{type:"literal",value:e.development}}}};var Ge=class o extends d{constructor(e,t={}){super(e,t),Object.setPrototypeOf(this,o.prototype);}},er=class o extends Ge{constructor(e){super(e),Object.setPrototypeOf(this,o.prototype);}};function Ke(o,e,t){try{return parse$1(o,{...t,sourceType:"module",plugins:[...e,...t?.plugins??[]]})}catch{throw new er("The source code contains syntax errors.")}}function xs(o){let e={locales:Array()},t;try{t=Ke(o,["jsx","typescript"]);}catch{return {i18n:e}}return traverse(t,{ObjectProperty:n=>{if(Oa(n.node.key)!=="i18n")return n.skip();let r=n.node.value;if(!g.isObjectExpression(r))return n.stop();for(let i of r.properties)if(g.isObjectProperty(i)&&Oa(i.key)==="locales"){let a=i.value;if(g.isArrayExpression(a))for(let s of a.elements)s!==null&&g.isStringLiteral(s)&&e.locales.push(s.value);}else if(g.isObjectProperty(i)&&Oa(i.key)==="defaultLocale"){let a=i.value;a!==null&&g.isStringLiteral(a)&&(e.defaultLocale=a.value);}return n.stop()}}),{i18n:e}}function Oa(o){return g.isIdentifier(o)?o.name:g.isStringLiteral(o)?o.value:null}var tr=class extends It{constructor({fileSystem:e,router:t,...n}){super({fileSystem:e,contentVariable:t==="app"?"content":"props",...n}),this.nextOptions={router:t};}writeSlotHeader(e,t){switch(this.options.language){case "jsx":this.nextOptions.router==="app"&&(e.write("import {fetchContent} from '@croct/plug-next/server';"),e.newLine());break;case "tsx":if(e.write("import type {ReactElement} from 'react';"),this.nextOptions.router==="app"&&e.write("import {fetchContent} from '@croct/plug-next/server';"),this.nextOptions.router==="page"){e.write("import type {SlotContent} from '@croct/plug-next';"),e.newLine();let n=Me.formatName(t.id,true);e.write(`export type ${n}Props = SlotContent<'${t.id}@${t.version}'>;`);}e.newLine();break}}writeSlotFetch(e,t){if(this.nextOptions.router==="app"){let n=this.options.contentVariable;e.write(`const {${n}} = await fetchContent('${t.id}@${t.version}');`).newLine();}}writePageHeader(e,t){if(this.nextOptions.router==="app")return super.writePageHeader(e,t);let n=`${t.definition.id}@${t.definition.version}`;switch(this.options.language){case "jsx":e.write("import {fetchContent} from '@croct/plug-next/server';").write(`import ${t.name} from '${t.importPath}';`),e.newLine().write("export async function getServerSideProps(context) {").indent().write("return {").indent().write(`props: await fetchContent('${n}', {`).indent().write("route: context,").outdent().write("}),").outdent().write("}").outdent().write("}");break;case "tsx":e.write("import type {ReactElement} from 'react';"),e.write("import type {GetServerSideProps} from 'next';"),e.write("import {fetchContent} from '@croct/plug-next/server';"),e.write(`import ${t.name}, {type ${t.name}Props} from '${t.importPath}';`),e.newLine().write("type PageProps = {").indent().write(`content: ${t.name}Props,`).outdent().write("};").newLine().write("export const getServerSideProps: ",false).write("GetServerSideProps<PageProps> = async context => ({").indent().write(`props: await fetchContent('${n}', {`).indent().write("route: context,").outdent().write("}),").outdent().write("});");break}}writePageSignature(e,t){switch(this.nextOptions.router){case "app":super.writePageSignature(e,t);break;case "page":{e.write(this.options.language==="tsx"?"export default function Page({content}: PageProps): ReactElement {":"export default function Page({content}) {");break}}}appendSlotParams(e,t){if(this.nextOptions.router!=="page")return super.appendSlotParams(e,t);let n=Me.formatName(t.id,true),r=this.options.contentVariable;if(this.options.language==="jsx"){e.append(`(${r})`);return}e.append(`(${r}: ${n}Props)`);}writeSlotRendering(e,t){switch(this.nextOptions.router){case "app":super.writeSlotRendering(e,t);break;case "page":{e.write(`<${t} {...content} />`);break}}}isSlotFetchAsync(){return this.nextOptions.router==="app"}isSlotFetchBlocking(){return this.nextOptions.router==="app"}hasSuspenseBoundary(){return false}};var te=class o extends d{constructor(e,t=[],n={}){super(e,{...n,details:n.details??t.map(r=>r.detail??r.title)}),Object.setPrototypeOf(this,o.prototype),this.problems=t;}isErrorType(e){return this.problems.some(t=>t.type===e)}isAccessDenied(e){return this.problems.some(t=>t.type==="https://croct.help/api/admin#access-denied"&&(e===void 0||t.reason===e))}};var Ie=(t=>(t.DEVELOPMENT="DEVELOPMENT",t.PRODUCTION="PRODUCTION",t))(Ie||{});(n=>{function o(r){switch(r){case "DEVELOPMENT":return "Development";case "PRODUCTION":return "Production"}}n.getLabel=o;function e(){return Object.values(n).filter(r=>typeof r=="string")}n.all=e;function t(r){let i=r.toUpperCase();if(!n.all().includes(i))throw new Error(`Invalid environment value "${r}".`);return i}n.fromValue=t;})(Ie||={});var Ae=(n=>(n.READ_RESOURCES="RESOURCE_READ_ACCESS",n.ISSUE_TOKEN="TOKEN_ISSUE",n.EXPORT_DATA="DATA_EXPORT",n))(Ae||{});(n=>{function o(r){switch(r){case "RESOURCE_READ_ACCESS":return "Read resources";case "TOKEN_ISSUE":return "Issue tokens";case "DATA_EXPORT":return "Export data"}}n.getLabel=o;function e(){return Object.values(n).filter(r=>typeof r=="string")}n.all=e;function t(r){let i=r.toUpperCase();if(!n.all().includes(i))throw new Error(`Invalid permission value "${r}".`);return i}n.fromValue=t;})(Ae||={});var nr=class extends He{constructor(e){super(e),this.codemod=e.codemod,this.importResolver=e.importResolver,this.userApi=e.userApi,this.applicationApi=e.applicationApi;}async generateSlotExampleFiles(e,t){let[n,r,i]=await Promise.all([this.detectRouter(),this.isTypeScriptProject(),this.isFallbackMode()]),a=await this.isTypeScriptProject(),s=this.fileSystem.joinPaths(t.configuration.paths.components,`%slug%${a?".tsx":".jsx"}`),p=this.fileSystem.joinPaths(t.configuration.paths.examples,"%slug%"),c=await this.importResolver.getImportPath(s,p),l=r?"tsx":"jsx";return (i?new xt({fileSystem:this.fileSystem,language:l,contentVariable:"content",slotImportPath:c,slotFilePath:s,slotComponentName:"%name%",pageFilePath:this.fileSystem.joinPaths(p,`index${a?".tsx":".jsx"}`),pageComponentName:"Page"}):new tr({fileSystem:this.fileSystem,router:n==="page"?"page":"app",language:l,slotImportPath:c,slotFilePath:s,slotComponentName:"%name%",pageFilePath:this.fileSystem.joinPaths(p,`${n==="page"?"index":"page"}${r?".tsx":".jsx"}`),pageComponentName:"Page"})).generate({id:e.slug,version:e.version.major,definition:e.resolvedDefinition}).files}async getInstallationPlan(e){let{configuration:t,output:n}=e,[{i18n:r},i]=await Promise.all([this.getConfig(),this.getProjectInfo()]);i.fallbackMode&&n.announce({semantics:"warning",title:"Fallback mode",message:"Next.js SDK requires version 13 or newer, so React SDK will be installed instead."});let a=t.locales.filter(c=>r.locales.includes(c)||c===t.defaultLocale),s=a.length>0?a:r.locales,p=r.defaultLocale!==void 0&&s.includes(r.defaultLocale)?r.defaultLocale:t.defaultLocale;return {dependencies:[i.fallbackMode?"@croct/plug-react":"@croct/plug-next"],tasks:this.getInstallationTasks({...e,project:i}),configuration:{...t,locales:s,defaultLocale:p,paths:{...t.paths,examples:i.pageDirectory}}}}async getProjectInfo(){let[e,t,n]=await Promise.all([this.isTypeScriptProject(),this.getPageDirectory(),this.isFallbackMode()]),r={typescript:e,router:await this.detectRouter(t),sourceDirectory:t.startsWith("src")?"src":".",pageDirectory:t},[i,a]=await Promise.all([this.locateFile(...["middleware.js","middleware.ts"].map(c=>this.fileSystem.joinPaths(r.sourceDirectory,c))),this.locateFile(...(r.router==="app"?[this.fileSystem.joinPaths("app","layout.jsx"),this.fileSystem.joinPaths("app","layout.tsx")]:[this.fileSystem.joinPaths("pages","_app.jsx"),this.fileSystem.joinPaths("pages","_app.tsx")]).map(c=>this.fileSystem.joinPaths(r.sourceDirectory,c)))]),s=r.typescript?"ts":"js",p=this.projectDirectory.get();return {...r,fallbackMode:n,env:{localFile:new je(this.fileSystem,this.fileSystem.joinPaths(p,".env.local")),developmentFile:new je(this.fileSystem,this.fileSystem.joinPaths(p,".env.development")),productionFile:new je(this.fileSystem,this.fileSystem.joinPaths(p,".env.production"))},middleware:{file:i??this.fileSystem.joinPaths(r.sourceDirectory,`middleware.${s}`)},provider:{file:a??(r.router==="app"?this.fileSystem.joinPaths("app",`layout.${s}x`):this.fileSystem.joinPaths("pages",`_app.${s}x`))}}}getInstallationTasks(e){let t=[];return e.project.fallbackMode||t.push({title:"Configure middleware",task:async n=>{n.update("Configuring middleware");try{await this.updateCode(this.codemod.middleware,e.project.middleware.file),n.confirm("Middleware configured");}catch(r){n.alert("Failed to install middleware",d.formatMessage(r));}}}),t.push({title:"Configure provider",task:async n=>{n.update("Configuring provider");try{await this.installProvider({...e,notifier:n}),n.confirm("Provider configured");}catch(r){n.alert("Failed to install provider",d.formatMessage(r));}}}),t.push({title:"Setup environment variables",task:async n=>{n.update("Setting up environment variables");try{await this.updateEnvVariables({...e,notifier:n}),n.confirm("Environment variables updated");}catch(r){n.alert("Failed to update .env.local",d.formatMessage(r));}}}),t}installProvider(e){return this.updateCode(this.getProviderCodemod(e),e.project.provider.file,{typescript:e.project.typescript})}getProviderCodemod(e){return e.project.fallbackMode?this.codemod.fallbackProvider:e.project.router==="app"?this.codemod.appRouterProvider:this.codemod.pageRouterProvider}async updateCode(e,t,n){await e.apply(this.fileSystem.joinPaths(this.projectDirectory.get(),t),n);}async updateEnvVariables(e){let{project:{env:t},configuration:n,notifier:r}=e;if(!await t.localFile.hasVariable("CROCT_API_KEY")){r.update("Loading information");let[i,a,s]=await Promise.all([this.userApi.getUser(),this.workspaceApi.getApplication({organizationSlug:n.organization,workspaceSlug:n.workspace,applicationSlug:n.applications.development}),n.applications.production===void 0?null:this.workspaceApi.getApplication({organizationSlug:n.organization,workspaceSlug:n.workspace,applicationSlug:n.applications.production})]);if(a===null)throw new B(`Development application \`${n.applications.development}\` not found.`,{reason:"not_found"});r.update("Creating API key");let p;try{p=await this.applicationApi.createApiKey({organizationSlug:n.organization,workspaceSlug:n.workspace,applicationSlug:a.slug,name:`${i.username} CLI`,permissions:["TOKEN_ISSUE"]});}catch(c){throw c instanceof d?new B(c instanceof te&&c.isAccessDenied()?"Your user does not have permission to create an API key":c.message,c.help):c}await t.localFile.setVariables({CROCT_API_KEY:p.secret}),await Promise.all([t.developmentFile.setVariables({NEXT_PUBLIC_CROCT_APP_ID:a.publicId}),s===null?Promise.resolve():t.productionFile.setVariables({NEXT_PUBLIC_CROCT_APP_ID:s.publicId})]);}}async detectRouter(e){return (e??await this.getPageDirectory()).endsWith("pages")?"page":"app"}async getPageDirectory(){return await this.locateFile("app",this.fileSystem.joinPaths("src","app"),"pages",this.fileSystem.joinPaths("src","pages"))??"app"}async getConfig(){let e=["js","mjs","ts","mts"].map(n=>`next.config.${n}`),t=await this.readFile(...e).catch(()=>null);return t===null?{i18n:{locales:[],defaultLocale:""}}:xs(t)}async isFallbackMode(){return !await this.packageManager.hasDirectDependency("next",">=13")}};var rt=(n=>(n.NEXTJS="nextjs",n.REACT="react",n.JAVASCRIPT="javascript",n))(rt||{});(e=>{function o(t){switch(t){case "nextjs":return "Next.js";case "react":return "React";case "javascript":return "JavaScript"}}e.getName=o;})(rt||={});var rr=class{constructor(e){this.config=e;}async execute(e){let{configurationManager:t,platformProvider:n,sdkProvider:r,io:{output:i}}=this.config;if(e.override!==true&&await t.isInitialized())throw new d("Configuration file already exists, specify `override` to reconfigure.",{reason:"precondition"});let a=await n.get(),s=a!==null?`${rt.getName(a)} project`:"project";i.break(),i.announce({semantics:"neutral",title:"\u{1F44B} Welcome to Croct",alignment:"center",message:`Let's configure your ${s} to get started!`}),i.break();let p=await this.getOrganization({new:e.new==="organization"},e.organization);if(p===null)throw new d(`Organization not found: ${e.organization}`,{reason:"invalid_input"});let c=await this.getWorkspace({organization:p,new:e.new==="workspace"},e.workspace),l={organization:p,workspace:c,platform:a??"javascript",new:e.new==="application"},m=await this.getApplication({...l,environment:"DEVELOPMENT"},e.devApplication),f={organization:p.slug,workspace:c.slug,applications:{development:m.slug},defaultLocale:c.defaultLocale,locales:c.locales,slots:{},components:{},paths:{components:"",examples:""}},b=c.website??p.website??void 0;if(b!==void 0&&new URL(b).hostname!=="localhost"){let w=await this.getApplication({...l,environment:"PRODUCTION"},e.prodApplication);f.applications.production=w.slug;}let A=await r.get();if(A===null){await t.update({...f,paths:{components:"components",examples:"examples"}}),i.warn("No suitable SDK found, skipping project configuration");return}await t.update(await this.configure(A,f));}async getOrganization(e,t){let{form:n,api:r}=this.config,i=t===void 0?await n.organization.handle(e):await r.user.getOrganization(t).catch(a=>{if(a instanceof te&&a.isAccessDenied())return null;throw a});if(i===null)throw new d(`No organization found with slug "${t}".`,{reason:"invalid_input"});return i}async getWorkspace(e,t){let{form:n,api:r}=this.config,i=t===void 0?await n.workspace.handle(e):await r.organization.getWorkspace({organizationSlug:e.organization.slug,workspaceSlug:t}).catch(a=>{if(a instanceof te&&a.isAccessDenied())return null;throw a});if(i===null)throw new d(`No workspace found with slug "${t}".`,{reason:"invalid_input"});return i}async getApplication(e,t){let{form:n,api:r}=this.config,i=t===void 0?await n.application.handle(e):await r.workspace.getApplication({organizationSlug:e.organization.slug,workspaceSlug:e.workspace.slug,applicationSlug:t}).catch(a=>{if(a instanceof te&&a.isAccessDenied())return null;throw a});if(i===null)throw new d(`No application found with slug "${t}".`,{reason:"invalid_input"});if(i.environment!==e.environment)throw new d(`No ${Ie.getLabel(e.environment).toUpperCase()} application found with slug "${t}".`,{reason:"invalid_input"});return i}async getSlots(e,t){let{api:n,io:{output:r}}=this.config,i=r.notify("Loading slots"),a=await n.workspace.getSlots({organizationSlug:e,workspaceSlug:t});return i.stop(),Object.fromEntries(a.map(s=>[s.slug,`${s.version.major}`]))}async configure(e,t){let{skipConfirmation:n}=this.config;return e.setup({input:this.config.io.input===void 0||await n.get()?void 0:this.config.io.input,output:this.config.io.output,configuration:{...t,slots:await this.getSlots(t.organization,t.workspace)}})}};var ir=class{constructor(e){this.authenticator=e.authenticator;}async execute(e){await this.authenticator.logout(),await this.authenticator.login(e);}};var Bt=class{constructor({output:e,authenticator:t}){this.authenticator=t,this.output=e;}async execute(){await this.authenticator.logout(),this.output.confirm("Logged out");}};var it=class o extends d{constructor(e,t={}){super(e,{...t,reason:t.reason??"invalid_configuration"}),Object.setPrototypeOf(this,o.prototype);}};var or=class o{static{this.CONFIGURATION_SCHEMA="https://schema.croct.com/json/v1/project.json";}constructor({fileSystem:e,projectDirectory:t,validator:n}){this.fileSystem=e,this.projectDirectory=t,this.validator=n;}isInitialized(){return this.fileSystem.exists(this.getConfigurationFilePath())}async load(){let e=await this.loadConfigurationFile();if(e.configuration===null)throw new it("Project configuration not found.",{reason:"not_found",suggestions:["Run `init` command to initialize the project"]});return e.configuration}async update(e){return this.updateConfigurationFile(await this.validateConfiguration(e))}async updateConfigurationFile(e){let t=await this.loadConfigurationFile(),r=this.applyConfigurationChanges(t,e).toString({indentationCharacter:"space",object:{indentationSize:2,leadingIndentation:true,trailingIndentation:true,entryIndentation:true,colonSpacing:true,commaSpacing:true},array:{indentationSize:2,entryIndentation:true,leadingIndentation:true,trailingIndentation:true,colonSpacing:true,commaSpacing:true}});try{await this.fileSystem.writeTextFile(t.path,r,{overwrite:!0});}catch{throw new Error(`Unable to write configuration file ${t.path}.`)}return e}applyConfigurationChanges(e,t){if(e.configuration===null||e.source===null)return JsonObjectNode.of({$schema:o.CONFIGURATION_SCHEMA,...t});let n=JsonParser.parse(e.source,JsonObjectNode);return n.update({$schema:n.has("$schema")?n.get("$schema").toJSON():void 0,...t}).cast(JsonObjectNode)}async loadConfigurationFile(){let e={path:this.getConfigurationFilePath(),source:null,configuration:null},t;try{e.source=await this.fileSystem.readTextFile(e.path),t=JsonParser.parse(e.source).toJSON();}catch{return e}return t!==null&&(e.configuration=await this.validateConfiguration(t,e),e.configuration?.$schema!==void 0&&delete e.configuration?.$schema),e}getConfigurationFilePath(){return this.fileSystem.joinPaths(this.projectDirectory.get(),"croct.json")}async validateConfiguration(e,t){let n=await this.validator.validate(e);if(!n.valid){let r=n.violations[0];throw new it(r.message,{details:[...t!==void 0?[`File: file://${t.path.replace(/\\/g,"/")}`]:[],`Violation path: ${r.path}`]})}return n.data}};var Yt=class{constructor(e){this.configuration=e;}async execute(e,...[t]){let{tokenProvider:n,endpoint:r}=this.configuration,i=n!==void 0?await n.getToken():null,a=await fetch(r,{method:"POST",headers:{accept:"application/json","content-type":"application/json",...i!==null?{Authorization:`Bearer ${i}`}:{}},body:JSON.stringify({query:e,variables:t})});return a.json().then(s=>{let{data:p,errors:c}=s;if(c!==void 0)throw new te(c[0].message.replace(/"/g,"`"),c.map(({extensions:l})=>({...l,detail:l.detail?.replace(/"/g,"`")})));return {data:p,headers:a.headers}})}};function Ma(o,e){return o.slice(0,o.indexOf("-",e-1)===e-1?e-1:e)}function*Xt({baseName:o,alwaysSuffixed:e=false}){let t=o.normalize("NFD").toLowerCase().replace(/[^a-z ]/g,"").trim().split(/\s+/);t.length===0&&t.push(String.fromCharCode(97+Math.floor(Math.random()*26))+Math.random().toString(36).substring(2,14));let n=t.slice(0,2).join("-");for(e||(yield Ma(n,30),n.length<29&&t.length>2&&(yield Ma(t.join("-"),30)));;){let r=Math.floor(Math.random()*1e4).toString();yield `${Ma(n,30-r.length-1)}-${r}`;}}function ot(o){let{baseName:e,query:t,client:n,alwaysSuffixed:r}=o;return kl({baseName:e,alwaysSuffixed:r},async i=>{let a=[i.next().value,i.next().value,i.next().value],{data:{checkAvailability:s}}=await n.execute(t,{...o.variables??{},slugFirstOption:a[0],slugSecondOption:a[1],slugThirdOption:a[2]}),p=[s.slugFirstOption,s.slugSecondOption,s.slugThirdOption];return a.find((c,l)=>p[l])??null})}async function kl(o,e){let t=Xt(o),n;do n=await e(t);while(n===null);return n}var E=class extends String{constructor(e,t){super(e),this.value=e,this.__meta__=t;}toString(){return this.value}},ws=new E(`
|
|
106
|
+
`}${e}=${t}`)}async write(e){await this.fileSystem.writeTextFile(this.path,e,{overwrite:true});}async read(){return await this.exists()?this.fileSystem.readTextFile(this.path):""}static escapeRegex(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}};var It=class o{constructor({fileSystem:e,...t}){this.options=t,this.fileSystem=e;}generate(e){let t=o.replaceVariables(this.options.slotFilePath,e.id),n=o.replaceVariables(this.options.slotComponentName,e.id);return {files:[this.generatePageFile(e,{name:n,path:t,importPath:o.replaceVariables(this.options.slotImportPath,e.id),definition:e}),this.generateSlotFile(e,t,n)]}}generatePageFile(e,t){let n=this.createWriter(),r=o.replaceVariables(this.options.pageFilePath,e.id),i=o.replaceVariables(this.options.pageComponentName,e.id);return this.writePageSnippet(n,i,t),{path:r,language:this.options.language,code:n.toString()}}generateSlotFile(e,t,n){let r=this.createWriter();return this.writeSlotSnippet(r,e,n),{path:t,language:this.options.language,code:r.toString()}}writePageSnippet(e,t,n){this.writePageHeader(e,n),e.newLine(),this.writePageSignature(e,t),e.indent().write("return (").indent(),this.hasSuspenseBoundary()&&e.write('<Suspense fallback="\u2728 Personalizing...">').indent(),this.writeSlotRendering(e,n.name),this.hasSuspenseBoundary()&&e.outdent().write("</Suspense>"),e.outdent().write(");").outdent().write("}",false);}writeSlotRendering(e,t){e.write(`<${t} />`);}writePageSignature(e,t){e.write(this.options.language==="tsx"?`export default function ${t}(): ReactElement {`:`export default function ${t}() {`);}writePageHeader(e,t){switch(this.options.language){case "jsx":this.hasSuspenseBoundary()&&e.write("import {Suspense} from 'react';");break;case "tsx":e.write(this.hasSuspenseBoundary()?"import {type ReactElement, Suspense} from 'react';":"import type {ReactElement} from 'react';");break}e.write(`import ${t.name} from '${t.importPath}';`);}writeSlotSnippet(e,t,n){this.writeSlotHeader(e,t),this.writeSlotSignature(e,t,n),e.indent(),this.writeSlotFetch(e,t),e.write("return (").indent(),this.writeRenderingSnippet(e,t.definition,this.options.contentVariable),e.outdent().write(");").outdent().write("};");}writeSlotSignature(e,t,n){e.write(`export default ${this.isSlotFetchAsync()?"async ":""}function ${n}`,false),this.appendSlotParams(e,t),this.options.language==="tsx"&&e.append(`: ${this.isSlotFetchBlocking()?"Promise<ReactElement>":"ReactElement"}`),e.write(" {");}appendSlotParams(e,t){e.append("()");}writeRenderingSnippet(e,t,n){switch(t.type){case "number":case "text":e.append(`{${n}}`);break;case "boolean":t.label!==void 0?e.append(`{${n} ? `).appendValue(t.label.true??"Yes",{delimiter:"'"}).append(" : ").appendValue(t.label.false??"No",{delimiter:"'"}).append("}"):e.append(`{${n} ? 'Yes' : 'No'}`);break;case "list":{let r=t.itemLabel!==void 0?ht(t.itemLabel):"item";e.write("<ol>").indent().write(`{${n}.map((${r}, index) => (`).indent().write("<li key={index}>").indent();let i=o.isInline(t.items);i&&e.appendIndentation(),this.writeRenderingSnippet(e,t.items,r),i&&e.newLine(),e.outdent().write("</li>").outdent().write("))}").outdent().write("</ol>");break}case "structure":e.write("<ul>").indent();for(let[r,i]of St(t.attributes))i.private!==true&&(i.optional===true&&(e.write(`{${n}.${r} && (`),e.indent()),this.writeAttributeSnippet(e,{name:r,...i},n),i.optional===true&&(e.outdent(),e.write(")}")));e.outdent().write("</ul>");break;case "union":{let r=!n.includes(".");r&&e.write("<>").indent();for(let[i,a]of Object.entries(t.types))e.write(`{${n}._type === '${i}' && (`).indent(),this.writeRenderingSnippet(e,a,n),e.outdent().write(")}");r&&e.outdent().write("</>");break}}}writeAttributeSnippet(e,t,n){let r=t.type,i=o.escapeEntities(t.label??Jn(t.name));switch(r.type){case "boolean":case "text":case "number":{e.write("<li>",false).append(`<strong>${i}:</strong> `),this.writeRenderingSnippet(e,r,`${n}.${t.name}`),e.append("</li>").newLine();break}default:e.write("<li>").indent().write(`<strong>${i}</strong>`),this.writeRenderingSnippet(e,r,`${n}.${t.name}`),e.outdent().write("</li>");break}}static escapeEntities(e){return e.replace(/([&"<>])/g,t=>({"&":"&",'"':""","<":"<",">":">"})[t]??t)}createWriter(){return new Me(this.options.indentationSize)}static replaceVariables(e,t){return e.replace(/%name%/g,o.formatName(t,true)).replace(/%slug%/g,bs(t))}static formatName(e,t=false){return Me.formatName(e,t)}static isInline(e){return ["number","text","boolean"].includes(e.type)}};var xt=class extends It{writeSlotHeader(e){switch(this.options.language){case "jsx":e.write("import {useContent} from '@croct/plug-react';");break;case "tsx":e.write("import type {ReactElement} from 'react';"),e.write("import {useContent} from '@croct/plug-react';");break}e.newLine();}writeSlotFetch(e,t){let n=this.options.contentVariable;e.write(`const ${n} = useContent('${t.id}@${t.version}');`).newLine();}isSlotFetchAsync(){return false}isSlotFetchBlocking(){return false}hasSuspenseBoundary(){return false}};var Yn=class o extends qe{constructor(e){super(e),this.codemod=e.codemod,this.bundlers=e.bundlers,this.importResolver=e.importResolver;}async generateSlotExampleFiles(e,t){let n=await this.isTypeScriptProject(),r=this.fileSystem.joinPaths(t.configuration.paths.components,`%slug%${n?".tsx":".jsx"}`),i=this.fileSystem.joinPaths(t.configuration.paths.examples,`%slug%-example${n?".tsx":".jsx"}`);return new xt({fileSystem:this.fileSystem,language:await this.isTypeScriptProject()?"tsx":"jsx",contentVariable:"content",slotImportPath:await this.importResolver.getImportPath(r,this.fileSystem.getDirectoryName(i)),slotFilePath:r,slotComponentName:"%name%",pageFilePath:i,pageComponentName:"%name%Example"}).generate({id:e.slug,version:e.version.major,definition:e.resolvedDefinition}).files}async getInstallationPlan(e){let{configuration:t}=e,n=await this.getProjectInfo();return {dependencies:["@croct/plug-react"],tasks:this.getInstallationTasks({...e,project:n}),configuration:t}}async getProjectInfo(){let e="src",t=await this.getEnvVarProperty(),n=this.projectDirectory.get();return {typescript:await this.isTypeScriptProject(),sourceDirectory:e,provider:{file:await this.locateFile(...["App","main","index"].flatMap(r=>["js","jsx","ts","tsx"].map(i=>`${r}.${i}`)).map(r=>this.fileSystem.joinPaths(e,r)))},env:t===null?void 0:{property:t,productionFile:new Fe(this.fileSystem,this.fileSystem.joinPaths(n,".env.production")),developmentFile:new Fe(this.fileSystem,this.fileSystem.joinPaths(n,".env.development"))}}}getInstallationTasks(e){let t=[],n=e.project.env,{configuration:r}=e,i=null,a=()=>(i===null&&(i=Promise.all([this.workspaceApi.getApplication({organizationSlug:r.organization,workspaceSlug:r.workspace,applicationSlug:r.applications.development}),r.applications.production===void 0?null:this.workspaceApi.getApplication({organizationSlug:r.organization,workspaceSlug:r.workspace,applicationSlug:r.applications.production})]).then(([s,p])=>s===null?Promise.reject(new ee(`Development application ${r.applications.development} not found`,{reason:"not_found"})):{development:s.publicId,production:p?.publicId})),i);if(n!==void 0){let{developmentFile:s,productionFile:p,property:c}=n,l=c.split(".").pop();t.push({title:"Setup environment variables",task:async m=>{m.update("Setting up environment variables");try{let f=await a();await Promise.all([s.setVariable(l,f.development),f.production===void 0?Promise.resolve():p.setVariable(l,f.production)]),m.confirm("Environment variables updated");}catch(f){m.alert("Failed to update environment variables",d.formatMessage(f));}}});}return t.push({title:"Configure provider",task:async s=>{s.update("Configuring provider");let p=e.project.provider.file;try{p===null?s.alert("No root component found"):(s.update("Configuring provider"),await this.installProvider(p,{props:{appId:o.getAppIdProperty(await a(),n?.property)}}),s.confirm("Provider configured"));}catch(c){s.alert("Failed to install provider",d.formatMessage(c));}}}),t}async installProvider(e,t){await this.codemod.provider.apply(this.fileSystem.joinPaths(this.projectDirectory.get(),e),t);}async getEnvVarProperty(){for(let e of this.bundlers)if(await this.packageManager.hasDirectDependency(e.package))return `${e.prefix}CROCT_APP_ID`;return null}static getAppIdProperty(e,t){return t!==void 0?{type:"reference",path:t.split(".")}:e.production===void 0?{type:"literal",value:e.development}:{type:"ternary",condition:{operator:"===",left:{type:"reference",path:["process","env","NODE_ENV"]},right:{type:"literal",value:"production"}},consequent:{type:"literal",value:e.production},alternate:{type:"literal",value:e.development}}}};var He=class o extends d{constructor(e,t={}){super(e,t),Object.setPrototypeOf(this,o.prototype);}},Xn=class o extends He{constructor(e){super(e),Object.setPrototypeOf(this,o.prototype);}};function Ge(o,e,t){try{return parse$1(o,{...t,sourceType:"module",plugins:[...e,...t?.plugins??[]]})}catch{throw new Xn("The source code contains syntax errors.")}}function Is(o){let e={locales:Array()},t;try{t=Ge(o,["jsx","typescript"]);}catch{return {i18n:e}}return traverse(t,{ObjectProperty:n=>{if(Ta(n.node.key)!=="i18n")return n.skip();let r=n.node.value;if(!g.isObjectExpression(r))return n.stop();for(let i of r.properties)if(g.isObjectProperty(i)&&Ta(i.key)==="locales"){let a=i.value;if(g.isArrayExpression(a))for(let s of a.elements)s!==null&&g.isStringLiteral(s)&&e.locales.push(s.value);}else if(g.isObjectProperty(i)&&Ta(i.key)==="defaultLocale"){let a=i.value;a!==null&&g.isStringLiteral(a)&&(e.defaultLocale=a.value);}return n.stop()}}),{i18n:e}}function Ta(o){return g.isIdentifier(o)?o.name:g.isStringLiteral(o)?o.value:null}var er=class extends It{constructor({fileSystem:e,router:t,...n}){super({fileSystem:e,contentVariable:t==="app"?"content":"props",...n}),this.nextOptions={router:t};}writeSlotHeader(e,t){switch(this.options.language){case "jsx":this.nextOptions.router==="app"&&(e.write("import {fetchContent} from '@croct/plug-next/server';"),e.newLine());break;case "tsx":if(e.write("import type {ReactElement} from 'react';"),this.nextOptions.router==="app"&&e.write("import {fetchContent} from '@croct/plug-next/server';"),this.nextOptions.router==="page"){e.write("import type {SlotContent} from '@croct/plug-next';"),e.newLine();let n=Me.formatName(t.id,true);e.write(`export type ${n}Props = SlotContent<'${t.id}@${t.version}'>;`);}e.newLine();break}}writeSlotFetch(e,t){if(this.nextOptions.router==="app"){let n=this.options.contentVariable;e.write(`const {${n}} = await fetchContent('${t.id}@${t.version}');`).newLine();}}writePageHeader(e,t){if(this.nextOptions.router==="app")return super.writePageHeader(e,t);let n=`${t.definition.id}@${t.definition.version}`;switch(this.options.language){case "jsx":e.write("import {fetchContent} from '@croct/plug-next/server';").write(`import ${t.name} from '${t.importPath}';`),e.newLine().write("export async function getServerSideProps(context) {").indent().write("return {").indent().write(`props: await fetchContent('${n}', {`).indent().write("route: context,").outdent().write("}),").outdent().write("}").outdent().write("}");break;case "tsx":e.write("import type {ReactElement} from 'react';"),e.write("import type {GetServerSideProps} from 'next';"),e.write("import {fetchContent} from '@croct/plug-next/server';"),e.write(`import ${t.name}, {type ${t.name}Props} from '${t.importPath}';`),e.newLine().write("type PageProps = {").indent().write(`content: ${t.name}Props,`).outdent().write("};").newLine().write("export const getServerSideProps: ",false).write("GetServerSideProps<PageProps> = async context => ({").indent().write(`props: await fetchContent('${n}', {`).indent().write("route: context,").outdent().write("}),").outdent().write("});");break}}writePageSignature(e,t){switch(this.nextOptions.router){case "app":super.writePageSignature(e,t);break;case "page":{e.write(this.options.language==="tsx"?"export default function Page({content}: PageProps): ReactElement {":"export default function Page({content}) {");break}}}appendSlotParams(e,t){if(this.nextOptions.router!=="page")return super.appendSlotParams(e,t);let n=Me.formatName(t.id,true),r=this.options.contentVariable;if(this.options.language==="jsx"){e.append(`(${r})`);return}e.append(`(${r}: ${n}Props)`);}writeSlotRendering(e,t){switch(this.nextOptions.router){case "app":super.writeSlotRendering(e,t);break;case "page":{e.write(`<${t} {...content} />`);break}}}isSlotFetchAsync(){return this.nextOptions.router==="app"}isSlotFetchBlocking(){return this.nextOptions.router==="app"}hasSuspenseBoundary(){return false}};var ne=class o extends d{constructor(e,t=[],n={}){super(e,{...n,details:n.details??t.map(r=>r.detail??r.title)}),Object.setPrototypeOf(this,o.prototype),this.problems=t;}isErrorType(e){return this.problems.some(t=>t.type===e)}isAccessDenied(e){return this.problems.some(t=>t.type==="https://croct.help/api/admin#access-denied"&&(e===void 0||t.reason===e))}};var xe=(t=>(t.DEVELOPMENT="DEVELOPMENT",t.PRODUCTION="PRODUCTION",t))(xe||{});(n=>{function o(r){switch(r){case "DEVELOPMENT":return "Development";case "PRODUCTION":return "Production"}}n.getLabel=o;function e(){return Object.values(n).filter(r=>typeof r=="string")}n.all=e;function t(r){let i=r.toUpperCase();if(!n.all().includes(i))throw new Error(`Invalid environment value "${r}".`);return i}n.fromValue=t;})(xe||={});var Ee=(n=>(n.READ_RESOURCES="RESOURCE_READ_ACCESS",n.ISSUE_TOKEN="TOKEN_ISSUE",n.EXPORT_DATA="DATA_EXPORT",n))(Ee||{});(n=>{function o(r){switch(r){case "RESOURCE_READ_ACCESS":return "Read resources";case "TOKEN_ISSUE":return "Issue tokens";case "DATA_EXPORT":return "Export data"}}n.getLabel=o;function e(){return Object.values(n).filter(r=>typeof r=="string")}n.all=e;function t(r){let i=r.toUpperCase();if(!n.all().includes(i))throw new Error(`Invalid permission value "${r}".`);return i}n.fromValue=t;})(Ee||={});var tr=class extends qe{constructor(e){super(e),this.codemod=e.codemod,this.importResolver=e.importResolver,this.userApi=e.userApi,this.applicationApi=e.applicationApi;}async generateSlotExampleFiles(e,t){let[n,r,i]=await Promise.all([this.detectRouter(),this.isTypeScriptProject(),this.isFallbackMode()]),a=await this.isTypeScriptProject(),s=this.fileSystem.joinPaths(t.configuration.paths.components,`%slug%${a?".tsx":".jsx"}`),p=this.fileSystem.joinPaths(t.configuration.paths.examples,"%slug%"),c=await this.importResolver.getImportPath(s,p),l=r?"tsx":"jsx";return (i?new xt({fileSystem:this.fileSystem,language:l,contentVariable:"content",slotImportPath:c,slotFilePath:s,slotComponentName:"%name%",pageFilePath:this.fileSystem.joinPaths(p,`index${a?".tsx":".jsx"}`),pageComponentName:"Page"}):new er({fileSystem:this.fileSystem,router:n==="page"?"page":"app",language:l,slotImportPath:c,slotFilePath:s,slotComponentName:"%name%",pageFilePath:this.fileSystem.joinPaths(p,`${n==="page"?"index":"page"}${r?".tsx":".jsx"}`),pageComponentName:"Page"})).generate({id:e.slug,version:e.version.major,definition:e.resolvedDefinition}).files}async getInstallationPlan(e){let{configuration:t,output:n}=e,[{i18n:r},i]=await Promise.all([this.getConfig(),this.getProjectInfo()]);i.fallbackMode&&n.announce({semantics:"warning",title:"Fallback mode",message:"Next.js SDK requires version 13 or newer, so React SDK will be installed instead."});let a=t.locales.filter(c=>r.locales.includes(c)||c===t.defaultLocale),s=a.length>0?a:r.locales,p=r.defaultLocale!==void 0&&s.includes(r.defaultLocale)?r.defaultLocale:t.defaultLocale;return {dependencies:[i.fallbackMode?"@croct/plug-react":"@croct/plug-next"],tasks:this.getInstallationTasks({...e,project:i}),configuration:{...t,locales:s,defaultLocale:p,paths:{...t.paths,examples:i.pageDirectory}}}}async getProjectInfo(){let[e,t,n]=await Promise.all([this.isTypeScriptProject(),this.getPageDirectory(),this.isFallbackMode()]),r={typescript:e,router:await this.detectRouter(t),sourceDirectory:t.startsWith("src")?"src":".",pageDirectory:t},[i,a]=await Promise.all([this.locateFile(...["middleware.js","middleware.ts"].map(c=>this.fileSystem.joinPaths(r.sourceDirectory,c))),this.locateFile(...(r.router==="app"?[this.fileSystem.joinPaths("app","layout.jsx"),this.fileSystem.joinPaths("app","layout.tsx")]:[this.fileSystem.joinPaths("pages","_app.jsx"),this.fileSystem.joinPaths("pages","_app.tsx")]).map(c=>this.fileSystem.joinPaths(r.sourceDirectory,c)))]),s=r.typescript?"ts":"js",p=this.projectDirectory.get();return {...r,fallbackMode:n,env:{localFile:new Fe(this.fileSystem,this.fileSystem.joinPaths(p,".env.local")),developmentFile:new Fe(this.fileSystem,this.fileSystem.joinPaths(p,".env.development")),productionFile:new Fe(this.fileSystem,this.fileSystem.joinPaths(p,".env.production"))},middleware:{file:i??this.fileSystem.joinPaths(r.sourceDirectory,`middleware.${s}`)},provider:{file:a??(r.router==="app"?this.fileSystem.joinPaths("app",`layout.${s}x`):this.fileSystem.joinPaths("pages",`_app.${s}x`))}}}getInstallationTasks(e){let t=[];return e.project.fallbackMode||t.push({title:"Configure middleware",task:async n=>{n.update("Configuring middleware");try{await this.updateCode(this.codemod.middleware,e.project.middleware.file),n.confirm("Middleware configured");}catch(r){n.alert("Failed to install middleware",d.formatMessage(r));}}}),t.push({title:"Configure provider",task:async n=>{n.update("Configuring provider");try{await this.installProvider({...e,notifier:n}),n.confirm("Provider configured");}catch(r){n.alert("Failed to install provider",d.formatMessage(r));}}}),t.push({title:"Setup environment variables",task:async n=>{n.update("Setting up environment variables");try{await this.updateEnvVariables({...e,notifier:n}),n.confirm("Environment variables updated");}catch(r){n.alert("Failed to update .env.local",d.formatMessage(r));}}}),t}installProvider(e){return this.updateCode(this.getProviderCodemod(e),e.project.provider.file,{typescript:e.project.typescript})}getProviderCodemod(e){return e.project.fallbackMode?this.codemod.fallbackProvider:e.project.router==="app"?this.codemod.appRouterProvider:this.codemod.pageRouterProvider}async updateCode(e,t,n){await e.apply(this.fileSystem.joinPaths(this.projectDirectory.get(),t),n);}async updateEnvVariables(e){let{project:{env:t},configuration:n,notifier:r}=e;if(!await t.localFile.hasVariable("CROCT_API_KEY")){r.update("Loading information");let[i,a,s]=await Promise.all([this.userApi.getUser(),this.workspaceApi.getApplication({organizationSlug:n.organization,workspaceSlug:n.workspace,applicationSlug:n.applications.development}),n.applications.production===void 0?null:this.workspaceApi.getApplication({organizationSlug:n.organization,workspaceSlug:n.workspace,applicationSlug:n.applications.production})]);if(a===null)throw new ee(`Development application \`${n.applications.development}\` not found.`,{reason:"not_found"});r.update("Creating API key");let p;try{p=await this.applicationApi.createApiKey({organizationSlug:n.organization,workspaceSlug:n.workspace,applicationSlug:a.slug,name:`${i.username} CLI`,permissions:["TOKEN_ISSUE"]});}catch(c){throw c instanceof d?new ee(c instanceof ne&&c.isAccessDenied()?"Your user does not have permission to create an API key":c.message,c.help):c}await t.localFile.setVariables({CROCT_API_KEY:p.secret}),await Promise.all([t.developmentFile.setVariables({NEXT_PUBLIC_CROCT_APP_ID:a.publicId}),s===null?Promise.resolve():t.productionFile.setVariables({NEXT_PUBLIC_CROCT_APP_ID:s.publicId})]);}}async detectRouter(e){return (e??await this.getPageDirectory()).endsWith("pages")?"page":"app"}async getPageDirectory(){return await this.locateFile("app",this.fileSystem.joinPaths("src","app"),"pages",this.fileSystem.joinPaths("src","pages"))??"app"}async getConfig(){let e=["js","mjs","ts","mts"].map(n=>`next.config.${n}`),t=await this.readFile(...e).catch(()=>null);return t===null?{i18n:{locales:[],defaultLocale:""}}:Is(t)}async isFallbackMode(){return !await this.packageManager.hasDirectDependency("next",">=13")}};var rt=(n=>(n.NEXTJS="nextjs",n.REACT="react",n.JAVASCRIPT="javascript",n))(rt||{});(e=>{function o(t){switch(t){case "nextjs":return "Next.js";case "react":return "React";case "javascript":return "JavaScript"}}e.getName=o;})(rt||={});var nr=class{constructor(e){this.config=e;}async execute(e){let{configurationManager:t,platformProvider:n,sdkProvider:r,io:{output:i}}=this.config;if(e.override!==true&&await t.isInitialized())throw new d("Configuration file already exists, specify `override` to reconfigure.",{reason:"precondition"});let a=await n.get(),s=a!==null?`${rt.getName(a)} project`:"project";i.break(),i.announce({semantics:"neutral",title:"\u{1F44B} Welcome to Croct",alignment:"center",message:`Let's configure your ${s} to get started!`}),i.break();let p=await this.getOrganization({new:e.new==="organization"},e.organization);if(p===null)throw new d(`Organization not found: ${e.organization}`,{reason:"invalid_input"});let c=await this.getWorkspace({organization:p,new:e.new==="workspace"},e.workspace),l={organization:p,workspace:c,platform:a??"javascript",new:e.new==="application"},m=await this.getApplication({...l,environment:"DEVELOPMENT"},e.devApplication),f={organization:p.slug,workspace:c.slug,applications:{development:m.slug},defaultLocale:c.defaultLocale,locales:c.locales,slots:{},components:{},paths:{components:"",examples:""}},b=c.website??p.website??void 0;if(b!==void 0&&new URL(b).hostname!=="localhost"){let v=await this.getApplication({...l,environment:"PRODUCTION"},e.prodApplication);f.applications.production=v.slug;}let A=await r.get();if(A===null){await t.update({...f,paths:{components:"components",examples:"examples"}}),i.warn("No suitable SDK found, skipping project configuration");return}await t.update(await this.configure(A,f));}async getOrganization(e,t){let{form:n,api:r}=this.config,i=t===void 0?await n.organization.handle(e):await r.user.getOrganization(t).catch(a=>{if(a instanceof ne&&a.isAccessDenied())return null;throw a});if(i===null)throw new d(`No organization found with slug "${t}".`,{reason:"invalid_input"});return i}async getWorkspace(e,t){let{form:n,api:r}=this.config,i=t===void 0?await n.workspace.handle(e):await r.organization.getWorkspace({organizationSlug:e.organization.slug,workspaceSlug:t}).catch(a=>{if(a instanceof ne&&a.isAccessDenied())return null;throw a});if(i===null)throw new d(`No workspace found with slug "${t}".`,{reason:"invalid_input"});return i}async getApplication(e,t){let{form:n,api:r}=this.config,i=t===void 0?await n.application.handle(e):await r.workspace.getApplication({organizationSlug:e.organization.slug,workspaceSlug:e.workspace.slug,applicationSlug:t}).catch(a=>{if(a instanceof ne&&a.isAccessDenied())return null;throw a});if(i===null)throw new d(`No application found with slug "${t}".`,{reason:"invalid_input"});if(i.environment!==e.environment)throw new d(`No ${xe.getLabel(e.environment).toUpperCase()} application found with slug "${t}".`,{reason:"invalid_input"});return i}async getSlots(e,t){let{api:n,io:{output:r}}=this.config,i=r.notify("Loading slots"),a=await n.workspace.getSlots({organizationSlug:e,workspaceSlug:t});return i.stop(),Object.fromEntries(a.map(s=>[s.slug,`${s.version.major}`]))}async configure(e,t){let{skipConfirmation:n}=this.config;return e.setup({input:this.config.io.input===void 0||await n.get()?void 0:this.config.io.input,output:this.config.io.output,configuration:{...t,slots:await this.getSlots(t.organization,t.workspace)}})}};var rr=class{constructor(e){this.authenticator=e.authenticator;}async execute(e){await this.authenticator.logout(),await this.authenticator.login(e);}};var Qt=class{constructor({output:e,authenticator:t}){this.authenticator=t,this.output=e;}async execute(){await this.authenticator.logout(),this.output.confirm("Logged out");}};var it=class o extends d{constructor(e,t={}){super(e,{...t,reason:t.reason??"invalid_configuration"}),Object.setPrototypeOf(this,o.prototype);}};var ir=class o{static{this.CONFIGURATION_SCHEMA="https://schema.croct.com/json/v1/project.json";}constructor({fileSystem:e,projectDirectory:t,validator:n}){this.fileSystem=e,this.projectDirectory=t,this.validator=n;}isInitialized(){return this.fileSystem.exists(this.getConfigurationFilePath())}async load(){let e=await this.loadConfigurationFile();if(e.configuration===null)throw new it("Project configuration not found.",{reason:"not_found",suggestions:["Run `init` command to initialize the project"]});return e.configuration}async update(e){return this.updateConfigurationFile(await this.validateConfiguration(e))}async updateConfigurationFile(e){let t=await this.loadConfigurationFile(),r=this.applyConfigurationChanges(t,e).toString({indentationCharacter:"space",object:{indentationSize:2,leadingIndentation:true,trailingIndentation:true,entryIndentation:true,colonSpacing:true,commaSpacing:true},array:{indentationSize:2,entryIndentation:true,leadingIndentation:true,trailingIndentation:true,colonSpacing:true,commaSpacing:true}});try{await this.fileSystem.writeTextFile(t.path,r,{overwrite:!0});}catch{throw new Error(`Unable to write configuration file ${t.path}.`)}return e}applyConfigurationChanges(e,t){if(e.configuration===null||e.source===null)return JsonObjectNode$1.of({$schema:o.CONFIGURATION_SCHEMA,...t});let n=JsonParser$1.parse(e.source,JsonObjectNode$1);return n.update({$schema:n.has("$schema")?n.get("$schema").toJSON():void 0,...t}).cast(JsonObjectNode$1)}async loadConfigurationFile(){let e={path:this.getConfigurationFilePath(),source:null,configuration:null},t;try{e.source=await this.fileSystem.readTextFile(e.path),t=JsonParser$1.parse(e.source).toJSON();}catch{return e}return t!==null&&(e.configuration=await this.validateConfiguration(t,e),e.configuration?.$schema!==void 0&&delete e.configuration?.$schema),e}getConfigurationFilePath(){return this.fileSystem.joinPaths(this.projectDirectory.get(),"croct.json")}async validateConfiguration(e,t){let n=await this.validator.validate(e);if(!n.valid){let r=n.violations[0];throw new it(r.message,{details:[...t!==void 0?[`File: file://${t.path.replace(/\\/g,"/")}`]:[],`Violation path: ${r.path}`]})}return n.data}};var Bt=class{constructor(e){this.configuration=e;}async execute(e,...[t]){let{tokenProvider:n,endpoint:r}=this.configuration,i=n!==void 0?await n.getToken():null,a=await fetch(r,{method:"POST",headers:{accept:"application/json","content-type":"application/json",...i!==null?{Authorization:`Bearer ${i}`}:{}},body:JSON.stringify({query:e,variables:t})});return a.json().then(s=>{let{data:p,errors:c}=s;if(c!==void 0)throw new ne(c[0].message.replace(/"/g,"`"),c.map(({extensions:l})=>({...l,detail:l.detail?.replace(/"/g,"`")})));return {data:p,headers:a.headers}})}};function Da(o,e){return o.slice(0,o.indexOf("-",e-1)===e-1?e-1:e)}function*Yt({baseName:o,alwaysSuffixed:e=false}){let t=o.normalize("NFD").toLowerCase().replace(/[^a-z ]/g,"").trim().split(/\s+/);t.length===0&&t.push(String.fromCharCode(97+Math.floor(Math.random()*26))+Math.random().toString(36).substring(2,14));let n=t.slice(0,2).join("-");for(e||(yield Da(n,30),n.length<29&&t.length>2&&(yield Da(t.join("-"),30)));;){let r=Math.floor(Math.random()*1e4).toString();yield `${Da(n,30-r.length-1)}-${r}`;}}function ot(o){let{baseName:e,query:t,client:n,alwaysSuffixed:r}=o;return Pl({baseName:e,alwaysSuffixed:r},async i=>{let a=[i.next().value,i.next().value,i.next().value],{data:{checkAvailability:s}}=await n.execute(t,{...o.variables??{},slugFirstOption:a[0],slugSecondOption:a[1],slugThirdOption:a[2]}),p=[s.slugFirstOption,s.slugSecondOption,s.slugThirdOption];return a.find((c,l)=>p[l])??null})}async function Pl(o,e){let t=Yt(o),n;do n=await e(t);while(n===null);return n}var E=class extends String{constructor(e,t){super(e),this.value=e,this.__meta__=t;}toString(){return this.value}},vs=new E(`
|
|
96
107
|
query ApplicationSlugAvailability($workspaceId: WorkspaceId!, $slugFirstOption: ReadableId!, $slugSecondOption: ReadableId!, $slugThirdOption: ReadableId!) {
|
|
97
108
|
checkAvailability {
|
|
98
109
|
slugFirstOption: applicationSlug(
|
|
@@ -109,7 +120,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
109
120
|
)
|
|
110
121
|
}
|
|
111
122
|
}
|
|
112
|
-
`),
|
|
123
|
+
`),ws=new E(`
|
|
113
124
|
query Applications($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
114
125
|
organization(slug: $organizationSlug) {
|
|
115
126
|
workspace(slug: $workspaceSlug) {
|
|
@@ -155,7 +166,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
155
166
|
}
|
|
156
167
|
}
|
|
157
168
|
}
|
|
158
|
-
`),
|
|
169
|
+
`),Ps=new E(`
|
|
159
170
|
mutation CreateApplication($workspaceId: WorkspaceId!, $payload: CreateWebApplicationPayload!) {
|
|
160
171
|
createWebApplication(workspaceId: $workspaceId, payload: $payload) {
|
|
161
172
|
id
|
|
@@ -172,7 +183,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
172
183
|
}
|
|
173
184
|
}
|
|
174
185
|
}
|
|
175
|
-
`),
|
|
186
|
+
`),ks=new E(`
|
|
176
187
|
mutation CreateApiKey($applicationId: ApplicationId!, $payload: CreateApiKeyPayload!) {
|
|
177
188
|
createApiKey(applicationId: $applicationId, payload: $payload) {
|
|
178
189
|
apiKey {
|
|
@@ -183,7 +194,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
183
194
|
apiKeyValue
|
|
184
195
|
}
|
|
185
196
|
}
|
|
186
|
-
`),
|
|
197
|
+
`),As=new E(`
|
|
187
198
|
query Audiences($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
188
199
|
organization(slug: $organizationSlug) {
|
|
189
200
|
workspace(slug: $workspaceSlug) {
|
|
@@ -200,7 +211,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
200
211
|
}
|
|
201
212
|
}
|
|
202
213
|
}
|
|
203
|
-
`),
|
|
214
|
+
`),Es=new E(`
|
|
204
215
|
query Audience($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $audienceSlug: ReadableId!) {
|
|
205
216
|
organization(slug: $organizationSlug) {
|
|
206
217
|
workspace(slug: $workspaceSlug) {
|
|
@@ -213,43 +224,43 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
213
224
|
}
|
|
214
225
|
}
|
|
215
226
|
}
|
|
216
|
-
`),
|
|
227
|
+
`),Rs=new E(`
|
|
217
228
|
mutation SignIn($payload: SignInPayload!) {
|
|
218
229
|
signIn(payload: $payload) {
|
|
219
230
|
token
|
|
220
231
|
}
|
|
221
232
|
}
|
|
222
|
-
`),
|
|
233
|
+
`),Ts=new E(`
|
|
223
234
|
mutation SignUp($payload: SignUpPayload!) {
|
|
224
235
|
signUp(payload: $payload) {
|
|
225
236
|
userId
|
|
226
237
|
}
|
|
227
238
|
}
|
|
228
|
-
`),
|
|
239
|
+
`),Os=new E(`
|
|
229
240
|
mutation IssueToken($payload: IssueTokenPayload!) {
|
|
230
241
|
issueToken(payload: $payload)
|
|
231
242
|
}
|
|
232
|
-
`),
|
|
243
|
+
`),Ds=new E(`
|
|
233
244
|
mutation ResetPassword($payload: ResetPasswordPayload!) {
|
|
234
245
|
resetPassword(payload: $payload) {
|
|
235
246
|
token
|
|
236
247
|
}
|
|
237
248
|
}
|
|
238
|
-
`),
|
|
249
|
+
`),Ms=new E(`
|
|
239
250
|
mutation RequestPasswordReset($email: String!, $sessionId: UserSessionId) {
|
|
240
251
|
sendResetLink(email: $email, sessionId: $sessionId)
|
|
241
252
|
}
|
|
242
|
-
`)
|
|
253
|
+
`),Ns=new E(`
|
|
243
254
|
mutation RetryActivation($email: String!, $sessionId: UserSessionId!) {
|
|
244
255
|
retry {
|
|
245
256
|
accountActivation(sessionId: $sessionId, email: $email)
|
|
246
257
|
}
|
|
247
258
|
}
|
|
248
|
-
`)
|
|
259
|
+
`),$s=new E(`
|
|
249
260
|
mutation CreateSession($redirectDestination: String) {
|
|
250
261
|
createSession(redirectDestination: $redirectDestination)
|
|
251
262
|
}
|
|
252
|
-
`),
|
|
263
|
+
`),zs=new E(`
|
|
253
264
|
mutation CloseSession($sessionId: UserSessionId!) {
|
|
254
265
|
closeSession(sessionId: $sessionId) {
|
|
255
266
|
__typename
|
|
@@ -261,7 +272,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
261
272
|
}
|
|
262
273
|
}
|
|
263
274
|
}
|
|
264
|
-
`),
|
|
275
|
+
`),_s=new E(`
|
|
265
276
|
query Components($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
266
277
|
organization(slug: $organizationSlug) {
|
|
267
278
|
workspace(slug: $workspaceSlug) {
|
|
@@ -293,7 +304,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
293
304
|
}
|
|
294
305
|
}
|
|
295
306
|
}
|
|
296
|
-
`),
|
|
307
|
+
`),Ls=new E(`
|
|
297
308
|
query Component($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $componentSlug: ReadableId!, $majorVersion: Int) {
|
|
298
309
|
organization(slug: $organizationSlug) {
|
|
299
310
|
workspace(slug: $workspaceSlug) {
|
|
@@ -321,7 +332,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
321
332
|
}
|
|
322
333
|
}
|
|
323
334
|
}
|
|
324
|
-
`),
|
|
335
|
+
`),Fs=new E(`
|
|
325
336
|
query Experience($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $experienceId: ExperienceId!) {
|
|
326
337
|
organization(slug: $organizationSlug) {
|
|
327
338
|
workspace(slug: $workspaceSlug) {
|
|
@@ -475,7 +486,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
475
486
|
}
|
|
476
487
|
}
|
|
477
488
|
}
|
|
478
|
-
`),
|
|
489
|
+
`),js=new E(`
|
|
479
490
|
query Experiences($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $status: [ExperienceStatus!]) {
|
|
480
491
|
organization(slug: $organizationSlug) {
|
|
481
492
|
workspace(slug: $workspaceSlug) {
|
|
@@ -531,7 +542,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
531
542
|
}
|
|
532
543
|
}
|
|
533
544
|
}
|
|
534
|
-
`),
|
|
545
|
+
`),Ws=new E(`
|
|
535
546
|
query ResourceIdQuery($organizationSlug: ReadableId!, $workspaceSlug: ReadableId, $applicationSlug: ReadableId) {
|
|
536
547
|
organization(slug: $organizationSlug) {
|
|
537
548
|
id
|
|
@@ -543,7 +554,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
543
554
|
}
|
|
544
555
|
}
|
|
545
556
|
}
|
|
546
|
-
`),
|
|
557
|
+
`),Vs=new E(`
|
|
547
558
|
query Organization($slug: ReadableId!) {
|
|
548
559
|
organization(slug: $slug) {
|
|
549
560
|
id
|
|
@@ -555,7 +566,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
555
566
|
email
|
|
556
567
|
}
|
|
557
568
|
}
|
|
558
|
-
`),
|
|
569
|
+
`),Us=new E(`
|
|
559
570
|
query Organizations {
|
|
560
571
|
organizations(first: 100) {
|
|
561
572
|
edges {
|
|
@@ -571,7 +582,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
571
582
|
}
|
|
572
583
|
}
|
|
573
584
|
}
|
|
574
|
-
`),
|
|
585
|
+
`),qs=new E(`
|
|
575
586
|
mutation SetupOrganization($payload: CreateConfiguredOrganizationPayload!) {
|
|
576
587
|
createConfiguredOrganization(payload: $payload) {
|
|
577
588
|
organization {
|
|
@@ -585,7 +596,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
585
596
|
}
|
|
586
597
|
}
|
|
587
598
|
}
|
|
588
|
-
`),
|
|
599
|
+
`),Hs=new E(`
|
|
589
600
|
query FindOrganizationSlug($slugFirstOption: ReadableId!, $slugSecondOption: ReadableId!, $slugThirdOption: ReadableId!) {
|
|
590
601
|
checkAvailability {
|
|
591
602
|
slugFirstOption: organizationSlug(slug: $slugFirstOption)
|
|
@@ -593,7 +604,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
593
604
|
slugThirdOption: organizationSlug(slug: $slugThirdOption)
|
|
594
605
|
}
|
|
595
606
|
}
|
|
596
|
-
`),
|
|
607
|
+
`),Gs=new E(`
|
|
597
608
|
query OrganizationMetadata($url: String!) {
|
|
598
609
|
websiteMetadata(url: $url) {
|
|
599
610
|
url
|
|
@@ -611,7 +622,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
611
622
|
}
|
|
612
623
|
}
|
|
613
624
|
}
|
|
614
|
-
`),
|
|
625
|
+
`),Ks=new E(`
|
|
615
626
|
query Slots($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
616
627
|
organization(slug: $organizationSlug) {
|
|
617
628
|
workspace(slug: $workspaceSlug) {
|
|
@@ -657,7 +668,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
657
668
|
}
|
|
658
669
|
}
|
|
659
670
|
}
|
|
660
|
-
`),
|
|
671
|
+
`),Zs=new E(`
|
|
661
672
|
query Slot($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $slotSlug: ReadableId!, $majorVersion: Int) {
|
|
662
673
|
organization(slug: $organizationSlug) {
|
|
663
674
|
workspace(slug: $workspaceSlug) {
|
|
@@ -699,7 +710,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
699
710
|
}
|
|
700
711
|
}
|
|
701
712
|
}
|
|
702
|
-
`),
|
|
713
|
+
`),Js=new E(`
|
|
703
714
|
query SlotStaticContent($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $slotSlug: ReadableId!, $majorVersion: Int) {
|
|
704
715
|
organization(slug: $organizationSlug) {
|
|
705
716
|
workspace(slug: $workspaceSlug) {
|
|
@@ -712,11 +723,11 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
712
723
|
}
|
|
713
724
|
}
|
|
714
725
|
}
|
|
715
|
-
`),
|
|
726
|
+
`),Qs=new E(`
|
|
716
727
|
mutation GenerateTyping($workspaceId: WorkspaceId!, $payload: GenerateTypingPayload!) {
|
|
717
728
|
generateTyping(workspaceId: $workspaceId, payload: $payload)
|
|
718
729
|
}
|
|
719
|
-
`),
|
|
730
|
+
`),Bs=new E(`
|
|
720
731
|
query User {
|
|
721
732
|
userAccount {
|
|
722
733
|
id
|
|
@@ -731,7 +742,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
731
742
|
}
|
|
732
743
|
}
|
|
733
744
|
}
|
|
734
|
-
`),
|
|
745
|
+
`),Ys=new E(`
|
|
735
746
|
query Username($slugFirstOption: ReadableId!, $slugSecondOption: ReadableId!, $slugThirdOption: ReadableId!) {
|
|
736
747
|
checkAvailability {
|
|
737
748
|
slugFirstOption: username(username: $slugFirstOption)
|
|
@@ -739,19 +750,19 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
739
750
|
slugThirdOption: username(username: $slugThirdOption)
|
|
740
751
|
}
|
|
741
752
|
}
|
|
742
|
-
`),
|
|
753
|
+
`),Xs=new E(`
|
|
743
754
|
query UserEmail($email: String!) {
|
|
744
755
|
checkAvailability {
|
|
745
756
|
email(email: $email)
|
|
746
757
|
}
|
|
747
758
|
}
|
|
748
|
-
`),
|
|
759
|
+
`),ep=new E(`
|
|
749
760
|
mutation AcceptInvitation($invitationId: InvitationId!) {
|
|
750
761
|
acceptInvitation(invitationId: $invitationId) {
|
|
751
762
|
id
|
|
752
763
|
}
|
|
753
764
|
}
|
|
754
|
-
`),
|
|
765
|
+
`),tp=new E(`
|
|
755
766
|
query Invitations {
|
|
756
767
|
invitations(first: 100) {
|
|
757
768
|
edges {
|
|
@@ -771,7 +782,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
771
782
|
}
|
|
772
783
|
}
|
|
773
784
|
}
|
|
774
|
-
`),
|
|
785
|
+
`),np=new E(`
|
|
775
786
|
query Workspace($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
776
787
|
organization(slug: $organizationSlug) {
|
|
777
788
|
workspace(slug: $workspaceSlug) {
|
|
@@ -792,7 +803,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
792
803
|
}
|
|
793
804
|
}
|
|
794
805
|
}
|
|
795
|
-
`),
|
|
806
|
+
`),rp=new E(`
|
|
796
807
|
query Workspaces($organizationSlug: ReadableId!) {
|
|
797
808
|
organization(slug: $organizationSlug) {
|
|
798
809
|
workspaces(first: 100) {
|
|
@@ -817,7 +828,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
817
828
|
}
|
|
818
829
|
}
|
|
819
830
|
}
|
|
820
|
-
`),
|
|
831
|
+
`),ip=new E(`
|
|
821
832
|
mutation CreateWorkspace($organizationId: OrganizationId!, $payload: CreateWorkspacePayload!) {
|
|
822
833
|
createWorkspace(organizationId: $organizationId, payload: $payload) {
|
|
823
834
|
id
|
|
@@ -836,7 +847,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
836
847
|
}
|
|
837
848
|
}
|
|
838
849
|
}
|
|
839
|
-
`),
|
|
850
|
+
`),op=new E(`
|
|
840
851
|
query FindWorkspaceSlug($organizationId: OrganizationId!, $slugFirstOption: ReadableId!, $slugSecondOption: ReadableId!, $slugThirdOption: ReadableId!) {
|
|
841
852
|
checkAvailability {
|
|
842
853
|
slugFirstOption: workspaceSlug(
|
|
@@ -853,7 +864,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
853
864
|
)
|
|
854
865
|
}
|
|
855
866
|
}
|
|
856
|
-
`),
|
|
867
|
+
`),ap=new E(`
|
|
857
868
|
query WorkspaceFeatures($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
858
869
|
organization(slug: $organizationSlug) {
|
|
859
870
|
workspace(slug: $workspaceSlug) {
|
|
@@ -879,7 +890,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
879
890
|
}
|
|
880
891
|
}
|
|
881
892
|
}
|
|
882
|
-
`),
|
|
893
|
+
`),sp=new E(`
|
|
883
894
|
mutation CreateResources($workspaceId: WorkspaceId!, $payload: CreateWorkspaceResourcePayload!) {
|
|
884
895
|
createWorkspaceResources(workspaceId: $workspaceId, payload: $payload) {
|
|
885
896
|
slots
|
|
@@ -891,7 +902,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
891
902
|
}
|
|
892
903
|
}
|
|
893
904
|
}
|
|
894
|
-
`);var El={"\n query ApplicationSlugAvailability(\n $workspaceId: WorkspaceId!\n $slugFirstOption: ReadableId!\n $slugSecondOption: ReadableId!\n $slugThirdOption: ReadableId!\n ) {\n checkAvailability {\n slugFirstOption: applicationSlug(workspaceId: $workspaceId, slug: $slugFirstOption)\n slugSecondOption: applicationSlug(workspaceId: $workspaceId, slug: $slugSecondOption)\n slugThirdOption: applicationSlug(workspaceId: $workspaceId, slug: $slugThirdOption)\n }\n }\n":ws,"\n query Applications($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n applications(first: 100) {\n edges {\n node {\n id\n publicId\n name\n slug\n logo\n website\n environment\n platform\n applicationStatus\n settings {\n timeZone\n }\n }\n }\n }\n }\n }\n }\n":Ps,"\n query Application($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $applicationSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n application(slug: $applicationSlug) {\n id\n publicId\n name\n slug\n logo\n website\n environment\n platform\n applicationStatus\n settings {\n timeZone\n }\n }\n }\n }\n }\n":Cs,"\n mutation CreateApplication($workspaceId: WorkspaceId!, $payload: CreateWebApplicationPayload!) {\n createWebApplication(workspaceId: $workspaceId, payload: $payload) {\n id\n publicId\n name\n slug\n logo\n website\n environment\n platform\n applicationStatus\n settings {\n timeZone\n }\n }\n }\n":ks,"\n mutation CreateApiKey($applicationId: ApplicationId!, $payload: CreateApiKeyPayload!) {\n createApiKey(applicationId: $applicationId, payload: $payload) {\n apiKey {\n id\n name\n permissions\n }\n apiKeyValue\n }\n }\n":As,"\n query Audiences($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n audiences(first: 100) {\n edges {\n node {\n id\n customId\n name\n criteria\n }\n }\n }\n }\n }\n }\n":Es,"\n query Audience(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId!,\n $audienceSlug: ReadableId!\n ) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n audience(customId: $audienceSlug) {\n id\n customId\n name\n criteria\n }\n }\n }\n }\n":Rs,"\n mutation SignIn($payload: SignInPayload!) {\n signIn(payload: $payload) {\n token\n }\n }\n":Ts,"\n mutation SignUp($payload: SignUpPayload!) {\n signUp(payload: $payload) {\n userId\n }\n }\n":Os,"\n mutation IssueToken($payload: IssueTokenPayload!) {\n issueToken(payload: $payload) \n }\n":Ds,"\n mutation ResetPassword($payload: ResetPasswordPayload!) {\n resetPassword(payload: $payload) {\n token\n }\n }\n":Ms,"\n mutation RequestPasswordReset($email: String!, $sessionId: UserSessionId) {\n sendResetLink(email: $email, sessionId: $sessionId)\n }\n":Ns,"\n mutation RetryActivation($email: String!, $sessionId: UserSessionId!) {\n retry {\n accountActivation(sessionId: $sessionId, email: $email)\n }\n }\n":$s,"\n mutation CreateSession($redirectDestination: String) {\n createSession(redirectDestination: $redirectDestination)\n }\n":zs,"\n mutation CloseSession($sessionId: UserSessionId!) {\n closeSession(sessionId: $sessionId) {\n __typename\n ... on CloseSessionRecoveryGrantedResult {\n recoveryToken\n }\n ... on CloseSessionAccessGrantedResult {\n accessToken\n }\n }\n }\n":_s,"\n query Components($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n components(first: 100) {\n edges {\n node {\n id\n customId\n name\n description\n definition {\n definition,\n version {\n major\n minor\n }\n metadata {\n directReferences\n indirectReferences\n referenceMetadata {\n referenceName\n componentId\n }\n }\n }\n }\n }\n }\n }\n }\n }\n":Ls,"\n query Component(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId!,\n $componentSlug: ReadableId!,\n $majorVersion: Int\n ) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n component(customId: $componentSlug) {\n id\n customId\n name\n description\n definition(majorVersion: $majorVersion) {\n definition\n version {\n major\n minor\n }\n metadata {\n directReferences\n indirectReferences\n referenceMetadata {\n referenceName\n componentId\n }\n }\n }\n }\n }\n }\n }\n":Fs,"\n query Experience(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId!,\n $experienceId: ExperienceId!\n ) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n experience(id: $experienceId) {\n id,\n name,\n priority,\n status,\n hasExperiments,\n currentExperiment {\n id,\n name,\n crossDevice,\n goalId,\n traffic,\n status,\n variants {\n variantId\n name\n allocation\n baseline\n content {\n default {\n contents {\n slotId,\n content,\n locale,\n }\n },\n segmented {\n groupId,\n contents {\n slotId,\n content,\n locale,\n },\n audiences {\n audienceId\n }\n }\n }\n }\n }\n draft {\n priority,\n audiences {\n id,\n customId,\n },\n slots {\n slot {\n id,\n customId,\n }\n version {\n minor,\n major\n }\n },\n timeZone,\n content {\n default {\n contents {\n slotId,\n content,\n locale,\n }\n },\n segmented {\n groupId,\n contents {\n slotId,\n content,\n locale,\n },\n audiences {\n audienceId\n }\n }\n },\n experiment {\n name,\n crossDevice,\n goalId,\n traffic,\n variants {\n variantId\n name\n allocation\n baseline\n content {\n default {\n contents {\n slotId,\n content,\n locale,\n }\n },\n segmented {\n groupId,\n contents {\n slotId,\n content,\n locale,\n },\n audiences {\n audienceId\n }\n }\n }\n }\n }\n }\n settings {\n content {\n default {\n contents {\n slotId\n content,\n locale,\n }\n },\n segmented {\n groupId,\n contents {\n slotId,\n content,\n locale,\n },\n audiences {\n audienceId\n }\n }\n }\n audiences {\n id,\n customId,\n }\n slots {\n slot {\n id,\n customId,\n }\n version {\n minor,\n major\n }\n }\n }\n }\n }\n }\n }\n":js,"\n query Experiences($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $status: [ExperienceStatus!]) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n experiences(first: 100, status: $status) {\n edges {\n node {\n id,\n name,\n priority,\n status,\n currentExperiment {\n name,\n },\n draft {\n priority,\n audiences {\n id,\n customId,\n },\n slots {\n slot {\n id,\n customId,\n }\n version {\n minor,\n major\n }\n },\n experiment {\n name,\n }\n }\n settings {\n audiences {\n id,\n customId\n }\n slots {\n slot {\n id,\n customId\n }\n version {\n minor,\n major\n }\n }\n }\n }\n }\n }\n }\n }\n }\n":Ws,"\n query ResourceIdQuery(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId,\n $applicationSlug: ReadableId\n ) {\n organization(slug: $organizationSlug) {\n id\n workspace(slug: $workspaceSlug) {\n id\n application(slug: $applicationSlug) {\n id\n }\n }\n }\n }\n":Vs,"\n query Organization($slug: ReadableId!) {\n organization(slug: $slug) {\n id\n name\n slug\n type\n website\n logo\n email\n }\n }\n":Us,"\n query Organizations {\n organizations(first: 100) {\n edges {\n node {\n id\n name\n slug\n type\n website\n logo\n email\n }\n }\n }\n }\n":qs,"\n mutation SetupOrganization($payload: CreateConfiguredOrganizationPayload!) {\n createConfiguredOrganization(payload: $payload) {\n organization {\n id\n name\n slug\n type\n website\n logo\n email\n }\n }\n }\n":Hs,"\n query FindOrganizationSlug(\n $slugFirstOption: ReadableId!\n $slugSecondOption: ReadableId!\n $slugThirdOption: ReadableId!\n ) {\n checkAvailability {\n slugFirstOption: organizationSlug(slug: $slugFirstOption)\n slugSecondOption: organizationSlug(slug: $slugSecondOption)\n slugThirdOption: organizationSlug(slug: $slugThirdOption)\n }\n }\n":Gs,"\n query OrganizationMetadata($url: String!) {\n websiteMetadata(url: $url){\n url\n siteName\n domain\n languages\n platform\n technologies {\n name\n }\n logo {\n data\n height\n width\n }\n }\n }\n":Ks,"\n query Slots($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n slots(first: 100) {\n edges {\n node {\n id\n customId\n name\n content {\n component {\n customId\n definition {\n version {\n major\n minor\n }\n metadata {\n directReferences\n indirectReferences\n referenceMetadata {\n referenceName\n componentId\n }\n }\n }\n }\n version {\n major\n minor\n }\n componentDefinition {\n resolvedDefinition\n }\n default {\n content\n locale\n }\n }\n }\n }\n }\n }\n }\n }\n":Zs,"\n query Slot(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId!,\n $slotSlug: ReadableId!,\n $majorVersion: Int\n ) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n slot(customId: $slotSlug) {\n id\n customId\n name\n content(majorVersion: $majorVersion) {\n component {\n customId\n definition {\n version {\n major\n minor\n }\n metadata {\n directReferences\n indirectReferences\n referenceMetadata {\n referenceName\n componentId\n }\n }\n }\n }\n version {\n major\n minor\n }\n componentDefinition {\n resolvedDefinition\n }\n default {\n content\n locale\n }\n }\n }\n }\n }\n }\n":Js,"\n query SlotStaticContent(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId!,\n $slotSlug: ReadableId!\n $majorVersion: Int\n ) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n slot(customId: $slotSlug) {\n staticContent(majorVersion: $majorVersion) {\n locale\n content\n }\n }\n }\n }\n }\n":Qs,"\n mutation GenerateTyping($workspaceId: WorkspaceId!, $payload: GenerateTypingPayload!) {\n generateTyping(workspaceId: $workspaceId, payload: $payload)\n }\n":Bs,"\n query User {\n userAccount {\n id\n user {\n username\n email\n profile {\n firstName\n lastName\n expertise\n }\n }\n }\n }\n":Ys,"\n query Username(\n $slugFirstOption: ReadableId!\n $slugSecondOption: ReadableId!\n $slugThirdOption: ReadableId!\n ) {\n checkAvailability {\n slugFirstOption: username(username: $slugFirstOption)\n slugSecondOption: username(username: $slugSecondOption)\n slugThirdOption: username(username: $slugThirdOption)\n }\n }\n":Xs,"\n query UserEmail($email: String!) {\n checkAvailability {\n email(email: $email)\n }\n }\n":ep,"\n mutation AcceptInvitation($invitationId: InvitationId!) {\n acceptInvitation(invitationId: $invitationId) {\n id\n }\n }\n":tp,"\n query Invitations {\n invitations(first: 100) {\n edges {\n node {\n id\n invitationTime\n organization {\n id\n name\n slug\n type\n website\n logo\n email\n }\n }\n }\n }\n }\n":np,"\n query Workspace($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n id\n name\n slug\n logo\n website\n timeZone\n defaultLocale\n locales {\n edges {\n node {\n code\n }\n }\n }\n }\n }\n }\n":rp,"\n query Workspaces($organizationSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspaces(first: 100) {\n edges {\n node {\n id\n name\n slug\n logo\n website\n timeZone\n defaultLocale\n locales {\n edges {\n node {\n code\n }\n }\n }\n }\n }\n }\n }\n }\n":ip,"\n mutation CreateWorkspace($organizationId: OrganizationId!, $payload: CreateWorkspacePayload!) {\n createWorkspace(organizationId: $organizationId, payload: $payload) {\n id\n name\n slug\n logo\n website\n timeZone\n defaultLocale\n locales {\n edges {\n node {\n code\n }\n }\n }\n }\n }\n":op,"\n query FindWorkspaceSlug(\n $organizationId: OrganizationId!\n $slugFirstOption: ReadableId!\n $slugSecondOption: ReadableId!\n $slugThirdOption: ReadableId!\n ) {\n checkAvailability {\n slugFirstOption: workspaceSlug(organizationId: $organizationId, slug: $slugFirstOption)\n slugSecondOption: workspaceSlug(organizationId: $organizationId, slug: $slugSecondOption)\n slugThirdOption: workspaceSlug(organizationId: $organizationId, slug: $slugThirdOption)\n }\n }\n":ap,"\n query WorkspaceFeatures($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n quotas {\n audience\n remainingAudiences\n component\n remainingComponents\n slot\n remainingSlots,\n experience\n remainingExperiences\n experiment\n remainingExperiments\n dynamicAttributesPerContent\n audiencesPerExperience\n }\n capabilities {\n features(requiredFeatures: [\n EXPERIMENT,\n CROSS_DEVICE_EXPERIMENT,\n API_DATA_EXPORT\n ])\n }\n } \n }\n }\n":sp,"\n mutation CreateResources($workspaceId: WorkspaceId!, $payload: CreateWorkspaceResourcePayload!) {\n createWorkspaceResources(workspaceId: $workspaceId, payload: $payload) {\n slots\n components\n audiences\n experiences {\n id,\n experimentId\n }\n }\n }\n":pp};function x(o){return El[o]??{}}var cp=x(`
|
|
905
|
+
`);var Al={"\n query ApplicationSlugAvailability(\n $workspaceId: WorkspaceId!\n $slugFirstOption: ReadableId!\n $slugSecondOption: ReadableId!\n $slugThirdOption: ReadableId!\n ) {\n checkAvailability {\n slugFirstOption: applicationSlug(workspaceId: $workspaceId, slug: $slugFirstOption)\n slugSecondOption: applicationSlug(workspaceId: $workspaceId, slug: $slugSecondOption)\n slugThirdOption: applicationSlug(workspaceId: $workspaceId, slug: $slugThirdOption)\n }\n }\n":vs,"\n query Applications($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n applications(first: 100) {\n edges {\n node {\n id\n publicId\n name\n slug\n logo\n website\n environment\n platform\n applicationStatus\n settings {\n timeZone\n }\n }\n }\n }\n }\n }\n }\n":ws,"\n query Application($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $applicationSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n application(slug: $applicationSlug) {\n id\n publicId\n name\n slug\n logo\n website\n environment\n platform\n applicationStatus\n settings {\n timeZone\n }\n }\n }\n }\n }\n":Cs,"\n mutation CreateApplication($workspaceId: WorkspaceId!, $payload: CreateWebApplicationPayload!) {\n createWebApplication(workspaceId: $workspaceId, payload: $payload) {\n id\n publicId\n name\n slug\n logo\n website\n environment\n platform\n applicationStatus\n settings {\n timeZone\n }\n }\n }\n":Ps,"\n mutation CreateApiKey($applicationId: ApplicationId!, $payload: CreateApiKeyPayload!) {\n createApiKey(applicationId: $applicationId, payload: $payload) {\n apiKey {\n id\n name\n permissions\n }\n apiKeyValue\n }\n }\n":ks,"\n query Audiences($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n audiences(first: 100) {\n edges {\n node {\n id\n customId\n name\n criteria\n }\n }\n }\n }\n }\n }\n":As,"\n query Audience(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId!,\n $audienceSlug: ReadableId!\n ) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n audience(customId: $audienceSlug) {\n id\n customId\n name\n criteria\n }\n }\n }\n }\n":Es,"\n mutation SignIn($payload: SignInPayload!) {\n signIn(payload: $payload) {\n token\n }\n }\n":Rs,"\n mutation SignUp($payload: SignUpPayload!) {\n signUp(payload: $payload) {\n userId\n }\n }\n":Ts,"\n mutation IssueToken($payload: IssueTokenPayload!) {\n issueToken(payload: $payload) \n }\n":Os,"\n mutation ResetPassword($payload: ResetPasswordPayload!) {\n resetPassword(payload: $payload) {\n token\n }\n }\n":Ds,"\n mutation RequestPasswordReset($email: String!, $sessionId: UserSessionId) {\n sendResetLink(email: $email, sessionId: $sessionId)\n }\n":Ms,"\n mutation RetryActivation($email: String!, $sessionId: UserSessionId!) {\n retry {\n accountActivation(sessionId: $sessionId, email: $email)\n }\n }\n":Ns,"\n mutation CreateSession($redirectDestination: String) {\n createSession(redirectDestination: $redirectDestination)\n }\n":$s,"\n mutation CloseSession($sessionId: UserSessionId!) {\n closeSession(sessionId: $sessionId) {\n __typename\n ... on CloseSessionRecoveryGrantedResult {\n recoveryToken\n }\n ... on CloseSessionAccessGrantedResult {\n accessToken\n }\n }\n }\n":zs,"\n query Components($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n components(first: 100) {\n edges {\n node {\n id\n customId\n name\n description\n definition {\n definition,\n version {\n major\n minor\n }\n metadata {\n directReferences\n indirectReferences\n referenceMetadata {\n referenceName\n componentId\n }\n }\n }\n }\n }\n }\n }\n }\n }\n":_s,"\n query Component(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId!,\n $componentSlug: ReadableId!,\n $majorVersion: Int\n ) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n component(customId: $componentSlug) {\n id\n customId\n name\n description\n definition(majorVersion: $majorVersion) {\n definition\n version {\n major\n minor\n }\n metadata {\n directReferences\n indirectReferences\n referenceMetadata {\n referenceName\n componentId\n }\n }\n }\n }\n }\n }\n }\n":Ls,"\n query Experience(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId!,\n $experienceId: ExperienceId!\n ) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n experience(id: $experienceId) {\n id,\n name,\n priority,\n status,\n hasExperiments,\n currentExperiment {\n id,\n name,\n crossDevice,\n goalId,\n traffic,\n status,\n variants {\n variantId\n name\n allocation\n baseline\n content {\n default {\n contents {\n slotId,\n content,\n locale,\n }\n },\n segmented {\n groupId,\n contents {\n slotId,\n content,\n locale,\n },\n audiences {\n audienceId\n }\n }\n }\n }\n }\n draft {\n priority,\n audiences {\n id,\n customId,\n },\n slots {\n slot {\n id,\n customId,\n }\n version {\n minor,\n major\n }\n },\n timeZone,\n content {\n default {\n contents {\n slotId,\n content,\n locale,\n }\n },\n segmented {\n groupId,\n contents {\n slotId,\n content,\n locale,\n },\n audiences {\n audienceId\n }\n }\n },\n experiment {\n name,\n crossDevice,\n goalId,\n traffic,\n variants {\n variantId\n name\n allocation\n baseline\n content {\n default {\n contents {\n slotId,\n content,\n locale,\n }\n },\n segmented {\n groupId,\n contents {\n slotId,\n content,\n locale,\n },\n audiences {\n audienceId\n }\n }\n }\n }\n }\n }\n settings {\n content {\n default {\n contents {\n slotId\n content,\n locale,\n }\n },\n segmented {\n groupId,\n contents {\n slotId,\n content,\n locale,\n },\n audiences {\n audienceId\n }\n }\n }\n audiences {\n id,\n customId,\n }\n slots {\n slot {\n id,\n customId,\n }\n version {\n minor,\n major\n }\n }\n }\n }\n }\n }\n }\n":Fs,"\n query Experiences($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $status: [ExperienceStatus!]) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n experiences(first: 100, status: $status) {\n edges {\n node {\n id,\n name,\n priority,\n status,\n currentExperiment {\n name,\n },\n draft {\n priority,\n audiences {\n id,\n customId,\n },\n slots {\n slot {\n id,\n customId,\n }\n version {\n minor,\n major\n }\n },\n experiment {\n name,\n }\n }\n settings {\n audiences {\n id,\n customId\n }\n slots {\n slot {\n id,\n customId\n }\n version {\n minor,\n major\n }\n }\n }\n }\n }\n }\n }\n }\n }\n":js,"\n query ResourceIdQuery(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId,\n $applicationSlug: ReadableId\n ) {\n organization(slug: $organizationSlug) {\n id\n workspace(slug: $workspaceSlug) {\n id\n application(slug: $applicationSlug) {\n id\n }\n }\n }\n }\n":Ws,"\n query Organization($slug: ReadableId!) {\n organization(slug: $slug) {\n id\n name\n slug\n type\n website\n logo\n email\n }\n }\n":Vs,"\n query Organizations {\n organizations(first: 100) {\n edges {\n node {\n id\n name\n slug\n type\n website\n logo\n email\n }\n }\n }\n }\n":Us,"\n mutation SetupOrganization($payload: CreateConfiguredOrganizationPayload!) {\n createConfiguredOrganization(payload: $payload) {\n organization {\n id\n name\n slug\n type\n website\n logo\n email\n }\n }\n }\n":qs,"\n query FindOrganizationSlug(\n $slugFirstOption: ReadableId!\n $slugSecondOption: ReadableId!\n $slugThirdOption: ReadableId!\n ) {\n checkAvailability {\n slugFirstOption: organizationSlug(slug: $slugFirstOption)\n slugSecondOption: organizationSlug(slug: $slugSecondOption)\n slugThirdOption: organizationSlug(slug: $slugThirdOption)\n }\n }\n":Hs,"\n query OrganizationMetadata($url: String!) {\n websiteMetadata(url: $url){\n url\n siteName\n domain\n languages\n platform\n technologies {\n name\n }\n logo {\n data\n height\n width\n }\n }\n }\n":Gs,"\n query Slots($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n slots(first: 100) {\n edges {\n node {\n id\n customId\n name\n content {\n component {\n customId\n definition {\n version {\n major\n minor\n }\n metadata {\n directReferences\n indirectReferences\n referenceMetadata {\n referenceName\n componentId\n }\n }\n }\n }\n version {\n major\n minor\n }\n componentDefinition {\n resolvedDefinition\n }\n default {\n content\n locale\n }\n }\n }\n }\n }\n }\n }\n }\n":Ks,"\n query Slot(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId!,\n $slotSlug: ReadableId!,\n $majorVersion: Int\n ) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n slot(customId: $slotSlug) {\n id\n customId\n name\n content(majorVersion: $majorVersion) {\n component {\n customId\n definition {\n version {\n major\n minor\n }\n metadata {\n directReferences\n indirectReferences\n referenceMetadata {\n referenceName\n componentId\n }\n }\n }\n }\n version {\n major\n minor\n }\n componentDefinition {\n resolvedDefinition\n }\n default {\n content\n locale\n }\n }\n }\n }\n }\n }\n":Zs,"\n query SlotStaticContent(\n $organizationSlug: ReadableId!,\n $workspaceSlug: ReadableId!,\n $slotSlug: ReadableId!\n $majorVersion: Int\n ) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n slot(customId: $slotSlug) {\n staticContent(majorVersion: $majorVersion) {\n locale\n content\n }\n }\n }\n }\n }\n":Js,"\n mutation GenerateTyping($workspaceId: WorkspaceId!, $payload: GenerateTypingPayload!) {\n generateTyping(workspaceId: $workspaceId, payload: $payload)\n }\n":Qs,"\n query User {\n userAccount {\n id\n user {\n username\n email\n profile {\n firstName\n lastName\n expertise\n }\n }\n }\n }\n":Bs,"\n query Username(\n $slugFirstOption: ReadableId!\n $slugSecondOption: ReadableId!\n $slugThirdOption: ReadableId!\n ) {\n checkAvailability {\n slugFirstOption: username(username: $slugFirstOption)\n slugSecondOption: username(username: $slugSecondOption)\n slugThirdOption: username(username: $slugThirdOption)\n }\n }\n":Ys,"\n query UserEmail($email: String!) {\n checkAvailability {\n email(email: $email)\n }\n }\n":Xs,"\n mutation AcceptInvitation($invitationId: InvitationId!) {\n acceptInvitation(invitationId: $invitationId) {\n id\n }\n }\n":ep,"\n query Invitations {\n invitations(first: 100) {\n edges {\n node {\n id\n invitationTime\n organization {\n id\n name\n slug\n type\n website\n logo\n email\n }\n }\n }\n }\n }\n":tp,"\n query Workspace($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n id\n name\n slug\n logo\n website\n timeZone\n defaultLocale\n locales {\n edges {\n node {\n code\n }\n }\n }\n }\n }\n }\n":np,"\n query Workspaces($organizationSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspaces(first: 100) {\n edges {\n node {\n id\n name\n slug\n logo\n website\n timeZone\n defaultLocale\n locales {\n edges {\n node {\n code\n }\n }\n }\n }\n }\n }\n }\n }\n":rp,"\n mutation CreateWorkspace($organizationId: OrganizationId!, $payload: CreateWorkspacePayload!) {\n createWorkspace(organizationId: $organizationId, payload: $payload) {\n id\n name\n slug\n logo\n website\n timeZone\n defaultLocale\n locales {\n edges {\n node {\n code\n }\n }\n }\n }\n }\n":ip,"\n query FindWorkspaceSlug(\n $organizationId: OrganizationId!\n $slugFirstOption: ReadableId!\n $slugSecondOption: ReadableId!\n $slugThirdOption: ReadableId!\n ) {\n checkAvailability {\n slugFirstOption: workspaceSlug(organizationId: $organizationId, slug: $slugFirstOption)\n slugSecondOption: workspaceSlug(organizationId: $organizationId, slug: $slugSecondOption)\n slugThirdOption: workspaceSlug(organizationId: $organizationId, slug: $slugThirdOption)\n }\n }\n":op,"\n query WorkspaceFeatures($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {\n organization(slug: $organizationSlug) {\n workspace(slug: $workspaceSlug) {\n quotas {\n audience\n remainingAudiences\n component\n remainingComponents\n slot\n remainingSlots,\n experience\n remainingExperiences\n experiment\n remainingExperiments\n dynamicAttributesPerContent\n audiencesPerExperience\n }\n capabilities {\n features(requiredFeatures: [\n EXPERIMENT,\n CROSS_DEVICE_EXPERIMENT,\n API_DATA_EXPORT\n ])\n }\n } \n }\n }\n":ap,"\n mutation CreateResources($workspaceId: WorkspaceId!, $payload: CreateWorkspaceResourcePayload!) {\n createWorkspaceResources(workspaceId: $workspaceId, payload: $payload) {\n slots\n components\n audiences\n experiences {\n id,\n experimentId\n }\n }\n }\n":sp};function x(o){return Al[o]??{}}var pp=x(`
|
|
895
906
|
query ResourceIdQuery(
|
|
896
907
|
$organizationSlug: ReadableId!,
|
|
897
908
|
$workspaceSlug: ReadableId,
|
|
@@ -907,7 +918,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
907
918
|
}
|
|
908
919
|
}
|
|
909
920
|
}
|
|
910
|
-
`),
|
|
921
|
+
`),cp=x(`
|
|
911
922
|
query Organization($slug: ReadableId!) {
|
|
912
923
|
organization(slug: $slug) {
|
|
913
924
|
id
|
|
@@ -919,7 +930,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
919
930
|
email
|
|
920
931
|
}
|
|
921
932
|
}
|
|
922
|
-
`),
|
|
933
|
+
`),lp=x(`
|
|
923
934
|
query Organizations {
|
|
924
935
|
organizations(first: 100) {
|
|
925
936
|
edges {
|
|
@@ -935,7 +946,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
935
946
|
}
|
|
936
947
|
}
|
|
937
948
|
}
|
|
938
|
-
`),
|
|
949
|
+
`),up=x(`
|
|
939
950
|
mutation SetupOrganization($payload: CreateConfiguredOrganizationPayload!) {
|
|
940
951
|
createConfiguredOrganization(payload: $payload) {
|
|
941
952
|
organization {
|
|
@@ -949,7 +960,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
949
960
|
}
|
|
950
961
|
}
|
|
951
962
|
}
|
|
952
|
-
`),
|
|
963
|
+
`),mp=x(`
|
|
953
964
|
query FindOrganizationSlug(
|
|
954
965
|
$slugFirstOption: ReadableId!
|
|
955
966
|
$slugSecondOption: ReadableId!
|
|
@@ -961,7 +972,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
961
972
|
slugThirdOption: organizationSlug(slug: $slugThirdOption)
|
|
962
973
|
}
|
|
963
974
|
}
|
|
964
|
-
`),
|
|
975
|
+
`),dp=x(`
|
|
965
976
|
query OrganizationMetadata($url: String!) {
|
|
966
977
|
websiteMetadata(url: $url){
|
|
967
978
|
url
|
|
@@ -979,7 +990,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
979
990
|
}
|
|
980
991
|
}
|
|
981
992
|
}
|
|
982
|
-
`);var
|
|
993
|
+
`);var gp=x(`
|
|
983
994
|
query User {
|
|
984
995
|
userAccount {
|
|
985
996
|
id
|
|
@@ -994,7 +1005,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
994
1005
|
}
|
|
995
1006
|
}
|
|
996
1007
|
}
|
|
997
|
-
`),
|
|
1008
|
+
`),fp=x(`
|
|
998
1009
|
query Username(
|
|
999
1010
|
$slugFirstOption: ReadableId!
|
|
1000
1011
|
$slugSecondOption: ReadableId!
|
|
@@ -1006,19 +1017,19 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1006
1017
|
slugThirdOption: username(username: $slugThirdOption)
|
|
1007
1018
|
}
|
|
1008
1019
|
}
|
|
1009
|
-
`),
|
|
1020
|
+
`),yp=x(`
|
|
1010
1021
|
query UserEmail($email: String!) {
|
|
1011
1022
|
checkAvailability {
|
|
1012
1023
|
email(email: $email)
|
|
1013
1024
|
}
|
|
1014
1025
|
}
|
|
1015
|
-
`),
|
|
1026
|
+
`),hp=x(`
|
|
1016
1027
|
mutation AcceptInvitation($invitationId: InvitationId!) {
|
|
1017
1028
|
acceptInvitation(invitationId: $invitationId) {
|
|
1018
1029
|
id
|
|
1019
1030
|
}
|
|
1020
1031
|
}
|
|
1021
|
-
`),
|
|
1032
|
+
`),Sp=x(`
|
|
1022
1033
|
query Invitations {
|
|
1023
1034
|
invitations(first: 100) {
|
|
1024
1035
|
edges {
|
|
@@ -1038,29 +1049,29 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1038
1049
|
}
|
|
1039
1050
|
}
|
|
1040
1051
|
}
|
|
1041
|
-
`);var
|
|
1052
|
+
`);var bp=x(`
|
|
1042
1053
|
mutation SignIn($payload: SignInPayload!) {
|
|
1043
1054
|
signIn(payload: $payload) {
|
|
1044
1055
|
token
|
|
1045
1056
|
}
|
|
1046
1057
|
}
|
|
1047
|
-
`),
|
|
1058
|
+
`),Ip=x(`
|
|
1048
1059
|
mutation SignUp($payload: SignUpPayload!) {
|
|
1049
1060
|
signUp(payload: $payload) {
|
|
1050
1061
|
userId
|
|
1051
1062
|
}
|
|
1052
1063
|
}
|
|
1053
|
-
`),
|
|
1064
|
+
`),xp=x(`
|
|
1054
1065
|
mutation IssueToken($payload: IssueTokenPayload!) {
|
|
1055
1066
|
issueToken(payload: $payload)
|
|
1056
1067
|
}
|
|
1057
|
-
`),
|
|
1068
|
+
`),vp=x(`
|
|
1058
1069
|
mutation ResetPassword($payload: ResetPasswordPayload!) {
|
|
1059
1070
|
resetPassword(payload: $payload) {
|
|
1060
1071
|
token
|
|
1061
1072
|
}
|
|
1062
1073
|
}
|
|
1063
|
-
`),
|
|
1074
|
+
`),wp=x(`
|
|
1064
1075
|
mutation RequestPasswordReset($email: String!, $sessionId: UserSessionId) {
|
|
1065
1076
|
sendResetLink(email: $email, sessionId: $sessionId)
|
|
1066
1077
|
}
|
|
@@ -1070,11 +1081,11 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1070
1081
|
accountActivation(sessionId: $sessionId, email: $email)
|
|
1071
1082
|
}
|
|
1072
1083
|
}
|
|
1073
|
-
`),
|
|
1084
|
+
`),Pp=x(`
|
|
1074
1085
|
mutation CreateSession($redirectDestination: String) {
|
|
1075
1086
|
createSession(redirectDestination: $redirectDestination)
|
|
1076
1087
|
}
|
|
1077
|
-
`),
|
|
1088
|
+
`),kp=x(`
|
|
1078
1089
|
mutation CloseSession($sessionId: UserSessionId!) {
|
|
1079
1090
|
closeSession(sessionId: $sessionId) {
|
|
1080
1091
|
__typename
|
|
@@ -1086,7 +1097,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1086
1097
|
}
|
|
1087
1098
|
}
|
|
1088
1099
|
}
|
|
1089
|
-
`);var
|
|
1100
|
+
`);var Xt=class o{constructor(e){this.client=e;}async getUser(){let{data:e}=await this.client.execute(gp),{id:t,user:n}=e.userAccount,{profile:{lastName:r=null}}=n;return {id:t,username:n.profile.firstName,email:n.email,firstName:n.profile.firstName,expertise:n.profile.expertise,...r!==null?{lastName:r}:{}}}async isEmailRegistered(e){let{data:t}=await this.client.execute(yp,{email:e});return !t.checkAvailability.email}async requestPasswordReset(e){await this.client.execute(wp,{email:e.email,sessionId:e.sessionId});}async resetPassword(e){let{data:t}=await this.client.execute(vp,{payload:{password:e.password,token:e.token}});return t.resetPassword.token}async retryActivation(e){await this.client.execute(Cp,{email:e.email,sessionId:e.sessionId});}async registerUser(e){await this.client.execute(Ip,{payload:{username:await this.generateUsername(`${e.firstName} ${e.lastName??""}`.trim()),email:e.email,password:e.password,firstName:e.firstName,lastName:e.lastName,expertise:e.expertise,sessionId:e.sessionId,bypassOnboarding:true}});}async createSession(e){let{data:t}=await this.client.execute(Pp,{redirectDestination:e?.destination});return t.createSession}async closeSession(e){let{data:t}=await this.client.execute(kp,{sessionId:e});switch(t.closeSession.__typename){case "CloseSessionAccessGrantedResult":return {status:"access-granted",accessToken:t.closeSession.accessToken};case "CloseSessionRecoveryGrantedResult":return {status:"recovery-granted",recoveryToken:t.closeSession.recoveryToken};case "CloseSessionPendingResult":return {status:"pending"}}}async signIn(e){let{data:t}=await this.client.execute(bp,{payload:{email:e.email,password:e.password,duration:e.duration,remember:false}});return t.signIn.token}async issueToken(e){let{data:t}=await this.client.execute(xp,{payload:{duration:e.duration}});return t.issueToken}async getOrganization(e){let{data:t}=await this.client.execute(cp,{slug:e}),n=t.organization??null;return n===null?null:o.normalizeOrganization(n)}async getOrganizations(){let{data:e}=await this.client.execute(lp);return (e.organizations.edges??[]).flatMap(n=>{let r=n?.node??null;return r===null||r.slug==="demo"?[]:[o.normalizeOrganization(r)]})}async setupOrganization(e){let{data:t}=await this.client.execute(up,{payload:await this.getOrganizationSetupPayload(e)}),{organization:n}=t.createConfiguredOrganization,{logo:r=null,website:i=null}=n;return {id:n.id,name:n.name,slug:n.slug,type:n.type,email:n.email,...r!==null?{logo:r}:{},...i!==null?{website:i}:{}}}async getOrganizationSetupPayload(e){let t=new URL(e.website),n=await this.getUser(),r=`${n.firstName} ${n.lastName??""}`.trim();if(t.hostname.toLowerCase()==="localhost")return {locale:e.locale,timeZone:e.timeZone,acceptedTerms:true,organization:{website:t.origin,email:n.email,name:"Personal organization",slug:await this.generateOrganizationSlug(r,true),type:"PERSONAL"},workspace:{name:"Personal workspace",slug:Yt({baseName:r,alwaysSuffixed:true}).next().value,website:t.origin},applications:[{environment:"DEVELOPMENT",name:"Website",slug:"website-dev",website:t.origin,platform:"JAVASCRIPT"}],audiences:[],components:[],experiences:[],slots:[],redirectUrl:e.redirectUrl};let i=await this.getOrganizationMetadata(t),a=`${t.protocol}//${i.domain}`,s=i.logo!==null&&i.logo!==void 0&&i.logo.width>=64&&i.logo.height>=64?i.logo.data:void 0;return {locale:i.languages[0]??e.locale,timeZone:e.timeZone,acceptedTerms:true,organization:{website:a,email:n.email,name:i.siteName,slug:await this.generateOrganizationSlug(i.siteName,false),type:"BUSINESS",logo:s},workspace:{name:i.siteName,slug:Yt({baseName:i.siteName,alwaysSuffixed:false}).next().value,logo:s,website:a},applications:[{environment:"PRODUCTION",name:"Website",slug:"website-prod",website:t.origin,platform:i.platform},{environment:"DEVELOPMENT",name:"Website",slug:"website-dev",website:t.origin,platform:i.platform}],audiences:[],components:[],experiences:[],slots:[],redirectUrl:e.redirectUrl}}async getInvitations(){let{data:e}=await this.client.execute(Sp);return (e.invitations.edges??[]).flatMap(n=>{let r=n?.node??null;return r===null?[]:[{id:r.id,invitationTime:r.invitationTime,organization:o.normalizeOrganization(r.organization)}]})}async acceptInvitation(e){await this.client.execute(hp,{invitationId:e});}static normalizeOrganization(e){let{logo:t=null,website:n=null}=e;return {id:e.id,name:e.name,slug:e.slug,type:e.type,email:e.email,...t!==null?{logo:t}:{},...n!==null?{website:n}:{}}}async getOrganizationMetadata(e){let{data:t}=await this.client.execute(dp,{url:e.toString()});return t.websiteMetadata}generateOrganizationSlug(e,t=false){return ot({query:mp,baseName:e,client:this.client,alwaysSuffixed:t})}generateUsername(e){return ot({query:fp,baseName:e,client:this.client,alwaysSuffixed:false})}};var Ap=x(`
|
|
1090
1101
|
query Workspace($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
1091
1102
|
organization(slug: $organizationSlug) {
|
|
1092
1103
|
workspace(slug: $workspaceSlug) {
|
|
@@ -1107,7 +1118,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1107
1118
|
}
|
|
1108
1119
|
}
|
|
1109
1120
|
}
|
|
1110
|
-
`),
|
|
1121
|
+
`),Ep=x(`
|
|
1111
1122
|
query Workspaces($organizationSlug: ReadableId!) {
|
|
1112
1123
|
organization(slug: $organizationSlug) {
|
|
1113
1124
|
workspaces(first: 100) {
|
|
@@ -1132,7 +1143,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1132
1143
|
}
|
|
1133
1144
|
}
|
|
1134
1145
|
}
|
|
1135
|
-
`),
|
|
1146
|
+
`),Rp=x(`
|
|
1136
1147
|
mutation CreateWorkspace($organizationId: OrganizationId!, $payload: CreateWorkspacePayload!) {
|
|
1137
1148
|
createWorkspace(organizationId: $organizationId, payload: $payload) {
|
|
1138
1149
|
id
|
|
@@ -1151,7 +1162,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1151
1162
|
}
|
|
1152
1163
|
}
|
|
1153
1164
|
}
|
|
1154
|
-
`),
|
|
1165
|
+
`),Tp=x(`
|
|
1155
1166
|
query FindWorkspaceSlug(
|
|
1156
1167
|
$organizationId: OrganizationId!
|
|
1157
1168
|
$slugFirstOption: ReadableId!
|
|
@@ -1164,7 +1175,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1164
1175
|
slugThirdOption: workspaceSlug(organizationId: $organizationId, slug: $slugThirdOption)
|
|
1165
1176
|
}
|
|
1166
1177
|
}
|
|
1167
|
-
`),
|
|
1178
|
+
`),Op=x(`
|
|
1168
1179
|
query WorkspaceFeatures($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
1169
1180
|
organization(slug: $organizationSlug) {
|
|
1170
1181
|
workspace(slug: $workspaceSlug) {
|
|
@@ -1192,7 +1203,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1192
1203
|
}
|
|
1193
1204
|
}
|
|
1194
1205
|
}
|
|
1195
|
-
`),
|
|
1206
|
+
`),Dp=x(`
|
|
1196
1207
|
mutation CreateResources($workspaceId: WorkspaceId!, $payload: CreateWorkspaceResourcePayload!) {
|
|
1197
1208
|
createWorkspaceResources(workspaceId: $workspaceId, payload: $payload) {
|
|
1198
1209
|
slots
|
|
@@ -1204,7 +1215,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1204
1215
|
}
|
|
1205
1216
|
}
|
|
1206
1217
|
}
|
|
1207
|
-
`);var
|
|
1218
|
+
`);var or=class o{constructor(e,t){this.client=e,this.hierarchyResolver=t;}async getWorkspace(e){let{data:t}=await this.client.execute(Ap,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug}),n=t.organization?.workspace??null;return n===null?null:o.normalizeWorkspace(n)}async getWorkspaces(e){let{data:t}=await this.client.execute(Ep,{organizationSlug:e.organizationSlug});return (t.organization?.workspaces.edges??[]).flatMap(r=>{let i=r?.node??null;return i===null?[]:[o.normalizeWorkspace(i)]})}static normalizeWorkspace(e){let{logo:t=null,website:n=null,locales:{edges:r=[]}}=e;return {id:e.id,name:e.name,slug:e.slug,timeZone:e.timeZone,defaultLocale:e.defaultLocale,locales:r?.flatMap(i=>{let a=i?.node?.code??null;return a===null?[]:[a]})??[],...t!==null?{logo:t}:{},...n!==null?{website:n}:{}}}async createWorkspace(e){let t=await this.hierarchyResolver.getHierarchy({organizationSlug:e.organizationSlug}),{data:n}=await this.client.execute(Rp,{organizationId:t.organizationId,payload:{name:e.name,slug:await this.generateWorkspaceSlug(t.organizationId,e.name),timeZone:e.timeZone,defaultLocale:e.defaultLocale,website:e.website}}),r=n.createWorkspace,{logo:i=null,website:a=null,locales:{edges:s=[]}}=r;return {id:r.id,name:r.name,slug:r.slug,timeZone:r.timeZone,defaultLocale:r.defaultLocale,locales:s?.flatMap(p=>{let c=p?.node?.code??null;return c===null?[]:[c]})??[],...i!==null?{logo:i}:{},...a!==null?{website:a}:{}}}generateWorkspaceSlug(e,t){return ot({query:Tp,baseName:t,client:this.client,variables:{organizationId:e}})}};var Mp=x(`
|
|
1208
1219
|
query Audiences($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
1209
1220
|
organization(slug: $organizationSlug) {
|
|
1210
1221
|
workspace(slug: $workspaceSlug) {
|
|
@@ -1221,7 +1232,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1221
1232
|
}
|
|
1222
1233
|
}
|
|
1223
1234
|
}
|
|
1224
|
-
`)
|
|
1235
|
+
`),Np=x(`
|
|
1225
1236
|
query Audience(
|
|
1226
1237
|
$organizationSlug: ReadableId!,
|
|
1227
1238
|
$workspaceSlug: ReadableId!,
|
|
@@ -1238,7 +1249,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1238
1249
|
}
|
|
1239
1250
|
}
|
|
1240
1251
|
}
|
|
1241
|
-
`);var
|
|
1252
|
+
`);var $p=x(`
|
|
1242
1253
|
query Slots($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
1243
1254
|
organization(slug: $organizationSlug) {
|
|
1244
1255
|
workspace(slug: $workspaceSlug) {
|
|
@@ -1284,7 +1295,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1284
1295
|
}
|
|
1285
1296
|
}
|
|
1286
1297
|
}
|
|
1287
|
-
`),
|
|
1298
|
+
`),zp=x(`
|
|
1288
1299
|
query Slot(
|
|
1289
1300
|
$organizationSlug: ReadableId!,
|
|
1290
1301
|
$workspaceSlug: ReadableId!,
|
|
@@ -1331,7 +1342,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1331
1342
|
}
|
|
1332
1343
|
}
|
|
1333
1344
|
}
|
|
1334
|
-
`),
|
|
1345
|
+
`),_p=x(`
|
|
1335
1346
|
query SlotStaticContent(
|
|
1336
1347
|
$organizationSlug: ReadableId!,
|
|
1337
1348
|
$workspaceSlug: ReadableId!,
|
|
@@ -1349,7 +1360,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1349
1360
|
}
|
|
1350
1361
|
}
|
|
1351
1362
|
}
|
|
1352
|
-
`);var
|
|
1363
|
+
`);var Lp=x(`
|
|
1353
1364
|
query ApplicationSlugAvailability(
|
|
1354
1365
|
$workspaceId: WorkspaceId!
|
|
1355
1366
|
$slugFirstOption: ReadableId!
|
|
@@ -1362,7 +1373,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1362
1373
|
slugThirdOption: applicationSlug(workspaceId: $workspaceId, slug: $slugThirdOption)
|
|
1363
1374
|
}
|
|
1364
1375
|
}
|
|
1365
|
-
`),
|
|
1376
|
+
`),Fp=x(`
|
|
1366
1377
|
query Applications($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
1367
1378
|
organization(slug: $organizationSlug) {
|
|
1368
1379
|
workspace(slug: $workspaceSlug) {
|
|
@@ -1387,7 +1398,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1387
1398
|
}
|
|
1388
1399
|
}
|
|
1389
1400
|
}
|
|
1390
|
-
`),
|
|
1401
|
+
`),jp=x(`
|
|
1391
1402
|
query Application($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $applicationSlug: ReadableId!) {
|
|
1392
1403
|
organization(slug: $organizationSlug) {
|
|
1393
1404
|
workspace(slug: $workspaceSlug) {
|
|
@@ -1408,7 +1419,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1408
1419
|
}
|
|
1409
1420
|
}
|
|
1410
1421
|
}
|
|
1411
|
-
`),
|
|
1422
|
+
`),Wp=x(`
|
|
1412
1423
|
mutation CreateApplication($workspaceId: WorkspaceId!, $payload: CreateWebApplicationPayload!) {
|
|
1413
1424
|
createWebApplication(workspaceId: $workspaceId, payload: $payload) {
|
|
1414
1425
|
id
|
|
@@ -1425,7 +1436,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1425
1436
|
}
|
|
1426
1437
|
}
|
|
1427
1438
|
}
|
|
1428
|
-
`),
|
|
1439
|
+
`),Vp=x(`
|
|
1429
1440
|
mutation CreateApiKey($applicationId: ApplicationId!, $payload: CreateApiKeyPayload!) {
|
|
1430
1441
|
createApiKey(applicationId: $applicationId, payload: $payload) {
|
|
1431
1442
|
apiKey {
|
|
@@ -1436,7 +1447,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1436
1447
|
apiKeyValue
|
|
1437
1448
|
}
|
|
1438
1449
|
}
|
|
1439
|
-
`);var
|
|
1450
|
+
`);var Up=x(`
|
|
1440
1451
|
query Components($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!) {
|
|
1441
1452
|
organization(slug: $organizationSlug) {
|
|
1442
1453
|
workspace(slug: $workspaceSlug) {
|
|
@@ -1468,7 +1479,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1468
1479
|
}
|
|
1469
1480
|
}
|
|
1470
1481
|
}
|
|
1471
|
-
`),
|
|
1482
|
+
`),qp=x(`
|
|
1472
1483
|
query Component(
|
|
1473
1484
|
$organizationSlug: ReadableId!,
|
|
1474
1485
|
$workspaceSlug: ReadableId!,
|
|
@@ -1501,7 +1512,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1501
1512
|
}
|
|
1502
1513
|
}
|
|
1503
1514
|
}
|
|
1504
|
-
`);var
|
|
1515
|
+
`);var Hp=x(`
|
|
1505
1516
|
query Experience(
|
|
1506
1517
|
$organizationSlug: ReadableId!,
|
|
1507
1518
|
$workspaceSlug: ReadableId!,
|
|
@@ -1659,7 +1670,7 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1659
1670
|
}
|
|
1660
1671
|
}
|
|
1661
1672
|
}
|
|
1662
|
-
`),
|
|
1673
|
+
`),Gp=x(`
|
|
1663
1674
|
query Experiences($organizationSlug: ReadableId!, $workspaceSlug: ReadableId!, $status: [ExperienceStatus!]) {
|
|
1664
1675
|
organization(slug: $organizationSlug) {
|
|
1665
1676
|
workspace(slug: $workspaceSlug) {
|
|
@@ -1715,23 +1726,23 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1715
1726
|
}
|
|
1716
1727
|
}
|
|
1717
1728
|
}
|
|
1718
|
-
`);var
|
|
1729
|
+
`);var Kp=x(`
|
|
1719
1730
|
mutation GenerateTyping($workspaceId: WorkspaceId!, $payload: GenerateTypingPayload!) {
|
|
1720
1731
|
generateTyping(workspaceId: $workspaceId, payload: $payload)
|
|
1721
1732
|
}
|
|
1722
|
-
`);function vt(o){return {model:o,api:Object.fromEntries(Object.entries(o).map(([e,t])=>[t,e]))}}var $a=vt({javascript:"JAVASCRIPT",react:"REACT",nextjs:"NEXT"}),za=vt({DEVELOPMENT:"DEVELOPMENT",PRODUCTION:"PRODUCTION"}),Jp=vt({NEVER_RECEIVED_TRAFFIC:"NEVER_RECEIVED_TRAFFIC",NOT_RECEIVING_TRAFFIC:"NOT_RECEIVING_TRAFFIC",RECEIVING_TRAFFIC:"RECEIVING_TRAFFIC"}),Ol=vt({PLUG_JS:"PLUG_JS"}),_a=vt({DRAFT:"DRAFT",ACTIVE:"ACTIVE",SCHEDULED:"SCHEDULED",PAUSED:"PAUSED",ARCHIVED:"ARCHIVED"}),Dl=vt({DRAFT:"DRAFT",ACTIVE:"ACTIVE",SCHEDULED:"SCHEDULED",PAUSED:"PAUSED",FINISHED:"FINISHED",INDIRECTLY_PAUSED:"INDIRECTLY_PAUSED"}),sr=class o{constructor(e,t){this.client=e,this.hierarchyResolver=t;}async getFeatures(e){let{data:t}=await this.client.execute(Dp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug}),n=t.organization?.workspace??null;if(n===null)return null;let{quotas:r,capabilities:{features:i}}=n;return {quotas:{audiences:r.audience,remainingAudiences:r.remainingAudiences,components:r.component,remainingComponents:r.remainingComponents,slots:r.slot,remainingSlots:r.remainingSlots,experiences:r.experience,remainingExperiences:r.remainingExperiences,experiments:r.experiment,remainingExperiments:r.remainingExperiments,dynamicAttributesPerContent:r.dynamicAttributesPerContent,audiencesPerExperience:r.audiencesPerExperience},features:{crossDevice:i.includes("CROSS_DEVICE_EXPERIMENT"),dataExport:i.includes("API_DATA_EXPORT")}}}async getApplications(e){let{data:t}=await this.client.execute(jp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return (t.organization?.workspace?.applications.edges??[]).flatMap(r=>{let i=r?.node??null;return i===null?[]:[o.normalizeApplication(i)]})}async getApplication(e){let{data:t}=await this.client.execute(Wp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,applicationSlug:e.applicationSlug}),n=t.organization?.workspace?.application??null;return n===null?null:o.normalizeApplication(n)}static normalizeApplication(e){let{logo:t=null}=e;return {id:e.id,name:e.name,slug:e.slug,timeZone:e.settings.timeZone,website:e.website,environment:za.api[e.environment],platform:$a.api[e.platform??"JAVASCRIPT"],publicId:e.publicId,trafficStatus:Jp.api[e.applicationStatus],...t!==null?{logo:t}:{}}}async createApplication(e){let t=await this.hierarchyResolver.getHierarchy({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug}),{data:n}=await this.client.execute(Vp,{workspaceId:t.workspaceId,payload:{name:e.name,website:e.website,environment:za.model[e.environment],platform:$a.model[e.platform],timeZone:e.timeZone,slug:await this.generateApplicationSlug(t.workspaceId,e.name,e.environment)}}),r=n.createWebApplication,{logo:i=null}=r;return {id:r.id,name:r.name,slug:r.slug,timeZone:r.settings.timeZone,website:r.website,environment:za.api[r.environment],platform:$a.api[r.platform??"JAVASCRIPT"],publicId:r.publicId,trafficStatus:Jp.api[r.applicationStatus],...i!==null?{logo:i}:{}}}async getAudiences(e){let{data:t}=await this.client.execute(Np,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return (t.organization?.workspace?.audiences.edges??[]).flatMap(r=>{let i=r?.node??null;return i===null?[]:[o.normalizeAudience(i)]})}async getAudience(e){let{data:t}=await this.client.execute($p,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,audienceSlug:e.audienceSlug}),n=t.organization?.workspace?.audience??null;return n===null?null:o.normalizeAudience(n)}static normalizeAudience(e){return {id:e.id,name:e.name,slug:e.customId,criteria:e.criteria}}async getComponents(e){let{data:t}=await this.client.execute(qp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return (t.organization?.workspace?.components.edges??[]).flatMap(r=>{let i=r?.node??null;return i===null?[]:[o.normalizeComponent(i)]})}async getComponent(e){let{data:t}=await this.client.execute(Hp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,componentSlug:e.componentSlug,majorVersion:e.majorVersion}),n=t.organization?.workspace?.component??null;return n===null?null:o.normalizeComponent(n)}static normalizeComponent(e){let{definition:t,metadata:{directReferences:n,indirectReferences:r,referenceMetadata:i}}=e.definition,a=e.description??null;return {id:e.id,name:e.name,slug:e.customId,...a!==null?{description:a}:{},definition:t,version:{major:e.definition.version.major,minor:e.definition.version.minor},metadata:{directReferences:n.map(s=>i.find(({componentId:p})=>p===s)?.referenceName??s),indirectReferences:r.map(s=>i.find(({componentId:p})=>p===s)?.referenceName??s)}}}async getSlots(e){let{data:t}=await this.client.execute(zp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return (t.organization?.workspace?.slots.edges??[]).flatMap(r=>{let i=r?.node??null;return i===null?[]:[o.normalizeSlot(i)]})}async getSlot(e){let{data:t}=await this.client.execute(_p,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,slotSlug:e.slotSlug,majorVersion:e.majorVersion}),n=t.organization?.workspace?.slot??null;return n===null?null:o.normalizeSlot(n)}static normalizeSlot(e){let{component:t=null}=e.content,n=t?.definition.metadata??null;return {id:e.id,name:e.name,slug:e.customId,...t!==null&&n!==null?{component:{slug:t.customId,version:{major:t.definition.version.major,minor:t.definition.version.minor},metadata:{directReferences:n.directReferences.map(r=>n.referenceMetadata.find(({componentId:i})=>i===r)?.referenceName??r),indirectReferences:n.indirectReferences.map(r=>n.referenceMetadata.find(({componentId:i})=>i===r)?.referenceName??r)}}}:{},version:{major:e.content.version.major,minor:e.content.version.minor},resolvedDefinition:e.content.componentDefinition.resolvedDefinition,content:Object.fromEntries(e.content.default.map(({locale:r,content:i})=>[r,i]))}}async getSlotStaticContent(e,t){let{data:n}=await this.client.execute(Lp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,slotSlug:e.slotSlug,majorVersion:t});return (n.organization?.workspace?.slot?.staticContent??[]).map(i=>({locale:i.locale,content:i.content}))}async generateTypes(e){let t=await this.hierarchyResolver.getHierarchy({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug}),{data:n}=await this.client.execute(Zp,{workspaceId:t.workspaceId,payload:{target:Ol.model[e.target],components:e.components,slots:e.slots}});return n.generateTyping}async getExperiences(e){let{data:t}=await this.client.execute(Kp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,status:e.status===void 0?void 0:(Array.isArray(e.status)?e.status:[e.status]).map(r=>_a.model[r])});return (t.organization?.workspace?.experiences.edges??[]).flatMap(r=>{let i=r?.node??null;return i===null?[]:[o.normalizeExperience(i)]})}async getExperience(e){let{data:t}=await this.client.execute(Gp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,experienceId:e.experienceId}),n=t.organization?.workspace?.experience??null;return n===null?null:o.normalizeExperienceDetails(n)}static normalizeExperience(e){let t=e.settings?.audiences??e.draft?.audiences??[],n=e.settings?.slots??e.draft?.slots??[],r=e.currentExperiment?.name??e.draft?.experiment?.name??null;return {id:e.id,name:e.name,priority:e.priority??e.draft?.priority??0,status:_a.api[e.status],audiences:t.map(i=>i.customId),slots:n.flatMap(({slot:i=null})=>i===null?[]:[i.customId]),...r!==null?{experiment:{name:r}}:{}}}static normalizeExperienceDetails(e){let t=e.settings?.audiences??e.draft?.audiences??[],n=e.settings?.slots??e.draft?.slots??[],r=e.currentExperiment??e.draft?.experiment??null,{name:i=null,goalId:a=null,crossDevice:s=null,traffic:p=null}=r??{},c=Object.fromEntries(n.flatMap(({slot:l=null})=>l===null?[]:[[l.id,l.customId]]));return {id:e.id,name:e.name,priority:e.priority??e.draft?.priority??0,status:_a.api[e.status],hasExperiments:e.hasExperiments,audiences:t.map(l=>l.customId),slots:Object.values(c),...r!==null?{experiment:{...i!==null?{name:i}:{},...a!==null?{goalId:a}:{},...s!==null?{crossDevice:s}:{},...p!==null?{traffic:p}:{},..."status"in r?{status:Dl.api[r.status]}:{},variants:(r.variants??[]).map(l=>{let m=l.variantId,f=l.name??null,b=l.allocation??null;return {...m!==null?{id:m}:{},...f!==null?{name:f}:{},...b!==null?{allocation:b}:{},baseline:l.baseline===true,content:{default:o.normalizeLocalizedContent(l.content?.default.contents??[],c),segmented:(l.content?.segmented??[]).map(A=>({id:A.groupId,audiences:A.audiences.map(w=>w.audienceId),content:o.normalizeLocalizedContent(A.contents,c)}))}}})}}:{},content:{default:o.normalizeLocalizedContent(e.settings?.content.default.contents??e.draft?.content?.default.contents??[],c),segmented:(e.settings?.content.segmented??e.draft?.content?.segmented??[]).map(l=>({id:l.groupId,audiences:l.audiences.map(({audienceId:m})=>t.find(({id:f})=>f===m)?.customId??m),content:o.normalizeLocalizedContent(l.contents,c)}))}}}static normalizeLocalizedContent(e,t){let n={};for(let r of e){let{locale:i,slotId:a}=r,s=t[a];s!==void 0&&(n[s]===void 0&&(n[s]={}),n[s][i]=r.content);}return n}async createResources(e){let t=await this.hierarchyResolver.getHierarchy({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug}),n={components:Object.entries(e.components??{}).map(([i,a])=>({customId:i,name:a.name,description:a.description,definition:a.definition})),slots:Object.entries(e.slots??{}).map(([i,a])=>({customId:i,name:a.name,component:a.component,defaultContent:Object.entries(a.content).map(([s,p])=>({locale:s,content:p}))})),audiences:Object.entries(e.audiences??{}).map(([i,a])=>({customId:i,name:a.name,criteria:a.criteria})),experiences:(e.experiences??[]).map(i=>{let a=i.experiment??null;return {name:i.name,audiences:i.audiences,slots:i.slots,experiment:a!==null?{name:a.name,goalId:a.goalId,traffic:a.traffic,crossDevice:a.crossDevice===true,variants:a.variants.map(s=>({id:randomUUID(),name:s.name??"",baseline:s.baseline===true,allocation:s.allocation??0,content:o.createContentVariantGroup(s.content)}))}:void 0,content:o.createContentVariantGroup(i.content),validate:true,publish:i.draft===false}})},{data:{createWorkspaceResources:r}}=await this.client.execute(Mp,{workspaceId:t.workspaceId,payload:n});return {components:Object.fromEntries(n.components.map(({customId:i},a)=>[i,r.components[a]])),slots:Object.fromEntries(n.slots.map(({customId:i},a)=>[i,r.slots[a]])),audiences:Object.fromEntries(n.audiences.map(({customId:i},a)=>[i,r.audiences[a]])),experiences:r.experiences.map(i=>({experienceId:i.id,experimentId:i.experimentId??null}))}}static createContentVariantGroup(e){return {default:{id:randomUUID(),contents:o.createSlotContentMap(e.default)},segmented:e.segmented.map(t=>({id:randomUUID(),audiences:t.audiences,contents:o.createSlotContentMap(t.content)}))}}static createSlotContentMap(e){return Object.entries(e).flatMap(([t,n])=>Object.entries(n).map(([r,i])=>({slot:t,locale:r,content:i})))}generateApplicationSlug(e,t,n){return ot({query:Fp,baseName:`${t} ${n.slice(0,3).toLowerCase()}`,client:this.client,variables:{workspaceId:e}})}};var at;(t=>{function o(){return Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase()}t.getLocale=o;function e(){return Intl.DateTimeFormat().resolvedOptions().timeZone}t.getTimeZone=e;})(at||={});var wt=class o{constructor(e){this.config=e;}static prompt(e){return new o(e).handle()}handle(){let{input:e,validate:t}=this.config;return e.prompt({message:this.config.label,default:this.config.default??"https://",validate:n=>URL.canParse(n)?t!==void 0?t(n):true:"Invalid URL"})}};var pr=class o{constructor(e){this.config=e;}async handle(e={}){let{userApi:t,output:n,input:r}=this.config;if(e.new!==true){let c=n.notify("Loading organizations"),l=await t.getOrganizations(),m=o.getDefaultOrganization(l,e.default);if(m!==null)return c.confirm(`Organization: ${m.name}`),m;if(c.stop(),l.length>0)return r.select({message:"Select organization",options:l.map(f=>({value:f,label:f.name}))})}let i=at.getTimeZone(),a=at.getLocale();n.inform("Setting up a new organization"),n.inform("*By continuing, you agree to our [Terms of Service](https://croct.link/terms-of-service)*");let s=await wt.prompt({input:r,label:"Organization website"}),p=this.notify("Setting up organization");try{let c=await t.setupOrganization({website:s,locale:a,timeZone:i});return p.confirm(`Organization: ${c.name}`),c}finally{p.stop();}}notify(e){let{output:t}=this.config,n=["Visiting website","Detecting tech stack","Configuring organization","Creating workspace","Configuring applications","Setting up organization"],r=t.notify(e),i=0,a=setInterval(()=>{i>=n.length?clearInterval(a):r.update(n[i++]);},3e3);return {confirm:(s,p)=>{clearInterval(a),r.confirm(s,p);},stop:s=>{clearInterval(a),r.stop(s);}}}static getDefaultOrganization(e,t){return e.length===1?e[0]:t!==void 0?e.find(({slug:n})=>n===t)??null:null}};var Ne=class o{constructor(e){this.config=e;}static prompt(e){return new o(e).handle()}handle(){let{input:e,validator:t,minimumLength:n=2,maximumLength:r=30}=this.config;return e.prompt({message:this.config.label,default:this.config.default,validate:i=>/(^\s|\s$|\s{2,})/.test(i)?"No leading, trailing, or multiple spaces.":i.length<n?`Minimum of ${n} characters`:i.length>r?`Maximum of ${r} characters`:t?.(i)??true})}};var cr=class o{constructor(e){this.config=e;}async handle(e){let{organizationApi:t,output:n,input:r}=this.config,{organization:i}=e;if(e.new===false){let a=n.notify("Loading workspaces"),s=await t.getWorkspaces({organizationSlug:i.slug}),p=o.getDefaultWorkspace(s,e.default);if(p!==null)return a.confirm(`Workspace: ${p.name}`),p;if(a.stop(),s.length>0)return r.select({message:"Select workspace",options:s.map(c=>({value:c,label:c.name}))})}return this.setupWorkspace(i,e.new===true)}async setupWorkspace(e,t){let{organizationApi:n,input:r,output:i}=this.config,a=t?await Ne.prompt({input:r,label:"Workspace name",default:e.name}):e.name,s=at.getLocale(),p=at.getTimeZone(),c=i.notify("Creating workspace");try{let l=await n.createWorkspace({organizationSlug:e.slug,name:a,website:e.website,defaultLocale:s,timeZone:p});return c.confirm(`Workspace: ${l.name}`),l}finally{c.stop();}}static getDefaultWorkspace(e,t){return e.length===1?e[0]:t!==void 0?e.find(({slug:n})=>n===t)??null:null}};var lr=class o{constructor(e){this.config=e;}async handle(e){let{workspaceApi:t,output:n,input:r}=this.config,{organization:i,workspace:a,environment:s}=e,p=n.notify("Loading applications"),c=await t.getApplications({workspaceSlug:a.slug,organizationSlug:i.slug}),l=c.filter(m=>m.environment===s&&(e.default??m.slug)===m.slug);if(p.stop(),l.length===0||e.new===true)return this.setupApplication(e,c);if(l.length===1){let m=l[0];return n.confirm(o.formatSelection(m)),m}return r.select({message:s==="DEVELOPMENT"?"Select development application":"Select production application",options:l.map(m=>({value:m,label:m.name}))})}async setupApplication(e,t){let{workspaceApi:n,output:r,input:i}=this.config,{organization:a,workspace:s,platform:p,environment:c}=e,l=e.new===true,m=l?await Ne.prompt({input:i,label:"Application name",default:"Website",validator:w=>t.every(y=>y.name.toLowerCase()!==w.toLowerCase()||y.environment!==c)||"Name already in use"}):"Website",f=s.website??a.website??void 0,b=l||!o.isValidProductionUrl(f)?await wt.prompt({input:i,label:"Application website",default:f,validate:o.isValidProductionUrl}):f,A=r.notify("Configuring application");try{let w=await n.createApplication({organizationSlug:a.slug,workspaceSlug:s.slug,name:m,website:b,environment:c,platform:p,timeZone:s.timeZone});return A.confirm(o.formatSelection(w)),w}finally{A.stop();}}static isValidProductionUrl(e){return e!==void 0&&new URL(e).hostname!=="localhost"}static formatSelection(e){return e.environment==="DEVELOPMENT"?`Development application: ${e.name} (${e.slug})`:`Production application: ${e.name} (${e.slug})`}};var ur=class{constructor(e,t){this.client=e,this.hierarchyResolver=t;}async createApiKey(e){let t=await this.hierarchyResolver.getHierarchy({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,applicationSlug:e.applicationSlug}),{data:n}=await this.client.execute(Up,{applicationId:t.applicationId,payload:{name:e.name,permissions:e.permissions}}),{apiKey:r}=n.createApiKey;return {id:r.id,name:r.name,permissions:r.permissions.map(Ae.fromValue),secret:n.createApiKey.apiKeyValue}}};var Ze=class o{constructor(e){this.config=e;}static prompt(e){return new o(e).handle()}handle(){let{input:e}=this.config;return e.prompt({message:this.config.label,validate:t=>t.length>255?"The email must be less than 255 characters":/^([A-Z0-9_+-]+\.?)*[A-Z0-9_+-]@([A-Z0-9][A-Z0-9-]*\.)+[A-Z]{2,}$/i.test(t)?true:"Please enter a valid email"})}};var mr=class{constructor(e){this.config=e;}getToken(){return Promise.resolve(null)}login(e={}){if(e.username===void 0||e.password===void 0)return this.loginInteractively(e);let{form:t}=this.config;return t.signIn.handle({email:e.username,password:e.password})}async loginInteractively(e){let{input:t,output:n,userApi:r,form:i}=this.config,a=e.username??await Ze.prompt({input:t,label:"Enter your email"}),s=n.notify("Finding account"),p=await r.isEmailRegistered(a);return s.stop(),p?(e.password===void 0&&n.inform("Account found, please sign in"),i.signIn.handle({email:a,password:e.password,retry:true})):(n.inform("New account, please sign up"),i.signUp.handle({email:a}))}logout(){return Promise.resolve()}};var Je=class o{constructor(e){this.config=e;}static prompt(e){return new o(e).handle()}handle(){let{input:e}=this.config;return e.prompt({message:this.config.label,type:"password",validate:this.config.validator??(t=>t.length>0?true:"Please enter your password")})}};var dr=class{constructor(e){this.config=e;}handle(e){return this.login(e.email,e.password,e.retry)}async login(e,t,n=false){let{input:r,output:i,userApi:a}=this.config,s=e??await Ze.prompt({input:this.config.input,label:"Enter your email"}),p=t,c="retry-password";for(;c==="retry-password";){let l=p??await Je.prompt({input:r,label:"Password"});p=void 0;let m=i.notify("Checking credentials");try{let f=await a.signIn({email:s,password:l,duration:this.config.tokenDuration});return m.confirm("Logged in"),f}catch(f){if(f instanceof te){if(f.isAccessDenied("UNVERIFIED_USER")){if(!n)throw new d("Email not verified.",{reason:"access_denied",cause:f,suggestions:["Access your email and click on the activation link"]});m.warn("Email not verified"),c=await r.confirm({message:"Resend activation link?",default:true})?"retry-activation":"cancel";continue}if(f.isAccessDenied("BAD_CREDENTIALS")){if(!n)throw new d("Username or password is incorrect.",{reason:"access_denied",cause:f,suggestions:["Check your credentials or reset your password"]});m.alert("Wrong password"),c=await r.select({message:"What would you like to do?",default:"retry-password",options:[{label:"Try again",value:"retry-password"},{label:"Recover password",value:"reset-password"},...e===void 0?[{label:"Enter a different email",value:"change-email"}]:[],{label:"Cancel",value:"cancel"}]});continue}}throw m.stop(),f}}switch(c){case "change-email":return this.login();case "retry-activation":return this.retryActivation(s);case "reset-password":return this.resetPassword(s);case "cancel":default:return i.exit()}}async retryActivation(e){let{output:t,userApi:n,emailLinkGenerator:{verification:r}}=this.config,i=t.notify("Sending email"),a=await n.createSession({destination:this.config.verificationLinkDestination.accountActivation});await n.retryActivation({email:e,sessionId:a}),i.confirm(`Link sent to \`${e}\``);let s=await this.getInboxLink(r,e),p=this.waitToken(a);return s!==null&&await t.open(s),p}async resetPassword(e){let{output:t,userApi:n,emailLinkGenerator:{recovery:r}}=this.config,i=t.notify("Sending link to reset password"),a=await n.createSession({destination:this.config.verificationLinkDestination.passwordReset});await n.requestPasswordReset({email:e,sessionId:a}),i.confirm(`Link sent to \`${e}\``);let s=await this.getInboxLink(r,e),p=this.waitToken(a);return s!==null&&await t.open(s),n.resetPassword({token:await p,password:await this.createPassword()})}async createPassword(){let{input:e,output:t}=this.config,n=null;for(;n===null;){let r=await Je.prompt({input:e,label:"Enter your new password"}),i=await Je.prompt({input:e,label:"Confirm your new password"});if(r!==i){t.warn("Passwords do not match, please try again");continue}n=r;}return n}async getInboxLink(e,t){let{input:n}=this.config,r=await e(t);return r!==null&&await n.confirm({message:"Open your inbox?",default:true})?r.toString():null}async waitToken(e){let{output:t,listener:n}=this.config,r=t.notify("Waiting for confirmation"),i=await n.wait(e);return r.confirm("Login completed"),i}};var gr=class{constructor(e){this.config=e;}async handle(e){let{input:t,output:n,listener:r,userApi:i}=this.config;n.inform("*By continuing, you agree to our [Terms of Use](https://croct.link/terms-of-use) and [Privacy Policy](https://croct.link/privacy)*");let a=await Ne.prompt({input:t,minimumLength:2,maximumLength:30,label:"Name"}),[s,p]=a.replace(/\s+/g," ").trim().split(" "),c=e.email??await Ze.prompt({input:t,label:"Email"}),l=await Je.prompt({input:t,label:"Password",validator:y=>/[A-Z]/.test(y)?/[a-z]/.test(y)?/[^A-Za-z]/.test(y)?y.length<8?"Minimum of 8 characters":y.length>256?"Maximum of 256 characters":true:"Must contain a special character":"Must contain a lowercase letter":"Must contain an uppercase letter"}),m=i.createSession({destination:this.config.verificationLinkDestination}),f=n.notify("Creating account");await i.registerUser({sessionId:await m,email:c,password:l,firstName:s,lastName:p,expertise:e.expertise??"ENGINEERING"}),f.confirm(`Link to verify sent to \`${c}\``);let b=await this.config.emailLinkGenerator(c).then(async y=>y!==null&&await t.confirm({message:"Open your inbox?",default:true})?y.toString():null);f=n.notify("Waiting for account activation");let A=r.wait(await m);b!==null&&await n.open(b);let w=await A;return f.confirm("Account activated"),w}};var fr=class{constructor(e){this.config=e;}async execute(e){let{output:t,pageForm:n,userApi:r}=this.config,i=await this.config.configurationManager.load(),a=await n.handle({page:e.page,organizationSlug:i.organization,workspaceSlug:i.workspace,devApplicationSlug:i.applications.development,prodApplicationSlug:i.applications.production}),s=t.notify("Logging in..."),p=await r.issueToken({duration:this.config.adminTokenDuration});s.stop();let c=new URL(a.startsWith("/")?a.slice(1):a,this.config.adminUrl);c.searchParams.set(this.config.adminTokenParameter,p),await t.open(c.toString());}};function de(o,e){let t=[],n=null;if(traverse(o,{ImportDeclaration:i=>{let{node:a}=i;if(a.source.value!==e.moduleName)return i.skip();t.push({declaration:a});let s=a.importKind??"value";for(let p of a.specifiers)if(!(!g.isImportSpecifier(p)||Nl(p.imported)!==e.importName)){if(s==="value"&&(p.importKind===null||p.importKind===e.type)||s==="type"&&e.type==="type")return n=p.local.name,i.stop();t.unshift({declaration:a,specifier:p,localName:p.local.name});}return i.skip()}}),n!==null)return {modified:false,localName:n};if(t.length>0){for(let i of t){let{declaration:a}=i;if(a.importKind==="type"&&e.type==="value"){a.importKind="value";for(let s of a.specifiers)g.isImportSpecifier(s)&&s!==i.specifier&&(s.importKind="type");if(i.localName===void 0){let s=g.importSpecifier(g.identifier(e.localName??e.importName),g.identifier(e.importName));s.importKind=e.type,a.specifiers.push(s);}return {modified:true,localName:i.localName??e.importName}}if(i.specifier!==void 0&&i.specifier.importKind==="type"&&e.type==="value")return i.specifier.importKind="value",{modified:true,localName:i.localName}}for(let{declaration:i}of t){let a=i.importKind??"value";if(a==="value"||a===e.type){let s=g.importSpecifier(g.identifier(e.localName??e.importName),g.identifier(e.importName));return a!==e.type&&(s.importKind="type"),i.specifiers.push(s),{modified:true,localName:e.localName??e.importName}}}}let r=g.importDeclaration([g.importSpecifier(g.identifier(e.localName??e.importName),g.identifier(e.importName))],g.stringLiteral(e.moduleName));return e.type==="type"&&(r.importKind="type"),o.program.body.unshift(r),{modified:true,localName:e.localName??e.importName}}function Nl(o){return g.isIdentifier(o)?o.name:o.value}function Ct(o,e){let t=typeof o=="string"?Ke(o,["jsx","typescript"]):o,n=null;return traverse(t,{ImportDeclaration:r=>{let{node:i}=r;if(!yr(i.source.value,e.moduleName))return r.skip();for(let a of i.specifiers??[]){if(g.isImportDefaultSpecifier(a)){yr("default",e.importName)&&(n=a.local.name);continue}if(g.isImportSpecifier(a)&&yr(a.imported,e.importName))return n=a.local.name,r.skip()}return r.skip()}}),n}function yr(o,e){return typeof o!="string"?yr(g.isIdentifier(o)?o.name:o.value,e):typeof e=="string"?o===e:e.test(o)}function hr(o){let e=[];for(let[t,n]of Object.entries(o))e.push(g.jsxAttribute(g.jsxIdentifier(t),g.jsxExpressionContainer(st(n))));return e}function st(o){switch(o.type){case "reference":return o.path.length<2?g.identifier(o.path[0]):o.path.slice(2).reduce((e,t)=>g.memberExpression(e,g.identifier(t)),g.memberExpression(g.identifier(o.path[0]),g.identifier(o.path[1])));case "literal":return typeof o.value=="string"?g.stringLiteral(o.value):typeof o.value=="number"?g.numericLiteral(o.value):typeof o.value=="boolean"?g.booleanLiteral(o.value):g.nullLiteral();case "comparison":return g.binaryExpression(o.operator,st(o.left),st(o.right));case "ternary":return g.conditionalExpression(g.binaryExpression(o.condition.operator,st(o.condition.left),st(o.condition.right)),st(o.consequent),st(o.alternate))}}var pt=class o{constructor(e){this.configuration=e;}apply(e,t){let n=Ct(e,{importName:this.configuration.wrapper.component,moduleName:this.configuration.wrapper.module}),r=n??this.configuration.wrapper.component,i=[],a=1;if(traverse(e,{ExportDefaultDeclaration:p=>(a=this.wrapDeclaration(p.node.declaration,r,e,t),p.stop()),ExportNamedDeclaration:p=>(i.push(p.node),p.skip())}),a===1&&this.configuration?.fallbackToNamedExports===true)for(let p of i){if(g.isFunctionDeclaration(p.declaration)&&(a=this.wrapBlockStatement(p.declaration.body,r,e,t),a===0))break;if(g.isVariableDeclaration(p.declaration)){let{declarations:c}=p.declaration;if(c.some(m=>g.isIdentifier(m.init)||g.isArrowFunctionExpression(m.init)||g.isFunctionExpression(m.init)?this.wrapDeclaration(m.init,r,e,t)===0:false)){a=0;break}}for(let c of p.specifiers??[])if(g.isExportSpecifier(c)){let l=this.findComponentDeclaration(e,c.local.name);if(l!==null&&g.isVariableDeclarator(l)&&g.isExpression(l.init)&&(a=this.wrapDeclaration(l.init,r,e,t),a===0))break}if(a===0)break}if(a===0&&n===null){let{body:p}=e.program;g.isImportDeclaration(p[0])||p.unshift(g.emptyStatement()),de(e,{type:"value",moduleName:this.configuration.wrapper.module,importName:this.configuration.wrapper.component});}let s=this.configuration?.fallbackCodemod;return a===1&&s!==void 0?s.apply(e,t):Promise.resolve({modified:a===0,result:e})}wrapDeclaration(e,t,n,r){if(g.isArrowFunctionExpression(e)){if(g.isBlockStatement(e.body))return this.wrapBlockStatement(e.body,t,n,r);let i=this.insertWrapper(e.body,t,n,r);return i.result!==0?i.result:(e.body=i.node,0)}if(g.isFunctionExpression(e)||g.isFunctionDeclaration(e))return this.wrapBlockStatement(e.body,t,n,r);if(g.isIdentifier(e)){let i=this.findComponentDeclaration(n,e.name);if(i!==null)if(g.isVariableDeclarator(i)){let a=i.init??null;if(a!==null)return this.wrapDeclaration(a,t,n,r)}else return this.wrapBlockStatement(i.body,t,n,r)}return 1}wrapBlockStatement(e,t,n,r){let i=o.findReturnStatement(e),a=i?.argument??null;if(i!==null&&a!==null){let s=this.insertWrapper(a,t,n,r);return s.result!==0?s.result:(i.argument=g.parenthesizedExpression(s.node),0)}return 1}insertWrapper(e,t,n,r){if(this.containsElement(e,t))return {result:2,node:e};let i=this.findTargetChildren(n,e);if(i!==null){let{parent:a,index:s}=i,p=[...a.children??[]],c=p.splice(s,1)[0];return i.parent.children=p.length===0?[g.jsxText(`
|
|
1733
|
+
`);function vt(o){return {model:o,api:Object.fromEntries(Object.entries(o).map(([e,t])=>[t,e]))}}var Na=vt({javascript:"JAVASCRIPT",react:"REACT",nextjs:"NEXT"}),$a=vt({DEVELOPMENT:"DEVELOPMENT",PRODUCTION:"PRODUCTION"}),Zp=vt({NEVER_RECEIVED_TRAFFIC:"NEVER_RECEIVED_TRAFFIC",NOT_RECEIVING_TRAFFIC:"NOT_RECEIVING_TRAFFIC",RECEIVING_TRAFFIC:"RECEIVING_TRAFFIC"}),Tl=vt({PLUG_JS:"PLUG_JS"}),za=vt({DRAFT:"DRAFT",ACTIVE:"ACTIVE",SCHEDULED:"SCHEDULED",PAUSED:"PAUSED",ARCHIVED:"ARCHIVED"}),Ol=vt({DRAFT:"DRAFT",ACTIVE:"ACTIVE",SCHEDULED:"SCHEDULED",PAUSED:"PAUSED",FINISHED:"FINISHED",INDIRECTLY_PAUSED:"INDIRECTLY_PAUSED"}),ar=class o{constructor(e,t){this.client=e,this.hierarchyResolver=t;}async getFeatures(e){let{data:t}=await this.client.execute(Op,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug}),n=t.organization?.workspace??null;if(n===null)return null;let{quotas:r,capabilities:{features:i}}=n;return {quotas:{audiences:r.audience,remainingAudiences:r.remainingAudiences,components:r.component,remainingComponents:r.remainingComponents,slots:r.slot,remainingSlots:r.remainingSlots,experiences:r.experience,remainingExperiences:r.remainingExperiences,experiments:r.experiment,remainingExperiments:r.remainingExperiments,dynamicAttributesPerContent:r.dynamicAttributesPerContent,audiencesPerExperience:r.audiencesPerExperience},features:{crossDevice:i.includes("CROSS_DEVICE_EXPERIMENT"),dataExport:i.includes("API_DATA_EXPORT")}}}async getApplications(e){let{data:t}=await this.client.execute(Fp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return (t.organization?.workspace?.applications.edges??[]).flatMap(r=>{let i=r?.node??null;return i===null?[]:[o.normalizeApplication(i)]})}async getApplication(e){let{data:t}=await this.client.execute(jp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,applicationSlug:e.applicationSlug}),n=t.organization?.workspace?.application??null;return n===null?null:o.normalizeApplication(n)}static normalizeApplication(e){let{logo:t=null}=e;return {id:e.id,name:e.name,slug:e.slug,timeZone:e.settings.timeZone,website:e.website,environment:$a.api[e.environment],platform:Na.api[e.platform??"JAVASCRIPT"],publicId:e.publicId,trafficStatus:Zp.api[e.applicationStatus],...t!==null?{logo:t}:{}}}async createApplication(e){let t=await this.hierarchyResolver.getHierarchy({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug}),{data:n}=await this.client.execute(Wp,{workspaceId:t.workspaceId,payload:{name:e.name,website:e.website,environment:$a.model[e.environment],platform:Na.model[e.platform],timeZone:e.timeZone,slug:await this.generateApplicationSlug(t.workspaceId,e.name,e.environment)}}),r=n.createWebApplication,{logo:i=null}=r;return {id:r.id,name:r.name,slug:r.slug,timeZone:r.settings.timeZone,website:r.website,environment:$a.api[r.environment],platform:Na.api[r.platform??"JAVASCRIPT"],publicId:r.publicId,trafficStatus:Zp.api[r.applicationStatus],...i!==null?{logo:i}:{}}}async getAudiences(e){let{data:t}=await this.client.execute(Mp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return (t.organization?.workspace?.audiences.edges??[]).flatMap(r=>{let i=r?.node??null;return i===null?[]:[o.normalizeAudience(i)]})}async getAudience(e){let{data:t}=await this.client.execute(Np,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,audienceSlug:e.audienceSlug}),n=t.organization?.workspace?.audience??null;return n===null?null:o.normalizeAudience(n)}static normalizeAudience(e){return {id:e.id,name:e.name,slug:e.customId,criteria:e.criteria}}async getComponents(e){let{data:t}=await this.client.execute(Up,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return (t.organization?.workspace?.components.edges??[]).flatMap(r=>{let i=r?.node??null;return i===null?[]:[o.normalizeComponent(i)]})}async getComponent(e){let{data:t}=await this.client.execute(qp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,componentSlug:e.componentSlug,majorVersion:e.majorVersion}),n=t.organization?.workspace?.component??null;return n===null?null:o.normalizeComponent(n)}static normalizeComponent(e){let{definition:t,metadata:{directReferences:n,indirectReferences:r,referenceMetadata:i}}=e.definition,a=e.description??null;return {id:e.id,name:e.name,slug:e.customId,...a!==null?{description:a}:{},definition:t,version:{major:e.definition.version.major,minor:e.definition.version.minor},metadata:{directReferences:n.map(s=>i.find(({componentId:p})=>p===s)?.referenceName??s),indirectReferences:r.map(s=>i.find(({componentId:p})=>p===s)?.referenceName??s)}}}async getSlots(e){let{data:t}=await this.client.execute($p,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return (t.organization?.workspace?.slots.edges??[]).flatMap(r=>{let i=r?.node??null;return i===null?[]:[o.normalizeSlot(i)]})}async getSlot(e){let{data:t}=await this.client.execute(zp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,slotSlug:e.slotSlug,majorVersion:e.majorVersion}),n=t.organization?.workspace?.slot??null;return n===null?null:o.normalizeSlot(n)}static normalizeSlot(e){let{component:t=null}=e.content,n=t?.definition.metadata??null;return {id:e.id,name:e.name,slug:e.customId,...t!==null&&n!==null?{component:{slug:t.customId,version:{major:t.definition.version.major,minor:t.definition.version.minor},metadata:{directReferences:n.directReferences.map(r=>n.referenceMetadata.find(({componentId:i})=>i===r)?.referenceName??r),indirectReferences:n.indirectReferences.map(r=>n.referenceMetadata.find(({componentId:i})=>i===r)?.referenceName??r)}}}:{},version:{major:e.content.version.major,minor:e.content.version.minor},resolvedDefinition:e.content.componentDefinition.resolvedDefinition,content:Object.fromEntries(e.content.default.map(({locale:r,content:i})=>[r,i]))}}async getSlotStaticContent(e,t){let{data:n}=await this.client.execute(_p,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,slotSlug:e.slotSlug,majorVersion:t});return (n.organization?.workspace?.slot?.staticContent??[]).map(i=>({locale:i.locale,content:i.content}))}async generateTypes(e){let t=await this.hierarchyResolver.getHierarchy({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug}),{data:n}=await this.client.execute(Kp,{workspaceId:t.workspaceId,payload:{target:Tl.model[e.target],components:e.components,slots:e.slots}});return n.generateTyping}async getExperiences(e){let{data:t}=await this.client.execute(Gp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,status:e.status===void 0?void 0:(Array.isArray(e.status)?e.status:[e.status]).map(r=>za.model[r])});return (t.organization?.workspace?.experiences.edges??[]).flatMap(r=>{let i=r?.node??null;return i===null?[]:[o.normalizeExperience(i)]})}async getExperience(e){let{data:t}=await this.client.execute(Hp,{organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,experienceId:e.experienceId}),n=t.organization?.workspace?.experience??null;return n===null?null:o.normalizeExperienceDetails(n)}static normalizeExperience(e){let t=e.settings?.audiences??e.draft?.audiences??[],n=e.settings?.slots??e.draft?.slots??[],r=e.currentExperiment?.name??e.draft?.experiment?.name??null;return {id:e.id,name:e.name,priority:e.priority??e.draft?.priority??0,status:za.api[e.status],audiences:t.map(i=>i.customId),slots:n.flatMap(({slot:i=null})=>i===null?[]:[i.customId]),...r!==null?{experiment:{name:r}}:{}}}static normalizeExperienceDetails(e){let t=e.settings?.audiences??e.draft?.audiences??[],n=e.settings?.slots??e.draft?.slots??[],r=e.currentExperiment??e.draft?.experiment??null,{name:i=null,goalId:a=null,crossDevice:s=null,traffic:p=null}=r??{},c=Object.fromEntries(n.flatMap(({slot:l=null})=>l===null?[]:[[l.id,l.customId]]));return {id:e.id,name:e.name,priority:e.priority??e.draft?.priority??0,status:za.api[e.status],hasExperiments:e.hasExperiments,audiences:t.map(l=>l.customId),slots:Object.values(c),...r!==null?{experiment:{...i!==null?{name:i}:{},...a!==null?{goalId:a}:{},...s!==null?{crossDevice:s}:{},...p!==null?{traffic:p}:{},..."status"in r?{status:Ol.api[r.status]}:{},variants:(r.variants??[]).map(l=>{let m=l.variantId,f=l.name??null,b=l.allocation??null;return {...m!==null?{id:m}:{},...f!==null?{name:f}:{},...b!==null?{allocation:b}:{},baseline:l.baseline===true,content:{default:o.normalizeLocalizedContent(l.content?.default.contents??[],c),segmented:(l.content?.segmented??[]).map(A=>({id:A.groupId,audiences:A.audiences.map(v=>v.audienceId),content:o.normalizeLocalizedContent(A.contents,c)}))}}})}}:{},content:{default:o.normalizeLocalizedContent(e.settings?.content.default.contents??e.draft?.content?.default.contents??[],c),segmented:(e.settings?.content.segmented??e.draft?.content?.segmented??[]).map(l=>({id:l.groupId,audiences:l.audiences.map(({audienceId:m})=>t.find(({id:f})=>f===m)?.customId??m),content:o.normalizeLocalizedContent(l.contents,c)}))}}}static normalizeLocalizedContent(e,t){let n={};for(let r of e){let{locale:i,slotId:a}=r,s=t[a];s!==void 0&&(n[s]===void 0&&(n[s]={}),n[s][i]=r.content);}return n}async createResources(e){let t=await this.hierarchyResolver.getHierarchy({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug}),n={components:Object.entries(e.components??{}).map(([i,a])=>({customId:i,name:a.name,description:a.description,definition:a.definition})),slots:Object.entries(e.slots??{}).map(([i,a])=>({customId:i,name:a.name,component:a.component,defaultContent:Object.entries(a.content).map(([s,p])=>({locale:s,content:p}))})),audiences:Object.entries(e.audiences??{}).map(([i,a])=>({customId:i,name:a.name,criteria:a.criteria})),experiences:(e.experiences??[]).map(i=>{let a=i.experiment??null;return {name:i.name,audiences:i.audiences,slots:i.slots,experiment:a!==null?{name:a.name,goalId:a.goalId,traffic:a.traffic,crossDevice:a.crossDevice===true,variants:a.variants.map(s=>({id:randomUUID(),name:s.name??"",baseline:s.baseline===true,allocation:s.allocation??0,content:o.createContentVariantGroup(s.content)}))}:void 0,content:o.createContentVariantGroup(i.content),validate:true,publish:i.draft===false}})},{data:{createWorkspaceResources:r}}=await this.client.execute(Dp,{workspaceId:t.workspaceId,payload:n});return {components:Object.fromEntries(n.components.map(({customId:i},a)=>[i,r.components[a]])),slots:Object.fromEntries(n.slots.map(({customId:i},a)=>[i,r.slots[a]])),audiences:Object.fromEntries(n.audiences.map(({customId:i},a)=>[i,r.audiences[a]])),experiences:r.experiences.map(i=>({experienceId:i.id,experimentId:i.experimentId??null}))}}static createContentVariantGroup(e){return {default:{id:randomUUID(),contents:o.createSlotContentMap(e.default)},segmented:e.segmented.map(t=>({id:randomUUID(),audiences:t.audiences,contents:o.createSlotContentMap(t.content)}))}}static createSlotContentMap(e){return Object.entries(e).flatMap(([t,n])=>Object.entries(n).map(([r,i])=>({slot:t,locale:r,content:i})))}generateApplicationSlug(e,t,n){return ot({query:Lp,baseName:`${t} ${n.slice(0,3).toLowerCase()}`,client:this.client,variables:{workspaceId:e}})}};var at;(t=>{function o(){return Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase()}t.getLocale=o;function e(){return Intl.DateTimeFormat().resolvedOptions().timeZone}t.getTimeZone=e;})(at||={});var wt=class o{constructor(e){this.config=e;}static prompt(e){return new o(e).handle()}handle(){let{input:e,validate:t}=this.config;return e.prompt({message:this.config.label,default:this.config.default??"https://",validate:n=>URL.canParse(n)?t!==void 0?t(n):true:"Invalid URL"})}};var sr=class o{constructor(e){this.config=e;}async handle(e={}){let{userApi:t,output:n,input:r}=this.config;if(e.new!==true){let c=n.notify("Loading organizations"),l=await t.getOrganizations(),m=o.getDefaultOrganization(l,e.default);if(m!==null)return c.confirm(`Organization: ${m.name}`),m;if(c.stop(),l.length>0)return r.select({message:"Select organization",options:l.map(f=>({value:f,label:f.name}))})}let i=at.getTimeZone(),a=at.getLocale();n.inform("Setting up a new organization"),n.inform("*By continuing, you agree to our [Terms of Service](https://croct.link/terms-of-service)*");let s=await wt.prompt({input:r,label:"Organization website"}),p=this.notify("Setting up organization");try{let c=await t.setupOrganization({website:s,locale:a,timeZone:i});return p.confirm(`Organization: ${c.name}`),c}finally{p.stop();}}notify(e){let{output:t}=this.config,n=["Visiting website","Detecting tech stack","Configuring organization","Creating workspace","Configuring applications","Setting up organization"],r=t.notify(e),i=0,a=setInterval(()=>{i>=n.length?clearInterval(a):r.update(n[i++]);},3e3);return {confirm:(s,p)=>{clearInterval(a),r.confirm(s,p);},stop:s=>{clearInterval(a),r.stop(s);}}}static getDefaultOrganization(e,t){return e.length===1?e[0]:t!==void 0?e.find(({slug:n})=>n===t)??null:null}};var Ne=class o{constructor(e){this.config=e;}static prompt(e){return new o(e).handle()}handle(){let{input:e,validator:t,minimumLength:n=2,maximumLength:r=30}=this.config;return e.prompt({message:this.config.label,default:this.config.default,validate:i=>/(^\s|\s$|\s{2,})/.test(i)?"No leading, trailing, or multiple spaces.":i.length<n?`Minimum of ${n} characters`:i.length>r?`Maximum of ${r} characters`:t?.(i)??true})}};var pr=class o{constructor(e){this.config=e;}async handle(e){let{organizationApi:t,output:n,input:r}=this.config,{organization:i}=e;if(e.new===false){let a=n.notify("Loading workspaces"),s=await t.getWorkspaces({organizationSlug:i.slug}),p=o.getDefaultWorkspace(s,e.default);if(p!==null)return a.confirm(`Workspace: ${p.name}`),p;if(a.stop(),s.length>0)return r.select({message:"Select workspace",options:s.map(c=>({value:c,label:c.name}))})}return this.setupWorkspace(i,e.new===true)}async setupWorkspace(e,t){let{organizationApi:n,input:r,output:i}=this.config,a=t?await Ne.prompt({input:r,label:"Workspace name",default:e.name}):e.name,s=at.getLocale(),p=at.getTimeZone(),c=i.notify("Creating workspace");try{let l=await n.createWorkspace({organizationSlug:e.slug,name:a,website:e.website,defaultLocale:s,timeZone:p});return c.confirm(`Workspace: ${l.name}`),l}finally{c.stop();}}static getDefaultWorkspace(e,t){return e.length===1?e[0]:t!==void 0?e.find(({slug:n})=>n===t)??null:null}};var cr=class o{constructor(e){this.config=e;}async handle(e){let{workspaceApi:t,output:n,input:r}=this.config,{organization:i,workspace:a,environment:s}=e,p=n.notify("Loading applications"),c=await t.getApplications({workspaceSlug:a.slug,organizationSlug:i.slug}),l=c.filter(m=>m.environment===s&&(e.default??m.slug)===m.slug);if(p.stop(),l.length===0||e.new===true)return this.setupApplication(e,c);if(l.length===1){let m=l[0];return n.confirm(o.formatSelection(m)),m}return r.select({message:s==="DEVELOPMENT"?"Select development application":"Select production application",options:l.map(m=>({value:m,label:m.name}))})}async setupApplication(e,t){let{workspaceApi:n,output:r,input:i}=this.config,{organization:a,workspace:s,platform:p,environment:c}=e,l=e.new===true,m=l?await Ne.prompt({input:i,label:"Application name",default:"Website",validator:v=>t.every(y=>y.name.toLowerCase()!==v.toLowerCase()||y.environment!==c)||"Name already in use"}):"Website",f=s.website??a.website??void 0,b=l||!o.isValidProductionUrl(f)?await wt.prompt({input:i,label:"Application website",default:f,validate:o.isValidProductionUrl}):f,A=r.notify("Configuring application");try{let v=await n.createApplication({organizationSlug:a.slug,workspaceSlug:s.slug,name:m,website:b,environment:c,platform:p,timeZone:s.timeZone});return A.confirm(o.formatSelection(v)),v}finally{A.stop();}}static isValidProductionUrl(e){return e!==void 0&&new URL(e).hostname!=="localhost"}static formatSelection(e){return e.environment==="DEVELOPMENT"?`Development application: ${e.name} (${e.slug})`:`Production application: ${e.name} (${e.slug})`}};var lr=class{constructor(e,t){this.client=e,this.hierarchyResolver=t;}async createApiKey(e){let t=await this.hierarchyResolver.getHierarchy({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,applicationSlug:e.applicationSlug}),{data:n}=await this.client.execute(Vp,{applicationId:t.applicationId,payload:{name:e.name,permissions:e.permissions}}),{apiKey:r}=n.createApiKey;return {id:r.id,name:r.name,permissions:r.permissions.map(Ee.fromValue),secret:n.createApiKey.apiKeyValue}}};var Ke=class o{constructor(e){this.config=e;}static prompt(e){return new o(e).handle()}handle(){let{input:e}=this.config;return e.prompt({message:this.config.label,validate:t=>t.length>255?"The email must be less than 255 characters":/^([A-Z0-9_+-]+\.?)*[A-Z0-9_+-]@([A-Z0-9][A-Z0-9-]*\.)+[A-Z]{2,}$/i.test(t)?true:"Please enter a valid email"})}};var ur=class{constructor(e){this.config=e;}getToken(){return Promise.resolve(null)}login(e={}){if(e.username===void 0||e.password===void 0)return this.loginInteractively(e);let{form:t}=this.config;return t.signIn.handle({email:e.username,password:e.password})}async loginInteractively(e){let{input:t,output:n,userApi:r,form:i}=this.config,a=e.username??await Ke.prompt({input:t,label:"Enter your email"}),s=n.notify("Finding account"),p=await r.isEmailRegistered(a);return s.stop(),p?(e.password===void 0&&n.inform("Account found, please sign in"),i.signIn.handle({email:a,password:e.password,retry:true})):(n.inform("New account, please sign up"),i.signUp.handle({email:a}))}logout(){return Promise.resolve()}};var Ze=class o{constructor(e){this.config=e;}static prompt(e){return new o(e).handle()}handle(){let{input:e}=this.config;return e.prompt({message:this.config.label,type:"password",validate:this.config.validator??(t=>t.length>0?true:"Please enter your password")})}};var mr=class{constructor(e){this.config=e;}handle(e){return this.login(e.email,e.password,e.retry)}async login(e,t,n=false){let{input:r,output:i,userApi:a}=this.config,s=e??await Ke.prompt({input:this.config.input,label:"Enter your email"}),p=t,c="retry-password";for(;c==="retry-password";){let l=p??await Ze.prompt({input:r,label:"Password"});p=void 0;let m=i.notify("Checking credentials");try{let f=await a.signIn({email:s,password:l,duration:this.config.tokenDuration});return m.confirm("Logged in"),f}catch(f){if(f instanceof ne){if(f.isAccessDenied("UNVERIFIED_USER")){if(!n)throw new d("Email not verified.",{reason:"access_denied",cause:f,suggestions:["Access your email and click on the activation link"]});m.warn("Email not verified"),c=await r.confirm({message:"Resend activation link?",default:true})?"retry-activation":"cancel";continue}if(f.isAccessDenied("BAD_CREDENTIALS")){if(!n)throw new d("Username or password is incorrect.",{reason:"access_denied",cause:f,suggestions:["Check your credentials or reset your password"]});m.alert("Wrong password"),c=await r.select({message:"What would you like to do?",default:"retry-password",options:[{label:"Try again",value:"retry-password"},{label:"Recover password",value:"reset-password"},...e===void 0?[{label:"Enter a different email",value:"change-email"}]:[],{label:"Cancel",value:"cancel"}]});continue}}throw m.stop(),f}}switch(c){case "change-email":return this.login();case "retry-activation":return this.retryActivation(s);case "reset-password":return this.resetPassword(s);case "cancel":default:return i.exit()}}async retryActivation(e){let{output:t,userApi:n,emailLinkGenerator:{verification:r}}=this.config,i=t.notify("Sending email"),a=await n.createSession({destination:this.config.verificationLinkDestination.accountActivation});await n.retryActivation({email:e,sessionId:a}),i.confirm(`Link sent to \`${e}\``);let s=await this.getInboxLink(r,e),p=this.waitToken(a);return s!==null&&await t.open(s),p}async resetPassword(e){let{output:t,userApi:n,emailLinkGenerator:{recovery:r}}=this.config,i=t.notify("Sending link to reset password"),a=await n.createSession({destination:this.config.verificationLinkDestination.passwordReset});await n.requestPasswordReset({email:e,sessionId:a}),i.confirm(`Link sent to \`${e}\``);let s=await this.getInboxLink(r,e),p=this.waitToken(a);return s!==null&&await t.open(s),n.resetPassword({token:await p,password:await this.createPassword()})}async createPassword(){let{input:e,output:t}=this.config,n=null;for(;n===null;){let r=await Ze.prompt({input:e,label:"Enter your new password"}),i=await Ze.prompt({input:e,label:"Confirm your new password"});if(r!==i){t.warn("Passwords do not match, please try again");continue}n=r;}return n}async getInboxLink(e,t){let{input:n}=this.config,r=await e(t);return r!==null&&await n.confirm({message:"Open your inbox?",default:true})?r.toString():null}async waitToken(e){let{output:t,listener:n}=this.config,r=t.notify("Waiting for confirmation"),i=await n.wait(e);return r.confirm("Login completed"),i}};var dr=class{constructor(e){this.config=e;}async handle(e){let{input:t,output:n,listener:r,userApi:i}=this.config;n.inform("*By continuing, you agree to our [Terms of Use](https://croct.link/terms-of-use) and [Privacy Policy](https://croct.link/privacy)*");let a=await Ne.prompt({input:t,minimumLength:2,maximumLength:30,label:"Name"}),[s,p]=a.replace(/\s+/g," ").trim().split(" "),c=e.email??await Ke.prompt({input:t,label:"Email"}),l=await Ze.prompt({input:t,label:"Password",validator:y=>/[A-Z]/.test(y)?/[a-z]/.test(y)?/[^A-Za-z]/.test(y)?y.length<8?"Minimum of 8 characters":y.length>256?"Maximum of 256 characters":true:"Must contain a special character":"Must contain a lowercase letter":"Must contain an uppercase letter"}),m=i.createSession({destination:this.config.verificationLinkDestination}),f=n.notify("Creating account");await i.registerUser({sessionId:await m,email:c,password:l,firstName:s,lastName:p,expertise:e.expertise??"ENGINEERING"}),f.confirm(`Link to verify sent to \`${c}\``);let b=await this.config.emailLinkGenerator(c).then(async y=>y!==null&&await t.confirm({message:"Open your inbox?",default:true})?y.toString():null);f=n.notify("Waiting for account activation");let A=r.wait(await m);b!==null&&await n.open(b);let v=await A;return f.confirm("Account activated"),v}};var gr=class{constructor(e){this.config=e;}async execute(e){let{output:t,pageForm:n,userApi:r}=this.config,i=await this.config.configurationManager.load(),a=await n.handle({page:e.page,organizationSlug:i.organization,workspaceSlug:i.workspace,devApplicationSlug:i.applications.development,prodApplicationSlug:i.applications.production}),s=t.notify("Logging in..."),p=await r.issueToken({duration:this.config.adminTokenDuration});s.stop();let c=new URL(a.startsWith("/")?a.slice(1):a,this.config.adminUrl);c.searchParams.set(this.config.adminTokenParameter,p),await t.open(c.toString());}};function ge(o,e){let t=[],n=null;if(traverse(o,{ImportDeclaration:i=>{let{node:a}=i;if(a.source.value!==e.moduleName)return i.skip();t.push({declaration:a});let s=a.importKind??"value";for(let p of a.specifiers)if(!(!g.isImportSpecifier(p)||Ml(p.imported)!==e.importName)){if(s==="value"&&(p.importKind===null||p.importKind===e.type)||s==="type"&&e.type==="type")return n=p.local.name,i.stop();t.unshift({declaration:a,specifier:p,localName:p.local.name});}return i.skip()}}),n!==null)return {modified:false,localName:n};if(t.length>0){for(let i of t){let{declaration:a}=i;if(a.importKind==="type"&&e.type==="value"){a.importKind="value";for(let s of a.specifiers)g.isImportSpecifier(s)&&s!==i.specifier&&(s.importKind="type");if(i.localName===void 0){let s=g.importSpecifier(g.identifier(e.localName??e.importName),g.identifier(e.importName));s.importKind=e.type,a.specifiers.push(s);}return {modified:true,localName:i.localName??e.importName}}if(i.specifier!==void 0&&i.specifier.importKind==="type"&&e.type==="value")return i.specifier.importKind="value",{modified:true,localName:i.localName}}for(let{declaration:i}of t){let a=i.importKind??"value";if(a==="value"||a===e.type){let s=g.importSpecifier(g.identifier(e.localName??e.importName),g.identifier(e.importName));return a!==e.type&&(s.importKind="type"),i.specifiers.push(s),{modified:true,localName:e.localName??e.importName}}}}let r=g.importDeclaration([g.importSpecifier(g.identifier(e.localName??e.importName),g.identifier(e.importName))],g.stringLiteral(e.moduleName));return e.type==="type"&&(r.importKind="type"),o.program.body.unshift(r),{modified:true,localName:e.localName??e.importName}}function Ml(o){return g.isIdentifier(o)?o.name:o.value}function Pt(o,e){let t=typeof o=="string"?Ge(o,["jsx","typescript"]):o,n=null;return traverse(t,{ImportDeclaration:r=>{let{node:i}=r;if(!fr(i.source.value,e.moduleName))return r.skip();for(let a of i.specifiers??[]){if(g.isImportDefaultSpecifier(a)){fr("default",e.importName)&&(n=a.local.name);continue}if(g.isImportSpecifier(a)&&fr(a.imported,e.importName))return n=a.local.name,r.skip()}return r.skip()}}),n}function fr(o,e){return typeof o!="string"?fr(g.isIdentifier(o)?o.name:o.value,e):typeof e=="string"?o===e:e.test(o)}function yr(o){let e=[];for(let[t,n]of Object.entries(o))e.push(g.jsxAttribute(g.jsxIdentifier(t),g.jsxExpressionContainer(st(n))));return e}function st(o){switch(o.type){case "reference":return o.path.length<2?g.identifier(o.path[0]):o.path.slice(2).reduce((e,t)=>g.memberExpression(e,g.identifier(t)),g.memberExpression(g.identifier(o.path[0]),g.identifier(o.path[1])));case "literal":return typeof o.value=="string"?g.stringLiteral(o.value):typeof o.value=="number"?g.numericLiteral(o.value):typeof o.value=="boolean"?g.booleanLiteral(o.value):g.nullLiteral();case "comparison":return g.binaryExpression(o.operator,st(o.left),st(o.right));case "ternary":return g.conditionalExpression(g.binaryExpression(o.condition.operator,st(o.condition.left),st(o.condition.right)),st(o.consequent),st(o.alternate))}}var pt=class o{constructor(e){this.configuration=e;}apply(e,t){let n=Pt(e,{importName:this.configuration.wrapper.component,moduleName:this.configuration.wrapper.module}),r=n??this.configuration.wrapper.component,i=[],a=1;if(traverse(e,{ExportDefaultDeclaration:p=>(a=this.wrapDeclaration(p.node.declaration,r,e,t),p.stop()),ExportNamedDeclaration:p=>(i.push(p.node),p.skip())}),a===1&&this.configuration?.fallbackToNamedExports===true)for(let p of i){if(g.isFunctionDeclaration(p.declaration)&&(a=this.wrapBlockStatement(p.declaration.body,r,e,t),a===0))break;if(g.isVariableDeclaration(p.declaration)){let{declarations:c}=p.declaration;if(c.some(m=>g.isIdentifier(m.init)||g.isArrowFunctionExpression(m.init)||g.isFunctionExpression(m.init)?this.wrapDeclaration(m.init,r,e,t)===0:false)){a=0;break}}for(let c of p.specifiers??[])if(g.isExportSpecifier(c)){let l=this.findComponentDeclaration(e,c.local.name);if(l!==null&&g.isVariableDeclarator(l)&&g.isExpression(l.init)&&(a=this.wrapDeclaration(l.init,r,e,t),a===0))break}if(a===0)break}if(a===0&&n===null){let{body:p}=e.program;g.isImportDeclaration(p[0])||p.unshift(g.emptyStatement()),ge(e,{type:"value",moduleName:this.configuration.wrapper.module,importName:this.configuration.wrapper.component});}let s=this.configuration?.fallbackCodemod;return a===1&&s!==void 0?s.apply(e,t):Promise.resolve({modified:a===0,result:e})}wrapDeclaration(e,t,n,r){if(g.isArrowFunctionExpression(e)){if(g.isBlockStatement(e.body))return this.wrapBlockStatement(e.body,t,n,r);let i=this.insertWrapper(e.body,t,n,r);return i.result!==0?i.result:(e.body=i.node,0)}if(g.isFunctionExpression(e)||g.isFunctionDeclaration(e))return this.wrapBlockStatement(e.body,t,n,r);if(g.isIdentifier(e)){let i=this.findComponentDeclaration(n,e.name);if(i!==null)if(g.isVariableDeclarator(i)){let a=i.init??null;if(a!==null)return this.wrapDeclaration(a,t,n,r)}else return this.wrapBlockStatement(i.body,t,n,r)}return 1}wrapBlockStatement(e,t,n,r){let i=o.findReturnStatement(e),a=i?.argument??null;if(i!==null&&a!==null){let s=this.insertWrapper(a,t,n,r);return s.result!==0?s.result:(i.argument=g.parenthesizedExpression(s.node),0)}return 1}insertWrapper(e,t,n,r){if(this.containsElement(e,t))return {result:2,node:e};let i=this.findTargetChildren(n,e);if(i!==null){let{parent:a,index:s}=i,p=[...a.children??[]],c=p.splice(s,1)[0];return i.parent.children=p.length===0?[g.jsxText(`
|
|
1723
1734
|
`),this.wrapElement(c,t,r),g.jsxText(`
|
|
1724
1735
|
`)]:[...p.slice(0,s),this.wrapElement(c,t,r),...p.slice(s)],{result:0,node:e}}return g.isJSXText(e)||g.isJSXExpressionContainer(e)||g.isJSXSpreadChild(e)||g.isJSXElement(e)||g.isJSXFragment(e)?{result:0,node:this.wrapElement(e,t,r)}:{result:1,node:e}}wrapElement(e,t,n){return e.extra?.parenthesized===true&&(e.extra.parenthesized=false),g.jsxElement(g.jsxOpeningElement(g.jsxIdentifier(t??this.configuration.wrapper.component),this.getProviderProps(n)),g.jsxClosingElement(g.jsxIdentifier(t??this.configuration.wrapper.component)),[g.jsxText(`
|
|
1725
1736
|
`),e,g.jsxText(`
|
|
1726
|
-
`)])}getProviderProps(e){return hr({...this.configuration.wrapper.props,...e?.props})}containsElement(e,t){let n=false;return traverseFast(e,r=>{!n&&g.isJSXOpeningElement(r)&&g.isJSXIdentifier(r.name)&&r.name.name===t&&(n=true);}),n}findComponentDeclaration(e,t){let n=null;return traverse(e,{VariableDeclaration:r=>{if(!g.isProgram(r.parent))return r.skip();for(let i of r.node.declarations)if(g.isVariableDeclarator(i)&&g.isIdentifier(i.id)&&i.id.name===t)return n=i,r.stop();return r.skip()},FunctionDeclaration:r=>{if(!g.isProgram(r.parent))return r.skip();let{id:i}=r.node;return g.isIdentifier(i)&&i.name===t?(n=r.node,r.stop()):r.skip()}}),n}findTargetChildren(e,t){let n=null,{configuration:r}=this;return r.targets?.variable===void 0&&r.targets?.component===void 0?null:(traverse(e,{enter:function(a){let{node:s}=a;if(s===t)return a.traverse({JSXExpressionContainer:p=>{let{expression:c}=p.node;if(r.targets?.variable!==void 0&&g.isIdentifier(c)&&c.name===r.targets.variable){let l=p.parent;return n={parent:l,index:l.children.indexOf(p.node)},p.stop()}},JSXElement:p=>{let{openingElement:c}=p.node;if(r.targets?.component!==void 0&&g.isJSXOpeningElement(c)&&g.isJSXIdentifier(c.name)&&c.name.name===r.targets.component&&p.parent!==null){let l=p.parent;n={parent:l,index:l.children.indexOf(p.node)};}}}),a.stop()}}),n)}static findReturnStatement(e){let t=null;return traverseFast(e,n=>{t===null&&g.isReturnStatement(n)&&(t=n);}),t}};var We=class{constructor(e){this.codemod=e.codemod;}async apply(e,t){let n=Sr.parse(e,{parser:{parse:parse}}),r=await this.codemod.apply(n,t);return r.modified?{modified:true,result:Sr.print(r.result,{reuseWhitespace:false}).code}:{modified:false,result:e}}};function ja(o,e){let t=typeof o=="string"?Ke(o,["jsx","typescript"]):o,n=false;return traverse(t,{ExportAllDeclaration:r=>{let{node:i}=r;return !g.isStringLiteral(i.source)||!Fa(i.source,e.moduleName)||(n=true),r.skip()},ExportNamedDeclaration:r=>{let{node:i}=r;if(!g.isStringLiteral(i.source)||!Fa(i.source,e.moduleName))return r.skip();if(e.importName===void 0)return n=true,r.skip();for(let a of i.specifiers)if(g.isExportSpecifier(a)&&Fa(a.local,e.importName))return n=true,r.skip();return r.skip()}}),n}function Fa(o,e){let t=g.isIdentifier(o)?o.name:o.value;return typeof e=="string"?t===e:e.test(t)}function br(o,e){let t=[],n=false,r=false;if(traverse(o,{ExportAllDeclaration:s=>{let{node:p}=s;if(p.source.value!==e.moduleName)return s.skip();let c=p.exportKind??"value";if(e.exportName===void 0&&e.importName===void 0){if(c==="value"||c==="type"&&e.type==="type")return n=true,s.stop();if(c==="type"&&e.type==="value")return p.exportKind="value",n=true,r=true,s.stop()}else if((e.exportName===void 0||e.exportName===e.importName)&&(c==="value"||c==="type"&&e.type==="type"))return n=true,s.stop();return s.skip()},ExportNamedDeclaration:s=>{let{node:p}=s,c=p.source??null;if(c===null||c.value!==e.moduleName)return s.skip();t.push({declaration:p});let l=p.exportKind??"value";for(let m of p.specifiers){if(g.isExportNamespaceSpecifier(m)&&e.importName===void 0&&m.exported.name===e.exportName)return n=true,e.type==="value"&&l==="type"&&(p.exportKind="value",r=true),s.stop();if(e.importName===void 0||!g.isExportSpecifier(m)||Wa(m.local)!==e.importName||e.exportName!==void 0&&Wa(m.exported)!==e.exportName)continue;let f=m.exportKind??"value";if(l===e.type||l==="value"&&(f==="value"||m.exportKind===e.type))return n=true,s.stop();t.unshift({declaration:p,specifier:m});}return s.skip()}}),n)return r;let{body:i}=o.program;if(e.importName===void 0){if(e.exportName===void 0)for(let p of t){let{declaration:c}=p,l=c.exportKind??"value",m=c.specifiers.filter(f=>!g.isExportSpecifier(f)||f.local.name!==Wa(f.exported)||e.type==="type"&&l!=="type"&&f.exportKind!=="type");m.length===0?i.splice(i.indexOf(c),1):c.specifiers=m;}let s=e.exportName===void 0?g.exportAllDeclaration(g.stringLiteral(e.moduleName)):g.exportNamedDeclaration(null,[g.exportNamespaceSpecifier(g.identifier(e.exportName))],g.stringLiteral(e.moduleName));return e.type==="type"&&(s.exportKind="type"),i.push(s),true}for(let s of t){let{declaration:p}=s;if(p.exportKind==="type"&&e.type==="value"){p.exportKind="value";for(let c of p.specifiers)g.isExportSpecifier(c)&&c!==s.specifier&&(c.exportKind="type");return s.specifier===void 0&&p.specifiers.push(g.exportSpecifier(g.identifier(e.importName),g.identifier(e.exportName??e.importName))),true}}for(let{declaration:s}of t){let p=s.exportKind??"value";if(p==="value"||p===e.type){let c=g.exportSpecifier(g.identifier(e.importName),g.identifier(e.exportName??e.importName));return p!==e.type&&(c.exportKind="type"),s.specifiers.push(c),true}}let a=g.exportNamedDeclaration(null,[g.exportSpecifier(g.identifier(e.importName),g.identifier(e.exportName??e.importName))],g.stringLiteral(e.moduleName));return e.type==="type"&&(a.exportKind="type"),i.push(a),true}function Wa(o){return g.isIdentifier(o)?o.name:o.value}var Ir=class o{constructor(e){this.configuration=e;}apply(e){let{body:t}=e.program,n=ja(e,{moduleName:this.configuration.import.module,importName:this.configuration.import.configName}),r=ja(e,{moduleName:this.configuration.import.module,importName:this.configuration.import.middlewareName}),i=n?null:o.findConfig(e);if(r){if(n||i!==null)return Promise.resolve({modified:false,result:e});let m=br(e,{type:"value",moduleName:this.configuration.import.module,importName:this.configuration.import.configName});return Promise.resolve({modified:m,result:e})}let a=Ct(e,{moduleName:this.configuration.import.module,importName:this.configuration.import.middlewareFactoryName}),s=Ct(e,{moduleName:this.configuration.import.module,importName:this.configuration.import.middlewareName}),p=[];if(a!==null&&p.push(a),s!==null&&p.push(s),p.length>0&&o.isCalled(e,p))return Promise.resolve({modified:false,result:e});let c=i===null?null:Ct(e,{moduleName:this.configuration.import.module,importName:this.configuration.import.matcherName}),l=o.refactorMiddleware(e,a??this.configuration.import.middlewareFactoryName,i!==null&&i.matcher?i.name:void 0);if(l===null){if(i===null){let m=br(e,{type:"value",moduleName:this.configuration.import.module,importName:this.configuration.import.middlewareName}),f=br(e,{type:"value",moduleName:this.configuration.import.module,importName:this.configuration.import.configName});return Promise.resolve({modified:m||f,result:e})}l=g.exportDefaultDeclaration(g.callExpression(g.identifier(a??this.configuration.import.middlewareFactoryName),[g.objectExpression([g.objectProperty(g.identifier("matcher"),g.memberExpression(g.identifier(i.name),g.identifier(c??this.configuration.import.matcherName)))])])),t.push(l);}if(i!==null){this.configureMatcher(i.object,c??this.configuration.import.matcherLocalName);let m=t.indexOf(i.root),f=t.indexOf(l);if(m>f){t.splice(f,0,...t.splice(m,1));for(let b of o.findReferencesFrom(i.root,e.program)){let A=t.indexOf(b);A>f&&t.splice(f,0,...t.splice(A,1));}}}return a===null&&de(e,{type:"value",moduleName:this.configuration.import.module,importName:this.configuration.import.middlewareFactoryName}),i?.matcher===true&&c===null&&de(e,{type:"value",moduleName:this.configuration.import.module,importName:this.configuration.import.matcherName,localName:this.configuration.import.matcherLocalName}),Promise.resolve({modified:true,result:e})}configureMatcher(e,t){let n=false;for(let r of e.properties)if(g.isObjectProperty(r)&&g.isIdentifier(r.key)&&r.key.name==="matcher"){if(g.isStringLiteral(r.value)){r.value=g.arrayExpression([r.value,g.identifier(t)]),n=true;break}if(g.isArrayExpression(r.value)){let{elements:i}=r.value;i.some(a=>g.isIdentifier(a)&&a.name===t)||(i.push(g.identifier(t)),n=true);break}if(g.isIdentifier(r.value)){if(r.value.name===t)break;r.value=g.arrayExpression([g.spreadElement(g.conditionalExpression(g.callExpression(g.memberExpression(g.identifier("Array"),g.identifier("isArray")),[r.value]),r.value,g.arrayExpression([r.value]))),g.identifier(t)]),n=true;}}return n}static refactorMiddleware(e,t,n){let r=null;return traverse(e,{ExportNamedDeclaration:i=>{let{node:a}=i,{declaration:s,specifiers:p=[]}=a;if(g.isFunctionDeclaration(s))return g.isFunctionDeclaration(a.declaration)&&g.isIdentifier(a.declaration.id)&&a.declaration.id.name==="middleware"?(i.replaceWith(g.exportNamedDeclaration(g.variableDeclaration("const",[g.variableDeclarator(g.identifier("middleware"),o.wrapMiddleware(g.isFunctionDeclaration(a.declaration)?o.createFunctionExpression(a.declaration):a.declaration,t,n))]),[])),r=o.getRootNode(i),i.stop()):i.skip();if(g.isVariableDeclaration(s)){for(let c of s.declarations)if(g.isVariableDeclarator(c)&&g.isIdentifier(c.id)&&c.id.name==="middleware"){let l=c.init??null;if(l!==null)return c.init=o.wrapMiddleware(l,t,n),r=o.getRootNode(i),i.stop()}}for(let c of p)if(g.isExportSpecifier(c)&&g.isIdentifier(c.exported)&&g.isIdentifier(c.local)&&["middleware","default"].includes(c.exported.name))return r=o.replaceMiddlewareDeclaration(e,c.local.name,t,n),i.stop();return i.skip()},ExportDefaultDeclaration:i=>{let{node:a}=i,{declaration:s}=a;return g.isArrowFunctionExpression(s)?(i.replaceWith(g.exportDefaultDeclaration(o.wrapMiddleware(s,t,n))),r=o.getRootNode(i),i.stop()):g.isFunctionDeclaration(s)?(i.replaceWith(g.exportDefaultDeclaration(o.wrapMiddleware(o.createFunctionExpression(s,true),t,n))),r=o.getRootNode(i),i.stop()):g.isIdentifier(s)?(r=o.replaceMiddlewareDeclaration(e,s.name,t,n),i.stop()):i.skip()}}),r}static replaceMiddlewareDeclaration(e,t,n,r){let i=null;return traverse(e,{VariableDeclarator:a=>{let{node:s}=a;if(g.isIdentifier(s.id)&&s.id.name===t){let p=s.init??null;return p!==null&&(s.init=o.wrapMiddleware(p,n,r),i=o.getRootNode(a)),a.stop()}return a.skip()},FunctionDeclaration:a=>{let{node:s}=a;return g.isIdentifier(s.id)&&s.id.name===t?(a.replaceWith(o.wrapFunctionDeclaration(s,n,r,g.isIdentifier(s.id)?s.id.name:void 0)),i=o.getRootNode(a),a.stop()):a.skip()}}),i}static isCalled(e,t){let n=false;return traverse(e,{CallExpression:r=>{let{node:i}=r;return g.isIdentifier(i.callee)&&t.includes(i.callee.name)?(n=true,r.stop()):r.skip()}}),n}static findConfig(e){let t=null;return traverse(e,{ExportNamedDeclaration:n=>{let{declaration:r,specifiers:i=[]}=n.node;if(g.isVariableDeclaration(r)){for(let a of r.declarations)if(g.isVariableDeclarator(a)&&g.isIdentifier(a.id)&&a.id.name==="config"){let s=g.isIdentifier(a.init)?o.findVariableDeclarator(e,a.init.name):{name:"config",root:o.getRootNode(n),declaration:a};if(s===null||s.declaration.init===null)return n.stop();if(g.isObjectExpression(s.declaration.init))return t={name:s.name,root:s.root,object:s.declaration.init,matcher:o.hasMatcherProperty(s.declaration.init)},n.stop()}}for(let a of i)if(g.isExportSpecifier(a)&&g.isIdentifier(a.exported)&&g.isIdentifier(a.local)&&a.exported.name==="config"){let s=o.findVariableDeclarator(e,a.local.name);return s!==null&&g.isObjectExpression(s.declaration.init)&&(t={name:s.name,root:s.root,object:s.declaration.init,matcher:o.hasMatcherProperty(s.declaration.init)}),n.stop()}return n.skip()}}),t}static hasMatcherProperty(e){for(let t of e.properties)if(g.isObjectProperty(t)&&g.isIdentifier(t.key)&&t.key.name==="matcher")return true;return false}static findVariableDeclarator(e,t){let n=null;return traverse(e,{VariableDeclarator:r=>{if(!g.isProgram(r.parentPath.parent))return r.skip();let{node:i}=r;return g.isVariableDeclarator(i)&&g.isIdentifier(i.id)&&i.id.name===t?(g.isIdentifier(i.init)?n=o.findVariableDeclarator(e,i.init.name):n={name:t,root:o.getRootNode(r),declaration:i},r.stop()):r.skip()}}),n}static wrapMiddleware(e,t,n){return g.callExpression(g.identifier(t),[n!==void 0?g.objectExpression([g.objectProperty(g.identifier("matcher"),g.memberExpression(g.identifier(n),g.identifier("matcher"))),g.objectProperty(g.identifier("next"),e)]):e])}static wrapFunctionDeclaration(e,t,n,r="middleware"){return g.variableDeclaration("const",[g.variableDeclarator(g.identifier(r),o.wrapMiddleware(o.createFunctionExpression(e),t,n))])}static findReferencesFrom(e,t){let n=new Set;traverse(t,{enter:i=>{let{node:a}=i;if(a===e)return i.traverse({Identifier:function(p){let c=p.node;return o.isVariableReference(p.parent,c)&&n.add(c.name),p.skip()}}),i.stop()}});let r=[];return traverse(t,{VariableDeclarator:i=>{if(!g.isProgram(i.parentPath.parent))return i.skip();let{node:a}=i;return g.isIdentifier(a.id)&&n.has(a.id.name)&&r.push(o.getRootNode(i)),i.skip()},FunctionDeclaration:i=>{if(!g.isProgram(i.parent))return;let{node:a}=i;return g.isIdentifier(a.id)&&n.has(a.id.name)&&r.push(o.getRootNode(i)),i.skip()},ClassDeclaration:i=>{if(!g.isProgram(i.parent))return;let{node:a}=i;return g.isIdentifier(a.id)&&n.has(a.id.name)&&r.push(o.getRootNode(i)),i.skip()}}),[...new Set(r.flatMap(i=>[i,...o.findReferencesFrom(i,t)]))]}static isVariableReference(e,t){return g.isVariableDeclarator(e)?e.init===t:g.isClassProperty(e)||g.isObjectProperty(e)||g.isProperty(e)?e.value===t:g.isMemberExpression(e)?e.object===t:g.isCallExpression(e)||g.isNewExpression(e)?e.callee===t:g.isExpression(e)}static createFunctionExpression(e,t=false){return g.functionExpression(t?e.id:null,e.params,e.body,e.generator,e.async)}static getRootNode(e){let t=e;for(;t.parentPath!==null&&!g.isProgram(t.parent);)t=t.parentPath;return t.node}};var Ve=class{constructor(e,t){this.codemod=t,this.formatter=e;}async apply(e,t){if(this.codemod===void 0)return await this.formatter.format([e]),{modified:true,result:e};let n=await this.codemod.apply(e,t);return n.modified&&await this.formatter.format([e]),n}};var Ue=class{constructor({fileSystem:e,codemod:t}){this.fileSystem=e,this.codemod=t;}async apply(e,t){let n="";if(await this.fileSystem.exists(e))try{n=await this.fileSystem.readTextFile(e);}catch(i){throw new Ge("Failed to read file.",{cause:i,details:[`File: file://${e.replace(/\\/g,"/")}`]})}let r=await this.codemod.apply(n,t);if(r.modified)try{await this.fileSystem.writeTextFile(e,r.result,{overwrite:!0});}catch(i){throw new Ge("Failed to write file",{cause:i,details:[`File: file://${e.replace(/\\/g,"/")}`]})}return {modified:r.modified,result:e}}};var xr=class{constructor(e){this.configuration=e;}apply(e,t={}){let n=t.typescript??false,{body:r}=e.program,i=de(e,{type:"value",moduleName:this.configuration.provider.module,importName:this.configuration.provider.component}),a=n?de(e,{type:"type",moduleName:"react",importName:"PropsWithChildren"}):null,s=n?de(e,{type:"type",moduleName:"react",importName:"ReactNode"}):null,p=g.objectPattern([g.objectProperty(g.identifier("children"),g.identifier("children"))]);a!==null&&(p.typeAnnotation=g.tsTypeAnnotation(g.tsTypeReference(g.identifier(a.localName))));let c=g.functionDeclaration(g.identifier("RootLayout"),[p],g.blockStatement([g.returnStatement(g.parenthesizedExpression(g.jsxElement(g.jsxOpeningElement(g.jsxIdentifier("html"),[g.jsxAttribute(g.jsxIdentifier("lang"),g.stringLiteral("en"))]),g.jsxClosingElement(g.jsxIdentifier("html")),[g.jsxText(`
|
|
1737
|
+
`)])}getProviderProps(e){return yr({...this.configuration.wrapper.props,...e?.props})}containsElement(e,t){let n=false;return traverseFast(e,r=>{!n&&g.isJSXOpeningElement(r)&&g.isJSXIdentifier(r.name)&&r.name.name===t&&(n=true);}),n}findComponentDeclaration(e,t){let n=null;return traverse(e,{VariableDeclaration:r=>{if(!g.isProgram(r.parent))return r.skip();for(let i of r.node.declarations)if(g.isVariableDeclarator(i)&&g.isIdentifier(i.id)&&i.id.name===t)return n=i,r.stop();return r.skip()},FunctionDeclaration:r=>{if(!g.isProgram(r.parent))return r.skip();let{id:i}=r.node;return g.isIdentifier(i)&&i.name===t?(n=r.node,r.stop()):r.skip()}}),n}findTargetChildren(e,t){let n=null,{configuration:r}=this;return r.targets?.variable===void 0&&r.targets?.component===void 0?null:(traverse(e,{enter:function(a){let{node:s}=a;if(s===t)return a.traverse({JSXExpressionContainer:p=>{let{expression:c}=p.node;if(r.targets?.variable!==void 0&&g.isIdentifier(c)&&c.name===r.targets.variable){let l=p.parent;return n={parent:l,index:l.children.indexOf(p.node)},p.stop()}},JSXElement:p=>{let{openingElement:c}=p.node;if(r.targets?.component!==void 0&&g.isJSXOpeningElement(c)&&g.isJSXIdentifier(c.name)&&c.name.name===r.targets.component&&p.parent!==null){let l=p.parent;n={parent:l,index:l.children.indexOf(p.node)};}}}),a.stop()}}),n)}static findReturnStatement(e){let t=null;return traverseFast(e,n=>{t===null&&g.isReturnStatement(n)&&(t=n);}),t}};var je=class{constructor(e){this.codemod=e.codemod;}async apply(e,t){let n=hr.parse(e,{parser:{parse:parse}}),r=await this.codemod.apply(n,t);return r.modified?{modified:true,result:hr.print(r.result,{reuseWhitespace:false}).code}:{modified:false,result:e}}};function Fa(o,e){let t=typeof o=="string"?Ge(o,["jsx","typescript"]):o,n=false;return traverse(t,{ExportAllDeclaration:r=>{let{node:i}=r;return !g.isStringLiteral(i.source)||!La(i.source,e.moduleName)||(n=true),r.skip()},ExportNamedDeclaration:r=>{let{node:i}=r;if(!g.isStringLiteral(i.source)||!La(i.source,e.moduleName))return r.skip();if(e.importName===void 0)return n=true,r.skip();for(let a of i.specifiers)if(g.isExportSpecifier(a)&&La(a.local,e.importName))return n=true,r.skip();return r.skip()}}),n}function La(o,e){let t=g.isIdentifier(o)?o.name:o.value;return typeof e=="string"?t===e:e.test(t)}function Sr(o,e){let t=[],n=false,r=false;if(traverse(o,{ExportAllDeclaration:s=>{let{node:p}=s;if(p.source.value!==e.moduleName)return s.skip();let c=p.exportKind??"value";if(e.exportName===void 0&&e.importName===void 0){if(c==="value"||c==="type"&&e.type==="type")return n=true,s.stop();if(c==="type"&&e.type==="value")return p.exportKind="value",n=true,r=true,s.stop()}else if((e.exportName===void 0||e.exportName===e.importName)&&(c==="value"||c==="type"&&e.type==="type"))return n=true,s.stop();return s.skip()},ExportNamedDeclaration:s=>{let{node:p}=s,c=p.source??null;if(c===null||c.value!==e.moduleName)return s.skip();t.push({declaration:p});let l=p.exportKind??"value";for(let m of p.specifiers){if(g.isExportNamespaceSpecifier(m)&&e.importName===void 0&&m.exported.name===e.exportName)return n=true,e.type==="value"&&l==="type"&&(p.exportKind="value",r=true),s.stop();if(e.importName===void 0||!g.isExportSpecifier(m)||ja(m.local)!==e.importName||e.exportName!==void 0&&ja(m.exported)!==e.exportName)continue;let f=m.exportKind??"value";if(l===e.type||l==="value"&&(f==="value"||m.exportKind===e.type))return n=true,s.stop();t.unshift({declaration:p,specifier:m});}return s.skip()}}),n)return r;let{body:i}=o.program;if(e.importName===void 0){if(e.exportName===void 0)for(let p of t){let{declaration:c}=p,l=c.exportKind??"value",m=c.specifiers.filter(f=>!g.isExportSpecifier(f)||f.local.name!==ja(f.exported)||e.type==="type"&&l!=="type"&&f.exportKind!=="type");m.length===0?i.splice(i.indexOf(c),1):c.specifiers=m;}let s=e.exportName===void 0?g.exportAllDeclaration(g.stringLiteral(e.moduleName)):g.exportNamedDeclaration(null,[g.exportNamespaceSpecifier(g.identifier(e.exportName))],g.stringLiteral(e.moduleName));return e.type==="type"&&(s.exportKind="type"),i.push(s),true}for(let s of t){let{declaration:p}=s;if(p.exportKind==="type"&&e.type==="value"){p.exportKind="value";for(let c of p.specifiers)g.isExportSpecifier(c)&&c!==s.specifier&&(c.exportKind="type");return s.specifier===void 0&&p.specifiers.push(g.exportSpecifier(g.identifier(e.importName),g.identifier(e.exportName??e.importName))),true}}for(let{declaration:s}of t){let p=s.exportKind??"value";if(p==="value"||p===e.type){let c=g.exportSpecifier(g.identifier(e.importName),g.identifier(e.exportName??e.importName));return p!==e.type&&(c.exportKind="type"),s.specifiers.push(c),true}}let a=g.exportNamedDeclaration(null,[g.exportSpecifier(g.identifier(e.importName),g.identifier(e.exportName??e.importName))],g.stringLiteral(e.moduleName));return e.type==="type"&&(a.exportKind="type"),i.push(a),true}function ja(o){return g.isIdentifier(o)?o.name:o.value}var br=class o{constructor(e){this.configuration=e;}apply(e){let{body:t}=e.program,n=Fa(e,{moduleName:this.configuration.import.module,importName:this.configuration.import.configName}),r=Fa(e,{moduleName:this.configuration.import.module,importName:this.configuration.import.middlewareName}),i=n?null:o.findConfig(e);if(r){if(n||i!==null)return Promise.resolve({modified:false,result:e});let m=Sr(e,{type:"value",moduleName:this.configuration.import.module,importName:this.configuration.import.configName});return Promise.resolve({modified:m,result:e})}let a=Pt(e,{moduleName:this.configuration.import.module,importName:this.configuration.import.middlewareFactoryName}),s=Pt(e,{moduleName:this.configuration.import.module,importName:this.configuration.import.middlewareName}),p=[];if(a!==null&&p.push(a),s!==null&&p.push(s),p.length>0&&o.isCalled(e,p))return Promise.resolve({modified:false,result:e});let c=i===null?null:Pt(e,{moduleName:this.configuration.import.module,importName:this.configuration.import.matcherName}),l=o.refactorMiddleware(e,a??this.configuration.import.middlewareFactoryName,i!==null&&i.matcher?i.name:void 0);if(l===null){if(i===null){let m=Sr(e,{type:"value",moduleName:this.configuration.import.module,importName:this.configuration.import.middlewareName}),f=Sr(e,{type:"value",moduleName:this.configuration.import.module,importName:this.configuration.import.configName});return Promise.resolve({modified:m||f,result:e})}l=g.exportDefaultDeclaration(g.callExpression(g.identifier(a??this.configuration.import.middlewareFactoryName),[g.objectExpression([g.objectProperty(g.identifier("matcher"),g.memberExpression(g.identifier(i.name),g.identifier(c??this.configuration.import.matcherName)))])])),t.push(l);}if(i!==null){this.configureMatcher(i.object,c??this.configuration.import.matcherLocalName);let m=t.indexOf(i.root),f=t.indexOf(l);if(m>f){t.splice(f,0,...t.splice(m,1));for(let b of o.findReferencesFrom(i.root,e.program)){let A=t.indexOf(b);A>f&&t.splice(f,0,...t.splice(A,1));}}}return a===null&&ge(e,{type:"value",moduleName:this.configuration.import.module,importName:this.configuration.import.middlewareFactoryName}),i?.matcher===true&&c===null&&ge(e,{type:"value",moduleName:this.configuration.import.module,importName:this.configuration.import.matcherName,localName:this.configuration.import.matcherLocalName}),Promise.resolve({modified:true,result:e})}configureMatcher(e,t){let n=false;for(let r of e.properties)if(g.isObjectProperty(r)&&g.isIdentifier(r.key)&&r.key.name==="matcher"){if(g.isStringLiteral(r.value)){r.value=g.arrayExpression([r.value,g.identifier(t)]),n=true;break}if(g.isArrayExpression(r.value)){let{elements:i}=r.value;i.some(a=>g.isIdentifier(a)&&a.name===t)||(i.push(g.identifier(t)),n=true);break}if(g.isIdentifier(r.value)){if(r.value.name===t)break;r.value=g.arrayExpression([g.spreadElement(g.conditionalExpression(g.callExpression(g.memberExpression(g.identifier("Array"),g.identifier("isArray")),[r.value]),r.value,g.arrayExpression([r.value]))),g.identifier(t)]),n=true;}}return n}static refactorMiddleware(e,t,n){let r=null;return traverse(e,{ExportNamedDeclaration:i=>{let{node:a}=i,{declaration:s,specifiers:p=[]}=a;if(g.isFunctionDeclaration(s))return g.isFunctionDeclaration(a.declaration)&&g.isIdentifier(a.declaration.id)&&a.declaration.id.name==="middleware"?(i.replaceWith(g.exportNamedDeclaration(g.variableDeclaration("const",[g.variableDeclarator(g.identifier("middleware"),o.wrapMiddleware(g.isFunctionDeclaration(a.declaration)?o.createFunctionExpression(a.declaration):a.declaration,t,n))]),[])),r=o.getRootNode(i),i.stop()):i.skip();if(g.isVariableDeclaration(s)){for(let c of s.declarations)if(g.isVariableDeclarator(c)&&g.isIdentifier(c.id)&&c.id.name==="middleware"){let l=c.init??null;if(l!==null)return c.init=o.wrapMiddleware(l,t,n),r=o.getRootNode(i),i.stop()}}for(let c of p)if(g.isExportSpecifier(c)&&g.isIdentifier(c.exported)&&g.isIdentifier(c.local)&&["middleware","default"].includes(c.exported.name))return r=o.replaceMiddlewareDeclaration(e,c.local.name,t,n),i.stop();return i.skip()},ExportDefaultDeclaration:i=>{let{node:a}=i,{declaration:s}=a;return g.isArrowFunctionExpression(s)?(i.replaceWith(g.exportDefaultDeclaration(o.wrapMiddleware(s,t,n))),r=o.getRootNode(i),i.stop()):g.isFunctionDeclaration(s)?(i.replaceWith(g.exportDefaultDeclaration(o.wrapMiddleware(o.createFunctionExpression(s,true),t,n))),r=o.getRootNode(i),i.stop()):g.isIdentifier(s)?(r=o.replaceMiddlewareDeclaration(e,s.name,t,n),i.stop()):i.skip()}}),r}static replaceMiddlewareDeclaration(e,t,n,r){let i=null;return traverse(e,{VariableDeclarator:a=>{let{node:s}=a;if(g.isIdentifier(s.id)&&s.id.name===t){let p=s.init??null;return p!==null&&(s.init=o.wrapMiddleware(p,n,r),i=o.getRootNode(a)),a.stop()}return a.skip()},FunctionDeclaration:a=>{let{node:s}=a;return g.isIdentifier(s.id)&&s.id.name===t?(a.replaceWith(o.wrapFunctionDeclaration(s,n,r,g.isIdentifier(s.id)?s.id.name:void 0)),i=o.getRootNode(a),a.stop()):a.skip()}}),i}static isCalled(e,t){let n=false;return traverse(e,{CallExpression:r=>{let{node:i}=r;return g.isIdentifier(i.callee)&&t.includes(i.callee.name)?(n=true,r.stop()):r.skip()}}),n}static findConfig(e){let t=null;return traverse(e,{ExportNamedDeclaration:n=>{let{declaration:r,specifiers:i=[]}=n.node;if(g.isVariableDeclaration(r)){for(let a of r.declarations)if(g.isVariableDeclarator(a)&&g.isIdentifier(a.id)&&a.id.name==="config"){let s=g.isIdentifier(a.init)?o.findVariableDeclarator(e,a.init.name):{name:"config",root:o.getRootNode(n),declaration:a};if(s===null||s.declaration.init===null)return n.stop();if(g.isObjectExpression(s.declaration.init))return t={name:s.name,root:s.root,object:s.declaration.init,matcher:o.hasMatcherProperty(s.declaration.init)},n.stop()}}for(let a of i)if(g.isExportSpecifier(a)&&g.isIdentifier(a.exported)&&g.isIdentifier(a.local)&&a.exported.name==="config"){let s=o.findVariableDeclarator(e,a.local.name);return s!==null&&g.isObjectExpression(s.declaration.init)&&(t={name:s.name,root:s.root,object:s.declaration.init,matcher:o.hasMatcherProperty(s.declaration.init)}),n.stop()}return n.skip()}}),t}static hasMatcherProperty(e){for(let t of e.properties)if(g.isObjectProperty(t)&&g.isIdentifier(t.key)&&t.key.name==="matcher")return true;return false}static findVariableDeclarator(e,t){let n=null;return traverse(e,{VariableDeclarator:r=>{if(!g.isProgram(r.parentPath.parent))return r.skip();let{node:i}=r;return g.isVariableDeclarator(i)&&g.isIdentifier(i.id)&&i.id.name===t?(g.isIdentifier(i.init)?n=o.findVariableDeclarator(e,i.init.name):n={name:t,root:o.getRootNode(r),declaration:i},r.stop()):r.skip()}}),n}static wrapMiddleware(e,t,n){return g.callExpression(g.identifier(t),[n!==void 0?g.objectExpression([g.objectProperty(g.identifier("matcher"),g.memberExpression(g.identifier(n),g.identifier("matcher"))),g.objectProperty(g.identifier("next"),e)]):e])}static wrapFunctionDeclaration(e,t,n,r="middleware"){return g.variableDeclaration("const",[g.variableDeclarator(g.identifier(r),o.wrapMiddleware(o.createFunctionExpression(e),t,n))])}static findReferencesFrom(e,t){let n=new Set;traverse(t,{enter:i=>{let{node:a}=i;if(a===e)return i.traverse({Identifier:function(p){let c=p.node;return o.isVariableReference(p.parent,c)&&n.add(c.name),p.skip()}}),i.stop()}});let r=[];return traverse(t,{VariableDeclarator:i=>{if(!g.isProgram(i.parentPath.parent))return i.skip();let{node:a}=i;return g.isIdentifier(a.id)&&n.has(a.id.name)&&r.push(o.getRootNode(i)),i.skip()},FunctionDeclaration:i=>{if(!g.isProgram(i.parent))return;let{node:a}=i;return g.isIdentifier(a.id)&&n.has(a.id.name)&&r.push(o.getRootNode(i)),i.skip()},ClassDeclaration:i=>{if(!g.isProgram(i.parent))return;let{node:a}=i;return g.isIdentifier(a.id)&&n.has(a.id.name)&&r.push(o.getRootNode(i)),i.skip()}}),[...new Set(r.flatMap(i=>[i,...o.findReferencesFrom(i,t)]))]}static isVariableReference(e,t){return g.isVariableDeclarator(e)?e.init===t:g.isClassProperty(e)||g.isObjectProperty(e)||g.isProperty(e)?e.value===t:g.isMemberExpression(e)?e.object===t:g.isCallExpression(e)||g.isNewExpression(e)?e.callee===t:g.isExpression(e)}static createFunctionExpression(e,t=false){return g.functionExpression(t?e.id:null,e.params,e.body,e.generator,e.async)}static getRootNode(e){let t=e;for(;t.parentPath!==null&&!g.isProgram(t.parent);)t=t.parentPath;return t.node}};var We=class{constructor(e,t){this.codemod=t,this.formatter=e;}async apply(e,t){if(this.codemod===void 0)return await this.formatter.format([e]),{modified:true,result:e};let n=await this.codemod.apply(e,t);return n.modified&&await this.formatter.format([e]),n}};var Ve=class{constructor({fileSystem:e,codemod:t}){this.fileSystem=e,this.codemod=t;}async apply(e,t){let n="";if(await this.fileSystem.exists(e))try{n=await this.fileSystem.readTextFile(e);}catch(i){throw new He("Failed to read file.",{cause:i,details:[`File: file://${e.replace(/\\/g,"/")}`]})}let r=await this.codemod.apply(n,t);if(r.modified)try{await this.fileSystem.writeTextFile(e,r.result,{overwrite:!0});}catch(i){throw new He("Failed to write file",{cause:i,details:[`File: file://${e.replace(/\\/g,"/")}`]})}return {modified:r.modified,result:e}}};var Ir=class{constructor(e){this.configuration=e;}apply(e,t={}){let n=t.typescript??false,{body:r}=e.program,i=ge(e,{type:"value",moduleName:this.configuration.provider.module,importName:this.configuration.provider.component}),a=n?ge(e,{type:"type",moduleName:"react",importName:"PropsWithChildren"}):null,s=n?ge(e,{type:"type",moduleName:"react",importName:"ReactNode"}):null,p=g.objectPattern([g.objectProperty(g.identifier("children"),g.identifier("children"))]);a!==null&&(p.typeAnnotation=g.tsTypeAnnotation(g.tsTypeReference(g.identifier(a.localName))));let c=g.functionDeclaration(g.identifier("RootLayout"),[p],g.blockStatement([g.returnStatement(g.parenthesizedExpression(g.jsxElement(g.jsxOpeningElement(g.jsxIdentifier("html"),[g.jsxAttribute(g.jsxIdentifier("lang"),g.stringLiteral("en"))]),g.jsxClosingElement(g.jsxIdentifier("html")),[g.jsxText(`
|
|
1727
1738
|
`),g.jsxElement(g.jsxOpeningElement(g.jsxIdentifier("body"),[]),g.jsxClosingElement(g.jsxIdentifier("body")),[g.jsxText(`
|
|
1728
1739
|
`),g.jsxElement(g.jsxOpeningElement(g.jsxIdentifier(i.localName),[]),g.jsxClosingElement(g.jsxIdentifier(i.localName)),[g.jsxText(`
|
|
1729
1740
|
`),g.jsxExpressionContainer(g.identifier("children")),g.jsxText(`
|
|
1730
1741
|
`)]),g.jsxText(`
|
|
1731
1742
|
`)]),g.jsxText(`
|
|
1732
|
-
`)])))]));return s!==null&&(c.returnType=g.tsTypeAnnotation(g.tsTypeReference(g.identifier(s.localName)))),r.push(g.exportDefaultDeclaration(c)),Promise.resolve({modified:true,result:e})}};var
|
|
1743
|
+
`)])))]));return s!==null&&(c.returnType=g.tsTypeAnnotation(g.tsTypeReference(g.identifier(s.localName)))),r.push(g.exportDefaultDeclaration(c)),Promise.resolve({modified:true,result:e})}};var en=class{constructor(e){this.configuration=e;}apply(e,t={}){let n=t.typescript??false,{body:r}=e.program,i=ge(e,{type:"value",moduleName:this.configuration.provider.module,importName:this.configuration.provider.component}),a=n?ge(e,{type:"type",moduleName:"next/app",importName:"AppProps"}):null,s=n?ge(e,{type:"type",moduleName:"react",importName:"ReactNode"}):null,p=g.objectPattern([g.objectProperty(g.identifier("Component"),g.identifier("Component")),g.objectProperty(g.identifier("pageProps"),g.identifier("pageProps"))]);a!==null&&(p.typeAnnotation=g.tsTypeAnnotation(g.tsTypeReference(g.identifier(a.localName))));let c=g.functionDeclaration(g.identifier("App"),[p],g.blockStatement([g.returnStatement(g.parenthesizedExpression(g.jsxElement(g.jsxOpeningElement(g.jsxIdentifier(i.localName),yr(this.configuration.provider.props??{})),g.jsxClosingElement(g.jsxIdentifier(i.localName)),[g.jsxText(`
|
|
1733
1744
|
`),g.jsxElement(g.jsxOpeningElement(g.jsxIdentifier("Component"),[g.jsxSpreadAttribute(g.identifier("pageProps"))]),g.jsxClosingElement(g.jsxIdentifier("Component")),[]),g.jsxText(`
|
|
1734
|
-
`)])))]));return s!==null&&(c.returnType=g.tsTypeAnnotation(g.tsTypeReference(g.identifier(s.localName)))),r.push(g.exportDefaultDeclaration(c)),Promise.resolve({modified:true,result:e})}};var vr=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var wr=class o{constructor(e){this.configuration=e;}async format(e){let t=await this.getCommand(e);if(t!==null)try{await this.run(t);}catch{}}async run(e){let{commandExecutor:t,workingDirectory:n,timeout:r}=this.configuration;if(await t.run(e,{workingDirectory:n.get(),timeout:r}).wait()!==0)throw new vr("Failed to format code.")}async getCommand(e){let{tools:t,packageManager:n,fileSystem:r}=this.configuration;for(let i of t){if(!await n.hasDirectDependency(i.package))continue;let a=await n.getDependency(i.package);if(a===null)continue;let s=o.getBinPath(a,i.bin);if(s!==null)return {name:r.joinPaths(a.directory,r.normalizeSeparators(s)),arguments:i.args(e)}}return null}static getBinPath({metadata:e},t){return "bin"in e?typeof e.bin=="string"?e.bin:t!==void 0&&typeof e.bin=="object"&&e.bin!==null&&typeof e.bin[t]=="string"?e.bin[t]:null:null}};var kt=class o{constructor(e){this.config=e;}async execute(e){let{sdk:t,configurationManager:n,io:r}=this.config,{output:i}=r,a=await n.load(),s=await this.getSlots(a,e);if(s.length===0){i.inform("No slots to add");return}let p={input:r.input,output:r.output,configuration:{...a,slots:{...a.slots,...Object.fromEntries(s.map(([c,l])=>[c.slug,l.toString()]))}}};if(await n.update(p.configuration),i.confirm("Configuration updated"),await t.update(p,{clean:true}),e.example===true){let c=i.notify("Generating example");try{await Promise.all(s.map(([l])=>t.generateSlotExample(l,p)));}catch(l){throw c.stop(),l}c.confirm("Example generated");}}async getSlots(e,t){let{slotForm:n,workspaceApi:r,io:{output:i}}=this.config,a=t.slots===void 0?void 0:o.getVersionMap(t.slots,e.slots),s=Object.keys(e.slots),p=await n.handle({organizationSlug:e.organization,workspaceSlug:e.workspace,preselected:a===void 0?void 0:Object.keys(a),selected:t.example===true?[]:s});if(s.length===p.length&&p.every(c=>s.includes(c.slug))&&i.inform("No new slots to add"),t.slots!==void 0&&t.slots.length>0&&p.length!==t.slots.length){let c=t.slots.filter(l=>!p.some(m=>m.slug===l));throw new d(`Non-existing slots: \`${c.join("`, `")}\``,{reason:"invalid_input",suggestions:["Run `slot add` without arguments to see available slots"]})}return Promise.all(p.map(async c=>{let l=a?.[c.slug];if(l===void 0||l.getMaxVersion()===c.version.major)return [c,l??O.of(c.version.major)];if(l.getMinVersion()>c.version.major)throw new d(`No matching version for slot \`${c.slug}\`.`,{reason:"invalid_input",details:[`Requested version: ${l.toString()}`,`Current version: ${c.version.major}`],suggestions:["Omit version specifier to use the latest version"]});return t.example!==true?[c,l]:[await r.getSlot({organizationSlug:e.organization,workspaceSlug:e.workspace,slotSlug:c.slug,majorVersion:Math.min(c.version.major,l.getMinVersion())})??c,l]}))}static getVersionMap(e,t){return Object.fromEntries(e.map(n=>{let[r,i]=n.split("@",2);if(i===void 0)return [r,void 0];if(!O.isValid(i))throw new d(`Invalid version specifier \`${i}\` for slot \`${r}\`.`,{reason:"invalid_input",suggestions:["Version must be exact (i.e. `1`), range (i.e. `1 - 2`), or set (i.e. `1 || 2`)."]});let a=O.parse(i);if(a.getCardinality()>5)throw new d(`The number of versions specified for slot \`${r}\` exceeds 5 major versions.`,{reason:"invalid_input",suggestions:["Narrow down the number of versions to 5 or less."]});if(t[r]!==void 0&&(a=O.parse(t[r]).with(a),a.getCardinality()>5))throw new d(`The cumulative number of versions for slot \`${r}\` cannot exceed 5 major versions.`,{reason:"invalid_input",suggestions:["Narrow down the number of versions to 5 or less."]});return [r,a]}))}};var Qe=class{constructor(e){this.config=e;}async handle(e){let{output:t,input:n}=this.config,r=t.notify("Loading slots"),i=await this.getSlots(e,e.allowed);r.stop();let a=e.preselected??[];if(a.length>0)return i.filter(({slug:p})=>a.includes(p));let s=e.selected??[];return i.length===0||s.length>0&&i.every(({slug:p})=>s.includes(p))?i.filter(({slug:p})=>s.includes(p)):e.selectionConfirmation!==void 0&&!await n.confirm(e.selectionConfirmation)?i.filter(({slug:c})=>s.includes(c)):n.selectMultiple({message:"Select slots",options:i.map(p=>{let c=s.includes(p.slug);return {value:p,label:p.name,disabled:c,selected:c}})})}async getSlots(e,t){let{workspaceApi:n}=this.config,r=await n.getSlots({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return t===void 0?r:r.filter(({slug:i})=>t.includes(i))}};var At=class o{constructor(e){this.config=e;}async execute(e){let{sdk:t,configurationManager:n,io:r}=this.config,{output:i}=r,a=await n.load(),s=await this.getComponents(a,e);if(s.length===0){i.inform("No components to add");return}let p={input:r.input,output:r.output,configuration:{...a,components:{...a.components,...Object.fromEntries(s.map(([c,l])=>[c.slug,l.toString()]))}}};await n.update(p.configuration),i.confirm("Configuration updated"),await t.update(p,{clean:true});}async getComponents(e,t){let{componentForm:n,io:{output:r}}=this.config,i=t.components===void 0?void 0:o.getVersionMap(t.components,e.components),a=Object.keys(e.components),s=await n.handle({organizationSlug:e.organization,workspaceSlug:e.workspace,preselected:i===void 0?void 0:Object.keys(i),selected:a});if(a.length===s.length&&s.every(p=>a.includes(p.slug))&&r.inform("No new component to add"),t.components!==void 0&&t.components.length>0&&s.length!==t.components.length){let p=t.components.filter(c=>!s.some(l=>l.slug===c));throw new d(`Non-existing components: \`${p.join("`, `")}\``,{reason:"invalid_input",suggestions:["Run `component add` without arguments to see available components"]})}return s.map(p=>{let c=i?.[p.slug];if(c===void 0||c.getMaxVersion()===p.version.major)return [p,c??O.of(p.version.major)];if(c.getMinVersion()>p.version.major)throw new d(`No matching version for component \`${p.slug}\`.`,{reason:"invalid_input",details:[`Requested version: ${c.toString()}`,`Current version: ${p.version.major}`],suggestions:["Omit version specifier to use the latest version"]});return [p,c]})}static getVersionMap(e,t){return Object.fromEntries(e.map(n=>{let[r,i]=n.split("@",2);if(i===void 0)return [r,void 0];if(!O.isValid(i))throw new d(`Invalid version specifier \`${i}\` for component \`${r}\`.`,{reason:"invalid_input",suggestions:["Version must be exact (i.e. `1`), range (i.e. `1 - 2`), or set (i.e. `1 || 2`)."]});let a=O.parse(i);if(a.getCardinality()>5)throw new d(`The number of versions specified for component \`${r}\` exceeds 5 major versions.`,{reason:"invalid_input",suggestions:["Narrow down the number of versions to 5 or less."]});if(t[r]!==void 0&&(a=O.parse(t[r]).with(a),a.getCardinality()>5))throw new d(`The cumulative number of versions for component \`${r}\` cannot exceed 5 major versions.`,{reason:"invalid_input",suggestions:["Narrow down the number of versions to 5 or less."]});return [r,a]}))}};var Be=class{constructor(e){this.config=e;}async handle(e){let{workspaceApi:t}=this.config,{allowed:n}=e,r=await t.getComponents({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug}),i=await this.selectComponents(e,n===void 0?r:r.filter(({slug:a})=>n.includes(a)));if(e.includeDependencies!==true)return i;for(let a of i){let s=new Set([...a.metadata.directReferences,...a.metadata.indirectReferences]);for(let p of s)if(!i.some(({slug:c})=>c===p)){let c=r.find(({slug:l})=>l===p);c!==void 0&&i.push(c);}}return i}async selectComponents(e,t){let{output:n,input:r}=this.config;n.notify("Loading components").stop();let a=e.preselected??[];if(a.length>0)return t.filter(({slug:p})=>a.includes(p));let s=e.selected??[];return t.length===0||s.length>0&&t.every(({slug:p})=>s.includes(p))?t.filter(({slug:p})=>s.includes(p)):e.selectionConfirmation!==void 0&&!await r.confirm(e.selectionConfirmation)?t.filter(({slug:c})=>s.includes(c)):r.selectMultiple({message:"Select components",options:t.map(p=>{let c=s.includes(p.slug);return {value:p,label:p.name,disabled:c,selected:c}})})}};var nn=class o{constructor(e){this.config=e;}async execute(e){let{sdk:t,configurationManager:n,slotForm:r,io:i}=this.config,{output:a}=i,s=await n.load(),p=e.slots===void 0?void 0:o.getVersionMap(e.slots,s.slots),c=await r.handle({organizationSlug:s.organization,workspaceSlug:s.workspace,allowed:Object.keys(s.slots),preselected:p===void 0?void 0:Object.keys(p)});if(c.length===0)return a.inform("No slots to remove.");let l={input:i.input,output:i.output,configuration:{...s,slots:Object.fromEntries(Object.entries(s.slots).flatMap(([m,f])=>p?.[m]!==void 0?p[m]===null?[]:[[m,p[m].toString()]]:c.some(b=>b.slug===m)?[]:[[m,f.toString()]]))}};await n.update(l.configuration),a.confirm("Configuration updated"),await t.update(l,{clean:true});}static getVersionMap(e,t){return Object.fromEntries(e.map(n=>{let[r,i]=n.split("@",2);if(t[r]===void 0||i===void 0)return [r,null];let a=O.parse(t[r]);if(!O.isValid(i))return [r,a];let s=O.parse(i);return a.intersects(s)?s.contains(a)?[r,null]:[r,a.without(s)]:[r,a]}))}};var rn=class o{constructor(e){this.config=e;}async execute(e){let{sdk:t,configurationManager:n,componentForm:r,io:i}=this.config,{output:a}=i,s=await n.load(),p=e.components===void 0?void 0:o.getVersionMap(e.components,s.components),c=await r.handle({organizationSlug:s.organization,workspaceSlug:s.workspace,allowed:Object.keys(s.components),preselected:p===void 0?void 0:Object.keys(p)});if(c.length===0)return a.alert("No components to remove.");let l={input:i.input,output:i.output,configuration:{...s,components:Object.fromEntries(Object.entries(s.components).flatMap(([m,f])=>p?.[m]!==void 0?p[m]===null?[]:[[m,p[m].toString()]]:c.some(b=>b.slug===m)?[]:[[m,f.toString()]]))}};a.confirm("Configuration updated"),await n.update(l.configuration),await t.update(l,{clean:true});}static getVersionMap(e,t){return Object.fromEntries(e.map(n=>{let[r,i]=n.split("@",2);if(t[r]===void 0||i===void 0)return [r,null];let a=O.parse(t[r]);if(!O.isValid(i))return [r,a];let s=O.parse(i);return a.intersects(s)?s.contains(a)?[r,null]:[r,a.without(s)]:[r,a]}))}};var Pr=class{constructor({manager:e,initializer:t}){this.manager=e,this.initializer=t;}isInitialized(){return this.manager.isInitialized()}async load(){return await this.isInitialized()||await this.initializer.initialize(),this.manager.load()}update(e){return this.manager.update(e)}};var on=class{constructor(e){this.configuration=e;}async execute(e){let{sdk:t,configurationManager:n,io:r}=this.configuration,i={input:r.input,output:r.output,configuration:await n.load()};await t.update(i,{clean:e.clean});}};var Cr=class o{static{this.SITEMAP={Home:"/","Personal settings":"/settings",Organization:"/organizations/:organization","Organization settings":"/organizations/:organization/settings","Organization members":"/organizations/:organization/members",Workspace:"/organizations/:organization/workspaces/:workspace","Workspace settings":"/organizations/:organization/workspaces/:workspace/settings","Workspace members":"/organizations/:organization/workspaces/:workspace/members","Dev application":"/organizations/:organization/workspaces/:workspace/applications/:dev-application/dashboard","Prod application":"/organizations/:organization/workspaces/:workspace/applications/:prod-application/dashboard","Dev application settings":"/organizations/:organization/workspaces/:workspace/applications/:dev-application/settings","Prod application settings":"/organizations/:organization/workspaces/:workspace/applications/:prod-application/settings",Slots:"/organizations/:organization/workspaces/:workspace/slots",Components:"/organizations/:organization/workspaces/:workspace/components",Experiences:"/organizations/:organization/workspaces/:workspace/experiences"};}constructor(e){this.config=e;}async handle(e){return o.resolvePath(await this.getPage(e.page,e),e)}getPage(e,t){if(e!==void 0){let r=o.findMatch(e,t);if(r!==null)return Promise.resolve(r)}let{input:n}=this.config;return n.select({message:"Where do you want to go?",options:Object.entries(o.SITEMAP).map(([r,i])=>({value:i,label:r}))})}static findMatch(e,t){if(e.startsWith("/"))return e;let n=null,r=.5;for(let i of Object.keys(o.getSitemap(t))){let a=stringSimilarity(e,i);a>r&&(n=o.SITEMAP[i],r=a);}return n}static getSitemap(e){return e.prodApplicationSlug!==void 0?o.SITEMAP:Object.fromEntries(Object.entries(o.SITEMAP).filter(([,t])=>!t.includes(":prod-application")))}static resolvePath(e,t){return e.replace(/:(organization|workspace|(dev|prod)-application)/g,(n,r)=>{switch(r){case "organization":return t.organizationSlug;case "workspace":return t.workspaceSlug;case "dev-application":return t.devApplicationSlug;case "prod-application":return t.prodApplicationSlug??""}})}};var kr=class{constructor({instruction:e,authenticator:t}){this.instruction=e,this.authenticator=t;}getToken(){return this.authenticator.getToken()}login(e){if(Object.keys(e).length===0){let{message:t,...n}=this.instruction;throw new d(t,n)}return this.authenticator.login(e)}logout(){return this.authenticator.logout()}};var Ar=class{constructor(e){this.instruction=e;}prompt(){return this.report()}select(){return this.report()}selectMultiple(){return this.report()}confirm(){return this.report()}wait(){return this.report()}report(){let{message:e,...t}=this.instruction;throw new d(e,t)}};var Er=class{constructor(e){this.authenticators=e;}async getToken(){for(let e of Object.values(this.authenticators)){let t=await e.getToken();if(t!==null)return t}return null}login(e){let t={...e};return delete t.method,this.authenticators[e.method].login(t)}async logout(){await Promise.all(Object.values(this.authenticators).map(e=>e.logout()));}};var an=class o{constructor(e){this.config=e;}async execute(e){let{sdk:t,configurationManager:n,io:r}=this.config,i=await n.load(),a=await this.selectSlots(i,e.slots),s=await this.selectComponents(i,e.components),p={input:r.input,output:r.output,configuration:{...i,slots:{...i.slots,...Object.fromEntries(a.map(c=>[c.slug,o.resolveVersion(c.version.major,i.slots[c.slug])]))},components:{...i.components,...Object.fromEntries(s.map(c=>[c.slug,o.resolveVersion(c.version.major,i.components[c.slug])]))}}};await n.update(p.configuration),await t.update(p,{clean:true});}async selectComponents(e,t){let{form:{componentForm:n}}=this.config,r=t===void 0?Object.keys(e.components):t,i=r.length===0?[]:await n.handle({organizationSlug:e.organization,workspaceSlug:e.workspace,preselected:r});if(r.length>0&&i.length!==r.length){let a=r.filter(s=>!i.some(p=>p.slug===s));throw new d(`Components not found: \`${a.join("`, `")}\`.`,{reason:"precondition",suggestions:["Run `remove component` to remove a component from your configuration."]})}return i}async selectSlots(e,t){let{form:{slotForm:n}}=this.config,r=t===void 0?Object.keys(e.slots):t,i=r.length===0?[]:await n.handle({organizationSlug:e.organization,workspaceSlug:e.workspace,preselected:r});if(r.length>0&&i.length!==r.length){let a=r.filter(s=>!i.some(p=>p.slug===s));throw new d(`Slots not found: \`${a.join("`, `")}\`.`,{reason:"precondition",suggestions:["Run `remove slot` to remove a slot from your configuration."]})}return i}static resolveVersion(e,t){let n=O.of(e);if(t===void 0)return n.toString();let r=O.parse(t);return r.isExact()?n.toString():r.isRange()?r.getMaxVersion()>=n.getMaxVersion()?t:O.between(r.getMinVersion(),n.getMaxVersion()).toString():O.either(...r.getVersions(),...n.getVersions()).toString()}};var sn=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var Or=class o{static{this.ERRORS={ENOENT:"The file or directory does not exist.",EACCES:"Unable to access the file or directory.",EISDIR:"Expected a file, but the path is a directory.",ENOTDIR:"Expected a directory, but the path is a file.",EPERM:"Operation not permitted.",EEXIST:"The file or directory already exists.",ENOTEMPTY:"The directory is not empty."};}static{this.ERROR_REASONS={ENOENT:"not_found",EACCES:"access_denied",EISDIR:"invalid_input",ENOTDIR:"invalid_input",EPERM:"access_denied",EEXIST:"invalid_input",ENOTEMPTY:"invalid_input"};}constructor(e){this.config={...e,defaultEncoding:e.defaultEncoding??"utf8"};}getSeparator(){return sep}normalizeSeparators(e){return e.replace(/\//g,sep)}getBaseName(e){return basename(e)}getDirectoryName(e){return dirname(e)}getRealPath(e){return this.execute(()=>realpath(this.resolvePath(e)))}getRelativePath(e,t){return relative(this.resolvePath(e),this.resolvePath(t))}isAbsolutePath(e){return isAbsolute(e)}isSubPath(e,t){let n=this.resolvePath(e),r=isAbsolute(t)?t:join(n,t),i=relative(n,r);return !i.startsWith("..")&&!isAbsolute(i)}isSymbolicLink(e){return this.execute(async()=>{try{return (await lstat(this.resolvePath(e))).isSymbolicLink()}catch(t){if(o.isErrorCode(t,["ENOENT","ENOTDIR"]))return false;throw t}})}isDirectory(e){return this.execute(async()=>{try{return (await lstat(this.resolvePath(e))).isDirectory()}catch(t){if(o.isErrorCode(t,["ENOENT","ENOTDIR"]))return false;throw t}})}isEmptyDirectory(e){return this.execute(async()=>(await readdir(this.resolvePath(e))).length===0)}create(e){switch(e.type){case "file":return this.execute(()=>writeFile(this.resolvePath(e.name),e.content));case "directory":return this.execute(()=>mkdir(this.resolvePath(e.name)));case "link":return this.execute(()=>link(e.target,this.resolvePath(e.name)));case "symlink":return this.execute(()=>symlink(e.target,this.resolvePath(e.name)))}}list(e,t=Number.POSITIVE_INFINITY){let n=this.resolvePath(e);return this.listRelatively(n,n,t)}async*listRelatively(e,t,n){if(n<0)return;let r=await this.execute(()=>lstat(e)).catch(()=>null);if(r===null)return;if(!r.isDirectory())return yield*this.createEntry(e,dirname(t),r,0);let i=await this.execute(()=>readdir(e));for(let a of i){let s=join(e,a),p=await this.execute(()=>lstat(s));yield*this.createEntry(s,t,p,n);}}async*createEntry(e,t,n,r){let i=relative(t,e);if(n.isFile()){let a=()=>this.execute(()=>createReadStream(e));yield {type:"file",name:i,get content(){return a()}};}else n.isDirectory()?(yield {type:"directory",name:i},r>0&&(yield*this.listRelatively(e,t,r-1))):n.isSymbolicLink()?yield {type:"symlink",name:i,target:await this.execute(()=>realpath(e))}:yield {type:"link",name:i,target:await this.execute(()=>realpath(e))};}joinPaths(...e){return join(...e)}async exists(e){try{return await lstat(this.resolvePath(e)),!0}catch(t){if(o.isErrorCode(t,["ENOENT","ENOTDIR"]))return false;throw t}}delete(e,t){return rm$1(this.resolvePath(e),{recursive:t?.recursive??false,force:true})}readTextFile(e){return this.execute(()=>readFile(this.resolvePath(e),this.config.defaultEncoding))}writeTextFile(e,t,n){return this.execute(()=>writeFile(this.resolvePath(e),t,{flag:n?.overwrite===true?"w":"wx",encoding:this.config.defaultEncoding}))}async createDirectory(e,t){await this.execute(()=>mkdir(this.resolvePath(e),{recursive:t?.recursive??false}));}createTemporaryDirectory(e){return this.execute(()=>mkdtemp(this.joinPaths(tmpdir(),e)))}copy(e,t,n){return this.execute(()=>cp$1(this.resolvePath(e),this.resolvePath(t),{recursive:true,force:n?.overwrite??false}))}resolvePath(e){return isAbsolute(e)?e:join(this.config.workingDirectory.get(),e)}execute(e){try{let t=e();return t instanceof Promise?t.catch(n=>o.reportError(n)):t}catch(t){o.reportError(t);}}static reportError(e){if(e instanceof Error){let t=Object.entries(o.ERRORS);for(let[n,r]of t)if(o.isErrorCode(e,[n]))throw new sn(r,{reason:o.ERROR_REASONS[n]??"other",cause:e,details:[`Code: ${n}`]})}throw new sn("An unexpected error occurred.",{cause:e})}static isErrorCode(e,t){return !(e instanceof Error)||!("code"in e)||typeof e.code!="string"?false:t.includes(e.code)}};var Dr=class{constructor(e){this.configuration=e;}wait(e){let{listener:t}=this.configuration;return new Promise((n,r)=>{this.focus(()=>t.wait(e).then(n,r));})}focus(e){switch(this.configuration.platform){case "darwin":return this.darwinFocus(e);case "linux":return this.linuxFocus(e);case "win32":return this.win32Focus(e);default:return e()}}async darwinFocus(e){let t=this.runCommand({name:"osascript",arguments:["-e","bundle identifier of (info for (path to frontmost application))"]});await e(),t!==null&&this.runCommand({name:"open",arguments:["-b",t]});}async linuxFocus(e){let t=this.runCommand({name:"xdotool",arguments:["getactivewindow"]});await e(),t!==null&&this.runCommand({name:"xdotool",arguments:["windowactivate",t]});}async win32Focus(e){let t=ae`
|
|
1745
|
+
`)])))]));return s!==null&&(c.returnType=g.tsTypeAnnotation(g.tsTypeReference(g.identifier(s.localName)))),r.push(g.exportDefaultDeclaration(c)),Promise.resolve({modified:true,result:e})}};var xr=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var vr=class o{constructor(e){this.configuration=e;}async format(e){let t=await this.getCommand(e);if(t!==null)try{await this.run(t);}catch{}}async run(e){let{commandExecutor:t,workingDirectory:n,timeout:r}=this.configuration;if(await t.run(e,{workingDirectory:n.get(),timeout:r}).wait()!==0)throw new xr("Failed to format code.")}async getCommand(e){let{tools:t,packageManager:n,fileSystem:r}=this.configuration;for(let i of t){if(!await n.hasDirectDependency(i.package))continue;let a=await n.getDependency(i.package);if(a===null)continue;let s=o.getBinPath(a,i.bin);if(s!==null)return {name:r.joinPaths(a.directory,r.normalizeSeparators(s)),arguments:i.args(e)}}return null}static getBinPath({metadata:e},t){return "bin"in e?typeof e.bin=="string"?e.bin:t!==void 0&&typeof e.bin=="object"&&e.bin!==null&&typeof e.bin[t]=="string"?e.bin[t]:null:null}};var kt=class o{constructor(e){this.config=e;}async execute(e){let{sdk:t,configurationManager:n,io:r}=this.config,{output:i}=r,a=await n.load(),s=await this.getSlots(a,e);if(s.length===0){i.inform("No slots to add");return}let p={input:r.input,output:r.output,configuration:{...a,slots:{...a.slots,...Object.fromEntries(s.map(([c,l])=>[c.slug,l.toString()]))}}};if(await n.update(p.configuration),i.confirm("Configuration updated"),await t.update(p,{clean:true}),e.example===true){let c=i.notify("Generating example");try{await Promise.all(s.map(([l])=>t.generateSlotExample(l,p)));}catch(l){throw c.stop(),l}c.confirm("Example generated");}}async getSlots(e,t){let{slotForm:n,workspaceApi:r,io:{output:i}}=this.config,a=t.slots===void 0?void 0:o.getVersionMap(t.slots,e.slots),s=Object.keys(e.slots),p=await n.handle({organizationSlug:e.organization,workspaceSlug:e.workspace,preselected:a===void 0?void 0:Object.keys(a),selected:t.example===true?[]:s});if(s.length===p.length&&p.every(c=>s.includes(c.slug))&&i.inform("No new slots to add"),t.slots!==void 0&&t.slots.length>0&&p.length!==t.slots.length){let c=t.slots.filter(l=>!p.some(m=>m.slug===l));throw new d(`Non-existing slots: \`${c.join("`, `")}\``,{reason:"invalid_input",suggestions:["Run `slot add` without arguments to see available slots"]})}return Promise.all(p.map(async c=>{let l=a?.[c.slug];if(l===void 0||l.getMaxVersion()===c.version.major)return [c,l??O.of(c.version.major)];if(l.getMinVersion()>c.version.major)throw new d(`No matching version for slot \`${c.slug}\`.`,{reason:"invalid_input",details:[`Requested version: ${l.toString()}`,`Current version: ${c.version.major}`],suggestions:["Omit version specifier to use the latest version"]});return t.example!==true?[c,l]:[await r.getSlot({organizationSlug:e.organization,workspaceSlug:e.workspace,slotSlug:c.slug,majorVersion:Math.min(c.version.major,l.getMinVersion())})??c,l]}))}static getVersionMap(e,t){return Object.fromEntries(e.map(n=>{let[r,i]=n.split("@",2);if(i===void 0)return [r,void 0];if(!O.isValid(i))throw new d(`Invalid version specifier \`${i}\` for slot \`${r}\`.`,{reason:"invalid_input",suggestions:["Version must be exact (i.e. `1`), range (i.e. `1 - 2`), or set (i.e. `1 || 2`)."]});let a=O.parse(i);if(a.getCardinality()>5)throw new d(`The number of versions specified for slot \`${r}\` exceeds 5 major versions.`,{reason:"invalid_input",suggestions:["Narrow down the number of versions to 5 or less."]});if(t[r]!==void 0&&(a=O.parse(t[r]).with(a),a.getCardinality()>5))throw new d(`The cumulative number of versions for slot \`${r}\` cannot exceed 5 major versions.`,{reason:"invalid_input",suggestions:["Narrow down the number of versions to 5 or less."]});return [r,a]}))}};var Je=class{constructor(e){this.config=e;}async handle(e){let{output:t,input:n}=this.config,r=t.notify("Loading slots"),i=await this.getSlots(e,e.allowed);r.stop();let a=e.preselected??[];if(a.length>0)return i.filter(({slug:p})=>a.includes(p));let s=e.selected??[];return i.length===0||s.length>0&&i.every(({slug:p})=>s.includes(p))?i.filter(({slug:p})=>s.includes(p)):e.selectionConfirmation!==void 0&&!await n.confirm(e.selectionConfirmation)?i.filter(({slug:c})=>s.includes(c)):n.selectMultiple({message:"Select slots",options:i.map(p=>{let c=s.includes(p.slug);return {value:p,label:p.name,disabled:c,selected:c}})})}async getSlots(e,t){let{workspaceApi:n}=this.config,r=await n.getSlots({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return t===void 0?r:r.filter(({slug:i})=>t.includes(i))}};var At=class o{constructor(e){this.config=e;}async execute(e){let{sdk:t,configurationManager:n,io:r}=this.config,{output:i}=r,a=await n.load(),s=await this.getComponents(a,e);if(s.length===0){i.inform("No components to add");return}let p={input:r.input,output:r.output,configuration:{...a,components:{...a.components,...Object.fromEntries(s.map(([c,l])=>[c.slug,l.toString()]))}}};await n.update(p.configuration),i.confirm("Configuration updated"),await t.update(p,{clean:true});}async getComponents(e,t){let{componentForm:n,io:{output:r}}=this.config,i=t.components===void 0?void 0:o.getVersionMap(t.components,e.components),a=Object.keys(e.components),s=await n.handle({organizationSlug:e.organization,workspaceSlug:e.workspace,preselected:i===void 0?void 0:Object.keys(i),selected:a});if(a.length===s.length&&s.every(p=>a.includes(p.slug))&&r.inform("No new component to add"),t.components!==void 0&&t.components.length>0&&s.length!==t.components.length){let p=t.components.filter(c=>!s.some(l=>l.slug===c));throw new d(`Non-existing components: \`${p.join("`, `")}\``,{reason:"invalid_input",suggestions:["Run `component add` without arguments to see available components"]})}return s.map(p=>{let c=i?.[p.slug];if(c===void 0||c.getMaxVersion()===p.version.major)return [p,c??O.of(p.version.major)];if(c.getMinVersion()>p.version.major)throw new d(`No matching version for component \`${p.slug}\`.`,{reason:"invalid_input",details:[`Requested version: ${c.toString()}`,`Current version: ${p.version.major}`],suggestions:["Omit version specifier to use the latest version"]});return [p,c]})}static getVersionMap(e,t){return Object.fromEntries(e.map(n=>{let[r,i]=n.split("@",2);if(i===void 0)return [r,void 0];if(!O.isValid(i))throw new d(`Invalid version specifier \`${i}\` for component \`${r}\`.`,{reason:"invalid_input",suggestions:["Version must be exact (i.e. `1`), range (i.e. `1 - 2`), or set (i.e. `1 || 2`)."]});let a=O.parse(i);if(a.getCardinality()>5)throw new d(`The number of versions specified for component \`${r}\` exceeds 5 major versions.`,{reason:"invalid_input",suggestions:["Narrow down the number of versions to 5 or less."]});if(t[r]!==void 0&&(a=O.parse(t[r]).with(a),a.getCardinality()>5))throw new d(`The cumulative number of versions for component \`${r}\` cannot exceed 5 major versions.`,{reason:"invalid_input",suggestions:["Narrow down the number of versions to 5 or less."]});return [r,a]}))}};var Qe=class{constructor(e){this.config=e;}async handle(e){let{workspaceApi:t}=this.config,{allowed:n}=e,r=await t.getComponents({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug}),i=await this.selectComponents(e,n===void 0?r:r.filter(({slug:a})=>n.includes(a)));if(e.includeDependencies!==true)return i;for(let a of i){let s=new Set([...a.metadata.directReferences,...a.metadata.indirectReferences]);for(let p of s)if(!i.some(({slug:c})=>c===p)){let c=r.find(({slug:l})=>l===p);c!==void 0&&i.push(c);}}return i}async selectComponents(e,t){let{output:n,input:r}=this.config;n.notify("Loading components").stop();let a=e.preselected??[];if(a.length>0)return t.filter(({slug:p})=>a.includes(p));let s=e.selected??[];return t.length===0||s.length>0&&t.every(({slug:p})=>s.includes(p))?t.filter(({slug:p})=>s.includes(p)):e.selectionConfirmation!==void 0&&!await r.confirm(e.selectionConfirmation)?t.filter(({slug:c})=>s.includes(c)):r.selectMultiple({message:"Select components",options:t.map(p=>{let c=s.includes(p.slug);return {value:p,label:p.name,disabled:c,selected:c}})})}};var tn=class o{constructor(e){this.config=e;}async execute(e){let{sdk:t,configurationManager:n,slotForm:r,io:i}=this.config,{output:a}=i,s=await n.load(),p=e.slots===void 0?void 0:o.getVersionMap(e.slots,s.slots),c=await r.handle({organizationSlug:s.organization,workspaceSlug:s.workspace,allowed:Object.keys(s.slots),preselected:p===void 0?void 0:Object.keys(p)});if(c.length===0)return a.inform("No slots to remove.");let l={input:i.input,output:i.output,configuration:{...s,slots:Object.fromEntries(Object.entries(s.slots).flatMap(([m,f])=>p?.[m]!==void 0?p[m]===null?[]:[[m,p[m].toString()]]:c.some(b=>b.slug===m)?[]:[[m,f.toString()]]))}};await n.update(l.configuration),a.confirm("Configuration updated"),await t.update(l,{clean:true});}static getVersionMap(e,t){return Object.fromEntries(e.map(n=>{let[r,i]=n.split("@",2);if(t[r]===void 0||i===void 0)return [r,null];let a=O.parse(t[r]);if(!O.isValid(i))return [r,a];let s=O.parse(i);return a.intersects(s)?s.contains(a)?[r,null]:[r,a.without(s)]:[r,a]}))}};var nn=class o{constructor(e){this.config=e;}async execute(e){let{sdk:t,configurationManager:n,componentForm:r,io:i}=this.config,{output:a}=i,s=await n.load(),p=e.components===void 0?void 0:o.getVersionMap(e.components,s.components),c=await r.handle({organizationSlug:s.organization,workspaceSlug:s.workspace,allowed:Object.keys(s.components),preselected:p===void 0?void 0:Object.keys(p)});if(c.length===0)return a.alert("No components to remove.");let l={input:i.input,output:i.output,configuration:{...s,components:Object.fromEntries(Object.entries(s.components).flatMap(([m,f])=>p?.[m]!==void 0?p[m]===null?[]:[[m,p[m].toString()]]:c.some(b=>b.slug===m)?[]:[[m,f.toString()]]))}};a.confirm("Configuration updated"),await n.update(l.configuration),await t.update(l,{clean:true});}static getVersionMap(e,t){return Object.fromEntries(e.map(n=>{let[r,i]=n.split("@",2);if(t[r]===void 0||i===void 0)return [r,null];let a=O.parse(t[r]);if(!O.isValid(i))return [r,a];let s=O.parse(i);return a.intersects(s)?s.contains(a)?[r,null]:[r,a.without(s)]:[r,a]}))}};var wr=class{constructor({manager:e,initializer:t}){this.manager=e,this.initializer=t;}isInitialized(){return this.manager.isInitialized()}async load(){return await this.isInitialized()||await this.initializer.initialize(),this.manager.load()}update(e){return this.manager.update(e)}};var rn=class{constructor(e){this.configuration=e;}async execute(e){let{sdk:t,configurationManager:n,io:r}=this.configuration,i={input:r.input,output:r.output,configuration:await n.load()};await t.update(i,{clean:e.clean});}};var Cr=class o{static{this.SITEMAP={Home:"/","Personal settings":"/settings",Organization:"/organizations/:organization","Organization settings":"/organizations/:organization/settings","Organization members":"/organizations/:organization/members",Workspace:"/organizations/:organization/workspaces/:workspace","Workspace settings":"/organizations/:organization/workspaces/:workspace/settings","Workspace members":"/organizations/:organization/workspaces/:workspace/members","Dev application":"/organizations/:organization/workspaces/:workspace/applications/:dev-application/dashboard","Prod application":"/organizations/:organization/workspaces/:workspace/applications/:prod-application/dashboard","Dev application settings":"/organizations/:organization/workspaces/:workspace/applications/:dev-application/settings","Prod application settings":"/organizations/:organization/workspaces/:workspace/applications/:prod-application/settings",Slots:"/organizations/:organization/workspaces/:workspace/slots",Components:"/organizations/:organization/workspaces/:workspace/components",Experiences:"/organizations/:organization/workspaces/:workspace/experiences"};}constructor(e){this.config=e;}async handle(e){return o.resolvePath(await this.getPage(e.page,e),e)}getPage(e,t){if(e!==void 0){let r=o.findMatch(e,t);if(r!==null)return Promise.resolve(r)}let{input:n}=this.config;return n.select({message:"Where do you want to go?",options:Object.entries(o.SITEMAP).map(([r,i])=>({value:i,label:r}))})}static findMatch(e,t){if(e.startsWith("/"))return e;let n=null,r=.5;for(let i of Object.keys(o.getSitemap(t))){let a=stringSimilarity(e,i);a>r&&(n=o.SITEMAP[i],r=a);}return n}static getSitemap(e){return e.prodApplicationSlug!==void 0?o.SITEMAP:Object.fromEntries(Object.entries(o.SITEMAP).filter(([,t])=>!t.includes(":prod-application")))}static resolvePath(e,t){return e.replace(/:(organization|workspace|(dev|prod)-application)/g,(n,r)=>{switch(r){case "organization":return t.organizationSlug;case "workspace":return t.workspaceSlug;case "dev-application":return t.devApplicationSlug;case "prod-application":return t.prodApplicationSlug??""}})}};var Pr=class{constructor({instruction:e,authenticator:t}){this.instruction=e,this.authenticator=t;}getToken(){return this.authenticator.getToken()}login(e){if(Object.keys(e).length===0){let{message:t,...n}=this.instruction;throw new d(t,n)}return this.authenticator.login(e)}logout(){return this.authenticator.logout()}};var kr=class{constructor(e){this.instruction=e;}prompt(){return this.report()}select(){return this.report()}selectMultiple(){return this.report()}confirm(){return this.report()}wait(){return this.report()}report(){let{message:e,...t}=this.instruction;throw new d(e,t)}};var Ar=class{constructor(e){this.authenticators=e;}async getToken(){for(let e of Object.values(this.authenticators)){let t=await e.getToken();if(t!==null)return t}return null}login(e){let t={...e};return delete t.method,this.authenticators[e.method].login(t)}async logout(){await Promise.all(Object.values(this.authenticators).map(e=>e.logout()));}};var on=class o{constructor(e){this.config=e;}async execute(e){let{sdk:t,configurationManager:n,io:r}=this.config,i=await n.load(),a=await this.selectSlots(i,e.slots),s=await this.selectComponents(i,e.components),p={input:r.input,output:r.output,configuration:{...i,slots:{...i.slots,...Object.fromEntries(a.map(c=>[c.slug,o.resolveVersion(c.version.major,i.slots[c.slug])]))},components:{...i.components,...Object.fromEntries(s.map(c=>[c.slug,o.resolveVersion(c.version.major,i.components[c.slug])]))}}};await n.update(p.configuration),await t.update(p,{clean:true});}async selectComponents(e,t){let{form:{componentForm:n}}=this.config,r=t===void 0?Object.keys(e.components):t,i=r.length===0?[]:await n.handle({organizationSlug:e.organization,workspaceSlug:e.workspace,preselected:r});if(r.length>0&&i.length!==r.length){let a=r.filter(s=>!i.some(p=>p.slug===s));throw new d(`Components not found: \`${a.join("`, `")}\`.`,{reason:"precondition",suggestions:["Run `remove component` to remove a component from your configuration."]})}return i}async selectSlots(e,t){let{form:{slotForm:n}}=this.config,r=t===void 0?Object.keys(e.slots):t,i=r.length===0?[]:await n.handle({organizationSlug:e.organization,workspaceSlug:e.workspace,preselected:r});if(r.length>0&&i.length!==r.length){let a=r.filter(s=>!i.some(p=>p.slug===s));throw new d(`Slots not found: \`${a.join("`, `")}\`.`,{reason:"precondition",suggestions:["Run `remove slot` to remove a slot from your configuration."]})}return i}static resolveVersion(e,t){let n=O.of(e);if(t===void 0)return n.toString();let r=O.parse(t);return r.isExact()?n.toString():r.isRange()?r.getMaxVersion()>=n.getMaxVersion()?t:O.between(r.getMinVersion(),n.getMaxVersion()).toString():O.either(...r.getVersions(),...n.getVersions()).toString()}};var an=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var Tr=class o{static{this.ERRORS={ENOENT:"The file or directory does not exist.",EACCES:"Unable to access the file or directory.",EISDIR:"Expected a file, but the path is a directory.",ENOTDIR:"Expected a directory, but the path is a file.",EPERM:"Operation not permitted.",EEXIST:"The file or directory already exists.",ENOTEMPTY:"The directory is not empty."};}static{this.ERROR_REASONS={ENOENT:"not_found",EACCES:"access_denied",EISDIR:"invalid_input",ENOTDIR:"invalid_input",EPERM:"access_denied",EEXIST:"invalid_input",ENOTEMPTY:"invalid_input"};}constructor(e){this.config={...e,defaultEncoding:e.defaultEncoding??"utf8"};}getSeparator(){return sep}normalizeSeparators(e){return e.replace(/\//g,sep)}getBaseName(e){return basename(e)}getDirectoryName(e){return dirname(e)}getRealPath(e){return this.execute(()=>realpath(this.resolvePath(e)))}getRelativePath(e,t){return relative(this.resolvePath(e),this.resolvePath(t))}isAbsolutePath(e){return isAbsolute(e)}isSubPath(e,t){let n=this.resolvePath(e),r=isAbsolute(t)?t:join(n,t),i=relative(n,r);return !i.startsWith("..")&&!isAbsolute(i)}isSymbolicLink(e){return this.execute(async()=>{try{return (await lstat(this.resolvePath(e))).isSymbolicLink()}catch(t){if(o.isErrorCode(t,["ENOENT","ENOTDIR"]))return false;throw t}})}isDirectory(e){return this.execute(async()=>{try{return (await lstat(this.resolvePath(e))).isDirectory()}catch(t){if(o.isErrorCode(t,["ENOENT","ENOTDIR"]))return false;throw t}})}isEmptyDirectory(e){return this.execute(async()=>(await readdir(this.resolvePath(e))).length===0)}create(e){switch(e.type){case "file":return this.execute(()=>writeFile(this.resolvePath(e.name),e.content));case "directory":return this.execute(()=>mkdir(this.resolvePath(e.name)));case "link":return this.execute(()=>link(e.target,this.resolvePath(e.name)));case "symlink":return this.execute(()=>symlink(e.target,this.resolvePath(e.name)))}}list(e,t=Number.POSITIVE_INFINITY){let n=this.resolvePath(e);return this.listRelatively(n,n,t)}async*listRelatively(e,t,n){if(n<0)return;let r=await this.execute(()=>lstat(e)).catch(()=>null);if(r===null)return;if(!r.isDirectory())return yield*this.createEntry(e,dirname(t),r,0);let i=await this.execute(()=>readdir(e));for(let a of i){let s=join(e,a),p=await this.execute(()=>lstat(s));yield*this.createEntry(s,t,p,n);}}async*createEntry(e,t,n,r){let i=relative(t,e);if(n.isFile()){let a=()=>this.execute(()=>createReadStream(e));yield {type:"file",name:i,get content(){return a()}};}else n.isDirectory()?(yield {type:"directory",name:i},r>0&&(yield*this.listRelatively(e,t,r-1))):n.isSymbolicLink()?yield {type:"symlink",name:i,target:await this.execute(()=>realpath(e))}:yield {type:"link",name:i,target:await this.execute(()=>realpath(e))};}joinPaths(...e){return join(...e)}async exists(e){try{return await lstat(this.resolvePath(e)),!0}catch(t){if(o.isErrorCode(t,["ENOENT","ENOTDIR"]))return false;throw t}}delete(e,t){return rm$1(this.resolvePath(e),{recursive:t?.recursive??false,force:true})}readTextFile(e){return this.execute(()=>readFile(this.resolvePath(e),this.config.defaultEncoding))}writeTextFile(e,t,n){return this.execute(()=>writeFile(this.resolvePath(e),t,{flag:n?.overwrite===true?"w":"wx",encoding:this.config.defaultEncoding}))}async createDirectory(e,t){await this.execute(()=>mkdir(this.resolvePath(e),{recursive:t?.recursive??false}));}createTemporaryDirectory(e){return this.execute(()=>mkdtemp(this.joinPaths(tmpdir(),e)))}copy(e,t,n){return this.execute(()=>cp$1(this.resolvePath(e),this.resolvePath(t),{recursive:true,force:n?.overwrite??false}))}resolvePath(e){return isAbsolute(e)?e:join(this.config.workingDirectory.get(),e)}execute(e){try{let t=e();return t instanceof Promise?t.catch(n=>o.reportError(n)):t}catch(t){o.reportError(t);}}static reportError(e){if(e instanceof Error){let t=Object.entries(o.ERRORS);for(let[n,r]of t)if(o.isErrorCode(e,[n]))throw new an(r,{reason:o.ERROR_REASONS[n]??"other",cause:e,details:[`Code: ${n}`]})}throw new an("An unexpected error occurred.",{cause:e})}static isErrorCode(e,t){return !(e instanceof Error)||!("code"in e)||typeof e.code!="string"?false:t.includes(e.code)}};var Or=class{constructor(e){this.configuration=e;}wait(e){let{listener:t}=this.configuration;return new Promise((n,r)=>{this.focus(()=>t.wait(e).then(n,r));})}focus(e){switch(this.configuration.platform){case "darwin":return this.darwinFocus(e);case "linux":return this.linuxFocus(e);case "win32":return this.win32Focus(e);default:return e()}}async darwinFocus(e){let t=this.runCommand({name:"osascript",arguments:["-e","bundle identifier of (info for (path to frontmost application))"]});await e(),t!==null&&this.runCommand({name:"open",arguments:["-b",t]});}async linuxFocus(e){let t=this.runCommand({name:"xdotool",arguments:["getactivewindow"]});await e(),t!==null&&this.runCommand({name:"xdotool",arguments:["windowactivate",t]});}async win32Focus(e){let t=te`
|
|
1735
1746
|
Add-Type @"
|
|
1736
1747
|
using System;
|
|
1737
1748
|
using System.Runtime.InteropServices;
|
|
@@ -1744,35 +1755,35 @@ ${n}`)}toString(){return this.code}static formatName(e,t=true){let n=e.replace(/
|
|
|
1744
1755
|
public static extern bool SetForegroundWindow(IntPtr hWnd);
|
|
1745
1756
|
}
|
|
1746
1757
|
"@
|
|
1747
|
-
`,n=
|
|
1758
|
+
`,n=te`
|
|
1748
1759
|
${t}
|
|
1749
1760
|
[Window]::GetForegroundWindow()
|
|
1750
|
-
`,r=this.runCommand({name:"powershell",arguments:["-Command",`& {${n}}`]});if(await e(),r!==null){let i=
|
|
1761
|
+
`,r=this.runCommand({name:"powershell",arguments:["-Command",`& {${n}}`]});if(await e(),r!==null){let i=te`
|
|
1751
1762
|
${t}
|
|
1752
1763
|
[Window]::SetForegroundWindow(${r})
|
|
1753
1764
|
[Window]::ShowWindow(${r}, 9)
|
|
1754
|
-
`;this.runCommand({name:"powershell",arguments:["-Command",`& {${i}}`]});}}runCommand(e){let{commandExecutor:t,timeout:n}=this.configuration;try{let r=t.runSync(e,{timeout:n});return r.exitCode!==0?null:r.output.trim()}catch{return null}}};var Mr=class{constructor(e){this.detector=e.detector,this.templates=e.templates;}async generate(e){let t=await this.detector.detect(e.recipient);return t===null||this.templates[t]===void 0?null:this.templates[t].generate(e)}};var Nr=class{constructor(...e){this.detectors=e;}async detect(e){for(let t of this.detectors){let n=await t.detect(e);if(n!==null)return n}return null}};var $r=class o{static{this.DEFAULT_DOMAINS={google:["gmail.com","googlemail.com","google.com"],yahoo:[/yahoo\.com(?:\.\w+)?/,"yahoo.co.uk","yahoo.fr","yahoo.it","ymail.com","rocketmail.com"],microsoft:["outlook.com","live.com","hotmail.com","msn.com","passport.com","passport.net"],proton:["proton.me","protonmail.com"],icloud:["icloud.com"]};}constructor(e=o.DEFAULT_DOMAINS){this.domains=e;}detect(e){let t=e.toLowerCase().split("@")[1];for(let[n,r]of Object.entries(this.domains))if(r.some(a=>typeof a=="string"?a===t:a.test(t)))return Promise.resolve(n);return Promise.resolve(null)}};var zr=class o{static{this.DEFAULT_DOMAINS={google:["google.com"],microsoft:["outlook.com"]};}constructor(e=o.DEFAULT_DOMAINS){this.domains=e;}async detect(e){let t=e.toLowerCase().split("@")[1],n=await this.lookup(t);for(let[r,i]of Object.entries(this.domains))for(let a of i)for(let s of n)if(s.endsWith(`.${a}.`))return r;return null}async lookup(e){let t=new URL("https://dns.google.com/resolve");t.searchParams.set("type","MX"),t.searchParams.set("name",e);let n;try{n=await fetch(t).then(r=>{if(!r.ok)throw new Error("Failed to lookup domain");return r.json()});}catch{return []}return n.Answer===void 0?[]:n.Answer.map(r=>r.data)}};var Et=ft(Zt()),_r=class o{generate(e){return new URL(`https://mail.google.com/mail${o.formatFilters(e)}`)}static formatFilters(e){let t=[`to:${e.recipient}`],n=`/u/${e.recipient}`;if(e.sender!==void 0&&t.push(`from:${e.sender}`),e.subject!==void 0&&t.push(`subject:${e.subject}`),e.timestamp!==void 0){let r=Et.TimeZone.of(Intl.DateTimeFormat().resolvedOptions().timeZone),i=Et.Instant.ofEpochSecond(e.timestamp),a=Et.LocalDateTime.ofInstant(i,r).getLocalDate();t.push(`after:${a}`);}return t.push("in:anywhere"),n+=`/#search/${t.map(r=>encodeURIComponent(r)).join("+")}`,n}};var Lr=class{generate(e){return new URL("https://www.icloud.com/mail")}};var Fr=class{generate(e){let t=new URL("https://outlook.live.com/mail");return e.recipient!==void 0&&t.searchParams.append("login_hint",e.recipient),t}};var jr=class o{generate(e){return new URL(`https://mail.proton.me/u/0/all-mail${o.formatFilters(e)}`)}static formatFilters(e){let t=new URLSearchParams;return t.set("to",e.recipient),e.sender!==void 0&&t.set("from",e.sender),e.timestamp!==void 0&&t.set("begin",e.timestamp.toFixed(0)),e.subject!==void 0&&t.set("keyword",e.subject),`#${t.toString()}`}};var Wr=class o{generate(e){return new URL(`https://mail.yahoo.com/d/search${o.formatFilters(e)}`)}static formatFilters(e){let t=[`to:${e.recipient}`];return e.sender!==void 0&&t.push(`from:${e.sender}`),e.subject!==void 0&&t.push(`subject:${e.subject}`),e.timestamp!==void 0&&t.push(`after:"${new Date(e.timestamp*1e3).toISOString().split("T")[0]}"`),t.length===0?"":`/keyword=${t.join(" ")}`}};var cn=class{constructor(e){this.config=e;}async execute(e){let{fileSystem:t,io:n}=this.config,r=await this.createTemplate(e.empty??false),i=e.file??t.joinPaths(".","template.json5");try{let a=!1;await t.exists(i)&&(a=await n.input?.confirm({message:`Overwrite existing file at \`${i}\`?`,default:!1})??!1),await t.writeTextFile(i,JSON.stringify(r,null,2),{overwrite:a});}catch(a){throw new d("Failed to write template file",{reason:"other",cause:a})}n.output.confirm(`Template created at \`${i}\``);}async createTemplate(e){return {$schema:"https://schema.croct.com/json/v1/template.json",title:"My template",actions:e?[{name:"print",semantic:"info",title:"Empty template",message:"Edit this template to define your actions."}]:[{name:"create-resource",resources:await this.exportResources()}]}}async exportResources(){let{configurationManager:e,templateForm:t}=this.config,n=await e.load(),r=await t.handle({organizationSlug:n.organization,workspaceSlug:n.workspace}),i={audiences:Object.fromEntries(r.audiences.map(a=>[a.slug,{name:a.name,criteria:a.criteria}])),components:Object.fromEntries(r.components.map(a=>[a.slug,{name:a.name,description:a.description,definition:a.definition}])),slots:Object.fromEntries(r.slots.map(a=>[a.slug,{name:a.name,component:a.component?.slug??"",content:a.content}])),experiences:r.experiences.map(a=>{let{experiment:s}=a,p=s!==void 0?{name:s.name??"",goalId:s.goalId,crossDevice:s.crossDevice,traffic:s.traffic??1,variants:s.variants.map(c=>({name:c.name??"",content:c.content,baseline:c.baseline,allocation:c.allocation??1e3/s.variants.length}))}:void 0;return {name:a.name,draft:a.status==="DRAFT",audiences:a.audiences,slots:a.slots,content:a.content,...p!==void 0?{experiment:p}:{}}})};for(let[a,s]of Object.entries(i))typeof s=="object"&&s!==null&&(Array.isArray(s)&&s.length===0||Object.keys(s).length===0)&&delete i[a];return i}};var Vr=class{constructor(e){this.config=e;}async handle(e){let{input:t,form:n}=this.config,r={components:[],slots:[],audiences:[],experiences:[]},i=new Set,a=new Set,s=await n.experience.handle({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,confirmation:"Do you want to include experiences?"});if(s.length>0){for(let c of s.flatMap(l=>l.audiences))i.add(c);for(let c of s.flatMap(l=>l.slots))a.add(c);r.experiences=s,s.some(c=>c.experiment!==void 0)&&(await t.confirm({message:"Include experiments?",default:false})||(r.experiences=r.experiences.map(c=>{let{experiment:l,...m}=c;return m})));}r.slots=await n.slot.handle({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,selected:[...a],selectionConfirmation:{message:a.size>0?"Do you want to include other slots?":"Do you want to include slots?",default:false}});let p=new Set(r.slots.map(c=>c.component?.slug??""));return r.components=await n.component.handle({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,includeDependencies:true,selected:[...p],selectionConfirmation:{message:p.size>0?"Do you want to include other components?":"Do you want to include components?",default:false}}),r.audiences=await n.audience.handle({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,selected:[...i],selectionConfirmation:{message:i.size>0?"Do you want to include other audiences?":"Do you want to include audiences?",default:false}}),r}};var Ur=class{constructor(e){this.config=e;}async handle(e){let{output:t,input:n,workspaceApi:r}=this.config,i=t.notify("Loading experiences"),a=await r.getExperiences({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});i.stop();let{confirmation:s}=e;if(a.length===0||s!==void 0&&!await n.confirm({message:s}))return [];let p=await n.selectMultiple({message:"Select experiences",options:a.map(l=>({value:l,label:l.name}))});i=t.notify("Loading details");let c=await Promise.all(p.flatMap(async({id:l})=>{let m=await r.getExperience({experienceId:l,organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return m===null?[]:[m]}));return i.stop(),c.flat()}};var qr=class{constructor(e){this.config=e;}async handle(e){let{output:t,input:n}=this.config,r=t.notify("Loading audiences"),i=await this.getAudiences(e,e.allowed);r.stop();let a=e.preselected??[];if(a.length>0)return i.filter(({slug:p})=>a.includes(p));let s=e.selected??[];return i.length===0||s.length>0&&i.every(({slug:p})=>s.includes(p))?i.filter(({slug:p})=>s.includes(p)):e.selectionConfirmation!==void 0&&!await n.confirm(e.selectionConfirmation)?i.filter(({slug:c})=>s.includes(c)):n.selectMultiple({message:"Select audiences",options:i.map(p=>{let c=s.includes(p.slug);return {value:p,label:p.name,disabled:c,selected:c}})})}async getAudiences(e,t){let{workspaceApi:n}=this.config,r=await n.getAudiences({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return t===void 0?r:r.filter(({slug:i})=>t.includes(i))}};var I=class o extends d{constructor(e,{tracing:t,...n}={}){super(e,n),this.tracing=t??[],Object.setPrototypeOf(this,o.prototype);}static fromCause(e,t={}){let{message:n,...r}=t;if(!(e instanceof Error))return new o(n??d.formatMessage(e),{...r,cause:e});let i=new o(n??e.message,{cause:e,...e instanceof d?e.help:{},...r,tracing:[...r.tracing??[],...e instanceof o?e.tracing:[]]});return i.stack=e.stack,i}};var Rt=class{constructor(e){this.variables={};this.input=e.input,this.output=e.output,this.baseUrl=e.baseUrl;}getVariables(){return structuredClone(this.variables)}set(e,t){this.variables[e]=t;}};var Hr=class{constructor(e){this.config=e;}async getOptions(e){let{templateProvider:t}=this.config;return (await t.get(await this.resolveUrl(e))).value.options??{}}async execute(e){let{action:t,io:n}=this.config,{template:r,options:i}=e,a=await this.resolveUrl(r);return t.execute({template:a.toString(),options:i},new Rt({input:n.input,output:n.output,baseUrl:a}))}async resolveUrl(e){let{fileSystem:t}=this.config,n=e;if(URL.canParse(e)){let r=new URL(e);if(r.protocol!=="file:")return r;n=t.normalizeSeparators(r.pathname);}try{return new URL(`file://${await t.getRealPath(n)}`)}catch(r){throw new I(`Template file not found at \`${n}\`.`,{reason:"invalid_input",cause:r,suggestions:["Check the file path and try again."]})}}};function Tt(o,e){if(URL.canParse(o))return new URL(o);let t=new URL(e.href.replace(/^(.*:)(?!\/)/,"$1/"));return new URL(o,t)}var Gr=class{constructor(e){this.config=e;}async execute(e,t){let{fileSystem:n}=this.config,{input:r}=t,i=Tt(e.source,t.baseUrl);if(i.protocol==="file:"&&t.baseUrl.protocol!=="file:")throw new I("File URL is not allowed from remote sources for security reasons.",{reason:"precondition",details:[`Source URL: ${i}`]});let a=n.normalizeSeparators(e.destination),{output:s}=t,p=s?.notify("Downloading sources");try{await this.download(i,a,e.filter!==void 0?new Minimatch(e.filter):void 0,r);}finally{p?.stop();}e.result?.destination!==void 0&&t.set(e.result.destination,a);}async download(e,t,n,r){let{provider:i,fileSystem:a,codemod:s}=this.config,{value:p}=await i.get(e),c=[];for await(let l of p){let m=a.normalizeSeparators(l.name);if(!(a.isAbsolutePath(m)||!a.isSubPath(t,m))&&!(n!==void 0&&!n.match(m))){if(l.name=a.joinPaths(t,m),l.type==="link"||l.type==="symlink"){let f=a.normalizeSeparators(l.target);if(a.isAbsolutePath(f)||!a.isSubPath(t,f))continue;l.target=f;}c.push(l);}}if(c.length!==0){if(await a.exists(t)){if(c.length===1&&c[0].type==="file"){if(await a.exists(c[0].name)&&await r?.confirm({message:`File ${c[0].name} already exists. Do you want to overwrite it?`,default:false})!==true)throw new I("Destination file already exists.",{reason:"precondition",details:[`File: ${c[0].name}`],suggestions:["Delete the file"]})}else if(!await a.isDirectory(t)||!await a.isEmptyDirectory(t)){if(await r?.confirm({message:`Directory ${t} is not empty. Do you want to clear it?`,default:false})!==true)throw new I("Destination directory is not empty.",{reason:"precondition",details:[`Directory: ${t}`],suggestions:["Clear the directory"]});await a.delete(t,{recursive:true});}}await a.createDirectory(t,{recursive:true});for(let l of c)await a.create(l);for(let l of c)l.type==="file"&&await s.apply(await a.getRealPath(l.name));}}};var Kr=class{constructor({packageManager:e}){this.packageManager=e;}async execute(e,t){let{output:n}=t,r=n?.notify("Installing dependencies");try{await this.packageManager.addDependencies(e.dependencies,e.development===!0);}catch(i){throw I.fromCause(i)}finally{r?.stop();}}};var Zr=class{constructor({projectDirectory:e,fileSystem:t,matcherProvider:n}){this.projectDirectory=e,this.fileSystem=t,this.matcherProvider=n;}async execute(e,t){let{output:n}=t,r=n?.notify("Locating files");try{await this.findMatches(e,t);}finally{r?.stop();}}async findMatches(e,t){let n=await this.findMatch(e.path,e);e.result!==void 0&&t.set(e.result,n);}async findMatch(e,t){let n=await this.matcherProvider.get(e),r=[];for await(let i of this.fileSystem.list(this.projectDirectory.get(),t.depth))if(await n.test(i.name)){if(t.matcher===void 0)r.push(i.name);else if(i.type==="file"){let a=await new Response(i.content).text();this.matches(a,t.matcher)&&r.push(i.name);}if(t.limit!==void 0&&r.length>=t.limit)break}return r}matches(e,t){if("pattern"in t)return new RegExp(t.pattern,t.caseSensitive===true?"i":void 0).test(e);switch(t.type){case "and":return t.matchers.every(n=>this.matches(e,n));case "or":return t.matchers.some(n=>this.matches(e,n))}}};var Jr=class{constructor({fileSystem:e}){this.fileSystem=e;}async execute(e,t){let{output:n}=t,r=n.notify("Replacing file content");try{await this.replaceFiles(e);}finally{r.stop();}}async replaceFiles(e){for(let{path:t,replacements:n}of e.files)if(await this.fileSystem.exists(t))try{await this.fileSystem.writeTextFile(t,this.replaceContent(await this.fileSystem.readTextFile(t),n),{overwrite:!0});}catch(r){throw I.fromCause(r)}}replaceContent(e,t){let n=e;for(let{pattern:r,caseSensitive:i,value:a}of t){let s=i===true?"gi":"g";n=n.replaceAll(new RegExp(r,s),`${a}`);}return n}};var Qr=class{constructor({installer:e}){this.installer=e;}async execute(e,t){let{output:n}=t,r=n?.notify("Installing slots");try{await this.installer(e.slots,e.example===!0);}catch(i){throw I.fromCause(i)}finally{r?.stop();}}};var Br=class{constructor({installer:e}){this.installer=e;}async execute(e,t){let{output:n}=t,r=n?.notify("Installing components");try{await this.installer(e.components);}catch(i){throw I.fromCause(i)}finally{r?.stop();}}};var Yr=class{constructor(e){this.runner=e;}async execute(e,t){try{await this.run(e.action,t);}catch(n){if(e.else===void 0)throw e.help===void 0?n:I.fromCause(n,{...e.help,reason:"precondition"});await this.run(e.else,t);}finally{e.finally!==void 0&&await this.run(e.finally,t);}}run(e,t){return this.runner.execute({actions:e},t)}};var U=class o extends d{constructor(e,t={}){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var Ye=class{constructor(e){this.provider=e;}get action(){return Promise.resolve(this.provider.get()).catch(e=>{throw e instanceof U?new I(e.message,e.help):e})}async execute(e,t){return (await this.action).execute(e,t)}};var Xr=class{constructor(e){this.manager=e;}isInitialized(){return this.manager.isInitialized()}load(){return this.configuration===void 0&&(this.configuration=this.manager.load()),this.configuration}update(e){return this.configuration=this.manager.update(e),this.configuration}};var qa;(r=>{function o(i){let a=new Set(Object.values(i.slots??{}).map(m=>m.component)??[]),s=new Set(i.experiences?.flatMap(m=>m.slots)??[]),p=new Set(i.experiences?.flatMap(m=>m.audiences)??[]),c=(i.experiences??[]).map(m=>({name:m.name,maximumAudiencesPerExperience:m.audiences.length,crossDevice:m.experiment?.crossDevice===true,...e(m)})),l=new Set;for(let m of Object.values(i.slots??{}))for(let f of Object.keys(m.content))l.add(f);for(let m of c){for(let f of m.locales)l.add(f);for(let f of m.audiences)p.add(f);for(let f of m.slots)s.add(f);}return {components:a,slots:s,audiences:p,locales:l,experiences:c}}r.analyze=o;function e(i){let a=t(i.content);for(let s of i.experiment?.variants??[]){let p=t(s.content);p.audiences.forEach(c=>a.audiences.add(c)),p.slots.forEach(c=>a.slots.add(c));}return {...a}}function t(i){let a=new Set,s=new Set,p=0;for(let[m,f]of Object.entries(i.default)){a.add(m);for(let[b,A]of Object.entries(f))s.add(b),p=Math.max(p,n(A));}let c=new Set,l=0;for(let m of i.segmented){for(let f of m.audiences)c.add(f);l=Math.max(l,m.audiences.length);for(let[f,b]of Object.entries(m.content)){a.add(f);for(let[A,w]of Object.entries(b))s.add(A),p=Math.max(p,n(w));}}return {slots:a,audiences:c,locales:s,audiencesPerExperience:l,dynamicContentPerContent:p}}function n(i){switch(i.type){case "boolean":case "text":case "number":return i.value.type==="dynamic"?1:0;case "structure":return Object.values(i.attributes).map(n).reduce((a,s)=>a+s,0);case "list":return i.items.map(n).reduce((a,s)=>a+s,0)}}})(qa||={});var ei=class{constructor(e){this.refactoring=e;}refactor(e){return {components:Object.fromEntries(Object.entries(e.components??{}).map(([t,n])=>[this.refactoring.componentMapping[t]??t,n])),slots:Object.fromEntries(Object.entries(e.slots??{}).map(([t,n])=>[this.refactoring.slotMapping[t]??t,this.refactorSlotContent(n)])),audiences:Object.fromEntries(Object.entries(e.audiences??{}).map(([t,n])=>[this.refactoring.audienceMapping[t]??t,n])),experiences:e.experiences?.map(t=>this.refactorExperience(t))??[]}}refactorSlotContent(e){return {...e,component:this.refactoring.componentMapping[e.component]??e.component,content:this.refactorLocalizedContentMap(e.content)}}refactorExperience(e){return {...e,audiences:e.audiences.map(t=>this.refactoring.audienceMapping[t]??t),slots:e.slots.map(t=>this.refactoring.slotMapping[t]??t),experiment:e.experiment!==void 0?{...e.experiment,crossDevice:(e.experiment.crossDevice??false)&&this.refactoring.isCrossDeviceFeatureEnabled}:void 0,content:this.refactorPersonalizedContent(e.content,e.audiences.slice(0,this.refactoring.maximumAudiencePerExperience))}}refactorPersonalizedContent(e,t){return {default:this.refactorSlotContentMap(e.default),segmented:e.segmented.flatMap(n=>{let r=n.audiences.filter(i=>t.includes(i));return r.length===0?[]:{audiences:r,content:this.refactorSlotContentMap(n.content)}})}}refactorSlotContentMap(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[this.refactoring.slotMapping[t]??t,this.refactorLocalizedContentMap(n)]))}refactorLocalizedContentMap(e){return Object.fromEntries(Object.entries(e).flatMap(([t,n])=>{let r=this.refactoring.localeMapping[t];return r===null||r!==void 0&&e[r]!==void 0?[]:[[r??t,this.refactorContent(n,{dynamicAttributesPerContent:this.refactoring.dynamicAttributesPerContent})]]}))}refactorContent(e,t){switch(e.type){case "boolean":case "text":case "number":return e.value.type==="dynamic"&&t.dynamicAttributesPerContent>0&&t.dynamicAttributesPerContent--,e.value.type==="static"||t.dynamicAttributesPerContent>0?e:{...e,value:{type:"static",value:e.value.default}};case "structure":return {...e,attributes:Object.fromEntries(Object.entries(e.attributes).map(([n,r])=>[n,this.refactorContent(r,t)]))};case "list":return {...e,items:e.items.map(n=>this.refactorContent(n,t))}}}};var ti=class o{constructor(e){this.config=e;}async execute(e,t){let{output:n}=t,r=n?.notify("Analyzing resources"),i=qa.analyze(e.resources);this.checkMissingResources({...i,locales:new Set},e.resources);let{configurationManager:a,api:{workspace:s}}=this.config,p=await a.load(),c=await this.getProjectInfo(p),l=await this.createPlan(e.resources,i,c);r?.update("Creating resources");let m=await s.createResources({organizationSlug:p.organization,workspaceSlug:p.workspace,...l.resources});if(r?.stop(),n!==void 0){let f=o.getWarnings(i,c.workspace);if(f.length>0)for(let b of f)n.warn(`${b}`);}e.result!==void 0&&o.setVariables(e.result,l,m,t);}async createPlan(e,t,n){let{mappingForm:r,matcher:i}=this.config,a=await i.match({resources:e,workspaceSlug:n.configuration.workspace,organizationSlug:n.configuration.organization}),s=Object.entries(a.audiences).filter(w=>!("id"in w[1])),p=Object.entries(a.components).filter(w=>!("id"in w[1])),c=Object.entries(a.slots).filter(w=>!("id"in w[1])),l=a.experiences.filter(w=>!("id"in w)),m=l.flatMap(w=>w.experiment===void 0?[]:[w.experiment]);await this.checkRequiredQuota(n,{components:p.length,slots:c.length,audiences:s.length,experiences:l.length,experiments:m.length});let f=await r.handle({organizationSlug:n.configuration.organization,workspaceSlug:n.configuration.workspace,resources:{audiences:s.map(([w])=>w),components:p.map(([w])=>w),slots:c.map(([w])=>w)}}),b={},{workspace:A}=n;for(let w of t.locales)A.locales.includes(w)||(b[w]=A.defaultLocale);return {matches:a,mapping:f,resources:new ei({componentMapping:f.components,audienceMapping:f.audiences,slotMapping:f.slots,dynamicAttributesPerContent:A.quotas.dynamicAttributesPerContent,maximumAudiencePerExperience:A.quotas.audiencesPerExperience,isCrossDeviceFeatureEnabled:A.features.crossDevice,localeMapping:b}).refactor({components:Object.fromEntries(p),slots:Object.fromEntries(c),audiences:Object.fromEntries(s),experiences:l})}}async getProjectInfo(e){let{api:t}=this.config,[n,r]=await Promise.all([t.organization.getWorkspace({organizationSlug:e.organization,workspaceSlug:e.workspace}),t.workspace.getFeatures({organizationSlug:e.organization,workspaceSlug:e.workspace})]);if(n==null||r==null)throw new d("Workspace not found",{title:"Invalid configuration",reason:"invalid_configuration",details:["The workspace defined in the configuration does not exist"],suggestions:["Check the configuration file"]});return {configuration:e,workspace:{...n,...r}}}async checkRequiredQuota(e,t){let{api:{user:n}}=this.config;for(let[r,i]of Object.entries(t)){let a=o.getRemainingQuota(e.workspace,r);if(a<i){let s=await n.getUser().catch(()=>({email:void 0})),p=new URL("https://croct.com/contact/support");throw p.searchParams.set("subject","limit-increase"),p.searchParams.set("organization",e.configuration.organization),p.searchParams.set("message",`I need more quota for ${r}`),s.email!==void 0&&p.searchParams.set("email",s.email),new d(`Not enough ${r} quota available in your workspace.`,{title:"Insufficient quota",reason:"precondition",links:[{label:"Request more quota",url:p.toString()}],details:[`Available: ${a}`,`Required: ${i}`],suggestions:[`Free up quota by removing unused ${r}`,"Request additional quota from support"]})}}}checkMissingResources(e,t){let n=this.findMissingResources(e,t);for(let[r,i]of Object.entries(n))if(i.size>0)throw new d(`Some ${r} referenced in the template are missing`,{title:"Invalid template",reason:"invalid_input",details:[`Missing ${r}: ${Array.from(i).join(", ")}`],suggestions:["Report this issue to the template author"]})}findMissingResources(e,t){let n=new Set(e.components),r=new Set(e.slots),i=new Set(e.audiences),a=new Set(e.locales);for(let s of Object.keys(t.components??{}))n.delete(s);for(let s of Object.keys(t.slots??{}))r.delete(s);for(let s of Object.keys(t.audiences??{}))i.delete(s);return {components:n,slots:r,audiences:i,locales:a}}static getRemainingQuota(e,t){let n=t.charAt(0).toUpperCase()+t.slice(1);return e.quotas[`remaining${n}`]}static getWarnings(e,t){let n=[];return Math.max(...e.experiences.map(s=>s.dynamicContentPerContent))>t.quotas.dynamicAttributesPerContent&&n.push("Some dynamic values have been removed from the content to fit the workspace quota"),Math.max(...e.experiences.map(s=>s.audiencesPerExperience))>t.quotas.audiencesPerExperience&&n.push("Some audiences have been removed from the experiences to fit the workspace quota"),Array.from(e.locales).filter(s=>!t.locales.includes(s)).length>0&&n.push("Content in unsupported locales have been mapped to default or removed"),!t.features.crossDevice&&e.experiences.some(s=>s.crossDevice)&&n.push("Cross-device experiments have been disabled "),n}static setVariables(e,t,n,r){if(e.audiences!==void 0)for(let[i]of Object.entries(t.matches.audiences??{}))e.audiences[i]!==void 0&&r.set(e.audiences[i],t.mapping.audiences[i]??i);if(e.components!==void 0)for(let[i]of Object.entries(t.matches.components??{})){let a=e.components[i];if(a!==void 0){let s=t.mapping.components[i]??i,p=t.matches.components[i]??{};a.id!==void 0&&r.set(a.id,s),a.version!==void 0&&r.set(a.version,"version"in p?p.version.major:1);}}if(e.slots!==void 0)for(let[i]of Object.entries(t.matches.slots??{})){let a=e.slots[i];if(a!==void 0){let s=t.mapping.slots[i]??i,p=t.matches.slots[i]??{};a.id!==void 0&&r.set(a.id,s),a.version!==void 0&&r.set(a.version,"version"in p?p.version.major:1);}}if(e.experiences!==void 0){let{experiences:i}=t.matches,a=0;for(let[s,p]of i.entries()){e.experiences[s]!==void 0&&r.set(e.experiences[s],"id"in p?p.id:n.experiences[a].experienceId);let c=p.experiment!==void 0&&"id"in p.experiment?p.experiment.id:n.experiences[a].experimentId;c!==void 0&&e.experiments?.[s]!==void 0&&r.set(e.experiments[s],c),"id"in p||a++;}}}};var Ot=class o{constructor(e){this.config=e;}static prompt(e){return new o(e).handle()}handle(){let{input:e,unavailableSlugs:t=[],default:n}=this.config;return e.prompt({message:this.config.label,default:n,validate:r=>/^[a-z]+(-?[a-z0-9]+)*$/i.test(r)?t.includes(r)?"The entered slug is already in use.":true:"The slug must start with a letter and contain only letters, numbers, and hyphens."})}};var ni=class{constructor(e){this.config=e;}async handle(e){let{input:t,workspaceApi:n}=this.config,{resources:r,...i}=e,a=r.slots??[],s=r.components??[],p=r.audiences??[],[c,l,m]=await Promise.all([a.length>0?n.getSlots(i):new Array,s.length>0?n.getComponents(i):new Array,p.length>0?n.getAudiences(i):new Array]),f=s.filter(j=>l.some(T=>T.slug===j)),b={};if(f.length>0){let j=l.map(T=>T.slug);for(let T of f){let q=await Ot.prompt({input:t,default:T,unavailableSlugs:j,label:`Component \`${T}\` already exists, enter a new component ID:`});j.push(q),b[T]=q;}}let A=a.filter(j=>c.some(T=>T.slug===j)),w={};if(A.length>0){let j=c.map(T=>T.slug);for(let T of A){let q=await Ot.prompt({input:t,default:T,unavailableSlugs:j,label:`Slot \`${T}\` already exists, enter a new slot ID:`});j.push(q),w[T]=q;}}let y=p.filter(j=>m.some(T=>T.slug===j)),M={};if(y.length>0){let j=m.map(T=>T.slug);for(let T of y){let q=await Ot.prompt({input:t,default:T,unavailableSlugs:j,label:`Audience \`${T}\` already exists, enter a new audience ID:`});j.push(q),M[T]=q;}}return {components:b,slots:w,audiences:M}}};var ri=class o{constructor(e){this.config=e;}async match(e){let{resources:t,...n}=e,[r,i,a,s]=await Promise.all([this.mapComponents(t.components??{},n),this.mapSlots(t.slots??{},n),this.mapAudiences(t.audiences??{},n),this.mapExperiences(t.experiences??[],n)]);return {components:r,slots:i,audiences:a,experiences:s}}async mapAudiences(e,t){let{workspaceApi:n}=this.config,r=await Promise.all(Object.keys(e).map(async a=>[a,await n.getAudience({...t,audienceSlug:a})])),i={};for(let[a,s]of r)i[a]=s===null||!o.isSimilarAudience(e[a],s)?e[a]:s;return i}async mapComponents(e,t){let{workspaceApi:n}=this.config,r=await Promise.all(Object.keys(e).map(async a=>[a,await n.getComponent({...t,componentSlug:a})])),i={};for(let[a,s]of r)i[a]=s===null||!o.isSimilarComponent(e[a],s)?e[a]:s;return i}async mapSlots(e,t){let{workspaceApi:n}=this.config,r=await Promise.all(Object.keys(e).map(async a=>[a,await n.getSlot({...t,slotSlug:a})])),i={};for(let[a,s]of r)i[a]=s===null||!o.isSimilarSlot(e[a],s)?e[a]:s;return i}async mapExperiences(e,t){let{workspaceApi:n}=this.config,i=(await n.getExperiences({...t,status:["ACTIVE","PAUSED","DRAFT"]})).map(a=>{let s=null;function p(){return s===null&&(s=n.getExperience({...t,experienceId:a.id})),s}return {...a,details:{get content(){return p().then(c=>c?.content??null)},get experiment(){return p().then(c=>c?.experiment??null)}}}});return Promise.all(e.map(async a=>{for(let s of i)if(await this.matchesExperience(a,s)){let{details:p,...c}=s;return c}return a}))}async matchesExperience(e,t){if((e.draft===true?"DRAFT":"ACTIVE")!==t.status||!deepEqual(e.audiences,t.audiences)||!deepEqual(e.slots,t.slots)||e.experiment!==void 0&&t.experiment===void 0)return false;let[r,i=null]=await Promise.all([t.details.content,t.details.experiment]);return e.experiment!==void 0&&(i===null||e.experiment.goalId!==i.goalId||e.experiment.traffic!==i.traffic||e.experiment.crossDevice!==i.crossDevice||!o.isSimilarExperimentContent(e.experiment.variants,i.variants))?false:o.isSimilarPersonalizedContent(e.content,r??{default:{},segmented:[]})}static isSimilarAudience(e,t){return e.criteria===t.criteria}static isSimilarComponent(e,t){return deepEqual(e.definition,t.definition)}static isSimilarSlot(e,t){return e.component===t.component?.slug&&Object.values(e.content).some(n=>Object.values(t.content).some(r=>deepEqual(n,r)))}static isSimilarExperimentContent(e,t){return e.length!==t.length?false:e.some((n,r)=>deepEqual(n,t[r]))}static isSimilarPersonalizedContent(e,t){if(o.isSimilarSlotContent(e.default,t.default))return true;for(let n of e.segmented)for(let r of t.segmented)if(deepEqual(n.audiences,r.audiences)&&o.isSimilarSlotContent(n.content,r.content))return true;return false}static isSimilarSlotContent(e,t){for(let[n,r]of Object.entries(e)){let i=t[n];if(i!==void 0){for(let a of Object.values(r))if(Object.values(i).some(s=>deepEqual(a,s)))return true}}return false}};var W=class o extends U{constructor(e,{url:t,...n}){super(e,n),Object.setPrototypeOf(this,o.prototype),this.url=t;}},$e=class o extends W{constructor(e,t){super(e,{...t,reason:t.reason??"not_found"}),Object.setPrototypeOf(this,o.prototype);}};var ii=class o{async get(e){if(!["http:","https:"].includes(e.protocol))throw new W("Unsupported protocol.",{reason:"not_supported",url:e});let t=await fetch(e);if(t.status===404)throw new $e("Resource not found.",{url:e});if(!o.isSuccessful(t))throw new W(t.statusText,{url:e});return {url:e,value:t}}static isSuccessful(e){return e.ok&&e.body!==null}};var oi=class{constructor({packageManager:e}){this.packageManager=e;}async execute(e,t){let{output:n}=t,r=n?.notify("Checking dependencies"),i;try{i=await Promise.all(e.dependencies.map(s=>this.checkRequirement(s)));}finally{r?.stop();}let a=[];if(e.result!==void 0)for(let s of i){if(e.result[s.dependency]!==void 0){t.set(e.result[s.dependency],s.issue===void 0);continue}s.issue!==void 0&&a.push(s);}if(a.length>0){let{message:s,...p}=e.help??{};throw new I(s??"Missing required dependencies.",{...p,details:a.map(({dependency:c,issue:l})=>`\`${c}\`: ${l}`)})}}async checkRequirement(e){let{name:t,version:n,optional:r=false}=e;if(r&&(n===void 0||!await this.packageManager.hasDirectDependency(t))||await this.packageManager.hasDirectDependency(t,n))return {dependency:t};let i=await this.packageManager.getDependency(t);return {dependency:t,issue:i===null?"not installed":`version \`${n}\` is required, found \`${i.version??"unknown"}\``}}};var Dt=class{constructor({dataProvider:e,registryProvider:t,baseUrl:n}){this.dataProvider=e,this.registryProvider=t,this.baseUrl=n;}async get(e){return this.dataProvider.get(await this.resolveUrl(e))}async resolveUrl(e){for(let{pattern:t,destination:n}of await this.loadMappings(e)){let r=e.href.match(typeof t=="string"?new RegExp(t):t);if(r!==null)return n instanceof URL?n:new URL(n.replace(/\$([0-9]+)/g,(i,a)=>r[Number.parseInt(a,10)]),this.baseUrl)}return e}async loadMappings(e){let t=await this.registryProvider.get(e);return Array.isArray(t)?t:t.value}};var Xe=class o{static{this.EXPECTED_ERROR_REASONS=["not_supported","not_found"];}constructor(...e){this.providers=e;}async get(e){for(let t of this.providers)try{return await t.get(e)}catch(n){if(!o.isExpectedError(n))throw n}throw new $e("Resource not found.",{url:e})}static isExpectedError(e){return e instanceof W&&o.EXPECTED_ERROR_REASONS.includes(e.reason)}};var ai=class o{constructor(e){this.fileSystem=e;}supports(e){return Promise.resolve(o.supportsUrl(e))}get(e){if(!o.supportsUrl(e))throw new W(`Unsupported protocol "${e.protocol}".`,{reason:"not_supported",url:e});return Promise.resolve({url:e,value:this.fileSystem.list(this.fileSystem.normalizeSeparators(e.pathname))})}static supportsUrl(e){return e.protocol==="file:"}};var ln=class o{static{this.PROTOCOL="github:";}static{this.API_HOST="api.github.com";}static{this.RAW_HOST="raw.github.com";}static{this.MAIN_HOST="github.com";}constructor(e){this.provider=e;}async get(e){let t=this.parseUrl(e);if(t===null)throw new W("Unsupported GitHub URL.",{reason:"not_supported",url:e});let n=this.resolveFile(t),{value:r}=await this.provider.get(n.url);return {url:t.canonicalUrl,value:n.url.hostname===o.RAW_HOST?this.extractFile(r,n):this.extractTarball(r,n)}}async*extractTarball(e,t){let n=Ql.extract();Readable.fromWeb(e.body).pipe(Bl()).pipe(n);let r=o.removeTrailSlash(t.path??"");for await(let i of n){let{header:a}=i;i.resume();let s=o.removeTrailSlash(a.name.split("/").slice(1).join("/"));if(s===""||!s.startsWith(r)||i.header.type==="directory"&&s===r)continue;let p=s;switch(r.length>0&&s.length>r.length&&(p=s.slice(r.length+1)),a.type){case "file":yield {type:"file",name:p,content:i};break;case "directory":yield {type:"directory",name:p};break;case "link":yield {type:"link",name:p,target:a.linkname};break;case "symlink":yield {type:"symlink",name:p,target:a.linkname};break}if(p===r)break}}async*extractFile(e,t){yield {type:"file",name:t.url.pathname.split("/").pop(),content:Readable.fromWeb(e.body)};}resolveFile(e){let{username:t,repository:n,path:r}=e,i=e.ref??"HEAD";return {...e,url:new URL(r!==null&&/\..+$/.test(r)?`https://${o.RAW_HOST}/${t}/${n}/${i}/${r}`:`https://${o.API_HOST}/repos/${t}/${n}/tarball/${i}`)}}parseUrl(e){if(!o.isUrlSupported(e))return null;let t,n,r=null,i,a=e.pathname.replace(/^\/+/,"").split("/"),s=null;return e.hostname===o.MAIN_HOST?(s=e,[t=null,n=null,,r=null,...i]=a):[t=null,n=null,...i]=a,t===null||n===null?null:(s===null&&(s=new URL(`https://${o.MAIN_HOST}`),s.pathname=`/${t}/${n}/blob/master/${i.join("/")}`),{canonicalUrl:s,username:t,repository:n,ref:r,path:i!==void 0&&i.length>0?i.join("/"):null})}static isUrlSupported(e){return e.protocol==="https:"?e.hostname===o.MAIN_HOST:e.protocol===o.PROTOCOL}static removeTrailSlash(e){return e.replace(/\/$/,"")}};var un=class o{constructor(e){this.provider=e;}async get(e){if(!o.supportsUrl(e))throw new W("Unsupported URL.",{reason:"not_supported",url:e});let{value:t,...n}=await this.provider.get(e);return {...n,value:this.yield(t,e)}}static supportsUrl(e){return e.pathname!=="/"}async*yield(e,t){yield {type:"file",name:t.pathname.split("/").pop(),content:Readable.fromWeb(e.body)};}};var Q=class{constructor(e){this.schema=e;}async validate(e){let t=await this.schema.safeParseAsync(e);if(t.success)return {valid:true,data:t.data};let{error:n}=t;return {valid:false,violations:n.issues.map(r=>({path:r.path.reduce((i,a)=>typeof a=="string"?i===""?a:`${i}.${a}`:`${i}[${a}]`,""),message:r.message}))}}};var Xl=z.object({name:z.string(),version:z.string().optional(),dependencies:z.record(z.string()).optional(),devDependencies:z.record(z.string()).optional(),bin:z.record(z.string()).optional(),scripts:z.record(z.string()).optional(),packageManager:z.string().optional()}),mn=class extends Q{constructor(){super(Xl);}};var si=z.string().regex(/^[a-z]+(-?[a-z0-9]+)*$/i,"An identifier must start with a letter and contain only letters, numbers, and hyphens."),ic=z.string().regex(/^[a-z]{2,3}([-_][a-z]{2,3})?$/i,"Locale must be in the form of en, en_US, or en-US."),oc=z.string().refine(O.isValid,"Version must be exact (1), range (1 - 2), or set (1 || 2).").refine(o=>{try{return O.parse(o).getCardinality()<=5}catch{return false}},"Version range must not exceed 5 major versions."),eu=z.strictObject({$schema:z.string().optional(),organization:si,workspace:si,applications:z.strictObject({development:si,production:si.optional()}),locales:z.array(ic),defaultLocale:ic,slots:z.record(oc),components:z.record(oc),paths:z.strictObject({components:z.string(),examples:z.string(),content:z.string().optional()})}).refine(o=>o.locales.includes(o.defaultLocale),{message:"The default locale is not included in the list of locales.",path:["defaultLocale"]}),pi=class extends Q{constructor(){super(eu);}};var Mt=class{constructor({provider:e,validator:t}){this.provider=e,this.validator=t;}async get(e){let{value:t,...n}=await this.provider.get(e),r=await this.validator.validate(t);if(!r.valid){let i=r.violations.map(a=>` \u2022 **${a.path}**: ${a.message}`).join(`
|
|
1765
|
+
`;this.runCommand({name:"powershell",arguments:["-Command",`& {${i}}`]});}}runCommand(e){let{commandExecutor:t,timeout:n}=this.configuration;try{let r=t.runSync(e,{timeout:n});return r.exitCode!==0?null:r.output.trim()}catch{return null}}};var Dr=class{constructor(e){this.detector=e.detector,this.templates=e.templates;}async generate(e){let t=await this.detector.detect(e.recipient);return t===null||this.templates[t]===void 0?null:this.templates[t].generate(e)}};var Mr=class{constructor(...e){this.detectors=e;}async detect(e){for(let t of this.detectors){let n=await t.detect(e);if(n!==null)return n}return null}};var Nr=class o{static{this.DEFAULT_DOMAINS={google:["gmail.com","googlemail.com","google.com"],yahoo:[/yahoo\.com(?:\.\w+)?/,"yahoo.co.uk","yahoo.fr","yahoo.it","ymail.com","rocketmail.com"],microsoft:["outlook.com","live.com","hotmail.com","msn.com","passport.com","passport.net"],proton:["proton.me","protonmail.com"],icloud:["icloud.com"]};}constructor(e=o.DEFAULT_DOMAINS){this.domains=e;}detect(e){let t=e.toLowerCase().split("@")[1];for(let[n,r]of Object.entries(this.domains))if(r.some(a=>typeof a=="string"?a===t:a.test(t)))return Promise.resolve(n);return Promise.resolve(null)}};var $r=class o{static{this.DEFAULT_DOMAINS={google:["google.com"],microsoft:["outlook.com"]};}constructor(e=o.DEFAULT_DOMAINS){this.domains=e;}async detect(e){let t=e.toLowerCase().split("@")[1],n=await this.lookup(t);for(let[r,i]of Object.entries(this.domains))for(let a of i)for(let s of n)if(s.endsWith(`.${a}.`))return r;return null}async lookup(e){let t=new URL("https://dns.google.com/resolve");t.searchParams.set("type","MX"),t.searchParams.set("name",e);let n;try{n=await fetch(t).then(r=>{if(!r.ok)throw new Error("Failed to lookup domain");return r.json()});}catch{return []}return n.Answer===void 0?[]:n.Answer.map(r=>r.data)}};var Et=ft(Kt()),zr=class o{generate(e){return new URL(`https://mail.google.com/mail${o.formatFilters(e)}`)}static formatFilters(e){let t=[`to:${e.recipient}`],n=`/u/${e.recipient}`;if(e.sender!==void 0&&t.push(`from:${e.sender}`),e.subject!==void 0&&t.push(`subject:${e.subject}`),e.timestamp!==void 0){let r=Et.TimeZone.of(Intl.DateTimeFormat().resolvedOptions().timeZone),i=Et.Instant.ofEpochSecond(e.timestamp),a=Et.LocalDateTime.ofInstant(i,r).getLocalDate();t.push(`after:${a}`);}return t.push("in:anywhere"),n+=`/#search/${t.map(r=>encodeURIComponent(r)).join("+")}`,n}};var _r=class{generate(e){return new URL("https://www.icloud.com/mail")}};var Lr=class{generate(e){let t=new URL("https://outlook.live.com/mail");return e.recipient!==void 0&&t.searchParams.append("login_hint",e.recipient),t}};var Fr=class o{generate(e){return new URL(`https://mail.proton.me/u/0/all-mail${o.formatFilters(e)}`)}static formatFilters(e){let t=new URLSearchParams;return t.set("to",e.recipient),e.sender!==void 0&&t.set("from",e.sender),e.timestamp!==void 0&&t.set("begin",e.timestamp.toFixed(0)),e.subject!==void 0&&t.set("keyword",e.subject),`#${t.toString()}`}};var jr=class o{generate(e){return new URL(`https://mail.yahoo.com/d/search${o.formatFilters(e)}`)}static formatFilters(e){let t=[`to:${e.recipient}`];return e.sender!==void 0&&t.push(`from:${e.sender}`),e.subject!==void 0&&t.push(`subject:${e.subject}`),e.timestamp!==void 0&&t.push(`after:"${new Date(e.timestamp*1e3).toISOString().split("T")[0]}"`),t.length===0?"":`/keyword=${t.join(" ")}`}};var pn=class{constructor(e){this.config=e;}async execute(e){let{fileSystem:t,io:n}=this.config,r=await this.createTemplate(e.empty??false),i=e.file??t.joinPaths(".","template.json5");try{let a=!1;await t.exists(i)&&(a=await n.input?.confirm({message:`Overwrite existing file at \`${i}\`?`,default:!1})??!1),await t.writeTextFile(i,JSON.stringify(r,null,2),{overwrite:a});}catch(a){throw new d("Failed to write template file",{reason:"other",cause:a})}n.output.confirm(`Template created at \`${i}\``);}async createTemplate(e){return {$schema:"https://schema.croct.com/json/v1/template.json",title:"My template",actions:e?[{name:"print",semantic:"info",title:"Empty template",message:"Edit this template to define your actions."}]:[{name:"create-resource",resources:await this.exportResources()}]}}async exportResources(){let{configurationManager:e,templateForm:t}=this.config,n=await e.load(),r=await t.handle({organizationSlug:n.organization,workspaceSlug:n.workspace}),i={audiences:Object.fromEntries(r.audiences.map(a=>[a.slug,{name:a.name,criteria:a.criteria}])),components:Object.fromEntries(r.components.map(a=>[a.slug,{name:a.name,description:a.description,definition:a.definition}])),slots:Object.fromEntries(r.slots.map(a=>[a.slug,{name:a.name,component:a.component?.slug??"",content:a.content}])),experiences:r.experiences.map(a=>{let{experiment:s}=a,p=s!==void 0?{name:s.name??"",goalId:s.goalId,crossDevice:s.crossDevice,traffic:s.traffic??1,variants:s.variants.map(c=>({name:c.name??"",content:c.content,baseline:c.baseline,allocation:c.allocation??1e3/s.variants.length}))}:void 0;return {name:a.name,draft:a.status==="DRAFT",audiences:a.audiences,slots:a.slots,content:a.content,...p!==void 0?{experiment:p}:{}}})};for(let[a,s]of Object.entries(i))typeof s=="object"&&s!==null&&(Array.isArray(s)&&s.length===0||Object.keys(s).length===0)&&delete i[a];return i}};var Wr=class{constructor(e){this.config=e;}async handle(e){let{input:t,form:n}=this.config,r={components:[],slots:[],audiences:[],experiences:[]},i=new Set,a=new Set,s=await n.experience.handle({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,confirmation:"Do you want to include experiences?"});if(s.length>0){for(let c of s.flatMap(l=>l.audiences))i.add(c);for(let c of s.flatMap(l=>l.slots))a.add(c);r.experiences=s,s.some(c=>c.experiment!==void 0)&&(await t.confirm({message:"Include experiments?",default:false})||(r.experiences=r.experiences.map(c=>{let{experiment:l,...m}=c;return m})));}r.slots=await n.slot.handle({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,selected:[...a],selectionConfirmation:{message:a.size>0?"Do you want to include other slots?":"Do you want to include slots?",default:false}});let p=new Set(r.slots.map(c=>c.component?.slug??""));return r.components=await n.component.handle({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,includeDependencies:true,selected:[...p],selectionConfirmation:{message:p.size>0?"Do you want to include other components?":"Do you want to include components?",default:false}}),r.audiences=await n.audience.handle({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,selected:[...i],selectionConfirmation:{message:i.size>0?"Do you want to include other audiences?":"Do you want to include audiences?",default:false}}),r}};var Vr=class{constructor(e){this.config=e;}async handle(e){let{output:t,input:n,workspaceApi:r}=this.config,i=t.notify("Loading experiences"),a=await r.getExperiences({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});i.stop();let{confirmation:s}=e;if(a.length===0||s!==void 0&&!await n.confirm({message:s}))return [];let p=await n.selectMultiple({message:"Select experiences",options:a.map(l=>({value:l,label:l.name}))});i=t.notify("Loading details");let c=await Promise.all(p.flatMap(async({id:l})=>{let m=await r.getExperience({experienceId:l,organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return m===null?[]:[m]}));return i.stop(),c.flat()}};var Ur=class{constructor(e){this.config=e;}async handle(e){let{output:t,input:n}=this.config,r=t.notify("Loading audiences"),i=await this.getAudiences(e,e.allowed);r.stop();let a=e.preselected??[];if(a.length>0)return i.filter(({slug:p})=>a.includes(p));let s=e.selected??[];return i.length===0||s.length>0&&i.every(({slug:p})=>s.includes(p))?i.filter(({slug:p})=>s.includes(p)):e.selectionConfirmation!==void 0&&!await n.confirm(e.selectionConfirmation)?i.filter(({slug:c})=>s.includes(c)):n.selectMultiple({message:"Select audiences",options:i.map(p=>{let c=s.includes(p.slug);return {value:p,label:p.name,disabled:c,selected:c}})})}async getAudiences(e,t){let{workspaceApi:n}=this.config,r=await n.getAudiences({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug});return t===void 0?r:r.filter(({slug:i})=>t.includes(i))}};var I=class o extends d{constructor(e,{tracing:t,...n}={}){super(e,n),this.tracing=t??[],Object.setPrototypeOf(this,o.prototype);}static fromCause(e,t={}){let{message:n,...r}=t;if(!(e instanceof Error))return new o(n??d.formatMessage(e),{...r,cause:e});let i=new o(n??e.message,{cause:e,...e instanceof d?e.help:{},...r,tracing:[...r.tracing??[],...e instanceof o?e.tracing:[]]});return i.stack=e.stack,i}};var Rt=class{constructor(e){this.variables={};this.input=e.input,this.output=e.output,this.baseUrl=e.baseUrl;}getVariables(){return structuredClone(this.variables)}set(e,t){this.variables[e]=t;}};var qr=class{constructor(e){this.config=e;}async getOptions(e){let{templateProvider:t}=this.config;return (await t.get(await this.resolveUrl(e))).value.options??{}}async execute(e){let{action:t,io:n}=this.config,{template:r,options:i}=e,a=await this.resolveUrl(r);return t.execute({template:a.toString(),options:i},new Rt({input:n.input,output:n.output,baseUrl:a}))}async resolveUrl(e){let{fileSystem:t}=this.config,n=e;if(URL.canParse(e)){let r=new URL(e);if(r.protocol!=="file:")return r;n=t.normalizeSeparators(r.pathname);}try{return new URL(`file://${await t.getRealPath(n)}`)}catch(r){throw new I(`Template file not found at \`${n}\`.`,{reason:"invalid_input",cause:r,suggestions:["Check the file path and try again."]})}}};function Tt(o,e){if(URL.canParse(o))return new URL(o);let t=new URL(e.href.replace(/^(.*:)(?!\/)/,"$1/"));return new URL(o,t)}var Hr=class{constructor(e){this.config=e;}async execute(e,t){let{fileSystem:n}=this.config,{input:r}=t,i=Tt(e.source,t.baseUrl);if(i.protocol==="file:"&&t.baseUrl.protocol!=="file:")throw new I("File URL is not allowed from remote sources for security reasons.",{reason:"precondition",details:[`Source URL: ${i}`]});let a=n.normalizeSeparators(e.destination),{output:s}=t,p=s?.notify("Downloading sources");try{await this.download(i,a,e.filter!==void 0?new Minimatch(e.filter):void 0,r);}finally{p?.stop();}e.result?.destination!==void 0&&t.set(e.result.destination,a);}async download(e,t,n,r){let{provider:i,fileSystem:a,codemod:s}=this.config,{value:p}=await i.get(e),c=[];for await(let l of p){let m=a.normalizeSeparators(l.name);if(!(a.isAbsolutePath(m)||!a.isSubPath(t,m))&&!(n!==void 0&&!n.match(m))){if(l.name=a.joinPaths(t,m),l.type==="link"||l.type==="symlink"){let f=a.normalizeSeparators(l.target);if(a.isAbsolutePath(f)||!a.isSubPath(t,f))continue;l.target=f;}c.push(l);}}if(c.length!==0){if(await a.exists(t)){if(c.length===1&&c[0].type==="file"){if(await a.exists(c[0].name)&&await r?.confirm({message:`File ${c[0].name} already exists. Do you want to overwrite it?`,default:false})!==true)throw new I("Destination file already exists.",{reason:"precondition",details:[`File: ${c[0].name}`],suggestions:["Delete the file"]})}else if(!await a.isDirectory(t)||!await a.isEmptyDirectory(t)){if(await r?.confirm({message:`Directory ${t} is not empty. Do you want to clear it?`,default:false})!==true)throw new I("Destination directory is not empty.",{reason:"precondition",details:[`Directory: ${t}`],suggestions:["Clear the directory"]});await a.delete(t,{recursive:true});}}await a.createDirectory(t,{recursive:true});for(let l of c)await a.create(l);for(let l of c)l.type==="file"&&await s.apply(await a.getRealPath(l.name));}}};var Gr=class{constructor({packageManager:e}){this.packageManager=e;}async execute(e,t){let{output:n}=t,r=n?.notify("Installing dependencies");try{await this.packageManager.addDependencies(e.dependencies,e.development===!0);}catch(i){throw I.fromCause(i)}finally{r?.stop();}}};var Kr=class{constructor({projectDirectory:e,fileSystem:t,matcherProvider:n}){this.projectDirectory=e,this.fileSystem=t,this.matcherProvider=n;}async execute(e,t){let{output:n}=t,r=n?.notify("Locating files");try{await this.findMatches(e,t);}finally{r?.stop();}}async findMatches(e,t){let n=await this.findMatch(e.path,e);e.result!==void 0&&t.set(e.result,n);}async findMatch(e,t){let n=await this.matcherProvider.get(e),r=[];for await(let i of this.fileSystem.list(this.projectDirectory.get(),t.depth))if(await n.test(i.name)){if(t.matcher===void 0)r.push(i.name);else if(i.type==="file"){let a=await new Response(i.content).text();this.matches(a,t.matcher)&&r.push(i.name);}if(t.limit!==void 0&&r.length>=t.limit)break}return r}matches(e,t){if("pattern"in t)return new RegExp(t.pattern,t.caseSensitive===true?"i":void 0).test(e);switch(t.type){case "and":return t.matchers.every(n=>this.matches(e,n));case "or":return t.matchers.some(n=>this.matches(e,n))}}};var Zr=class{constructor({fileSystem:e}){this.fileSystem=e;}async execute(e,t){let{output:n}=t,r=n.notify("Replacing file content");try{await this.replaceFiles(e);}finally{r.stop();}}async replaceFiles(e){for(let{path:t,replacements:n}of e.files)if(await this.fileSystem.exists(t))try{await this.fileSystem.writeTextFile(t,this.replaceContent(await this.fileSystem.readTextFile(t),n),{overwrite:!0});}catch(r){throw I.fromCause(r)}}replaceContent(e,t){let n=e;for(let{pattern:r,caseSensitive:i,value:a}of t){let s=i===true?"gi":"g";n=n.replaceAll(new RegExp(r,s),`${a}`);}return n}};var Jr=class{constructor({installer:e}){this.installer=e;}async execute(e,t){let{output:n}=t,r=n?.notify("Installing slots");try{await this.installer(e.slots,e.example===!0);}catch(i){throw I.fromCause(i)}finally{r?.stop();}}};var Qr=class{constructor({installer:e}){this.installer=e;}async execute(e,t){let{output:n}=t,r=n?.notify("Installing components");try{await this.installer(e.components);}catch(i){throw I.fromCause(i)}finally{r?.stop();}}};var Br=class{constructor(e){this.runner=e;}async execute(e,t){try{await this.run(e.action,t);}catch(n){if(e.else===void 0)throw e.help===void 0?n:I.fromCause(n,{...e.help,reason:"precondition"});await this.run(e.else,t);}finally{e.finally!==void 0&&await this.run(e.finally,t);}}run(e,t){return this.runner.execute({actions:e},t)}};var U=class o extends d{constructor(e,t={}){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var Be=class{constructor(e){this.provider=e;}get action(){return Promise.resolve(this.provider.get()).catch(e=>{throw e instanceof U?new I(e.message,e.help):e})}async execute(e,t){return (await this.action).execute(e,t)}};var Yr=class{constructor(e){this.manager=e;}isInitialized(){return this.manager.isInitialized()}load(){return this.configuration===void 0&&(this.configuration=this.manager.load()),this.configuration}update(e){return this.configuration=this.manager.update(e),this.configuration}};var Ua;(r=>{function o(i){let a=new Set(Object.values(i.slots??{}).map(m=>m.component)??[]),s=new Set(i.experiences?.flatMap(m=>m.slots)??[]),p=new Set(i.experiences?.flatMap(m=>m.audiences)??[]),c=(i.experiences??[]).map(m=>({name:m.name,maximumAudiencesPerExperience:m.audiences.length,crossDevice:m.experiment?.crossDevice===true,...e(m)})),l=new Set;for(let m of Object.values(i.slots??{}))for(let f of Object.keys(m.content))l.add(f);for(let m of c){for(let f of m.locales)l.add(f);for(let f of m.audiences)p.add(f);for(let f of m.slots)s.add(f);}return {components:a,slots:s,audiences:p,locales:l,experiences:c}}r.analyze=o;function e(i){let a=t(i.content);for(let s of i.experiment?.variants??[]){let p=t(s.content);p.audiences.forEach(c=>a.audiences.add(c)),p.slots.forEach(c=>a.slots.add(c));}return {...a}}function t(i){let a=new Set,s=new Set,p=0;for(let[m,f]of Object.entries(i.default)){a.add(m);for(let[b,A]of Object.entries(f))s.add(b),p=Math.max(p,n(A));}let c=new Set,l=0;for(let m of i.segmented){for(let f of m.audiences)c.add(f);l=Math.max(l,m.audiences.length);for(let[f,b]of Object.entries(m.content)){a.add(f);for(let[A,v]of Object.entries(b))s.add(A),p=Math.max(p,n(v));}}return {slots:a,audiences:c,locales:s,audiencesPerExperience:l,dynamicContentPerContent:p}}function n(i){switch(i.type){case "boolean":case "text":case "number":return i.value.type==="dynamic"?1:0;case "structure":return Object.values(i.attributes).map(n).reduce((a,s)=>a+s,0);case "list":return i.items.map(n).reduce((a,s)=>a+s,0)}}})(Ua||={});var Xr=class{constructor(e){this.refactoring=e;}refactor(e){return {components:Object.fromEntries(Object.entries(e.components??{}).map(([t,n])=>[this.refactoring.componentMapping[t]??t,n])),slots:Object.fromEntries(Object.entries(e.slots??{}).map(([t,n])=>[this.refactoring.slotMapping[t]??t,this.refactorSlotContent(n)])),audiences:Object.fromEntries(Object.entries(e.audiences??{}).map(([t,n])=>[this.refactoring.audienceMapping[t]??t,n])),experiences:e.experiences?.map(t=>this.refactorExperience(t))??[]}}refactorSlotContent(e){return {...e,component:this.refactoring.componentMapping[e.component]??e.component,content:this.refactorLocalizedContentMap(e.content)}}refactorExperience(e){return {...e,audiences:e.audiences.map(t=>this.refactoring.audienceMapping[t]??t),slots:e.slots.map(t=>this.refactoring.slotMapping[t]??t),experiment:e.experiment!==void 0?{...e.experiment,crossDevice:(e.experiment.crossDevice??false)&&this.refactoring.isCrossDeviceFeatureEnabled}:void 0,content:this.refactorPersonalizedContent(e.content,e.audiences.slice(0,this.refactoring.maximumAudiencePerExperience))}}refactorPersonalizedContent(e,t){return {default:this.refactorSlotContentMap(e.default),segmented:e.segmented.flatMap(n=>{let r=n.audiences.filter(i=>t.includes(i));return r.length===0?[]:{audiences:r,content:this.refactorSlotContentMap(n.content)}})}}refactorSlotContentMap(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[this.refactoring.slotMapping[t]??t,this.refactorLocalizedContentMap(n)]))}refactorLocalizedContentMap(e){return Object.fromEntries(Object.entries(e).flatMap(([t,n])=>{let r=this.refactoring.localeMapping[t];return r===null||r!==void 0&&e[r]!==void 0?[]:[[r??t,this.refactorContent(n,{dynamicAttributesPerContent:this.refactoring.dynamicAttributesPerContent})]]}))}refactorContent(e,t){switch(e.type){case "boolean":case "text":case "number":return e.value.type==="dynamic"&&t.dynamicAttributesPerContent>0&&t.dynamicAttributesPerContent--,e.value.type==="static"||t.dynamicAttributesPerContent>0?e:{...e,value:{type:"static",value:e.value.default}};case "structure":return {...e,attributes:Object.fromEntries(Object.entries(e.attributes).map(([n,r])=>[n,this.refactorContent(r,t)]))};case "list":return {...e,items:e.items.map(n=>this.refactorContent(n,t))}}}};var ei=class o{constructor(e){this.config=e;}async execute(e,t){let{output:n}=t,r=n?.notify("Analyzing resources"),i=Ua.analyze(e.resources);this.checkMissingResources({...i,locales:new Set},e.resources);let{configurationManager:a,api:{workspace:s}}=this.config,p=await a.load(),c=await this.getProjectInfo(p),l=await this.createPlan(e.resources,i,c);r?.update("Creating resources");let m=await s.createResources({organizationSlug:p.organization,workspaceSlug:p.workspace,...l.resources});if(r?.stop(),n!==void 0){let f=o.getWarnings(i,c.workspace);if(f.length>0)for(let b of f)n.warn(`${b}`);}e.result!==void 0&&o.setVariables(e.result,l,m,t);}async createPlan(e,t,n){let{mappingForm:r,matcher:i}=this.config,a=await i.match({resources:e,workspaceSlug:n.configuration.workspace,organizationSlug:n.configuration.organization}),s=Object.entries(a.audiences).filter(v=>!("id"in v[1])),p=Object.entries(a.components).filter(v=>!("id"in v[1])),c=Object.entries(a.slots).filter(v=>!("id"in v[1])),l=a.experiences.filter(v=>!("id"in v)),m=l.flatMap(v=>v.experiment===void 0?[]:[v.experiment]);await this.checkRequiredQuota(n,{components:p.length,slots:c.length,audiences:s.length,experiences:l.length,experiments:m.length});let f=await r.handle({organizationSlug:n.configuration.organization,workspaceSlug:n.configuration.workspace,resources:{audiences:s.map(([v])=>v),components:p.map(([v])=>v),slots:c.map(([v])=>v)}}),b={},{workspace:A}=n;for(let v of t.locales)A.locales.includes(v)||(b[v]=A.defaultLocale);return {matches:a,mapping:f,resources:new Xr({componentMapping:f.components,audienceMapping:f.audiences,slotMapping:f.slots,dynamicAttributesPerContent:A.quotas.dynamicAttributesPerContent,maximumAudiencePerExperience:A.quotas.audiencesPerExperience,isCrossDeviceFeatureEnabled:A.features.crossDevice,localeMapping:b}).refactor({components:Object.fromEntries(p),slots:Object.fromEntries(c),audiences:Object.fromEntries(s),experiences:l})}}async getProjectInfo(e){let{api:t}=this.config,[n,r]=await Promise.all([t.organization.getWorkspace({organizationSlug:e.organization,workspaceSlug:e.workspace}),t.workspace.getFeatures({organizationSlug:e.organization,workspaceSlug:e.workspace})]);if(n==null||r==null)throw new d("Workspace not found",{title:"Invalid configuration",reason:"invalid_configuration",details:["The workspace defined in the configuration does not exist"],suggestions:["Check the configuration file"]});return {configuration:e,workspace:{...n,...r}}}async checkRequiredQuota(e,t){let{api:{user:n}}=this.config;for(let[r,i]of Object.entries(t)){let a=o.getRemainingQuota(e.workspace,r);if(a<i){let s=await n.getUser().catch(()=>({email:void 0})),p=new URL("https://croct.com/contact/support");throw p.searchParams.set("subject","limit-increase"),p.searchParams.set("organization",e.configuration.organization),p.searchParams.set("message",`I need more quota for ${r}`),s.email!==void 0&&p.searchParams.set("email",s.email),new d(`Not enough ${r} quota available in your workspace.`,{title:"Insufficient quota",reason:"precondition",links:[{label:"Request more quota",url:p.toString()}],details:[`Available: ${a}`,`Required: ${i}`],suggestions:[`Free up quota by removing unused ${r}`,"Request additional quota from support"]})}}}checkMissingResources(e,t){let n=this.findMissingResources(e,t);for(let[r,i]of Object.entries(n))if(i.size>0)throw new d(`Some ${r} referenced in the template are missing`,{title:"Invalid template",reason:"invalid_input",details:[`Missing ${r}: ${Array.from(i).join(", ")}`],suggestions:["Report this issue to the template author"]})}findMissingResources(e,t){let n=new Set(e.components),r=new Set(e.slots),i=new Set(e.audiences),a=new Set(e.locales);for(let s of Object.keys(t.components??{}))n.delete(s);for(let s of Object.keys(t.slots??{}))r.delete(s);for(let s of Object.keys(t.audiences??{}))i.delete(s);return {components:n,slots:r,audiences:i,locales:a}}static getRemainingQuota(e,t){let n=t.charAt(0).toUpperCase()+t.slice(1);return e.quotas[`remaining${n}`]}static getWarnings(e,t){let n=[];return Math.max(...e.experiences.map(s=>s.dynamicContentPerContent))>t.quotas.dynamicAttributesPerContent&&n.push("Some dynamic values have been removed from the content to fit the workspace quota"),Math.max(...e.experiences.map(s=>s.audiencesPerExperience))>t.quotas.audiencesPerExperience&&n.push("Some audiences have been removed from the experiences to fit the workspace quota"),Array.from(e.locales).filter(s=>!t.locales.includes(s)).length>0&&n.push("Content in unsupported locales have been mapped to default or removed"),!t.features.crossDevice&&e.experiences.some(s=>s.crossDevice)&&n.push("Cross-device experiments have been disabled "),n}static setVariables(e,t,n,r){if(e.audiences!==void 0)for(let[i]of Object.entries(t.matches.audiences??{}))e.audiences[i]!==void 0&&r.set(e.audiences[i],t.mapping.audiences[i]??i);if(e.components!==void 0)for(let[i]of Object.entries(t.matches.components??{})){let a=e.components[i];if(a!==void 0){let s=t.mapping.components[i]??i,p=t.matches.components[i]??{};a.id!==void 0&&r.set(a.id,s),a.version!==void 0&&r.set(a.version,"version"in p?p.version.major:1);}}if(e.slots!==void 0)for(let[i]of Object.entries(t.matches.slots??{})){let a=e.slots[i];if(a!==void 0){let s=t.mapping.slots[i]??i,p=t.matches.slots[i]??{};a.id!==void 0&&r.set(a.id,s),a.version!==void 0&&r.set(a.version,"version"in p?p.version.major:1);}}if(e.experiences!==void 0){let{experiences:i}=t.matches,a=0;for(let[s,p]of i.entries()){e.experiences[s]!==void 0&&r.set(e.experiences[s],"id"in p?p.id:n.experiences[a].experienceId);let c=p.experiment!==void 0&&"id"in p.experiment?p.experiment.id:n.experiences[a].experimentId;c!==void 0&&e.experiments?.[s]!==void 0&&r.set(e.experiments[s],c),"id"in p||a++;}}}};var Ot=class o{constructor(e){this.config=e;}static prompt(e){return new o(e).handle()}handle(){let{input:e,unavailableSlugs:t=[],default:n}=this.config;return e.prompt({message:this.config.label,default:n,validate:r=>/^[a-z]+(-?[a-z0-9]+)*$/i.test(r)?t.includes(r)?"The entered slug is already in use.":true:"The slug must start with a letter and contain only letters, numbers, and hyphens."})}};var ti=class{constructor(e){this.config=e;}async handle(e){let{input:t,workspaceApi:n}=this.config,{resources:r,...i}=e,a=r.slots??[],s=r.components??[],p=r.audiences??[],[c,l,m]=await Promise.all([a.length>0?n.getSlots(i):new Array,s.length>0?n.getComponents(i):new Array,p.length>0?n.getAudiences(i):new Array]),f=s.filter(j=>l.some(T=>T.slug===j)),b={};if(f.length>0){let j=l.map(T=>T.slug);for(let T of f){let q=await Ot.prompt({input:t,default:T,unavailableSlugs:j,label:`Component \`${T}\` already exists, enter a new component ID:`});j.push(q),b[T]=q;}}let A=a.filter(j=>c.some(T=>T.slug===j)),v={};if(A.length>0){let j=c.map(T=>T.slug);for(let T of A){let q=await Ot.prompt({input:t,default:T,unavailableSlugs:j,label:`Slot \`${T}\` already exists, enter a new slot ID:`});j.push(q),v[T]=q;}}let y=p.filter(j=>m.some(T=>T.slug===j)),M={};if(y.length>0){let j=m.map(T=>T.slug);for(let T of y){let q=await Ot.prompt({input:t,default:T,unavailableSlugs:j,label:`Audience \`${T}\` already exists, enter a new audience ID:`});j.push(q),M[T]=q;}}return {components:b,slots:v,audiences:M}}};var ni=class o{constructor(e){this.config=e;}async match(e){let{resources:t,...n}=e,[r,i,a,s]=await Promise.all([this.mapComponents(t.components??{},n),this.mapSlots(t.slots??{},n),this.mapAudiences(t.audiences??{},n),this.mapExperiences(t.experiences??[],n)]);return {components:r,slots:i,audiences:a,experiences:s}}async mapAudiences(e,t){let{workspaceApi:n}=this.config,r=await Promise.all(Object.keys(e).map(async a=>[a,await n.getAudience({...t,audienceSlug:a})])),i={};for(let[a,s]of r)i[a]=s===null||!o.isSimilarAudience(e[a],s)?e[a]:s;return i}async mapComponents(e,t){let{workspaceApi:n}=this.config,r=await Promise.all(Object.keys(e).map(async a=>[a,await n.getComponent({...t,componentSlug:a})])),i={};for(let[a,s]of r)i[a]=s===null||!o.isSimilarComponent(e[a],s)?e[a]:s;return i}async mapSlots(e,t){let{workspaceApi:n}=this.config,r=await Promise.all(Object.keys(e).map(async a=>[a,await n.getSlot({...t,slotSlug:a})])),i={};for(let[a,s]of r)i[a]=s===null||!o.isSimilarSlot(e[a],s)?e[a]:s;return i}async mapExperiences(e,t){let{workspaceApi:n}=this.config,i=(await n.getExperiences({...t,status:["ACTIVE","PAUSED","DRAFT"]})).map(a=>{let s=null;function p(){return s===null&&(s=n.getExperience({...t,experienceId:a.id})),s}return {...a,details:{get content(){return p().then(c=>c?.content??null)},get experiment(){return p().then(c=>c?.experiment??null)}}}});return Promise.all(e.map(async a=>{for(let s of i)if(await this.matchesExperience(a,s)){let{details:p,...c}=s;return c}return a}))}async matchesExperience(e,t){if((e.draft===true?"DRAFT":"ACTIVE")!==t.status||!deepEqual(e.audiences,t.audiences)||!deepEqual(e.slots,t.slots)||e.experiment!==void 0&&t.experiment===void 0)return false;let[r,i=null]=await Promise.all([t.details.content,t.details.experiment]);return e.experiment!==void 0&&(i===null||e.experiment.goalId!==i.goalId||e.experiment.traffic!==i.traffic||e.experiment.crossDevice!==i.crossDevice||!o.isSimilarExperimentContent(e.experiment.variants,i.variants))?false:o.isSimilarPersonalizedContent(e.content,r??{default:{},segmented:[]})}static isSimilarAudience(e,t){return e.criteria===t.criteria}static isSimilarComponent(e,t){return deepEqual(e.definition,t.definition)}static isSimilarSlot(e,t){return e.component===t.component?.slug&&Object.values(e.content).some(n=>Object.values(t.content).some(r=>deepEqual(n,r)))}static isSimilarExperimentContent(e,t){return e.length!==t.length?false:e.some((n,r)=>deepEqual(n,t[r]))}static isSimilarPersonalizedContent(e,t){if(o.isSimilarSlotContent(e.default,t.default))return true;for(let n of e.segmented)for(let r of t.segmented)if(deepEqual(n.audiences,r.audiences)&&o.isSimilarSlotContent(n.content,r.content))return true;return false}static isSimilarSlotContent(e,t){for(let[n,r]of Object.entries(e)){let i=t[n];if(i!==void 0){for(let a of Object.values(r))if(Object.values(i).some(s=>deepEqual(a,s)))return true}}return false}};var W=class o extends U{constructor(e,{url:t,...n}){super(e,n),Object.setPrototypeOf(this,o.prototype),this.url=t;}},$e=class o extends W{constructor(e,t){super(e,{...t,reason:t.reason??"not_found"}),Object.setPrototypeOf(this,o.prototype);}};var ri=class o{async get(e){if(!["http:","https:"].includes(e.protocol))throw new W("Unsupported protocol.",{reason:"not_supported",url:e});let t=await fetch(e);if(t.status===404)throw new $e("Resource not found.",{url:e});if(!o.isSuccessful(t))throw new W(t.statusText,{url:e});return {url:e,value:t}}static isSuccessful(e){return e.ok&&e.body!==null}};var ii=class{constructor({packageManager:e}){this.packageManager=e;}async execute(e,t){let{output:n}=t,r=n?.notify("Checking dependencies"),i;try{i=await Promise.all(e.dependencies.map(s=>this.checkRequirement(s)));}finally{r?.stop();}let a=[];if(e.result!==void 0)for(let s of i){if(e.result[s.dependency]!==void 0){t.set(e.result[s.dependency],s.issue===void 0);continue}s.issue!==void 0&&a.push(s);}if(a.length>0){let{message:s,...p}=e.help??{};throw new I(s??"Missing required dependencies.",{...p,details:a.map(({dependency:c,issue:l})=>`\`${c}\`: ${l}`)})}}async checkRequirement(e){let{name:t,version:n,optional:r=false}=e;if(r&&(n===void 0||!await this.packageManager.hasDirectDependency(t))||await this.packageManager.hasDirectDependency(t,n))return {dependency:t};let i=await this.packageManager.getDependency(t);return {dependency:t,issue:i===null?"not installed":`version \`${n}\` is required, found \`${i.version??"unknown"}\``}}};var Dt=class{constructor({dataProvider:e,registryProvider:t,baseUrl:n}){this.dataProvider=e,this.registryProvider=t,this.baseUrl=n;}async get(e){return this.dataProvider.get(await this.resolveUrl(e))}async resolveUrl(e){for(let{pattern:t,destination:n}of await this.loadMappings(e)){let r=e.href.match(typeof t=="string"?new RegExp(t):t);if(r!==null)return n instanceof URL?n:new URL(n.replace(/\$([0-9]+)/g,(i,a)=>r[Number.parseInt(a,10)]),this.baseUrl)}return e}async loadMappings(e){let t=await this.registryProvider.get(e);return Array.isArray(t)?t:t.value}};var Ye=class o{static{this.EXPECTED_ERROR_REASONS=["not_supported","not_found"];}constructor(...e){this.providers=e;}async get(e){for(let t of this.providers)try{return await t.get(e)}catch(n){if(!o.isExpectedError(n))throw n}throw new $e("Resource not found.",{url:e})}static isExpectedError(e){return e instanceof W&&o.EXPECTED_ERROR_REASONS.includes(e.reason)}};var oi=class o{constructor(e){this.fileSystem=e;}supports(e){return Promise.resolve(o.supportsUrl(e))}get(e){if(!o.supportsUrl(e))throw new W(`Unsupported protocol "${e.protocol}".`,{reason:"not_supported",url:e});return Promise.resolve({url:e,value:this.fileSystem.list(this.fileSystem.normalizeSeparators(e.pathname))})}static supportsUrl(e){return e.protocol==="file:"}};var cn=class o{static{this.PROTOCOL="github:";}static{this.API_HOST="api.github.com";}static{this.RAW_HOST="raw.github.com";}static{this.MAIN_HOST="github.com";}constructor(e){this.provider=e;}async get(e){let t=this.parseUrl(e);if(t===null)throw new W("Unsupported GitHub URL.",{reason:"not_supported",url:e});let n=this.resolveFile(t),{value:r}=await this.provider.get(n.url);return {url:t.canonicalUrl,value:n.url.hostname===o.RAW_HOST?this.extractFile(r,n):this.extractTarball(r,n)}}async*extractTarball(e,t){let n=Jl.extract();Readable.fromWeb(e.body).pipe(Ql()).pipe(n);let r=o.removeTrailSlash(t.path??"");for await(let i of n){let{header:a}=i;i.resume();let s=o.removeTrailSlash(a.name.split("/").slice(1).join("/"));if(s===""||!s.startsWith(r)||i.header.type==="directory"&&s===r)continue;let p=s;switch(r.length>0&&s.length>r.length&&(p=s.slice(r.length+1)),a.type){case "file":yield {type:"file",name:p,content:i};break;case "directory":yield {type:"directory",name:p};break;case "link":yield {type:"link",name:p,target:a.linkname};break;case "symlink":yield {type:"symlink",name:p,target:a.linkname};break}if(p===r)break}}async*extractFile(e,t){yield {type:"file",name:t.url.pathname.split("/").pop(),content:Readable.fromWeb(e.body)};}resolveFile(e){let{username:t,repository:n,path:r}=e,i=e.ref??"HEAD";return {...e,url:new URL(r!==null&&/\..+$/.test(r)?`https://${o.RAW_HOST}/${t}/${n}/${i}/${r}`:`https://${o.API_HOST}/repos/${t}/${n}/tarball/${i}`)}}parseUrl(e){if(!o.isUrlSupported(e))return null;let t,n,r=null,i,a=e.pathname.replace(/^\/+/,"").split("/"),s=null;return e.hostname===o.MAIN_HOST?(s=e,[t=null,n=null,,r=null,...i]=a):[t=null,n=null,...i]=a,t===null||n===null?null:(s===null&&(s=new URL(`https://${o.MAIN_HOST}`),s.pathname=`/${t}/${n}/blob/master/${i.join("/")}`),{canonicalUrl:s,username:t,repository:n,ref:r,path:i!==void 0&&i.length>0?i.join("/"):null})}static isUrlSupported(e){return e.protocol==="https:"?e.hostname===o.MAIN_HOST:e.protocol===o.PROTOCOL}static removeTrailSlash(e){return e.replace(/\/$/,"")}};var ln=class o{constructor(e){this.provider=e;}async get(e){if(!o.supportsUrl(e))throw new W("Unsupported URL.",{reason:"not_supported",url:e});let{value:t,...n}=await this.provider.get(e);return {...n,value:this.yield(t,e)}}static supportsUrl(e){return e.pathname!=="/"}async*yield(e,t){yield {type:"file",name:t.pathname.split("/").pop(),content:Readable.fromWeb(e.body)};}};var Q=class{constructor(e){this.schema=e;}async validate(e){let t=await this.schema.safeParseAsync(e);if(t.success)return {valid:true,data:t.data};let{error:n}=t;return {valid:false,violations:n.issues.map(r=>({path:r.path.reduce((i,a)=>typeof a=="string"?i===""?a:`${i}.${a}`:`${i}[${a}]`,""),message:r.message}))}}};var Yl=z.object({name:z.string(),version:z.string().optional(),dependencies:z.record(z.string()).optional(),devDependencies:z.record(z.string()).optional(),bin:z.record(z.string()).optional(),scripts:z.record(z.string()).optional(),packageManager:z.string().optional()}),un=class extends Q{constructor(){super(Yl);}};var ai=z.string().regex(/^[a-z]+(-?[a-z0-9]+)*$/i,"An identifier must start with a letter and contain only letters, numbers, and hyphens."),rc=z.string().regex(/^[a-z]{2,3}([-_][a-z]{2,3})?$/i,"Locale must be in the form of en, en_US, or en-US."),ic=z.string().refine(O.isValid,"Version must be exact (1), range (1 - 2), or set (1 || 2).").refine(o=>{try{return O.parse(o).getCardinality()<=5}catch{return false}},"Version range must not exceed 5 major versions."),Xl=z.strictObject({$schema:z.string().optional(),organization:ai,workspace:ai,applications:z.strictObject({development:ai,production:ai.optional()}),locales:z.array(rc),defaultLocale:rc,slots:z.record(ic),components:z.record(ic),paths:z.strictObject({components:z.string(),examples:z.string(),content:z.string().optional()})}).refine(o=>o.locales.includes(o.defaultLocale),{message:"The default locale is not included in the list of locales.",path:["defaultLocale"]}),si=class extends Q{constructor(){super(Xl);}};var Mt=class{constructor({provider:e,validator:t}){this.provider=e,this.validator=t;}async get(e){let{value:t,...n}=await this.provider.get(e),r=await this.validator.validate(t);if(!r.valid){let i=r.violations.map(a=>` \u2022 **${a.path}**: ${a.message}`).join(`
|
|
1755
1766
|
|
|
1756
1767
|
`);throw new W(`The response data is invalid:
|
|
1757
1768
|
|
|
1758
|
-
${i}`,{reason:"invalid_input",url:e})}return {...n,value:r.data}}};var mt=class{constructor(e){this.provider=e;}async get(e){let{value:t,...n}=await this.provider.get(e),r=await t.next();if(r.done===true||r.value.type!=="file")throw new $e("File not found.",{url:e});return {...n,value:await new Response(r.value.content).text()}}};var dn=class{constructor(e){this.provider=e;}async get(e){let{value:t,...n}=await this.provider.get(e);try{return {...n,value:JsonParser.parse(t).toJSON()}}catch(r){throw new W("Malformed JSON.",{reason:"precondition",url:e,cause:r})}}};var nu=z.strictObject({pattern:z.string().refine(o=>{try{return new RegExp(o),!0}catch{return {message:"Invalid regular expression."}}}),destination:z.string()}),ru=z.array(nu),li=class extends Q{constructor(){super(ru);}};var gn=class{constructor({fileSystem:e,directory:t,useKeyAsFileName:n}){this.fileSystem=e,this.directory=t,this.useKeyAsFileName=n??false;}async delete(e){await this.fileSystem.delete(this.getCacheFile(e));}async get(e,t){try{return await this.fileSystem.readTextFile(this.getCacheFile(e))}catch{return t(e)}}async set(e,t){return await this.fileSystem.exists(this.directory)||await this.fileSystem.createDirectory(this.directory,{recursive:true}),this.fileSystem.writeTextFile(this.getCacheFile(e),t,{overwrite:true})}getCacheFile(e){return this.fileSystem.joinPaths(this.directory,this.useKeyAsFileName?e:createHash("md5").update(e).digest("hex"))}};var fn=class{constructor({provider:e,resourceCache:t,errorCache:n}){this.provider=e,this.resourceCache=t,this.errorCache=n;}async get(e){let t=await this.errorCache?.get(e.toString(),()=>Promise.resolve());return t!==void 0?Promise.reject(t):this.resourceCache.get(e.toString(),async()=>{try{return await this.provider.get(e)}catch(n){throw this.errorCache?.set(e.toString(),n),n}})}};var Nt;(e=>{function o(...t){return t.reduce((n,r)=>Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)),{})}e.merge=o;})(Nt||={});var $=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var ui=class o{constructor(e={}){this.cache=new Map;this.configuration=e;}static{this.ALLOWED_ARRAY_PROPERTIES=["length"];}static{this.ALLOWED_ARRAY_METHODS=["slice","join"];}static{this.ALLOWED_STRING_PROPERTIES=["length"];}static{this.ALLOWED_STRING_METHODS=["slice","includes","startsWith","endsWith","toLowerCase","toUpperCase"];}static{this.LITERALS={true:true,false:false,null:null};}static{this.UNARY_OPERATORS={"!":{evaluate:async e=>!await yn(e)},"-":{evaluate:async e=>-await Z(e)},"+":{evaluate:async e=>+await Z(e)}};}static{this.BINARY_OPERATORS={"||":{precedence:1,evaluate:async(e,t)=>await yn(e)||yn(t)},"??":{precedence:1,evaluate:async(e,t)=>await e()??t()},"&&":{precedence:2,evaluate:async(e,t)=>await yn(e)&&yn(t)},"==":{precedence:6,evaluate:async(e,t)=>await e()==await t()},"===":{precedence:6,evaluate:async(e,t)=>await e()===await t()},"!=":{precedence:6,evaluate:async(e,t)=>await e()!=await t()},"!==":{precedence:6,evaluate:async(e,t)=>await e()!==await t()},"<":{precedence:7,evaluate:async(e,t)=>await Z(e)<await Z(t)},">":{precedence:7,evaluate:async(e,t)=>await Z(e)>await Z(t)},"<=":{precedence:7,evaluate:async(e,t)=>await Z(e)<=await Z(t)},">=":{precedence:7,evaluate:async(e,t)=>await Z(e)>=await Z(t)},"+":{precedence:9,evaluate:async(e,t)=>{let[n,r]=await Promise.all([e(),t()]);if(typeof n=="string"||typeof r=="string")return `${n}${r}`;if(typeof n!="number"||typeof r!="number")throw new $(`Operands must be numbers or strings, got ${d.describeType(n)} and ${d.describeType(r)}.`);return n+r}},"-":{precedence:9,evaluate:async(e,t)=>await Z(e)-await Z(t)},"*":{precedence:10,evaluate:async(e,t)=>await Z(e)*await Z(t)},"/":{precedence:10,evaluate:async(e,t)=>await Z(e)/await Z(t)},"%":{precedence:10,evaluate:async(e,t)=>await Z(e)%await Z(t)},"**":{precedence:11,evaluate:async(e,t)=>(await Z(e))**await Z(t)}};}evaluate(e,t){return this.evaluateExpression(this.parse(e),t)}parse(e){let t=this.cache.get(e);if(t!==void 0)return t;qe.plugins.register(ou),qe.plugins.register(au),qe.removeAllUnaryOps();for(let r of Object.keys(o.UNARY_OPERATORS))qe.addUnaryOp(r);qe.removeAllBinaryOps();for(let[r,{precedence:i}]of Object.entries(o.BINARY_OPERATORS))qe.addBinaryOp(r,i);qe.removeAllLiterals();for(let[r,i]of Object.entries(o.LITERALS))qe.addLiteral(r,i);let n;try{n=qe(e);}catch(r){throw new $("Malformed expression.",{cause:r,details:[`Expression: ${e}`]})}return this.cache.set(e,n),n}async evaluateExpression(e,t){switch(true){case J(e,"Literal"):return e.value;case J(e,"ThisExpression"):case J(e,"Identifier"):{let n=e.type==="ThisExpression"?"this":e.name,r=t?.variables?.[n];if(r===void 0)throw new $(`Variable \`${n}\` is unknown.`);return r}case J(e,"ArrayExpression"):return (await Promise.all(e.elements.map(r=>{if(r===null)return [];if(J(r,"SpreadElement")){let i=this.evaluateExpression(r.argument,t);if(!(i instanceof Promise)&&!Array.isArray(i))throw new $(`Spread expression must evaluate to an array, got ${d.describeType(i)}.`);return i}return [this.evaluateExpression(r,t)]}))).flat();case J(e,"ObjectExpression"):return Object.fromEntries(await Promise.all(e.properties.flatMap(async n=>{if(J(n,"SpreadElement")){let i=await this.evaluateExpression(n.argument,t);if(typeof i!="object"||i===null)throw new $(`Spread expression must evaluate to an object, got ${d.describeType(i)}.`);return Object.entries(i)}return n.value===void 0&&J(n.key,"Identifier")?[n.key.name,await this.evaluateExpression(n.key,t)]:[[J(n.key,"Identifier")?n.key.name:this.evaluateExpression(n.key,t).then(i=>{if(typeof i!="string"&&typeof i!="number")throw new $(`Property name must be a string or a number, got ${d.describeType(i)}.`);return i}),await this.evaluateExpression(n.value,t)]]})));case J(e,"UnaryExpression"):return o.UNARY_OPERATORS[e.operator].evaluate(()=>this.evaluateExpression(e.argument,t));case J(e,"BinaryExpression"):return o.BINARY_OPERATORS[e.operator].evaluate(()=>this.evaluateExpression(e.left,t),()=>this.evaluateExpression(e.right,t));case J(e,"MemberExpression"):{let n=await this.evaluateExpression(e.object,t);if(typeof n!="object"||n===null)throw new $("Cannot access property of a non-object.");let r=J(e.property,"Identifier")?e.property.name:await this.evaluateExpression(e.property,t);if(typeof r=="number"){if(!Array.isArray(n))throw new $("Cannot access array index of a non-array.");if(r<0||r>=n.length)throw new $("Array index is out of bounds.");return n[r]}if(typeof r!="string")throw new $(`Property name must be a string, got ${d.describeType(r)}.`);if(!o.isPropertyAllowed(n,r))throw new $(`Property \`${r}\` does not exist or is not accessible.`);return n[r]}case J(e,"CallExpression"):return (await this.getCallee(e.callee,t))(...await Promise.all(e.arguments.flatMap(r=>{let i=this.resolve(this.evaluateExpression(r,t));if(J(r,"SpreadElement")){if(!Array.isArray(i))throw new $(`Spread argument must evaluate to an array, got ${d.describeType(i)}.`);return i}return [i]})));case J(e,"ConditionalExpression"):return await this.evaluateExpression(e.test,t)?this.evaluateExpression(e.consequent,t):this.evaluateExpression(e.alternate,t);default:throw new $(`Unexpected expression type \`${e.type}\`.`)}}async getCallee(e,t){if(J(e,"Identifier")){let n=t?.functions?.[e.name]??this.configuration.functions?.[e.name];if(n===void 0)throw new $(`Function \`${e.name}\` does not exist.`);return n}if(J(e,"MemberExpression")){let n=await this.evaluateExpression(e.object,t),r=J(e.property,"Identifier")?e.property.name:await this.evaluateExpression(e.property,t);if(typeof r!="string")throw new $(`Method name must be a string, got ${d.describeType(r)}.`);if(!o.isMethodAllowed(n,r))throw new $(`Method \`${r}\` does not exist or is not accessible.`);return n[r].bind(n)}throw new $("Callee is not callable.")}static isMethodAllowed(e,t){return typeof e=="string"?o.ALLOWED_STRING_METHODS.includes(t):Array.isArray(e)?o.ALLOWED_ARRAY_METHODS.includes(t):false}static isPropertyAllowed(e,t){return typeof e=="string"?o.ALLOWED_STRING_PROPERTIES.includes(t):Array.isArray(e)?o.ALLOWED_ARRAY_PROPERTIES.includes(t):typeof e=="object"&&e!==null&&Object.hasOwn(e,t)&&e[t]!==void 0}async resolve(e){if(!(e instanceof Promise)&&(typeof e!="object"||e===null))return e;let t=await e;if(Array.isArray(t))return Promise.all(t.map(n=>this.resolve(n)));if(typeof t=="object"&&t!==null){let n=Object.fromEntries(await Promise.all(Object.entries(t).flatMap(([r,i])=>i===void 0?[]:[[r,this.resolve(i)]])));return Object.isFrozen(t)?Object.freeze(n):Object.isSealed(t)&&Object.seal(n),n}return t}};function J(o,e){return o.type===e}async function Z(o){let e=await o();if(typeof e!="number")throw new $(`Number expected, got ${d.describeType(e)}.`);return e}async function yn(o){let e=await o();if(typeof e!="boolean")throw new $(`Boolean expected, got ${d.describeType(e)}.`);return e}var $t=z.strictObject({description:z.string(),required:z.boolean().optional()}),su=z.union([z.string(),z.number(),z.boolean(),z.null()]),mi=z.lazy(()=>z.union([su,z.array(mi),z.record(mi)])),pu=z.discriminatedUnion("type",[$t.extend({type:z.literal("reference"),default:z.string().optional()}),$t.extend({type:z.literal("string"),options:z.array(z.string()).optional(),default:z.string().optional()}),$t.extend({type:z.literal("number"),default:z.number().optional()}),$t.extend({type:z.literal("boolean"),default:z.boolean().optional()}),$t.extend({type:z.literal("array"),default:z.array(mi).optional()}),$t.extend({type:z.literal("object"),default:z.record(z.string(),mi).optional()})]),cu=z.strictObject({$schema:z.string().optional(),title:z.string().min(1).optional(),description:z.string().optional(),options:z.record(z.string().min(1),pu).optional(),actions:z.array(z.any())}),hn=class extends Q{constructor(){super(cu);}};var di=class o{constructor(e){this.resolving=[];this.config=e;}async execute(e,t){let{output:n}=t,r=n.notify("Loading template");try{await this.importTemplate(e,t);}finally{r.stop();}}async importTemplate(e,t){let{value:n,url:r}=await this.loadTemplate(e.template,t.baseUrl),i=await this.getInputValues(n,e.options);if(this.resolving.includes(r.href)){let s=[...this.resolving,r.href].map((p,c)=>` ${c+1}. ${p}`).join(`
|
|
1769
|
+
${i}`,{reason:"invalid_input",url:e})}return {...n,value:r.data}}};var mt=class{constructor(e){this.provider=e;}async get(e){let{value:t,...n}=await this.provider.get(e),r=await t.next();if(r.done===true||r.value.type!=="file")throw new $e("File not found.",{url:e});return {...n,value:await new Response(r.value.content).text()}}};var mn=class{constructor(e){this.provider=e;}async get(e){let{value:t,...n}=await this.provider.get(e);try{return {...n,value:JsonParser$1.parse(t).toJSON()}}catch(r){throw new W("Malformed JSON.",{reason:"precondition",url:e,cause:r})}}};var tu=z.strictObject({pattern:z.string().refine(o=>{try{return new RegExp(o),!0}catch{return {message:"Invalid regular expression."}}}),destination:z.string()}),nu=z.array(tu),ci=class extends Q{constructor(){super(nu);}};var dn=class{constructor({fileSystem:e,directory:t,useKeyAsFileName:n}){this.fileSystem=e,this.directory=t,this.useKeyAsFileName=n??false;}async delete(e){await this.fileSystem.delete(this.getCacheFile(e));}async get(e,t){try{return await this.fileSystem.readTextFile(this.getCacheFile(e))}catch{return t(e)}}async set(e,t){return await this.fileSystem.exists(this.directory)||await this.fileSystem.createDirectory(this.directory,{recursive:true}),this.fileSystem.writeTextFile(this.getCacheFile(e),t,{overwrite:true})}getCacheFile(e){return this.fileSystem.joinPaths(this.directory,this.useKeyAsFileName?e:createHash("md5").update(e).digest("hex"))}};var gn=class{constructor({provider:e,resourceCache:t,errorCache:n}){this.provider=e,this.resourceCache=t,this.errorCache=n;}async get(e){let t=await this.errorCache?.get(e.toString(),()=>Promise.resolve());return t!==void 0?Promise.reject(t):this.resourceCache.get(e.toString(),async()=>{try{return await this.provider.get(e)}catch(n){throw this.errorCache?.set(e.toString(),n),n}})}};var Nt;(e=>{function o(...t){return t.reduce((n,r)=>Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)),{})}e.merge=o;})(Nt||={});var $=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var li=class o{constructor(e={}){this.cache=new Map;this.configuration=e;}static{this.ALLOWED_ARRAY_PROPERTIES=["length"];}static{this.ALLOWED_ARRAY_METHODS=["slice","join"];}static{this.ALLOWED_STRING_PROPERTIES=["length"];}static{this.ALLOWED_STRING_METHODS=["slice","includes","startsWith","endsWith","toLowerCase","toUpperCase"];}static{this.LITERALS={true:true,false:false,null:null};}static{this.UNARY_OPERATORS={"!":{evaluate:async e=>!await fn(e)},"-":{evaluate:async e=>-await Z(e)},"+":{evaluate:async e=>+await Z(e)}};}static{this.BINARY_OPERATORS={"||":{precedence:1,evaluate:async(e,t)=>await fn(e)||fn(t)},"??":{precedence:1,evaluate:async(e,t)=>await e()??t()},"&&":{precedence:2,evaluate:async(e,t)=>await fn(e)&&fn(t)},"==":{precedence:6,evaluate:async(e,t)=>await e()==await t()},"===":{precedence:6,evaluate:async(e,t)=>await e()===await t()},"!=":{precedence:6,evaluate:async(e,t)=>await e()!=await t()},"!==":{precedence:6,evaluate:async(e,t)=>await e()!==await t()},"<":{precedence:7,evaluate:async(e,t)=>await Z(e)<await Z(t)},">":{precedence:7,evaluate:async(e,t)=>await Z(e)>await Z(t)},"<=":{precedence:7,evaluate:async(e,t)=>await Z(e)<=await Z(t)},">=":{precedence:7,evaluate:async(e,t)=>await Z(e)>=await Z(t)},"+":{precedence:9,evaluate:async(e,t)=>{let[n,r]=await Promise.all([e(),t()]);if(typeof n=="string"||typeof r=="string")return `${n}${r}`;if(typeof n!="number"||typeof r!="number")throw new $(`Operands must be numbers or strings, got ${d.describeType(n)} and ${d.describeType(r)}.`);return n+r}},"-":{precedence:9,evaluate:async(e,t)=>await Z(e)-await Z(t)},"*":{precedence:10,evaluate:async(e,t)=>await Z(e)*await Z(t)},"/":{precedence:10,evaluate:async(e,t)=>await Z(e)/await Z(t)},"%":{precedence:10,evaluate:async(e,t)=>await Z(e)%await Z(t)},"**":{precedence:11,evaluate:async(e,t)=>(await Z(e))**await Z(t)}};}evaluate(e,t){return this.evaluateExpression(this.parse(e),t)}parse(e){let t=this.cache.get(e);if(t!==void 0)return t;Ue.plugins.register(iu),Ue.plugins.register(ou),Ue.removeAllUnaryOps();for(let r of Object.keys(o.UNARY_OPERATORS))Ue.addUnaryOp(r);Ue.removeAllBinaryOps();for(let[r,{precedence:i}]of Object.entries(o.BINARY_OPERATORS))Ue.addBinaryOp(r,i);Ue.removeAllLiterals();for(let[r,i]of Object.entries(o.LITERALS))Ue.addLiteral(r,i);let n;try{n=Ue(e);}catch(r){throw new $("Malformed expression.",{cause:r,details:[`Expression: ${e}`]})}return this.cache.set(e,n),n}async evaluateExpression(e,t){switch(true){case J(e,"Literal"):return e.value;case J(e,"ThisExpression"):case J(e,"Identifier"):{let n=e.type==="ThisExpression"?"this":e.name,r=t?.variables?.[n];if(r===void 0)throw new $(`Variable \`${n}\` is unknown.`);return r}case J(e,"ArrayExpression"):return (await Promise.all(e.elements.map(r=>{if(r===null)return [];if(J(r,"SpreadElement")){let i=this.evaluateExpression(r.argument,t);if(!(i instanceof Promise)&&!Array.isArray(i))throw new $(`Spread expression must evaluate to an array, got ${d.describeType(i)}.`);return i}return [this.evaluateExpression(r,t)]}))).flat();case J(e,"ObjectExpression"):return Object.fromEntries(await Promise.all(e.properties.flatMap(async n=>{if(J(n,"SpreadElement")){let i=await this.evaluateExpression(n.argument,t);if(typeof i!="object"||i===null)throw new $(`Spread expression must evaluate to an object, got ${d.describeType(i)}.`);return Object.entries(i)}return n.value===void 0&&J(n.key,"Identifier")?[n.key.name,await this.evaluateExpression(n.key,t)]:[[J(n.key,"Identifier")?n.key.name:this.evaluateExpression(n.key,t).then(i=>{if(typeof i!="string"&&typeof i!="number")throw new $(`Property name must be a string or a number, got ${d.describeType(i)}.`);return i}),await this.evaluateExpression(n.value,t)]]})));case J(e,"UnaryExpression"):return o.UNARY_OPERATORS[e.operator].evaluate(()=>this.evaluateExpression(e.argument,t));case J(e,"BinaryExpression"):return o.BINARY_OPERATORS[e.operator].evaluate(()=>this.evaluateExpression(e.left,t),()=>this.evaluateExpression(e.right,t));case J(e,"MemberExpression"):{let n=await this.evaluateExpression(e.object,t);if(typeof n!="object"||n===null)throw new $("Cannot access property of a non-object.");let r=J(e.property,"Identifier")?e.property.name:await this.evaluateExpression(e.property,t);if(typeof r=="number"){if(!Array.isArray(n))throw new $("Cannot access array index of a non-array.");if(r<0||r>=n.length)throw new $("Array index is out of bounds.");return n[r]}if(typeof r!="string")throw new $(`Property name must be a string, got ${d.describeType(r)}.`);if(!o.isPropertyAllowed(n,r))throw new $(`Property \`${r}\` does not exist or is not accessible.`);return n[r]}case J(e,"CallExpression"):return (await this.getCallee(e.callee,t))(...await Promise.all(e.arguments.flatMap(r=>{let i=this.resolve(this.evaluateExpression(r,t));if(J(r,"SpreadElement")){if(!Array.isArray(i))throw new $(`Spread argument must evaluate to an array, got ${d.describeType(i)}.`);return i}return [i]})));case J(e,"ConditionalExpression"):return await this.evaluateExpression(e.test,t)?this.evaluateExpression(e.consequent,t):this.evaluateExpression(e.alternate,t);default:throw new $(`Unexpected expression type \`${e.type}\`.`)}}async getCallee(e,t){if(J(e,"Identifier")){let n=t?.functions?.[e.name]??this.configuration.functions?.[e.name];if(n===void 0)throw new $(`Function \`${e.name}\` does not exist.`);return n}if(J(e,"MemberExpression")){let n=await this.evaluateExpression(e.object,t),r=J(e.property,"Identifier")?e.property.name:await this.evaluateExpression(e.property,t);if(typeof r!="string")throw new $(`Method name must be a string, got ${d.describeType(r)}.`);if(!o.isMethodAllowed(n,r))throw new $(`Method \`${r}\` does not exist or is not accessible.`);return n[r].bind(n)}throw new $("Callee is not callable.")}static isMethodAllowed(e,t){return typeof e=="string"?o.ALLOWED_STRING_METHODS.includes(t):Array.isArray(e)?o.ALLOWED_ARRAY_METHODS.includes(t):false}static isPropertyAllowed(e,t){return typeof e=="string"?o.ALLOWED_STRING_PROPERTIES.includes(t):Array.isArray(e)?o.ALLOWED_ARRAY_PROPERTIES.includes(t):typeof e=="object"&&e!==null&&Object.hasOwn(e,t)&&e[t]!==void 0}async resolve(e){if(!(e instanceof Promise)&&(typeof e!="object"||e===null))return e;let t=await e;if(Array.isArray(t))return Promise.all(t.map(n=>this.resolve(n)));if(typeof t=="object"&&t!==null){let n=Object.fromEntries(await Promise.all(Object.entries(t).flatMap(([r,i])=>i===void 0?[]:[[r,this.resolve(i)]])));return Object.isFrozen(t)?Object.freeze(n):Object.isSealed(t)&&Object.seal(n),n}return t}};function J(o,e){return o.type===e}async function Z(o){let e=await o();if(typeof e!="number")throw new $(`Number expected, got ${d.describeType(e)}.`);return e}async function fn(o){let e=await o();if(typeof e!="boolean")throw new $(`Boolean expected, got ${d.describeType(e)}.`);return e}var $t=z.strictObject({description:z.string(),required:z.boolean().optional()}),au=z.union([z.string(),z.number(),z.boolean(),z.null()]),ui=z.lazy(()=>z.union([au,z.array(ui),z.record(ui)])),su=z.discriminatedUnion("type",[$t.extend({type:z.literal("reference"),default:z.string().optional()}),$t.extend({type:z.literal("string"),options:z.array(z.string()).optional(),default:z.string().optional()}),$t.extend({type:z.literal("number"),default:z.number().optional()}),$t.extend({type:z.literal("boolean"),default:z.boolean().optional()}),$t.extend({type:z.literal("array"),default:z.array(ui).optional()}),$t.extend({type:z.literal("object"),default:z.record(z.string(),ui).optional()})]),pu=z.strictObject({$schema:z.string().optional(),title:z.string().min(1).optional(),description:z.string().optional(),options:z.record(z.string().min(1),su).optional(),actions:z.array(z.any())}),yn=class extends Q{constructor(){super(pu);}};var mi=class o{constructor(e){this.resolving=[];this.config=e;}async execute(e,t){let{output:n}=t,r=n.notify("Loading template");try{await this.importTemplate(e,t);}finally{r.stop();}}async importTemplate(e,t){let{value:n,url:r}=await this.loadTemplate(e.template,t.baseUrl),i=await this.getInputValues(n,e.options);if(this.resolving.includes(r.href)){let s=[...this.resolving,r.href].map((p,c)=>` ${c+1}. ${p}`).join(`
|
|
1759
1770
|
`);throw new I(`Circular dependency detected while loading templates:
|
|
1760
1771
|
|
|
1761
|
-
${s}`,{reason:"invalid_input"})}this.resolving.push(r.toString());let a=new Rt({input:t.input,output:t.output,baseUrl:r});o.shareVariables(i.references,t,a);try{await this.run(n,i.values,a);}finally{this.resolving.pop();}o.shareVariables(i.references,a,t);}async getInputValues(e,t={}){let n={},r=[];for(let[i,a]of Object.entries(e.options??{})){let s=t[i];if(s===void 0&&a.required===true)throw new I(`Missing required option \`${i}\`.`,{reason:"invalid_input"});let p=await(s??a.resolveDefault?.(this.config.variables));p!==void 0&&(a.type==="reference"?(o.checkOptionValue(i,p,{...a,type:"string"}),r.push(p)):o.checkOptionValue(i,p,a),n[i]=p);}return {values:n,references:r}}async run(e,t,n){let{runner:r,variables:i}=this.config,{output:a}=n;for(let{resolve:s}of e.actions){let p=a.notify("Resolving options"),c;try{c=await s(Nt.merge(i,{options:t,get this(){return n.getVariables()}}));}catch(l){throw I.fromCause(l,{message:"Unable to resolve action definition."})}finally{p.stop();}await r.execute({actions:[c]},n);}}async loadTemplate(e,t){let n=this.config.templateProvider,r=Tt(e,t);try{return await n.get(r)}catch(i){throw i instanceof $e?new d(`No template found at \`${r}\`.`,{cause:i,reason:"invalid_input",suggestions:["Check if the template path or URL is correct and try again."]}):i}}static checkOptionValue(e,t,n){switch(n.type){case "number":case "string":case "boolean":{if(typeof t!==n.type)throw new I(`Expected value of type ${n.type} for option \`${e}\`, but got ${d.describeType(t)}.`,{reason:"invalid_input"});if(n.type==="string"&&n.options!==void 0&&!n.options.includes(t))throw new I(`Invalid value for option \`${e}\`.`,{reason:"invalid_input",details:[`Allowed values: \`${n.options.join("`, `")}\`.`]});break}case "array":{if(!Array.isArray(t))throw new I(`Expected value of type ${n.type} for option \`${e}\`,but got ${d.describeType(t)}.`,{reason:"invalid_input"});break}case "object":{if(typeof t!="object"||t===null)throw new I(`Expected value of type ${n.type} for option \`${e}\`,but got ${d.describeType(t)}.`,{reason:"invalid_input"});break}}}static shareVariables(e,t,n){let r=t.getVariables();for(let i of e)r[i]!==void 0&&n.set(i,r[i]);}};var L=class{constructor(e){this.configuration=e;}async execute(e,t){let{action:n,validator:r}=this.configuration,i=await r.validate(e);if(!i.valid){let a=i.violations.map(s=>(s.path===""?s.message:`**${s.path}**: ${s.message}`).replace(/'/g,"`"));throw new I("Invalid action options.",{reason:"invalid_input",details:a})}await n.execute(i.data,t);}};var
|
|
1762
|
-
`?(this.line++,this.column=1):this.column++,i+=a,t>0||n>0)a==="\\"?(i+=this.chars[this.cursor],this.cursor++,this.index++,this.column++):t>0&&a==="'"?t--:n>0&&a==='"'&&n--;else if(r>0){if(a==="'"?t++:a==='"'?n++:a==="{"?r++:a==="}"&&r--,r===0)return this.createExpressionFragment(i,e)}else s&&(i+=this.chars[this.cursor],r++,this.cursor++,this.index++,this.column++);}if(t>0||n>0)throw new d("Unbalanced quotes in template string.",{details:[`Location: line ${e.line}, column ${e.column}`]});if(r>0)throw new d("Unbalanced braces in template string.",{details:[`Location: line ${e.line}, column ${e.column}`]});return this.createLiteralFragment(i,e)}createLiteralFragment(e,t){return {type:"literal",source:e,location:{start:t,end:this.position}}}createExpressionFragment(e,t){return {type:"expression",source:e,expression:e.slice(2,-1).trim(),location:{start:t,end:this.position}}}};var
|
|
1772
|
+
${s}`,{reason:"invalid_input"})}this.resolving.push(r.toString());let a=new Rt({input:t.input,output:t.output,baseUrl:r});o.shareVariables(i.references,t,a);try{await this.run(n,i.values,a);}finally{this.resolving.pop();}o.shareVariables(i.references,a,t);}async getInputValues(e,t={}){let n={},r=[];for(let[i,a]of Object.entries(e.options??{})){let s=t[i];if(s===void 0&&a.required===true)throw new I(`Missing required option \`${i}\`.`,{reason:"invalid_input"});let p=await(s??a.resolveDefault?.(this.config.variables));p!==void 0&&(a.type==="reference"?(o.checkOptionValue(i,p,{...a,type:"string"}),r.push(p)):o.checkOptionValue(i,p,a),n[i]=p);}return {values:n,references:r}}async run(e,t,n){let{runner:r,variables:i}=this.config,{output:a}=n;for(let{resolve:s}of e.actions){let p=a.notify("Resolving options"),c;try{c=await s(Nt.merge(i,{options:t,get this(){return n.getVariables()}}));}catch(l){throw I.fromCause(l,{message:"Unable to resolve action definition."})}finally{p.stop();}await r.execute({actions:[c]},n);}}async loadTemplate(e,t){let n=this.config.templateProvider,r=Tt(e,t);try{return await n.get(r)}catch(i){throw i instanceof $e?new d(`No template found at \`${r}\`.`,{cause:i,reason:"invalid_input",suggestions:["Check if the template path or URL is correct and try again."]}):i}}static checkOptionValue(e,t,n){switch(n.type){case "number":case "string":case "boolean":{if(typeof t!==n.type)throw new I(`Expected value of type ${n.type} for option \`${e}\`, but got ${d.describeType(t)}.`,{reason:"invalid_input"});if(n.type==="string"&&n.options!==void 0&&!n.options.includes(t))throw new I(`Invalid value for option \`${e}\`.`,{reason:"invalid_input",details:[`Allowed values: \`${n.options.join("`, `")}\`.`]});break}case "array":{if(!Array.isArray(t))throw new I(`Expected value of type ${n.type} for option \`${e}\`,but got ${d.describeType(t)}.`,{reason:"invalid_input"});break}case "object":{if(typeof t!="object"||t===null)throw new I(`Expected value of type ${n.type} for option \`${e}\`,but got ${d.describeType(t)}.`,{reason:"invalid_input"});break}}}static shareVariables(e,t,n){let r=t.getVariables();for(let i of e)r[i]!==void 0&&n.set(i,r[i]);}};var L=class{constructor(e){this.configuration=e;}async execute(e,t){let{action:n,validator:r}=this.configuration,i=await r.validate(e);if(!i.valid){let a=i.violations.map(s=>(s.path===""?s.message:`**${s.path}**: ${s.message}`).replace(/'/g,"`"));throw new I("Invalid action options.",{reason:"invalid_input",details:a})}await n.execute(i.data,t);}};var hn;(n=>{let o=Symbol("source");function e(r){return r[o]??null}n.get=e;function t(r,i){r[o]=i;}n.set=t;})(hn||={});var di=class o{constructor(e,t){this.cursor=0;this.chars=[...e],this.index=t.index,this.line=t.line,this.column=t.column;}static parse(e,t){return [...o.from(e,t)]}static from(e,t){return new o(o.getExpression(e),t??(e instanceof JsonPrimitiveNode?e.location.start:{index:0,line:1,column:1}))}static getExpression(e){return typeof e=="string"?e:e instanceof JsonPrimitiveNode?e.value:e.token.value}get position(){return {index:this.index,line:this.line,column:this.column}}done(){return this.cursor>=this.chars.length}[Symbol.iterator](){return this}next(){return {done:this.done(),value:this.consume()}}consume(){if(this.done())return this.createLiteralFragment("",this.position);let e=this.position,t=0,n=0,r=0,i="";for(;this.cursor<this.chars.length;){let a=this.chars[this.cursor],s=a==="$"&&this.chars[this.cursor+1]==="{";if(!(r+t+n>0)&&s&&i.length>0)return this.createLiteralFragment(i,e);if(this.cursor++,this.index++,a===`
|
|
1773
|
+
`?(this.line++,this.column=1):this.column++,i+=a,t>0||n>0)a==="\\"?(i+=this.chars[this.cursor],this.cursor++,this.index++,this.column++):t>0&&a==="'"?t--:n>0&&a==='"'&&n--;else if(r>0){if(a==="'"?t++:a==='"'?n++:a==="{"?r++:a==="}"&&r--,r===0)return this.createExpressionFragment(i,e)}else s&&(i+=this.chars[this.cursor],r++,this.cursor++,this.index++,this.column++);}if(t>0||n>0)throw new d("Unbalanced quotes in template string.",{details:[`Location: line ${e.line}, column ${e.column}`]});if(r>0)throw new d("Unbalanced braces in template string.",{details:[`Location: line ${e.line}, column ${e.column}`]});return this.createLiteralFragment(i,e)}createLiteralFragment(e,t){return {type:"literal",source:e,location:{start:t,end:this.position}}}createExpressionFragment(e,t){return {type:"expression",source:e,expression:e.slice(2,-1).trim(),location:{start:t,end:this.position}}}};var re=class o extends Promise{#t;#n;#e;constructor(e,t=false){super(()=>{}),this.#t=e,this.#n=t;}static from(e){return new o(e)}static transient(e){return new o(e,true)}get promise(){if(this.#e!==void 0)return this.#e;let e=new Promise(t=>{t(this.#t());});return this.#n||(this.#e=e),e}then(e,t){return this.promise.then(e,t)}catch(e){return this.promise.catch(e)}finally(e){return this.promise.finally(e)}};var we=class o extends W{constructor(e,{violations:t,...n}){super(e,n),this.violations=t,Object.setPrototypeOf(this,o.prototype);}},gi=class o{constructor({evaluator:e,validator:t,templateProvider:n,fileProvider:r}){this.loading=[];this.evaluator=e,this.validator=t,this.templateProvider=n,this.fileProvider=r;}async get(e){let{url:t,value:n}=await this.templateProvider.get(e),r;try{r=o.cleanJson(JsonParser$1.parse(n,JsonObjectNode$1));}catch(f){throw new we("Failed to parse the JSON template.",{reason:"invalid_input",url:t,cause:f,violations:[{path:"",message:d.formatMessage(f)}]})}let i=r.toJSON(),a=await this.validator.validate(i);if(!a.valid){let f=a.violations.map(b=>` \u2022 **${b.path}**: ${b.message}`).join(`
|
|
1763
1774
|
|
|
1764
|
-
`);throw new
|
|
1775
|
+
`);throw new we(`The template contains errors:
|
|
1765
1776
|
|
|
1766
|
-
${f}`,{reason:"invalid_input",url:t,violations:a.violations})}let{options:s,actions:p,...c}=a.data,l=r.get("actions",JsonArrayNode),m=this.parseOptions(r,s,t);return {url:t,value:{...c,...m!==void 0?{options:m}:{},actions:l.elements.map(f=>({resolve:b=>this.resolve(f,b,t)}))}}}parseOptions(e,t,n){if(t===void 0)return;let r=e.get("options",JsonObjectNode);return Object.fromEntries(Object.entries(t).map(([i,a])=>{if(a.default===void 0)return [i,a];let s=r.get(i,JsonObjectNode).get("default");return [i,{...a,resolveDefault:p=>this.resolve(s,p,n)}]}))}resolve(e,t,n,r=""){return e instanceof JsonArrayNode?e.elements.map((i,a)=>this.resolve(i,t,n,`${r}[${a}]`)):e instanceof JsonObjectNode?
|
|
1767
|
-
`);throw new
|
|
1777
|
+
${f}`,{reason:"invalid_input",url:t,violations:a.violations})}let{options:s,actions:p,...c}=a.data,l=r.get("actions",JsonArrayNode$1),m=this.parseOptions(r,s,t);return {url:t,value:{...c,...m!==void 0?{options:m}:{},actions:l.elements.map(f=>({resolve:b=>this.resolve(f,b,t)}))}}}parseOptions(e,t,n){if(t===void 0)return;let r=e.get("options",JsonObjectNode$1);return Object.fromEntries(Object.entries(t).map(([i,a])=>{if(a.default===void 0)return [i,a];let s=r.get(i,JsonObjectNode$1).get("default");return [i,{...a,resolveDefault:p=>this.resolve(s,p,n)}]}))}resolve(e,t,n,r=""){return e instanceof JsonArrayNode$1?e.elements.map((i,a)=>this.resolve(i,t,n,`${r}[${a}]`)):e instanceof JsonObjectNode$1?re.transient(async()=>{let i=Object.fromEntries(await Promise.all(e.properties.map(async a=>{let s=await this.interpolate(a.key,t,n,r);if(typeof s!="string"&&typeof s!="number"){let c=a.key.location.start;throw new we("Unexpected object key type.",{url:n,reason:"invalid_input",violations:[{path:r,message:`Expected object key to resolve to string or number at line ${c.line}, column ${c.column} but got ${d.describeType(s)}.`}]})}let p=r===""?`${s}`:`${r}.${s}`;return [s,re.transient(()=>this.resolve(a.value,t,n,p))]})));return hn.set(i,{url:n,start:e.location.start,end:e.location.end}),i}):e instanceof JsonPrimitiveNode&&typeof e.value=="string"?re.transient(()=>this.interpolate(e,t,n,r)):e.toJSON()}interpolate(e,t,n,r){let i=di.parse(e);if(i.length===1){let a=i[0];return a.type==="literal"?a.source:this.evaluate(o.createExpressionNode(a),t,n,r)}return Promise.all(i.map(async a=>{if(a.type==="literal")return a.source;let s=o.createExpressionNode(a),p=await this.evaluate(s,t,n,r);if(p!==null&&!["string","number","boolean"].includes(typeof p)){let c=e.location.start;throw new we("Unexpected expression result.",{reason:"invalid_input",url:n,violations:[{path:r,message:`Expected expression \`${a.expression}\` to resolve to null, string, number, or boolean value at line ${c.line}, column ${c.column}, but got ${d.describeType(p)}.`}]})}return `${p??""}`})).then(a=>a.join(""))}async evaluate(e,t,n,r){let i=(e instanceof JsonIdentifierNode?e.token.value:e.value).trim();try{return await this.evaluator.evaluate(i,{variables:t,functions:{import:(a,s)=>{if(typeof a!="string"){let p=e.location.start;throw new $("Invalid argument for function `import`.",{reason:"invalid_input",details:[`The \`url\` argument of the \`import\` function must be a string, but got ${d.describeType(a)} at line ${p.line}, column ${p.column}.`]})}if(s!==void 0&&(typeof s!="object"||s===null||Array.isArray(s))){let p=e.location.start;throw new $("Invalid argument for function `import`.",{reason:"invalid_input",details:[`The \`properties\` argument of the \`import\` function must be an object, but got ${d.describeType(a)} at line ${p.line}, column ${p.column}.`]})}return this.import(Tt(a,n),s===void 0?t:Nt.merge(t,{this:Promise.resolve(t.this).then(p=>typeof p=="object"&&p!==null&&!Array.isArray(p)?Nt.merge(p,s):s)}),n,r)}}})}catch(a){let s=e.location.start;throw new we("Failed to evaluate expression.",{reason:"invalid_input",url:n,cause:a,violations:[{path:r,message:`Evaluation of \`${i}\` at line ${s.line}, column ${s.column} failed because ${d.formatCause(a)}`}]})}}async import(e,t,n,r){if(e.protocol==="file:"&&n.protocol!=="file:")throw new we("Unsafe import URL.",{reason:"precondition",url:e,violations:[{path:r,message:"File URL is not allowed from remote sources for security reasons."}]});if(this.loading.includes(e.toString())){let p=[...this.loading,e.href].map((c,l)=>` ${l+1}. ${c}`).join(`
|
|
1778
|
+
`);throw new we(`Circular dependency detected while loading templates:
|
|
1768
1779
|
|
|
1769
|
-
${p}`,{reason:"invalid_input",url:e,violations:[{path:r,message:"Imported template creates a circular dependency."}]})}let{url:i,value:a}=await this.fileProvider.get(e),s;try{s=o.cleanJson(JsonParser.parse(a));}catch(p){throw new ve("Failed to parse referenced JSON.",{reason:"invalid_input",cause:p,url:i,violations:[{path:r,message:d.formatMessage(p)}]})}this.loading.push(i.toString());try{return this.resolve(s,t,i,r)}finally{this.loading.pop();}}static createExpressionNode(e){return new JsonPrimitiveNode({value:e.expression,location:e.location,token:new JsonTokenNode({type:JsonTokenType.STRING,value:e.source,location:e.location})})}static cleanJson(e){if(e instanceof JsonPrimitiveNode)return e;if(e instanceof JsonArrayNode){for(let t of e.elements)this.cleanJson(t);return e}if(e instanceof JsonObjectNode)for(let t of e.properties){let n=t.key.toJSON();n==="$schema"?e.delete(n):this.cleanJson(t.value);}return e}};var Ka=Symbol("any-property"),cc=Symbol("any-index"),In=Symbol("passthrough"),zt=Symbol("resolve"),v=class o extends Q{async validate(e){let t=this.findPassthroughPaths(this.schema),n;try{n=await this.resolveOptions(e,t);}catch(r){if(r instanceof ve)return {valid:false,violations:r.violations};throw r}return super.validate(n).then(r=>(r.valid&&o.restoreSymbols(n,r.data),r))}async resolveOptions(e,t,n=[]){if(typeof e!="object"||e===null||o.isPassthroughPath(n,t))return e;if(e instanceof Promise)return this.resolveOptions(await e,t,n);if(Array.isArray(e)){let r=new Array(e.length),i=new Array(e.length);for(let[a,s]of e.entries()){let p=[...n,a];o.isPassthroughPath(p,t)?i[a]=s:r[a]=this.resolveOptions(await s,t,p);}for(let[a,s]of (await Promise.all(r)).entries())s!==void 0&&(i[a]=s);return i}return {...e,...Object.fromEntries(await Promise.all(Object.entries(e).map(async([r,i])=>{let a=[...n,r];return o.isPassthroughPath(a,t)?[r,i]:[r,await this.resolveOptions(await i,t,a)]})))}}static isPassthroughPath(e,t){for(let n of t)if(n.length===e.length+1)for(let[r,i]of n.entries()){let a=typeof e[r]=="number"?cc:Ka;if(r<e.length?i!==e[r]&&i!==a:i!==zt&&i!==In)break;if(r===n.length-1)return i===In}return false}findPassthroughPaths(e,t=[]){if(e instanceof ZodPromise)return [[...t,In]];if(e instanceof ZodOptional)return this.findPassthroughPaths(e.unwrap(),t);if(e instanceof ZodTuple)return [[...t,zt],...e.items.flatMap((n,r)=>this.findPassthroughPaths(n,[...t,r]))];if(e instanceof ZodArray)return [[...t,zt],...this.findPassthroughPaths(e.element,[...t,cc])];if(e instanceof ZodRecord)return [[...t,zt],...this.findPassthroughPaths(e.valueSchema,[...t,Ka])];if(e instanceof ZodObject){let n=[[...t,zt],...Object.entries(e.shape).flatMap(([r,i])=>this.findPassthroughPaths(i,[...t,r]))];return e._def.unknownKeys==="passthrough"&&n.push([...t,Ka,In]),n}if(e instanceof ZodEffects){let n=e.innerType();return n instanceof ZodAny?[[...t,In]]:this.findPassthroughPaths(n,t)}return e instanceof ZodPipeline?this.findPassthroughPaths(e._def.out,t):e instanceof ZodUnion||e instanceof ZodDiscriminatedUnion?e.options.flatMap(n=>this.findPassthroughPaths(n,t)):[[...t,zt]]}static restoreSymbols(e,t){if(Array.isArray(e)&&Array.isArray(t)){for(let[n,r]of e.entries())n<t.length&&o.restoreSymbols(r,t[n]);return}if(!(!pc(e)||!pc(t))){for(let n of Object.getOwnPropertySymbols(e))Object.assign(t,{[n]:e[n]});for(let[n,r]of Object.entries(e))n in t&&o.restoreSymbols(r,t[n]);}}};var Pu=z.strictObject({action:z.instanceof(Promise),else:z.instanceof(Promise).optional(),finally:z.instanceof(Promise).optional(),help:z.strictObject({message:z.string().min(1).optional(),links:z.array(z.strictObject({url:z.string().url(),label:z.string().min(1)})).optional(),suggestions:z.array(z.string().min(1)).optional()}).optional()}),yi=class extends v{constructor(){super(Pu);}};var Cu=z.strictObject({name:z.string().min(1),version:z.string().min(1).optional(),optional:z.boolean().optional()}),ku=z.strictObject({dependencies:z.array(Cu),help:z.strictObject({message:z.string().min(1).optional(),links:z.array(z.strictObject({url:z.string().url(),label:z.string().min(1)})).optional(),suggestions:z.array(z.string().min(1)).optional()}).optional(),result:z.record(z.string().min(1)).optional()}),hi=class extends v{constructor(){super(ku);}};var Au=z.strictObject({source:z.string().min(1),filter:z.string().min(1).optional(),destination:z.string().min(1),result:z.strictObject({destination:z.string().min(1).optional()}).optional()}),Si=class extends v{constructor(){super(Au);}};var Eu=z.strictObject({dependencies:z.array(z.string().min(1)).min(1),development:z.boolean().optional()}),Ii=class extends v{constructor(){super(Eu);}};var Ru=z.strictObject({pattern:z.string().min(1),caseSensitive:z.boolean().optional()}),lc=z.union([Ru,z.strictObject({type:z.enum(["and","or"]),matchers:z.array(z.lazy(()=>lc)).min(1)})]),Tu=z.strictObject({path:z.string().min(1),matcher:lc.optional(),limit:z.number().int().positive().optional(),depth:z.number().int().nonnegative().optional(),result:z.string().optional()}),xi=class extends v{constructor(){super(Tu);}};var Ou=z.strictObject({files:z.array(z.strictObject({path:z.string(),replacements:z.array(z.strictObject({pattern:z.string().refine(o=>{try{return new RegExp(o),!0}catch{return {message:"Invalid regular expression pattern"}}}),caseSensitive:z.boolean().optional(),value:z.union([z.string(),z.number()])})).min(1)})).min(1)}),vi=class extends v{constructor(){super(Ou);}};var Du=z.strictObject({slots:z.array(z.string().min(1)).min(1),example:z.boolean().optional()}),Pi=class extends v{constructor(){super(Du);}};var Mu=z.strictObject({components:z.array(z.string().min(1)).min(1)}),Ci=class extends v{constructor(){super(Mu);}};var Nu=z.strictObject({name:z.string().min(1),criteria:z.string().min(1)}),dt=z.strictObject({title:z.string().optional(),description:z.string().optional()}),$u=dt.extend({type:z.literal("boolean"),label:z.strictObject({true:z.string(),false:z.string()}).optional(),default:z.boolean().optional()}),zu=z.strictObject({label:z.string().optional(),description:z.string().optional(),default:z.boolean().optional(),position:z.number().optional()}),_u=dt.extend({type:z.literal("text"),minimumLength:z.number().optional(),maximumLength:z.number().optional(),format:z.string().optional(),pattern:z.string().optional(),choices:z.record(zu).optional()}),Lu=dt.extend({type:z.literal("number"),integer:z.boolean().optional(),minimum:z.number().optional(),maximum:z.number().optional()}),Fu=z.lazy(()=>z.strictObject({type:z.lazy(()=>fc),label:z.string().optional(),description:z.string().optional(),optional:z.boolean().optional(),private:z.boolean().optional(),position:z.number().optional()})),Qa=dt.extend({type:z.literal("structure"),attributes:z.record(z.string(),Fu)}),ju=dt.extend({type:z.literal("list"),items:z.lazy(()=>fc),itemLabel:z.string().optional(),minimumLength:z.number().optional(),maximumLength:z.number().optional()}),Wu=z.union([z.string(),z.number(),z.boolean(),z.null()]),Ja=z.lazy(()=>z.union([Wu,z.array(Ja),z.record(Ja)])),dc=dt.extend({type:z.literal("reference"),id:z.string(),properties:z.record(z.string(),Ja).optional()}),gc=dt.extend({type:z.literal("union"),types:z.record(z.string(),z.discriminatedUnion("type",[Qa,dc]))}),fc=z.discriminatedUnion("type",[$u,_u,Lu,Qa,ju,gc,dc]),Vu=z.discriminatedUnion("type",[Qa,gc]),Uu=z.strictObject({name:z.string().min(1),description:z.string().min(1).optional(),definition:Vu}),qu=z.union([z.strictObject({type:z.literal("static"),value:z.string()}),z.strictObject({type:z.literal("dynamic"),expression:z.string(),nullable:z.literal(false),default:z.string()}),z.strictObject({type:z.literal("dynamic"),expression:z.string(),nullable:z.literal(true),default:z.string().optional()})]),Hu=z.union([z.strictObject({type:z.literal("static"),value:z.number()}),z.strictObject({type:z.literal("dynamic"),nullable:z.literal(false),default:z.number(),expression:z.string()}),z.strictObject({type:z.literal("dynamic"),nullable:z.literal(true),default:z.number().optional(),expression:z.string()})]),Gu=z.union([z.strictObject({type:z.literal("static"),value:z.boolean()}),z.strictObject({type:z.literal("dynamic"),nullable:z.literal(false),default:z.boolean(),expression:z.string()}),z.strictObject({type:z.literal("dynamic"),nullable:z.literal(true),default:z.boolean().optional(),expression:z.string()})]),Ku=z.strictObject({type:z.literal("text"),value:qu}),Zu=z.strictObject({type:z.literal("number"),value:Hu}),Ju=z.strictObject({type:z.literal("boolean"),value:Gu}),yc=z.strictObject({type:z.literal("structure"),name:z.string().optional(),attributes:z.record(z.string(),z.lazy(()=>hc))}),Qu=z.strictObject({type:z.literal("list"),items:z.array(z.lazy(()=>hc))}),hc=z.discriminatedUnion("type",[Ku,Zu,Ju,yc,Qu]),Ba=z.record(z.string(),yc),Bu=z.strictObject({name:z.string().min(1),component:z.string().min(1),content:Ba}),Sc=z.record(z.string(),Ba),Yu=z.strictObject({audiences:z.array(z.string()),content:Sc}),bc=z.strictObject({default:Sc,segmented:z.array(Yu)}),Xu=z.strictObject({name:z.string(),content:bc,baseline:z.boolean().optional(),allocation:z.number().min(0).max(1)}),em=z.strictObject({name:z.string(),draft:z.boolean().optional(),audiences:z.array(z.string()),slots:z.array(z.string()),experiment:z.strictObject({name:z.string(),goalId:z.string().optional(),crossDevice:z.boolean().optional(),traffic:z.number().min(0).max(1),variants:z.array(Xu),content:Ba}).optional(),content:bc}),tm=z.record(z.string().min(1),z.string().min(1)),uc=z.record(z.number().nonnegative(),z.string().min(1)),mc=z.record(z.string().min(1),z.strictObject({id:z.string().min(1).optional(),version:z.string().min(1).optional()})),nm=z.strictObject({resources:z.strictObject({audiences:z.record(z.string().min(1),Nu).optional(),components:z.record(z.string().min(1),Uu).optional(),slots:z.record(z.string().min(1),Bu).optional(),experiences:z.array(em).optional()}),result:z.strictObject({audiences:tm.optional(),components:mc.optional(),slots:mc.optional(),experiences:uc.optional(),experiments:uc.optional()}).optional()}),ki=class extends v{constructor(){super(nm);}};var rm=z.union([z.string(),z.number(),z.boolean(),z.null()]),Ya=z.lazy(()=>z.union([rm,z.array(Ya),z.record(Ya)])),im=z.strictObject({template:z.string().min(1),options:z.record(z.string().min(1),Ya).optional()}),Ai=class extends v{constructor(){super(im);}};var Ei=class{constructor({formatter:e}){this.formatter=e;}async execute(e,t){let{output:n}=t,r=n.notify("Formatting code");try{await this.formatter.format(e.files);}catch(i){throw I.fromCause(i)}finally{r.stop();}}};var om=z.strictObject({files:z.array(z.string().min(1)).min(1)}),Ri=class extends v{constructor(){super(om);}};var Lt=class{constructor(e){this.discriminator=e.discriminator,this.mapping=e.mapping;}async get(){let e=await this.discriminator(),t=this.mapping[e];if(t===void 0)throw new U(`No value found for discriminator "${String(e)}".`,{reason:"not_supported"});return t instanceof Function?t():t.get()}};var Ti=class{constructor(e){this.runner=e;}execute(e,t){return e.condition?this.run(e.then,t):e.else!==void 0?this.run(e.else,t):Promise.resolve()}run(e,t){return this.runner.execute({actions:e},t)}};var am=z.strictObject({condition:z.boolean(),then:z.instanceof(Promise),else:z.instanceof(Promise).optional()}),Di=class extends v{constructor(){super(am);}};var Mi=class{execute(e,t){let n=t.output,r=e.semantic??"neutral";return e.title===void 0?n.log(e.message,r):n.announce({semantics:r,title:e.title,message:e.message}),Promise.resolve()}};var sm=z.strictObject({semantic:z.enum(["neutral","info","error","warning","success"]).optional(),title:z.string().optional(),message:z.string()}),$i=class extends v{constructor(){super(sm);}};var zi=class{execute(e){let{message:t,...n}=e;throw new I(t,{...n,reason:"precondition"})}};var pm=z.strictObject({title:z.string().min(1).optional(),message:z.string().min(1),links:z.array(z.strictObject({label:z.string().min(1),url:z.string().url()})).optional(),suggestions:z.array(z.string().min(1)).optional(),details:z.array(z.string().min(1)).optional()}),_i=class extends v{constructor(){super(pm);}};var Li=class{constructor({url:e,provider:t}){this.url=e,this.provider=t;}get(){return this.provider.get(this.url)}};var xn=class{constructor(e){this.data=e;}get(){return Promise.resolve(this.data)}};var Fi=class{constructor({packageManager:e,parsers:t,factory:n}){this.packageManager=e,this.parsers=t,this.factory=n;}async get(){let e=await this.packageManager.getScripts();for(let[t,n]of Object.entries(e))for(let r of this.parsers){let i=r.parse(n);if(i!==null)return this.factory.create({...i,command:await this.packageManager.getScriptCommand(t)})}throw new U("No server found.")}};var ji=class{parse(e){if(!e.includes("next dev"))return null;let t=e.match(/(?:-p|--port)\s*(\d+)/),n=e.match(/(?:-H|--hostname)\s*(\S+)/),r=t!==null?Number.parseInt(t[1],10):null,i=n!==null?n[1]:"localhost";return {protocol:e.includes("-https")?"https":"http",host:i,...r!==null?{port:r}:{},defaultPort:3e3}}};var Wi=class{parse(e){if(!e.includes("vite"))return null;let t=e.match(/--port\s*(\d+)/),n=e.match(/--host\s*(\S+)/),r=t!==null?Number.parseInt(t[1],10):null;return {protocol:"http",host:n!==null?n[1]:"localhost",...r!==null?{port:r}:{},defaultPort:5173}}};var Vi=class{parse(e){if(!e.includes("parcel"))return null;let t=e.match(/(?:-p|--port)\s*(\d+)/),n=e.match(/--host\s*(\S+)/),r=t!==null?Number.parseInt(t[1],10):null,i=n!==null?n[1]:"localhost";return {protocol:e.includes("--https")?"https":"http",host:i,...r!==null?{port:r}:{},defaultPort:1234}}};var Ui=class{parse(e){if(!e.includes("react-scripts start"))return null;let t=e.match(/PORT=(\d+)/),n=e.match(/HOST=(\S+)/),r=e.match(/HTTPS=(\S+)/),i=t!==null?Number.parseInt(t[1],10):null,a=n!==null?n[1]:"localhost";return {protocol:r!==null&&r[1]==="true"?"https":"http",host:a,...i!==null?{port:i}:{},defaultPort:5173}}};var qi=class{async execute(e,t){let{input:n}=t,r=n===void 0?this.getDefaultValue(e):await this.prompt(e,n);if(r===void 0)throw new I("Action requires user input.",{reason:"precondition",suggestions:["Retry in interactive mode"]});e.result!==void 0&&t.set(e.result,r);}getDefaultValue(e){switch(e.type){case "confirmation":return e.default;case "choice":return e.default;case "multi-choice":{let t=e.options.flatMap(n=>n.selected===true?[n.value]:[]);return t.length===0?void 0:t}case "text":return e.default;default:return}}prompt(e,t){switch(e.type){case "confirmation":return t.confirm(e);case "choice":return t.select(e);case "multi-choice":return t.selectMultiple(e);case "text":{let{required:n=false,...r}=e;return t.prompt({...r,validate:i=>n&&i===""?"This value is required.":true})}case "keypress":return t.wait(e)}}};var vn=z.strictObject({result:z.string().optional()}),cm=vn.extend({type:z.literal("confirmation"),message:z.string(),default:z.boolean().optional()}),es=z.string(),lm=z.preprocess(o=>typeof o=="string"?{value:o,label:o}:o,z.strictObject({value:es,label:z.string().min(1).optional(),disabled:z.boolean().optional()})).transform(o=>({...o,label:o.label??o.value.toString()})),um=vn.extend({type:z.literal("choice"),message:z.string(),options:z.array(lm),default:es.optional()}),mm=z.preprocess(o=>typeof o=="string"?{value:o,label:o}:o,z.strictObject({value:es,label:z.string().min(1).optional(),selected:z.boolean().optional(),disabled:z.boolean().optional()})).transform(o=>({...o,label:o.label??o.value.toString()})),dm=vn.extend({type:z.literal("multi-choice"),message:z.string(),min:z.number().optional(),max:z.number().optional(),options:z.array(mm)}),gm=vn.extend({type:z.literal("text"),message:z.string(),default:z.string().optional(),required:z.boolean().optional()}),fm=vn.extend({type:z.literal("keypress"),message:z.string(),key:z.union([z.literal("enter"),z.literal("space"),z.string().length(1)]).optional()}),ym=z.discriminatedUnion("type",[cm,um,dm,gm,fm]),Hi=class extends v{constructor(){super(ym);}};var Gi=class{constructor({serverProvider:e}){this.provider=e;}async execute(e,t){let{output:n}=t,r=n.notify("Checking server"),i;try{i=await this.startServer(r);}finally{r.stop();}e.result?.url!==void 0&&t.set(e.result.url,i.url.toString()),e.result?.owned!==void 0&&t.set(e.result.owned,i.owned);}async startServer(e){let t=await this.provider.get();if(t===null)throw new d("No server detected.");let n=await t.getStatus();return n.running?{url:n.url,owned:false}:(e.update("Starting server"),{url:await t.start(),owned:true})}};var hm=z.strictObject({result:z.strictObject({url:z.string().optional(),owned:z.string().optional()}).optional()}),Zi=class extends v{constructor(){super(hm);}};var Ji=class{constructor(e){this.actions=e;}async execute(e,t){for(let n of Array.isArray(e.actions)?e.actions:[e.actions])try{await this.run(n,t);}catch(r){throw I.fromCause(r,{tracing:[{name:n.name,source:Sn.get(n)??void 0}]})}}run({name:e,...t},n){let r=this.actions[e];if(r===void 0)throw new I(`Unsupported action \`${e}\`.`,{reason:"invalid_input"});return r.execute(t,n)}};var Ic=z.object({name:z.string().min(1)}).passthrough(),Sm=z.strictObject({actions:z.union([Ic,z.array(Ic)])}),Qi=class extends v{constructor(){super(Sm);}};var Bi=class{async execute(e,t){let{output:n}=t;await n.open(e.url);}};var bm=z.strictObject({url:z.string().url()}),Yi=class extends v{constructor(){super(bm);}};var Im=z.union([z.string(),z.number(),z.boolean(),z.null()]),ts=z.lazy(()=>z.union([Im,z.array(ts),z.record(ts)])),xm=z.strictObject({variables:z.record(z.string(),ts)}),Xi=class extends v{constructor(){super(xm);}};var eo=class{execute(e,t){for(let[n,r]of Object.entries(e.variables))t.set(n,r);return Promise.resolve()}};var to=class{constructor({serverProvider:e}){this.provider=e;}async execute(e,t){let{output:n}=t,r=n.notify("Stopping server"),i=await this.provider.get();if(i===null)throw new d("No server detected.");try{await i.stop();}finally{r.stop();}}};var wm=z.strictObject({}),no=class extends v{constructor(){super(wm);}};var Ft=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var ro=class{constructor(e){this.configuration=e;}async getStatus(){let e=await this.findAddress();return e===null?{running:false}:{running:true,url:e}}async start(){let{commandExecutor:e,command:t,workingDirectory:n,processObserver:r}=this.configuration;try{this.execution=e.run(t,{workingDirectory:n.get()});}catch(s){throw new Ft("Failed to start server.",{cause:s})}let i=()=>this.stop();if(this.execution.onExit(()=>{this.execution=void 0,r.off("exit",i);}),!this.execution.running)throw new Ft("Failed to start server.");r.on("exit",i);let a=await this.waitStart();if(a===null)throw new Ft("Server is unreachable.");return a}async stop(){await this?.execution?.kill("SIGINT"),this.execution=void 0;}async waitStart(){let{startupCheckDelay:e,startupTimeout:t}=this.configuration,n=new AbortController;setTimeout(()=>n.abort(),t).unref();let i=()=>new Promise(a=>{setTimeout(a,e);});do{let a=await this.findAddress(n);if(a!==null)return a;await i();}while(!n.signal.aborted);return null}async findAddress(e){let{lookupTimeout:t,lookupMaxPorts:n,server:{protocol:r,host:i,port:a,defaultPort:s}}=this.configuration,p=a??s,c=a??s+n-1,l=new AbortController;e!==void 0&&e.signal.addEventListener("abort",()=>l.abort()),setTimeout(()=>l.abort(),t).unref();let f=new URL(`${r}://${i}`);for(let b=p;b<=c;b++){try{return f.port=b.toString(),await fetch(f,{method:"HEAD",signal:l.signal}),f}catch{}if(l.signal.aborted)break}return null}};var io=class{constructor(e){this.configuration=e;}create(e){return new ro({...this.configuration,command:e.command,server:{protocol:e.protocol,host:e.host,defaultPort:e.defaultPort,port:e.port}})}};var Pm=z.strictObject({path:z.string()}),oo=class extends v{constructor(){super(Pm);}};var ao=class{constructor({fileSystem:e,rootDirectory:t,currentDirectory:n}){this.fileSystem=e,this.rootDirectory=t,this.currentDirectory=n;}execute(e){let t=this.fileSystem.isAbsolutePath(e.path)?e.path:this.fileSystem.joinPaths(this.currentDirectory.get(),e.path);if(!this.fileSystem.isSubPath(this.rootDirectory,t))throw new I("Cannot change to a directory outside the current working directory.",{reason:"precondition",details:[`Working directory: ${this.rootDirectory}`,`Target directory: ${t}`]});return this.currentDirectory.setCurrentDirectory(t),Promise.resolve()}};var so=class{constructor(){this.lines=[[]];this.cursor={row:0,column:0};this.ansiSequence="";this.lines=[[]];}buffer(e){for(let t=0;t<e.length;t++){let n=e[t];if(n==="\\x1b"){this.ansiSequence="\\x1b";continue}if(this.ansiSequence.length>0){this.ansiSequence+=n,/[A-Za-z]/.test(n)&&(this.processAnsiSequence(this.ansiSequence),this.ansiSequence="");continue}if(n==="\r"){this.cursor.column=0;continue}if(n===`
|
|
1780
|
+
${p}`,{reason:"invalid_input",url:e,violations:[{path:r,message:"Imported template creates a circular dependency."}]})}let{url:i,value:a}=await this.fileProvider.get(e),s;try{s=o.cleanJson(JsonParser$1.parse(a));}catch(p){throw new we("Failed to parse referenced JSON.",{reason:"invalid_input",cause:p,url:i,violations:[{path:r,message:d.formatMessage(p)}]})}this.loading.push(i.toString());try{return this.resolve(s,t,i,r)}finally{this.loading.pop();}}static createExpressionNode(e){return new JsonPrimitiveNode({value:e.expression,location:e.location,token:new JsonTokenNode({type:JsonTokenType.STRING,value:e.source,location:e.location})})}static cleanJson(e){if(e instanceof JsonPrimitiveNode)return e;if(e instanceof JsonArrayNode$1){for(let t of e.elements)this.cleanJson(t);return e}if(e instanceof JsonObjectNode$1)for(let t of e.properties){let n=t.key.toJSON();n==="$schema"?e.delete(n):this.cleanJson(t.value);}return e}};var Ga=Symbol("any-property"),pc=Symbol("any-index"),bn=Symbol("passthrough"),zt=Symbol("resolve"),w=class o extends Q{async validate(e){let t=this.findPassthroughPaths(this.schema),n;try{n=await this.resolveOptions(e,t);}catch(r){if(r instanceof we)return {valid:false,violations:r.violations};throw r}return super.validate(n).then(r=>(r.valid&&o.restoreSymbols(n,r.data),r))}async resolveOptions(e,t,n=[]){if(typeof e!="object"||e===null||o.isPassthroughPath(n,t))return e;if(e instanceof Promise)return this.resolveOptions(await e,t,n);if(Array.isArray(e)){let r=new Array(e.length),i=new Array(e.length);for(let[a,s]of e.entries()){let p=[...n,a];o.isPassthroughPath(p,t)?i[a]=s:r[a]=this.resolveOptions(await s,t,p);}for(let[a,s]of (await Promise.all(r)).entries())s!==void 0&&(i[a]=s);return i}return {...e,...Object.fromEntries(await Promise.all(Object.entries(e).map(async([r,i])=>{let a=[...n,r];return o.isPassthroughPath(a,t)?[r,i]:[r,await this.resolveOptions(await i,t,a)]})))}}static isPassthroughPath(e,t){for(let n of t)if(n.length===e.length+1)for(let[r,i]of n.entries()){let a=typeof e[r]=="number"?pc:Ga;if(r<e.length?i!==e[r]&&i!==a:i!==zt&&i!==bn)break;if(r===n.length-1)return i===bn}return false}findPassthroughPaths(e,t=[]){if(e instanceof ZodPromise)return [[...t,bn]];if(e instanceof ZodOptional)return this.findPassthroughPaths(e.unwrap(),t);if(e instanceof ZodTuple)return [[...t,zt],...e.items.flatMap((n,r)=>this.findPassthroughPaths(n,[...t,r]))];if(e instanceof ZodArray)return [[...t,zt],...this.findPassthroughPaths(e.element,[...t,pc])];if(e instanceof ZodRecord)return [[...t,zt],...this.findPassthroughPaths(e.valueSchema,[...t,Ga])];if(e instanceof ZodObject){let n=[[...t,zt],...Object.entries(e.shape).flatMap(([r,i])=>this.findPassthroughPaths(i,[...t,r]))];return e._def.unknownKeys==="passthrough"&&n.push([...t,Ga,bn]),n}if(e instanceof ZodEffects){let n=e.innerType();return n instanceof ZodAny?[[...t,bn]]:this.findPassthroughPaths(n,t)}return e instanceof ZodPipeline?this.findPassthroughPaths(e._def.out,t):e instanceof ZodUnion||e instanceof ZodDiscriminatedUnion?e.options.flatMap(n=>this.findPassthroughPaths(n,t)):[[...t,zt]]}static restoreSymbols(e,t){if(Array.isArray(e)&&Array.isArray(t)){for(let[n,r]of e.entries())n<t.length&&o.restoreSymbols(r,t[n]);return}if(!(!sc(e)||!sc(t))){for(let n of Object.getOwnPropertySymbols(e))Object.assign(t,{[n]:e[n]});for(let[n,r]of Object.entries(e))n in t&&o.restoreSymbols(r,t[n]);}}};var wu=z.strictObject({action:z.instanceof(Promise),else:z.instanceof(Promise).optional(),finally:z.instanceof(Promise).optional(),help:z.strictObject({message:z.string().min(1).optional(),links:z.array(z.strictObject({url:z.string().url(),label:z.string().min(1)})).optional(),suggestions:z.array(z.string().min(1)).optional()}).optional()}),fi=class extends w{constructor(){super(wu);}};var Cu=z.strictObject({name:z.string().min(1),version:z.string().min(1).optional(),optional:z.boolean().optional()}),Pu=z.strictObject({dependencies:z.array(Cu),help:z.strictObject({message:z.string().min(1).optional(),links:z.array(z.strictObject({url:z.string().url(),label:z.string().min(1)})).optional(),suggestions:z.array(z.string().min(1)).optional()}).optional(),result:z.record(z.string().min(1)).optional()}),yi=class extends w{constructor(){super(Pu);}};var ku=z.strictObject({source:z.string().min(1),filter:z.string().min(1).optional(),destination:z.string().min(1),result:z.strictObject({destination:z.string().min(1).optional()}).optional()}),hi=class extends w{constructor(){super(ku);}};var Au=z.strictObject({dependencies:z.array(z.string().min(1)).min(1),development:z.boolean().optional()}),bi=class extends w{constructor(){super(Au);}};var Eu=z.strictObject({pattern:z.string().min(1),caseSensitive:z.boolean().optional()}),cc=z.union([Eu,z.strictObject({type:z.enum(["and","or"]),matchers:z.array(z.lazy(()=>cc)).min(1)})]),Ru=z.strictObject({path:z.string().min(1),matcher:cc.optional(),limit:z.number().int().positive().optional(),depth:z.number().int().nonnegative().optional(),result:z.string().optional()}),Ii=class extends w{constructor(){super(Ru);}};var Tu=z.strictObject({files:z.array(z.strictObject({path:z.string(),replacements:z.array(z.strictObject({pattern:z.string().refine(o=>{try{return new RegExp(o),!0}catch{return {message:"Invalid regular expression pattern"}}}),caseSensitive:z.boolean().optional(),value:z.union([z.string(),z.number()])})).min(1)})).min(1)}),xi=class extends w{constructor(){super(Tu);}};var Ou=z.strictObject({slots:z.array(z.string().min(1)).min(1),example:z.boolean().optional()}),wi=class extends w{constructor(){super(Ou);}};var Du=z.strictObject({components:z.array(z.string().min(1)).min(1)}),Ci=class extends w{constructor(){super(Du);}};var Mu=z.strictObject({name:z.string().min(1),criteria:z.string().min(1)}),dt=z.strictObject({title:z.string().optional(),description:z.string().optional()}),Nu=dt.extend({type:z.literal("boolean"),label:z.strictObject({true:z.string(),false:z.string()}).optional(),default:z.boolean().optional()}),$u=z.strictObject({label:z.string().optional(),description:z.string().optional(),default:z.boolean().optional(),position:z.number().optional()}),zu=dt.extend({type:z.literal("text"),minimumLength:z.number().optional(),maximumLength:z.number().optional(),format:z.string().optional(),pattern:z.string().optional(),choices:z.record($u).optional()}),_u=dt.extend({type:z.literal("number"),integer:z.boolean().optional(),minimum:z.number().optional(),maximum:z.number().optional()}),Lu=z.lazy(()=>z.strictObject({type:z.lazy(()=>gc),label:z.string().optional(),description:z.string().optional(),optional:z.boolean().optional(),private:z.boolean().optional(),position:z.number().optional()})),Ja=dt.extend({type:z.literal("structure"),attributes:z.record(z.string(),Lu)}),Fu=dt.extend({type:z.literal("list"),items:z.lazy(()=>gc),itemLabel:z.string().optional(),minimumLength:z.number().optional(),maximumLength:z.number().optional()}),ju=z.union([z.string(),z.number(),z.boolean(),z.null()]),Za=z.lazy(()=>z.union([ju,z.array(Za),z.record(Za)])),mc=dt.extend({type:z.literal("reference"),id:z.string(),properties:z.record(z.string(),Za).optional()}),dc=dt.extend({type:z.literal("union"),types:z.record(z.string(),z.discriminatedUnion("type",[Ja,mc]))}),gc=z.discriminatedUnion("type",[Nu,zu,_u,Ja,Fu,dc,mc]),Wu=z.discriminatedUnion("type",[Ja,dc]),Vu=z.strictObject({name:z.string().min(1),description:z.string().min(1).optional(),definition:Wu}),Uu=z.union([z.strictObject({type:z.literal("static"),value:z.string()}),z.strictObject({type:z.literal("dynamic"),expression:z.string(),nullable:z.literal(false),default:z.string()}),z.strictObject({type:z.literal("dynamic"),expression:z.string(),nullable:z.literal(true),default:z.string().optional()})]),qu=z.union([z.strictObject({type:z.literal("static"),value:z.number()}),z.strictObject({type:z.literal("dynamic"),nullable:z.literal(false),default:z.number(),expression:z.string()}),z.strictObject({type:z.literal("dynamic"),nullable:z.literal(true),default:z.number().optional(),expression:z.string()})]),Hu=z.union([z.strictObject({type:z.literal("static"),value:z.boolean()}),z.strictObject({type:z.literal("dynamic"),nullable:z.literal(false),default:z.boolean(),expression:z.string()}),z.strictObject({type:z.literal("dynamic"),nullable:z.literal(true),default:z.boolean().optional(),expression:z.string()})]),Gu=z.strictObject({type:z.literal("text"),value:Uu}),Ku=z.strictObject({type:z.literal("number"),value:qu}),Zu=z.strictObject({type:z.literal("boolean"),value:Hu}),fc=z.strictObject({type:z.literal("structure"),name:z.string().optional(),attributes:z.record(z.string(),z.lazy(()=>yc))}),Ju=z.strictObject({type:z.literal("list"),items:z.array(z.lazy(()=>yc))}),yc=z.discriminatedUnion("type",[Gu,Ku,Zu,fc,Ju]),Qa=z.record(z.string(),fc),Qu=z.strictObject({name:z.string().min(1),component:z.string().min(1),content:Qa}),hc=z.record(z.string(),Qa),Bu=z.strictObject({audiences:z.array(z.string()),content:hc}),Sc=z.strictObject({default:hc,segmented:z.array(Bu)}),Yu=z.strictObject({name:z.string(),content:Sc,baseline:z.boolean().optional(),allocation:z.number().min(0).max(1)}),Xu=z.strictObject({name:z.string(),draft:z.boolean().optional(),audiences:z.array(z.string()),slots:z.array(z.string()),experiment:z.strictObject({name:z.string(),goalId:z.string().optional(),crossDevice:z.boolean().optional(),traffic:z.number().min(0).max(1),variants:z.array(Yu),content:Qa}).optional(),content:Sc}),em=z.record(z.string().min(1),z.string().min(1)),lc=z.record(z.number().nonnegative(),z.string().min(1)),uc=z.record(z.string().min(1),z.strictObject({id:z.string().min(1).optional(),version:z.string().min(1).optional()})),tm=z.strictObject({resources:z.strictObject({audiences:z.record(z.string().min(1),Mu).optional(),components:z.record(z.string().min(1),Vu).optional(),slots:z.record(z.string().min(1),Qu).optional(),experiences:z.array(Xu).optional()}),result:z.strictObject({audiences:em.optional(),components:uc.optional(),slots:uc.optional(),experiences:lc.optional(),experiments:lc.optional()}).optional()}),Pi=class extends w{constructor(){super(tm);}};var nm=z.union([z.string(),z.number(),z.boolean(),z.null()]),Ba=z.lazy(()=>z.union([nm,z.array(Ba),z.record(Ba)])),rm=z.strictObject({template:z.string().min(1),options:z.record(z.string().min(1),Ba).optional()}),ki=class extends w{constructor(){super(rm);}};var Ai=class{constructor({formatter:e}){this.formatter=e;}async execute(e,t){let{output:n}=t,r=n.notify("Formatting code");try{await this.formatter.format(e.files);}catch(i){throw I.fromCause(i)}finally{r.stop();}}};var im=z.strictObject({files:z.array(z.string().min(1)).min(1)}),Ei=class extends w{constructor(){super(im);}};var Lt=class{constructor(e){this.discriminator=e.discriminator,this.mapping=e.mapping;}async get(){let e=await this.discriminator(),t=this.mapping[e];if(t===void 0)throw new U(`No value found for discriminator "${String(e)}".`,{reason:"not_supported"});return t instanceof Function?t():t.get()}};var Ri=class{constructor(e){this.runner=e;}execute(e,t){return e.condition?this.run(e.then,t):e.else!==void 0?this.run(e.else,t):Promise.resolve()}run(e,t){return this.runner.execute({actions:e},t)}};var om=z.strictObject({condition:z.boolean(),then:z.instanceof(Promise),else:z.instanceof(Promise).optional()}),Oi=class extends w{constructor(){super(om);}};var Di=class{execute(e,t){let n=t.output,r=e.semantic??"neutral";return e.title===void 0?n.log(e.message,r):n.announce({semantics:r,title:e.title,message:e.message}),Promise.resolve()}};var am=z.strictObject({semantic:z.enum(["neutral","info","error","warning","success"]).optional(),title:z.string().optional(),message:z.string()}),Ni=class extends w{constructor(){super(am);}};var $i=class{execute(e){let{message:t,...n}=e;throw new I(t,{...n,reason:"precondition"})}};var sm=z.strictObject({title:z.string().min(1).optional(),message:z.string().min(1),links:z.array(z.strictObject({label:z.string().min(1),url:z.string().url()})).optional(),suggestions:z.array(z.string().min(1)).optional(),details:z.array(z.string().min(1)).optional()}),zi=class extends w{constructor(){super(sm);}};var _i=class{constructor({url:e,provider:t}){this.url=e,this.provider=t;}get(){return this.provider.get(this.url)}};var In=class{constructor(e){this.data=e;}get(){return Promise.resolve(this.data)}};var Li=class{constructor({packageManager:e,parsers:t,factory:n}){this.packageManager=e,this.parsers=t,this.factory=n;}async get(){let e=await this.packageManager.getScripts();for(let[t,n]of Object.entries(e))for(let r of this.parsers){let i=r.parse(n);if(i!==null)return this.factory.create({...i,command:await this.packageManager.getScriptCommand(t)})}throw new U("No server found.")}};var Fi=class{parse(e){if(!e.includes("next dev"))return null;let t=e.match(/(?:-p|--port)\s*(\d+)/),n=e.match(/(?:-H|--hostname)\s*(\S+)/),r=t!==null?Number.parseInt(t[1],10):null,i=n!==null?n[1]:"localhost";return {protocol:e.includes("-https")?"https":"http",host:i,...r!==null?{port:r}:{},defaultPort:3e3}}};var ji=class{parse(e){if(!e.includes("vite"))return null;let t=e.match(/--port\s*(\d+)/),n=e.match(/--host\s*(\S+)/),r=t!==null?Number.parseInt(t[1],10):null;return {protocol:"http",host:n!==null?n[1]:"localhost",...r!==null?{port:r}:{},defaultPort:5173}}};var Wi=class{parse(e){if(!e.includes("parcel"))return null;let t=e.match(/(?:-p|--port)\s*(\d+)/),n=e.match(/--host\s*(\S+)/),r=t!==null?Number.parseInt(t[1],10):null,i=n!==null?n[1]:"localhost";return {protocol:e.includes("--https")?"https":"http",host:i,...r!==null?{port:r}:{},defaultPort:1234}}};var Vi=class{parse(e){if(!e.includes("react-scripts start"))return null;let t=e.match(/PORT=(\d+)/),n=e.match(/HOST=(\S+)/),r=e.match(/HTTPS=(\S+)/),i=t!==null?Number.parseInt(t[1],10):null,a=n!==null?n[1]:"localhost";return {protocol:r!==null&&r[1]==="true"?"https":"http",host:a,...i!==null?{port:i}:{},defaultPort:5173}}};var Ui=class{async execute(e,t){let{input:n}=t,r=n===void 0?this.getDefaultValue(e):await this.prompt(e,n);if(r===void 0)throw new I("Action requires user input.",{reason:"precondition",suggestions:["Retry in interactive mode"]});e.result!==void 0&&t.set(e.result,r);}getDefaultValue(e){switch(e.type){case "confirmation":return e.default;case "choice":return e.default;case "multi-choice":{let t=e.options.flatMap(n=>n.selected===true?[n.value]:[]);return t.length===0?void 0:t}case "text":return e.default;default:return}}prompt(e,t){switch(e.type){case "confirmation":return t.confirm(e);case "choice":return t.select(e);case "multi-choice":return t.selectMultiple(e);case "text":{let{required:n=false,...r}=e;return t.prompt({...r,validate:i=>n&&i===""?"This value is required.":true})}case "keypress":return t.wait(e)}}};var xn=z.strictObject({result:z.string().optional()}),pm=xn.extend({type:z.literal("confirmation"),message:z.string(),default:z.boolean().optional()}),Xa=z.string(),cm=z.preprocess(o=>typeof o=="string"?{value:o,label:o}:o,z.strictObject({value:Xa,label:z.string().min(1).optional(),disabled:z.boolean().optional()})).transform(o=>({...o,label:o.label??o.value.toString()})),lm=xn.extend({type:z.literal("choice"),message:z.string(),options:z.array(cm),default:Xa.optional()}),um=z.preprocess(o=>typeof o=="string"?{value:o,label:o}:o,z.strictObject({value:Xa,label:z.string().min(1).optional(),selected:z.boolean().optional(),disabled:z.boolean().optional()})).transform(o=>({...o,label:o.label??o.value.toString()})),mm=xn.extend({type:z.literal("multi-choice"),message:z.string(),min:z.number().optional(),max:z.number().optional(),options:z.array(um)}),dm=xn.extend({type:z.literal("text"),message:z.string(),default:z.string().optional(),required:z.boolean().optional()}),gm=xn.extend({type:z.literal("keypress"),message:z.string(),key:z.union([z.literal("enter"),z.literal("space"),z.string().length(1)]).optional()}),fm=z.discriminatedUnion("type",[pm,lm,mm,dm,gm]),qi=class extends w{constructor(){super(fm);}};var Hi=class{constructor({serverProvider:e}){this.provider=e;}async execute(e,t){let{output:n}=t,r=n.notify("Checking server"),i;try{i=await this.startServer(r);}finally{r.stop();}e.result?.url!==void 0&&t.set(e.result.url,i.url.toString()),e.result?.owned!==void 0&&t.set(e.result.owned,i.owned);}async startServer(e){let t=await this.provider.get();if(t===null)throw new d("No server detected.");let n=await t.getStatus();return n.running?{url:n.url,owned:false}:(e.update("Starting server"),{url:await t.start(),owned:true})}};var ym=z.strictObject({result:z.strictObject({url:z.string().optional(),owned:z.string().optional()}).optional()}),Ki=class extends w{constructor(){super(ym);}};var Zi=class{constructor(e){this.actions=e;}async execute(e,t){for(let n of Array.isArray(e.actions)?e.actions:[e.actions])try{await this.run(n,t);}catch(r){throw I.fromCause(r,{tracing:[{name:n.name,source:hn.get(n)??void 0}]})}}run({name:e,...t},n){let r=this.actions[e];if(r===void 0)throw new I(`Unsupported action \`${e}\`.`,{reason:"invalid_input"});return r.execute(t,n)}};var bc=z.object({name:z.string().min(1)}).passthrough(),hm=z.strictObject({actions:z.union([bc,z.array(bc)])}),Ji=class extends w{constructor(){super(hm);}};var Qi=class{async execute(e,t){let{output:n}=t;await n.open(e.url);}};var Sm=z.strictObject({url:z.string().url()}),Bi=class extends w{constructor(){super(Sm);}};var bm=z.union([z.string(),z.number(),z.boolean(),z.null()]),es=z.lazy(()=>z.union([bm,z.array(es),z.record(es)])),Im=z.strictObject({variables:z.record(z.string(),es)}),Yi=class extends w{constructor(){super(Im);}};var Xi=class{execute(e,t){for(let[n,r]of Object.entries(e.variables))t.set(n,r);return Promise.resolve()}};var eo=class{constructor({serverProvider:e}){this.provider=e;}async execute(e,t){let{output:n}=t,r=n.notify("Stopping server"),i=await this.provider.get();if(i===null)throw new d("No server detected.");try{await i.stop();}finally{r.stop();}}};var vm=z.strictObject({}),to=class extends w{constructor(){super(vm);}};var Ft=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var no=class{constructor(e){this.configuration=e;}async getStatus(){let e=await this.findAddress();return e===null?{running:false}:{running:true,url:e}}async start(){let{commandExecutor:e,command:t,workingDirectory:n,processObserver:r}=this.configuration;try{this.execution=e.run(t,{workingDirectory:n.get()});}catch(s){throw new Ft("Failed to start server.",{cause:s})}let i=()=>this.stop();if(this.execution.onExit(()=>{this.execution=void 0,r.off("exit",i);}),!this.execution.running)throw new Ft("Failed to start server.");r.on("exit",i);let a=await this.waitStart();if(a===null)throw new Ft("Server is unreachable.");return a}async stop(){await this?.execution?.kill("SIGINT"),this.execution=void 0;}async waitStart(){let{startupCheckDelay:e,startupTimeout:t}=this.configuration,n=new AbortController;setTimeout(()=>n.abort(),t).unref();let i=()=>new Promise(a=>{setTimeout(a,e);});do{let a=await this.findAddress(n);if(a!==null)return a;await i();}while(!n.signal.aborted);return null}async findAddress(e){let{lookupTimeout:t,lookupMaxPorts:n,server:{protocol:r,host:i,port:a,defaultPort:s}}=this.configuration,p=a??s,c=a??s+n-1,l=new AbortController;e!==void 0&&e.signal.addEventListener("abort",()=>l.abort()),setTimeout(()=>l.abort(),t).unref();let f=new URL(`${r}://${i}`);for(let b=p;b<=c;b++){try{return f.port=b.toString(),await fetch(f,{method:"HEAD",signal:l.signal}),f}catch{}if(l.signal.aborted)break}return null}};var ro=class{constructor(e){this.configuration=e;}create(e){return new no({...this.configuration,command:e.command,server:{protocol:e.protocol,host:e.host,defaultPort:e.defaultPort,port:e.port}})}};var wm=z.strictObject({path:z.string()}),io=class extends w{constructor(){super(wm);}};var oo=class{constructor({fileSystem:e,rootDirectory:t,currentDirectory:n}){this.fileSystem=e,this.rootDirectory=t,this.currentDirectory=n;}execute(e){let t=this.fileSystem.isAbsolutePath(e.path)?e.path:this.fileSystem.joinPaths(this.currentDirectory.get(),e.path);if(!this.fileSystem.isSubPath(this.rootDirectory,t))throw new I("Cannot change to a directory outside the current working directory.",{reason:"precondition",details:[`Working directory: ${this.rootDirectory}`,`Target directory: ${t}`]});return this.currentDirectory.setCurrentDirectory(t),Promise.resolve()}};var ao=class{constructor(){this.lines=[[]];this.cursor={row:0,column:0};this.ansiSequence="";this.lines=[[]];}buffer(e){for(let t=0;t<e.length;t++){let n=e[t];if(n==="\\x1b"){this.ansiSequence="\\x1b";continue}if(this.ansiSequence.length>0){this.ansiSequence+=n,/[A-Za-z]/.test(n)&&(this.processAnsiSequence(this.ansiSequence),this.ansiSequence="");continue}if(n==="\r"){this.cursor.column=0;continue}if(n===`
|
|
1770
1781
|
`){this.cursor.row++,this.cursor.column=0,this.resize(this.cursor.row);continue}for(this.resize(this.cursor.row);this.lines[this.cursor.row].length<this.cursor.column;)this.lines[this.cursor.row].push(" ");this.lines[this.cursor.row][this.cursor.column]=n,this.cursor.column++;}}processAnsiSequence(e){let t=e.match(/^\\x1b\[(\d*;?\d*)?([A-Za-z])$/);if(t===null)return;let[,n,r]=t,i=n?.split(";").map(a=>a===""?0:Number.parseInt(a,10))??[];switch(r){case "A":this.cursor.row=Math.max(0,this.cursor.row-(i[0]??1));break;case "B":this.cursor.row+=i[0]??1,this.resize(this.cursor.row);break;case "C":this.cursor.column+=i[0]??1;break;case "D":this.cursor.column=Math.max(0,this.cursor.column-(i[0]??1));break;case "K":i[0]===2?this.lines[this.cursor.row]=[]:i[0]===0&&(this.lines[this.cursor.row]=this.lines[this.cursor.row].slice(0,this.cursor.column));break;case "J":i[0]===2?(this.lines=[[]],this.cursor={row:0,column:0}):i[0]===0&&(this.lines=this.lines.slice(0,this.cursor.row+1),this.lines[this.cursor.row]=this.lines[this.cursor.row].slice(0,this.cursor.column));break;default:this.resize(this.cursor.row),this.lines[this.cursor.row].push(e);break}}resize(e){for(;this.lines.length<=e;)this.lines.push([]);}toString(){return this.lines.map(e=>e.join("")).join(`
|
|
1771
|
-
`).trim()}toRawString(){return Cm(this.toString())}};var
|
|
1772
|
-
`,"[down]":"\x1B[A","[up]":"\x1B[B","[left]":"\x1B[C","[right]":"\x1B[D","[backspace]":"\b"};}constructor(e){this.configuration=e;}async execute(e,t){let{input:n,output:r}=t,{sourceChecker:i}=this.configuration,s=await(await this.getPackageManager(e.runner)).getPackageCommand(e.package,e.arguments),p=[s.name.split(/[\\/]/).pop(),...s.arguments??[]].join(" ");if(!await i.test(t.baseUrl)){if(n===void 0)throw new I("Action requires explicit user confirmation.",{reason:"precondition",details:["Retry in interactive mode."]});if(r.warn(`This template will run the command \`${p}\``),!await n.confirm({message:"Continue?",default:true}))throw new I("Permission to run command denied.",{reason:"precondition",details:[`Command: ${p}`]})}let c=r.notify(`Running \`${p}\``);try{await this.executeCommand(s,e.interactions);}catch(l){throw I.fromCause(l)}finally{c.stop();}}getPackageManager(e){return e===void 0?this.configuration.packageManager:this.configuration.packageManagerProvider.get(e)}async executeCommand(e,t=[]){let{workingDirectory:n,commandExecutor:r,commandTimeout:i}=this.configuration,a=r.run(e,{workingDirectory:n.get(),timeout:i}),s=[...t]
|
|
1782
|
+
`).trim()}toRawString(){return Cm(this.toString())}};var so=class o{static{this.INPUT_MAP={"[space]":" ","[enter]":`
|
|
1783
|
+
`,"[down]":"\x1B[A","[up]":"\x1B[B","[left]":"\x1B[C","[right]":"\x1B[D","[backspace]":"\b"};}constructor(e){this.configuration=e;}async execute(e,t){let{input:n,output:r}=t,{sourceChecker:i}=this.configuration,s=await(await this.getPackageManager(e.runner)).getPackageCommand(e.package,e.arguments),p=[s.name.split(/[\\/]/).pop(),...s.arguments??[]].join(" ");if(!await i.test(t.baseUrl)){if(n===void 0)throw new I("Action requires explicit user confirmation.",{reason:"precondition",details:["Retry in interactive mode."]});if(r.warn(`This template will run the command \`${p}\``),!await n.confirm({message:"Continue?",default:true}))throw new I("Permission to run command denied.",{reason:"precondition",details:[`Command: ${p}`]})}let c=r.notify(`Running \`${p}\``);try{await this.executeCommand(s,e.interactions);}catch(l){throw I.fromCause(l)}finally{c.stop();}}getPackageManager(e){return e===void 0?this.configuration.packageManager:this.configuration.packageManagerProvider.get(e)}async executeCommand(e,t=[]){let{workingDirectory:n,commandExecutor:r,commandTimeout:i}=this.configuration,a=r.run(e,{workingDirectory:n.get(),timeout:i}),s=[...t];s.length===0&&await a.endWriting();let p=new ao;for await(let m of a.output){p.buffer(m);for(let[f,b]of s.entries()){let A=p.toRawString();if(b.pattern===true?new RegExp(b.when).test(A):A.includes(b.when)){b.always!==true&&s.splice(f,1);for(let y of b.then??[])await a.write(o.INPUT_MAP[y]??y);b.final===true&&(await a.endWriting(),s.length=0);break}}}let c=-1,l;try{c=await a.wait();}catch(m){l=m;}if(c!==0)throw new I(`Command failed with output:
|
|
1773
1784
|
|
|
1774
|
-
${p.toString()}`,{reason:"unexpected_result",cause:l})}};var km=z.strictObject({package:z.string(),arguments:z.array(z.string()).optional(),runner:z.string().optional(),interactions:z.array(z.object({when:z.string(),once:z.boolean().optional(),then:z.array(z.string())})).optional()}),co=class extends v{constructor(){super(km);}};var he=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var et=class{constructor(e){this.projectDirectory=e.projectDirectory,this.fileSystem=e.fileSystem,this.agent=e.agent,this.packageValidator=e.packageValidator;}isInstalled(){return this.agent.isInstalled()}isProject(){return this.fileSystem.exists(this.getProjectManifestPath())}addDependencies(e,t){return this.agent.addDependencies(e,t)}installDependencies(){return this.agent.installDependencies()}getPackageCommand(e,t=[]){return this.agent.getPackageCommand(e,t)}getScriptCommand(e,t=[]){return this.agent.getScriptCommand(e,t)}async hasDirectDependency(e,t){let n=await this.readManifest(this.getProjectManifestPath());if(n===null)return false;let r=n.dependencies?.[e]??n.devDependencies?.[e];return r===void 0?false:t===void 0||wc.satisfies(r,t)}async hasDependency(e,t){let n=await this.getDependency(e);return n===null?false:t===void 0||n.version!==null&&wc.satisfies(n.version,t)}async getDependency(e){let t=this.getPackageManifestPath(e),n=await this.readManifest(t);return n===null?null:{name:n.name,version:n.version??null,directory:this.fileSystem.getDirectoryName(t),metadata:n}}async getScripts(){let e=await this.readManifest(this.getProjectManifestPath());return e===null?{}:e.scripts??{}}async addScript(e,t){let n=this.getProjectManifestPath();if(!await this.fileSystem.exists(n))throw new he("Package file not found in the project.",{reason:"precondition",details:[`File: ${n}`]});let r=await this.fileSystem.readTextFile(n),i=JsonParser.parse(r,JsonObjectNode);if(i.has("scripts")){let a=i.get("scripts",JsonObjectNode),s=t;if(a.has(e)){let c=a.get(e).toJSON();if(typeof c=="string"&&c.includes(t))return;s=`${c} && ${t}`;}a.set(e,s);}else i.set("scripts",{[e]:t});await this.fileSystem.writeTextFile(n,i.toString(),{overwrite:true});}getPackageManifestPath(e){return this.fileSystem.joinPaths(this.projectDirectory.get(),"node_modules",e,"package.json")}getProjectManifestPath(){return this.fileSystem.joinPaths(this.projectDirectory.get(),"package.json")}async readManifest(e){if(!await this.fileSystem.exists(e))return null;let t;try{t=JSON.parse(await this.fileSystem.readTextFile(e));}catch{return null}let n=await this.packageValidator.validate(t);return n.valid?n.data:null}};var ze=class{constructor(e){this.projectDirectory=e.projectDirectory,this.commandRunner=e.commandExecutor,this.executableLocator=e.executableLocator;}isInstalled(){return this.installed===void 0&&(this.installed=this.getExecutable(this.getCommandName()).then(e=>e!==null)),this.installed}addDependencies(e,t=false){return this.run(this.createAddDependencyCommand(e,t))}installDependencies(){return this.run(this.createInstallDependenciesCommand())}getPackageCommand(e,t){return this.createPackageCommand(e,t)}getScriptCommand(e,t){return this.createScriptCommand(e,t)}async run(e,t={}){if(!await this.isInstalled())throw new he(`Package manager \`${this.getCommandName()}\` is not installed.`);if(await this.commandRunner.run(e,{...t,workingDirectory:this.projectDirectory.get()}).wait()!==0)throw new he(`Failed to run \`${e.name}\` command.`)}getExecutable(e){return this.executableLocator.locate(e)}};var lo=class extends ze{getCommandName(){return "npm"}createPackageCommand(e,t=[]){return Promise.resolve(this.getCommand("npx",["--yes",e,...t]))}createScriptCommand(e,t=[]){return Promise.resolve(this.getCommand(this.getCommandName(),["run",e,...t.length>0?["--",...t]:[]]))}createAddDependencyCommand(e,t){return this.getCommand(this.getCommandName(),["install",...t?["--save-dev"]:[],...e])}createInstallDependenciesCommand(){return this.getCommand(this.getCommandName(),["install"])}getCommand(e,t=[]){return {name:e,arguments:t}}};var uo=class extends ze{getCommandName(){return "yarn"}createPackageCommand(e,t=[]){return Promise.resolve(this.getCommand("npx",["--yes",e,...t]))}createScriptCommand(e,t=[]){return Promise.resolve(this.getCommand(this.getCommandName(),["run",e,...t]))}createAddDependencyCommand(e,t){return this.getCommand(this.getCommandName(),["add",...t?["--dev"]:[],...e])}createInstallDependenciesCommand(){return this.getCommand(this.getCommandName(),["install"])}getCommand(e,t=[]){return {name:e,arguments:t}}};var mo=class extends ze{getCommandName(){return "bun"}createPackageCommand(e,t=[]){return Promise.resolve(this.getCommand(["x",e,...t]))}createScriptCommand(e,t=[]){return Promise.resolve(this.getCommand(["run",e,...t]))}createAddDependencyCommand(e,t){return this.getCommand(["install",...t?["--dev"]:[],...e])}createInstallDependenciesCommand(){return this.getCommand(["install"])}getCommand(e=[]){return {name:this.getCommandName(),arguments:e}}};var go=class extends ze{getCommandName(){return "pnpm"}createPackageCommand(e,t=[]){return Promise.resolve(this.getCommand(["dlx",e,...t]))}createScriptCommand(e,t=[]){return Promise.resolve(this.getCommand(["run",e,...t]))}createAddDependencyCommand(e,t){return this.getCommand(["install",...t?["--save-dev"]:[],...e])}createInstallDependenciesCommand(){return this.getCommand(["install"])}getCommand(e=[]){return {name:this.getCommandName(),arguments:e}}};var jt=class{constructor(){this.open=true;this.queue=[];}async*[Symbol.asyncIterator](){let e=await this.next();for(;e.done!==true;)yield e.value,e=await this.next();}next(){return this.queue.length>0?Promise.resolve({done:false,value:this.queue.shift()}):this.open?new Promise(e=>{this.resolve=()=>{this.resolve=void 0,this.queue.length===0?e({done:true,value:void 0}):e({done:false,value:this.queue.shift()});};}):Promise.resolve({done:true,value:void 0})}push(e){this.queue.push(e),this.resolve?.();}close(){this.open=false,this.resolve?.();}};var _e=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var fo=class{constructor(e={}){this.configuration=e;}run(e,t={}){let n=spawn(e.name,e.arguments??[],{...this.configuration,cwd:t.workingDirectory??this.configuration.cwd}),r=new jt;n.onData(c=>r.push(c));let i,a=null,s=false;t.timeout!==void 0&&(i=setTimeout(()=>{a===null&&(n.kill("SIGINT"),s=true);},t.timeout),i.unref());let p=[];return n.onExit(c=>{r.close(),a=c.exitCode;for(let l of p)l(c.exitCode);}),{output:r,get running(){return a===null},read:async()=>{let c="";for await(let l of r)c+=l;return c},onExit:c=>(p.push(c),()=>{let l=p.indexOf(c);l!==-1&&p.splice(l,1);}),write:c=>(n.write(c),Promise.resolve()),wait:()=>s?Promise.reject(new _e("Command timed out.",{reason:"precondition"})):a!==null?Promise.resolve(a):new Promise(c=>{n.onExit(l=>{c(l.exitCode);});}),kill:c=>{if(i!==void 0&&clearTimeout(i),a!==null)return Promise.resolve();let l=new Promise(m=>{n.onExit(()=>{m();});});return n.kill(c),l}}}};var yo=class o{constructor({fileSystem:e,tsconfigValidator:t}){this.fileSystem=e,this.tsConfigValidator=t;}async load(e,t={}){let{fileNames:n=["tsconfig.json","jsconfig.json"]}=t,r=await this.fileSystem.getRealPath(e),i=await this.locateConfig(e,n,true);if(i===null)return null;let a=await this.resolveConfig({rootDirectory:r,configPath:i,fileNames:n,targetDirectories:(t.sourcePaths??[]).map(s=>this.fileSystem.isAbsolutePath(s)?s:this.fileSystem.joinPaths(r,s))});return a===null?null:{rootConfigPath:a.rootConfigPath,matchedConfigPath:a.matchedConfigPath,baseUrl:this.fileSystem.joinPaths(this.fileSystem.getDirectoryName(a.matchedConfigPath),a.compilerOptions?.baseUrl??"."),paths:a.compilerOptions?.paths??{}}}async locateConfig(e,t,n=false){for(let i of t){let a=this.fileSystem.joinPaths(e,i);if(await this.fileSystem.exists(a))return a}if(!n)return null;let r=this.fileSystem.getDirectoryName(e);return r===e?null:this.locateConfig(r,t)}async resolveConfig(e){let{configPath:t,fileNames:n,rootDirectory:r,targetDirectories:i}=e,a=await this.parseConfig(t);if(a?.extends!==void 0){let s=await this.locateParentConfig(r,this.fileSystem.getDirectoryName(t),a.extends);if(s!==null){let p=await this.resolveConfig({...e,configPath:s});p!==null&&(a=o.mergeConfig(a,p));}}if(a?.references!==void 0&&i.length>0){let{references:s,...p}=a;for(let c of a.references){let l=this.fileSystem.joinPaths(this.fileSystem.getDirectoryName(t),c.path),m=l.endsWith(".json")?l:await this.locateConfig(l,n);if(m===null)continue;let f=await this.resolveConfig({...e,configPath:m});if(f?.include!==void 0)for(let b of i){let A=this.fileSystem.joinPaths("./",this.fileSystem.getRelativePath(this.fileSystem.getDirectoryName(m),b));for(let w of f.include){let y=new Minimatch(w,{partial:true,magicalBraces:true});if(!y.hasMagic()&&!w.includes(".")&&(y=new Minimatch(`${w.replace(/\/?$/,"")}/**/*`,{partial:true})),y.match(A))return o.mergeConfig({...f,rootConfigPath:a.rootConfigPath},p)}}}}return a}async locateParentConfig(e,t,n){let r=n;r.endsWith(".json")||(r+=".json");let i=this.fileSystem.joinPaths(t,r);if(await this.fileSystem.exists(i))return i;let a=this.fileSystem.joinPaths(e,"node_modules",r);return await this.fileSystem.exists(a)?a:null}async parseConfig(e){let t;try{t=JsonParser.parse(await this.fileSystem.readTextFile(e)).toJSON();}catch{return null}let n=await this.tsConfigValidator.validate(t);return n.valid?{rootConfigPath:e,matchedConfigPath:e,...n.data}:null}static mergeConfig(e,t){return {...t,...e,compilerOptions:{...t.compilerOptions,...e.compilerOptions}}}};var ho=class{constructor({projectDirectory:e,fileSystem:t,tsConfigLoader:n}){this.projectDirectory=e,this.fileSystem=t,this.tsConfigLoader=n;}async getImportPath(e,t){let n=this.projectDirectory.get(),r=await this.tsConfigLoader.load(n,{sourcePaths:[this.fileSystem.joinPaths(n,t)]}),i=/\.m(?:js|ts)?$/.test(e)?e:e.replace(/\.(ts|js)x?$/,""),a=this.fileSystem.joinPaths(n,i);if(r!==null){let p=0,c=null;for(let[l,m]of Object.entries(r.paths)){let f=this.fileSystem.normalizeSeparators(l.replace(/\*$/,""));for(let b of m){let A=b.replace(/\*$/,""),w=this.fileSystem.joinPaths(r.baseUrl,A);if(a.startsWith(w)){let y=A.length;if(y>p){p=y;let M=a.slice(w.length).replace(/^[\\/]+/,"");c=f+M;}}}}if(c!==null)return Promise.resolve(c.replace(/\\+/g,"/"))}let s=this.fileSystem.getRelativePath(this.fileSystem.joinPaths(n,t),this.fileSystem.joinPaths(n,i));return Promise.resolve(s.replace(/\\/g,"/"))}};var Tm=z.object({extends:z.string().optional(),references:z.array(z.object({path:z.string()})).optional(),include:z.array(z.string()).optional(),compilerOptions:z.object({baseUrl:z.string().optional(),paths:z.record(z.array(z.string())).optional()}).optional()}),So=class extends Q{constructor(){super(Tm);}};var Pn=class{constructor(e){this.provider=e;}get manager(){return Promise.resolve(this.provider.get()).catch(e=>{throw e instanceof U?new he(e.message,e.help):e})}async isInstalled(){return (await this.manager).isInstalled()}async isProject(){return (await this.manager).isProject()}async hasDependency(e,t){return (await this.manager).hasDependency(e,t)}async hasDirectDependency(e,t){return (await this.manager).hasDirectDependency(e,t)}async getDependency(e){return (await this.manager).getDependency(e)}async addDependencies(e,t){return (await this.manager).addDependencies(e,t)}async installDependencies(){return (await this.manager).installDependencies()}async getScripts(){return (await this.manager).getScripts()}async addScript(e,t){return (await this.manager).addScript(e,t)}async getScriptCommand(e,t){return (await this.manager).getScriptCommand(e,t)}async getPackageCommand(e,t){return (await this.manager).getPackageCommand(e,t)}};var bo=class{constructor(e){this.map=e;}supports(e){return this.map.has(e)}get(e){let t=this.map.get(e);if(t===void 0)throw new U(`No value found for key \`${e}\`.`,{reason:"not_found"});return Promise.resolve(t)}};var Io=class{isInstalled(){return Promise.resolve(false)}addDependencies(){return this.fail()}installDependencies(){return this.fail()}getPackageCommand(){return this.fail()}getScriptCommand(){return this.fail()}fail(){throw new he("The package manager is not installed")}};var Wt=class{constructor(e,t){this.provider=e,this.fallback=t;}async get(...e){let t=await this.provider.get(...e)??null;return t!==null?t:this.fallback.get(...e)}};var Oe=class{constructor(e){this.callback=e;}get(...e){return this.callback(...e)}};var Vt=class{constructor(e){this.candidates=e.candidates;}async get(...e){for(let{condition:t,value:n}of this.candidates)try{if(await t.test(...e))return typeof n=="object"&&n!==null&&"get"in n?n.get(...e):n}catch{}return null}};var Cn=class{constructor({fileSystem:e,files:t}){this.fileSystem=e,this.files=t;}async test(){return (await Promise.all(this.files.map(t=>this.fileSystem.exists(t)))).some(t=>t)}};var kn=class{constructor({packageManager:e,dependencies:t}){this.packageManager=e,this.dependencies=t;}async test(){return (await Promise.all(this.dependencies.map(t=>this.packageManager.hasDirectDependency(t)))).some(t=>t)}};var xo=class{constructor({packageManager:e}){this.packageManager=e;}test(){return this.packageManager.isProject()}};var vo=class{constructor({currentDirectory:e}={}){this.currentDirectory=e;}run(e,t={}){let n=t.timeout!==void 0?AbortSignal.timeout(t.timeout):void 0,r=spawn$1(e.name,e.arguments,{stdio:["pipe","pipe","pipe"],cwd:t?.workingDirectory??this.currentDirectory?.get(),signal:n}),i=[];r.on("error",c=>{for(let l of i)l(n?.aborted===true?new _e("Command timed out.",{reason:"precondition",cause:c}):new _e("Failed to run command.",{cause:c}));});let a=new jt;r.stdout.on("data",c=>{a.push(c.toString());}),r.stderr.on("data",c=>{a.push(c.toString());});let s=null,p=[];return r.on("exit",c=>{a.close(),s=c??1;for(let l of p)l(s);}),{output:a,get running(){return s===null},onExit:c=>(p.push(c),()=>{let l=p.indexOf(c);l!==-1&&p.splice(l,1);}),write:c=>new Promise((l,m)=>{r.stdin.write(c,f=>{f===null?l():m(f);});}),read:async()=>{let c="";for await(let l of a)c+=l;return c},wait:()=>new Promise((c,l)=>{i.push(l),r.on("exit",m=>{c(m??1);});}),kill:c=>new Promise((l,m)=>{if(s!==null){l();return}r.stdout.destroy(),r.stderr.destroy(),r.stdin.destroy(),r.kill(c)?(l(),s=1):m(new _e("Failed to kill the subprocess."));})}}runSync(e,t={}){let n=t.timeout!==void 0?AbortSignal.timeout(t.timeout):void 0,r=spawnSync(e.name,e.arguments,{stdio:["ignore","pipe","pipe"],cwd:t?.workingDirectory??this.currentDirectory?.get(),signal:n});if(r.error!==void 0){let{error:s}=r;throw n?.aborted===true?new _e("Command timed out.",{reason:"precondition",cause:s}):new _e("Failed to run command.",{cause:s})}let i=r.stdout.toString(),a=r.stderr.toString();return i!==""&&a!==""&&(i=`${i}
|
|
1775
|
-
${a}`),{exitCode:r.status??1,output:i}}};var
|
|
1785
|
+
${p.toString()}`,{reason:"unexpected_result",cause:l})}};var Pm=z.strictObject({package:z.string(),arguments:z.array(z.string()).optional(),runner:z.string().optional(),interactions:z.array(z.object({when:z.string(),pattern:z.boolean().optional(),always:z.boolean().optional(),then:z.array(z.string()).min(1).optional(),final:z.boolean().optional()}).superRefine((o,e)=>{if(o.then===void 0&&o.final===void 0&&e.addIssue({code:z.ZodIssueCode.custom,message:"Either `then` or `final` must be defined"}),o.final===true&&o.always===true&&e.addIssue({code:z.ZodIssueCode.custom,path:["always"],message:"Final interactions must have `always` set to `false`"}),o.pattern===true)try{new RegExp(o.when);}catch{e.addIssue({code:z.ZodIssueCode.custom,path:["pattern"],message:"The `when` field must be a valid regular expression"});}})).min(1).optional().refine(o=>o===void 0||o.some(e=>e.final===true),{message:"At least one interaction must have `final` set to `true`"})}),po=class extends w{constructor(){super(Pm);}};var Se=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var Xe=class{constructor(e){this.projectDirectory=e.projectDirectory,this.fileSystem=e.fileSystem,this.agent=e.agent,this.packageValidator=e.packageValidator;}isInstalled(){return this.agent.isInstalled()}isProject(){return this.fileSystem.exists(this.getProjectManifestPath())}addDependencies(e,t){return this.agent.addDependencies(e,t)}installDependencies(){return this.agent.installDependencies()}getPackageCommand(e,t=[]){return this.agent.getPackageCommand(e,t)}getScriptCommand(e,t=[]){return this.agent.getScriptCommand(e,t)}async hasDirectDependency(e,t){let n=await this.readManifest(this.getProjectManifestPath());if(n===null)return false;let r=n.dependencies?.[e]??n.devDependencies?.[e];return r===void 0?false:t===void 0||vc.satisfies(r,t)}async hasDependency(e,t){let n=await this.getDependency(e);return n===null?false:t===void 0||n.version!==null&&vc.satisfies(n.version,t)}async getDependency(e){let t=this.getPackageManifestPath(e),n=await this.readManifest(t);return n===null?null:{name:n.name,version:n.version??null,directory:this.fileSystem.getDirectoryName(t),metadata:n}}async getScripts(){let e=await this.readManifest(this.getProjectManifestPath());return e===null?{}:e.scripts??{}}async addScript(e,t){let n=this.getProjectManifestPath();if(!await this.fileSystem.exists(n))throw new Se("Package file not found in the project.",{reason:"precondition",details:[`File: ${n}`]});let r=await this.fileSystem.readTextFile(n),i=JsonParser$1.parse(r,JsonObjectNode$1);if(i.has("scripts")){let a=i.get("scripts",JsonObjectNode$1),s=t;if(a.has(e)){let c=a.get(e).toJSON();if(typeof c=="string"&&c.includes(t))return;s=`${c} && ${t}`;}a.set(e,s);}else i.set("scripts",{[e]:t});await this.fileSystem.writeTextFile(n,i.toString(),{overwrite:true});}getPackageManifestPath(e){return this.fileSystem.joinPaths(this.projectDirectory.get(),"node_modules",e,"package.json")}getProjectManifestPath(){return this.fileSystem.joinPaths(this.projectDirectory.get(),"package.json")}async readManifest(e){if(!await this.fileSystem.exists(e))return null;let t;try{t=JSON.parse(await this.fileSystem.readTextFile(e));}catch{return null}let n=await this.packageValidator.validate(t);return n.valid?n.data:null}};var ze=class{constructor(e){this.projectDirectory=e.projectDirectory,this.commandRunner=e.commandExecutor,this.executableLocator=e.executableLocator;}isInstalled(){return this.installed===void 0&&(this.installed=this.getExecutable(this.getCommandName()).then(e=>e!==null)),this.installed}addDependencies(e,t=false){return this.run(this.createAddDependencyCommand(e,t))}installDependencies(){return this.run(this.createInstallDependenciesCommand())}getPackageCommand(e,t){return this.createPackageCommand(e,t)}getScriptCommand(e,t){return this.createScriptCommand(e,t)}async run(e,t={}){if(!await this.isInstalled())throw new Se(`Package manager \`${this.getCommandName()}\` is not installed.`);if(await this.commandRunner.run(e,{...t,workingDirectory:this.projectDirectory.get()}).wait()!==0)throw new Se(`Failed to run \`${e.name}\` command.`)}getExecutable(e){return this.executableLocator.locate(e)}};var co=class extends ze{getCommandName(){return "npm"}createPackageCommand(e,t=[]){return Promise.resolve(this.getCommand("npx",["--yes",e,...t]))}createScriptCommand(e,t=[]){return Promise.resolve(this.getCommand(this.getCommandName(),["run",e,...t.length>0?["--",...t]:[]]))}createAddDependencyCommand(e,t){return this.getCommand(this.getCommandName(),["install",...t?["--save-dev"]:[],...e])}createInstallDependenciesCommand(){return this.getCommand(this.getCommandName(),["install"])}getCommand(e,t=[]){return {name:e,arguments:t}}};var lo=class extends ze{getCommandName(){return "yarn"}createPackageCommand(e,t=[]){return Promise.resolve(this.getCommand("npx",["--yes",e,...t]))}createScriptCommand(e,t=[]){return Promise.resolve(this.getCommand(this.getCommandName(),["run",e,...t]))}createAddDependencyCommand(e,t){return this.getCommand(this.getCommandName(),["add",...t?["--dev"]:[],...e])}createInstallDependenciesCommand(){return this.getCommand(this.getCommandName(),["install"])}getCommand(e,t=[]){return {name:e,arguments:t}}};var uo=class extends ze{getCommandName(){return "bun"}createPackageCommand(e,t=[]){return Promise.resolve(this.getCommand(["x",e,...t]))}createScriptCommand(e,t=[]){return Promise.resolve(this.getCommand(["run",e,...t]))}createAddDependencyCommand(e,t){return this.getCommand(["install",...t?["--dev"]:[],...e])}createInstallDependenciesCommand(){return this.getCommand(["install"])}getCommand(e=[]){return {name:this.getCommandName(),arguments:e}}};var mo=class extends ze{getCommandName(){return "pnpm"}createPackageCommand(e,t=[]){return Promise.resolve(this.getCommand(["dlx",e,...t]))}createScriptCommand(e,t=[]){return Promise.resolve(this.getCommand(["run",e,...t]))}createAddDependencyCommand(e,t){return this.getCommand(["install",...t?["--save-dev"]:[],...e])}createInstallDependenciesCommand(){return this.getCommand(["install"])}getCommand(e=[]){return {name:this.getCommandName(),arguments:e}}};var go=class o{constructor({fileSystem:e,tsconfigValidator:t}){this.fileSystem=e,this.tsConfigValidator=t;}async load(e,t={}){let{fileNames:n=["tsconfig.json","jsconfig.json"]}=t,r=await this.fileSystem.getRealPath(e),i=await this.locateConfig(e,n,true);if(i===null)return null;let a=await this.resolveConfig({rootDirectory:r,configPath:i,fileNames:n,targetDirectories:(t.sourcePaths??[]).map(s=>this.fileSystem.isAbsolutePath(s)?s:this.fileSystem.joinPaths(r,s))});return a===null?null:{rootConfigPath:a.rootConfigPath,matchedConfigPath:a.matchedConfigPath,baseUrl:this.fileSystem.joinPaths(this.fileSystem.getDirectoryName(a.matchedConfigPath),a.compilerOptions?.baseUrl??"."),paths:a.compilerOptions?.paths??{}}}async locateConfig(e,t,n=false){for(let i of t){let a=this.fileSystem.joinPaths(e,i);if(await this.fileSystem.exists(a))return a}if(!n)return null;let r=this.fileSystem.getDirectoryName(e);return r===e?null:this.locateConfig(r,t)}async resolveConfig(e){let{configPath:t,fileNames:n,rootDirectory:r,targetDirectories:i}=e,a=await this.parseConfig(t);if(a?.extends!==void 0){let s=await this.locateParentConfig(r,this.fileSystem.getDirectoryName(t),a.extends);if(s!==null){let p=await this.resolveConfig({...e,configPath:s});p!==null&&(a=o.mergeConfig(a,p));}}if(a?.references!==void 0&&i.length>0){let{references:s,...p}=a;for(let c of a.references){let l=this.fileSystem.joinPaths(this.fileSystem.getDirectoryName(t),c.path),m=l.endsWith(".json")?l:await this.locateConfig(l,n);if(m===null)continue;let f=await this.resolveConfig({...e,configPath:m});if(f?.include!==void 0)for(let b of i){let A=this.fileSystem.joinPaths("./",this.fileSystem.getRelativePath(this.fileSystem.getDirectoryName(m),b));for(let v of f.include){let y=new Minimatch(v,{partial:true,magicalBraces:true});if(!y.hasMagic()&&!v.includes(".")&&(y=new Minimatch(`${v.replace(/\/?$/,"")}/**/*`,{partial:true})),y.match(A))return o.mergeConfig({...f,rootConfigPath:a.rootConfigPath},p)}}}}return a}async locateParentConfig(e,t,n){let r=n;r.endsWith(".json")||(r+=".json");let i=this.fileSystem.joinPaths(t,r);if(await this.fileSystem.exists(i))return i;let a=this.fileSystem.joinPaths(e,"node_modules",r);return await this.fileSystem.exists(a)?a:null}async parseConfig(e){let t;try{t=JsonParser$1.parse(await this.fileSystem.readTextFile(e)).toJSON();}catch{return null}let n=await this.tsConfigValidator.validate(t);return n.valid?{rootConfigPath:e,matchedConfigPath:e,...n.data}:null}static mergeConfig(e,t){return {...t,...e,compilerOptions:{...t.compilerOptions,...e.compilerOptions}}}};var fo=class{constructor({projectDirectory:e,fileSystem:t,tsConfigLoader:n}){this.projectDirectory=e,this.fileSystem=t,this.tsConfigLoader=n;}async getImportPath(e,t){let n=this.projectDirectory.get(),r=await this.tsConfigLoader.load(n,{sourcePaths:[this.fileSystem.joinPaths(n,t)]}),i=/\.m(?:js|ts)?$/.test(e)?e:e.replace(/\.(ts|js)x?$/,""),a=this.fileSystem.joinPaths(n,i);if(r!==null){let p=0,c=null;for(let[l,m]of Object.entries(r.paths)){let f=this.fileSystem.normalizeSeparators(l.replace(/\*$/,""));for(let b of m){let A=b.replace(/\*$/,""),v=this.fileSystem.joinPaths(r.baseUrl,A);if(a.startsWith(v)){let y=A.length;if(y>p){p=y;let M=a.slice(v.length).replace(/^[\\/]+/,"");c=f+M;}}}}if(c!==null)return Promise.resolve(c.replace(/\\+/g,"/"))}let s=this.fileSystem.getRelativePath(this.fileSystem.joinPaths(n,t),this.fileSystem.joinPaths(n,i));return Promise.resolve(s.replace(/\\/g,"/"))}};var Em=z.object({extends:z.string().optional(),references:z.array(z.object({path:z.string()})).optional(),include:z.array(z.string()).optional(),compilerOptions:z.object({baseUrl:z.string().optional(),paths:z.record(z.array(z.string())).optional()}).optional()}),yo=class extends Q{constructor(){super(Em);}};var wn=class{constructor(e){this.provider=e;}get manager(){return Promise.resolve(this.provider.get()).catch(e=>{throw e instanceof U?new Se(e.message,e.help):e})}async isInstalled(){return (await this.manager).isInstalled()}async isProject(){return (await this.manager).isProject()}async hasDependency(e,t){return (await this.manager).hasDependency(e,t)}async hasDirectDependency(e,t){return (await this.manager).hasDirectDependency(e,t)}async getDependency(e){return (await this.manager).getDependency(e)}async addDependencies(e,t){return (await this.manager).addDependencies(e,t)}async installDependencies(){return (await this.manager).installDependencies()}async getScripts(){return (await this.manager).getScripts()}async addScript(e,t){return (await this.manager).addScript(e,t)}async getScriptCommand(e,t){return (await this.manager).getScriptCommand(e,t)}async getPackageCommand(e,t){return (await this.manager).getPackageCommand(e,t)}};var ho=class{constructor(e){this.map=e;}supports(e){return this.map.has(e)}get(e){let t=this.map.get(e);if(t===void 0)throw new U(`No value found for key \`${e}\`.`,{reason:"not_found"});return Promise.resolve(t)}};var So=class{isInstalled(){return Promise.resolve(false)}addDependencies(){return this.fail()}installDependencies(){return this.fail()}getPackageCommand(){return this.fail()}getScriptCommand(){return this.fail()}fail(){throw new Se("The package manager is not installed")}};var jt=class{constructor(e,t){this.provider=e,this.fallback=t;}async get(...e){let t=await this.provider.get(...e)??null;return t!==null?t:this.fallback.get(...e)}};var Oe=class{constructor(e){this.callback=e;}get(...e){return this.callback(...e)}};var Wt=class{constructor(e){this.candidates=e.candidates;}async get(...e){for(let{condition:t,value:n}of this.candidates)try{if(await t.test(...e))return typeof n=="object"&&n!==null&&"get"in n?n.get(...e):n}catch{}return null}};var Cn=class{constructor({fileSystem:e,files:t}){this.fileSystem=e,this.files=t;}async test(){return (await Promise.all(this.files.map(t=>this.fileSystem.exists(t)))).some(t=>t)}};var Pn=class{constructor({packageManager:e,dependencies:t}){this.packageManager=e,this.dependencies=t;}async test(){return (await Promise.all(this.dependencies.map(t=>this.packageManager.hasDirectDependency(t)))).some(t=>t)}};var bo=class{constructor({packageManager:e}){this.packageManager=e;}test(){return this.packageManager.isProject()}};var et=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var Io=class{constructor(){this.open=true;this.queue=[];}async*[Symbol.asyncIterator](){let e=await this.next();for(;e.done!==true;)yield e.value,e=await this.next();}next(){return this.queue.length>0?Promise.resolve({done:false,value:this.queue.shift()}):this.open?new Promise(e=>{this.resolve=()=>{this.resolve=void 0,this.queue.length===0?e({done:true,value:void 0}):e({done:false,value:this.queue.shift()});};}):Promise.resolve({done:true,value:void 0})}push(e){this.queue.push(e),this.resolve?.();}close(){this.open=false,this.resolve?.();}};var xo=class{constructor({currentDirectory:e}={}){this.currentDirectory=e;}run(e,t={}){let n=t.timeout!==void 0?AbortSignal.timeout(t.timeout):void 0,r=spawn(e.name,e.arguments,{stdio:["pipe","pipe","pipe"],cwd:t?.workingDirectory??this.currentDirectory?.get(),signal:n}),i=[];r.on("error",c=>{for(let l of i)l(n?.aborted===true?new et("Command timed out.",{reason:"precondition",cause:c}):new et("Failed to run command.",{cause:c}));});let a=new Io;r.stdout.on("data",c=>{a.push(c.toString());}),r.stderr.on("data",c=>{a.push(c.toString());});let s=null,p=[];return r.on("exit",c=>{a.close(),s=c??1;for(let l of p)l(s);}),{output:a,get running(){return s===null},onExit:c=>(p.push(c),()=>{let l=p.indexOf(c);l!==-1&&p.splice(l,1);}),write:c=>new Promise((l,m)=>{r.stdin.write(c,f=>{f===null?l():m(f);});}),endWriting:()=>new Promise(c=>{if(s!==null){c();return}r.stdin.end(c);}),read:async()=>{let c="";for await(let l of a)c+=l;return c},wait:()=>new Promise((c,l)=>{if(s!==null){c(s);return}i.push(l),r.on("exit",m=>{c(m??1);});}),kill:c=>new Promise((l,m)=>{if(s!==null){l();return}r.stdout.destroy(),r.stderr.destroy(),r.stdin.destroy(),r.kill(c)?(l(),s=1):m(new et("Failed to kill the subprocess."));})}}runSync(e,t={}){let n=t.timeout!==void 0?AbortSignal.timeout(t.timeout):void 0,r=spawnSync(e.name,e.arguments,{stdio:["ignore","pipe","pipe"],cwd:t?.workingDirectory??this.currentDirectory?.get(),signal:n});if(r.error!==void 0){let{error:s}=r;throw n?.aborted===true?new et("Command timed out.",{reason:"precondition",cause:s}):new et("Failed to run command.",{cause:s})}let i=r.stdout.toString(),a=r.stderr.toString();return i!==""&&a!==""&&(i=`${i}
|
|
1786
|
+
${a}`),{exitCode:r.status??1,output:i}}};var vo=class{constructor(e){this.provider=e;}async format(e){return (await this.formatter).format(e)}get formatter(){return Promise.resolve(this.provider.get()).catch(e=>{throw e instanceof U?new Se(e.message,e.help):e})}};var wo=class{constructor(e){this.provider=e;}get sdk(){return Promise.resolve(this.provider.get()).catch(e=>{throw e instanceof U?new ee(e.message,e.help):e})}async setup(e){return (await this.sdk).setup(e)}async update(e,t){return (await this.sdk).update(e,t)}async generateSlotExample(e,t){return (await this.sdk).generateSlotExample(e,t)}};var kn=class{constructor(e,t){this.valueProvider=e,this.keyProvider=t;}async get(...e){if(this.keyProvider!==void 0){let t=this.key;if(this.key=await this.keyProvider.get(...e),t===this.key&&this.value!==void 0)return this.value}else if(this.value!==void 0)return this.value;return this.value=Promise.resolve(this.valueProvider.get(...e)),this.value}};var Co=class o{constructor(e){this.instances=new Map;this.factory=e;}create(e){let t=o.getServerId(e),n=this.instances.get(t);if(n!==void 0)return n;let r=this.factory.create(e);return this.instances.set(t,r),r}static getServerId({command:e,...t}){let n=new URL(`${t.protocol}://${t.host}`);return n.port=`${t.port??t.defaultPort}`,n.searchParams.set("command",e.name),e.arguments!==void 0&&e.arguments.length>0&&n.searchParams.set("args",e.arguments.join(",")),n.toString()}};var Po=class o{constructor(e){this.matcher=e;}static fromPattern(e){return new o(new Minimatch(e))}test(e){return Promise.resolve(this.matcher.match(e))}};var ko=class{constructor(...e){this.predicates=e;}async test(...e){for(let t of this.predicates)if(!await t.test(...e))return false;return true}};var An=class{constructor(e){this.predicate=e;}async test(...e){return !await this.predicate.test(...e)}};var Ao=class o{constructor(e){this.filter=e;}static fromPatterns(...e){return new o(Dm().add(e))}test(e){return Promise.resolve(this.filter.ignores(e))}};var Eo=class{constructor(e){this.predicate=e;}get(...e){return this.predicate.test(...e)}};var En=class{constructor(e){this.input=e;}confirm(e){return e.default!==void 0?Promise.resolve(e.default):this.input.confirm(e)}prompt(e){return e.default!==void 0?Promise.resolve(e.default):this.input.prompt(e)}select(e){return e.default!==void 0?Promise.resolve(e.default):this.input.select(e)}selectMultiple(e){let t=e.options.filter(n=>n.selected===true);return t.length>0&&(e.min===void 0||t.length>=e.min)?Promise.resolve(t.map(n=>n.value)):this.input.selectMultiple(e)}wait(e){return this.input.wait(e)}};var Rn=class{constructor(...e){this.predicates=e;}async test(...e){for(let t of this.predicates)if(await t.test(...e))return true;return false}};var ts={};jc(ts,{basename:()=>Nm,dirname:()=>$m,ext:()=>Mm});var Mm=o=>{if(typeof o!="string")throw new $(`The \`path\` argument of the \`ext\` function must be a string, but got ${d.describeType(o)}.`);return o.split(".").pop()??""},Nm=o=>{if(typeof o!="string")throw new $(`The \`path\` argument of the \`basename\` function must be a string, but got ${d.describeType(o)}.`);return o.split(/[\\/]/).pop()??""},$m=o=>{if(typeof o!="string")throw new $(`The \`path\` argument of the \`dirname\` function must be a string, but got ${d.describeType(o)}.`);return o.replace(/[\\/][^\\/]*$/,"")};var Ro=class{constructor(e){this.runner=e;}async execute(e,t){for(;await e.condition;)await this.run(e.actions,t);}run(e,t){return this.runner.execute({actions:e},t)}};var zm=z.strictObject({condition:z.instanceof(Promise),actions:z.instanceof(Promise)}),To=class extends w{constructor(){super(zm);}};var B=class o extends d{constructor(e,t){super(e,t),Object.setPrototypeOf(this,o.prototype);}};var Oo=class o{constructor({fileSystem:e,commandExecutor:t,appDirectory:n}){this.fileSystem=e,this.commandExecutor=t,this.appDirectory=n;}async isRegistered(e){return await this.findLauncher(e)!==null}async register(e){if(await this.isRegistered(e.protocol))throw new B(`Protocol \`${e.protocol}\` is already registered.`,{reason:"precondition"});try{await this.install(e);}catch(t){throw new B("Failed to register protocol handler.",{cause:t})}}async unregister(e){let t=await this.findLauncher(e);if(t===null)return;let n=this.getLauncherAppPath(e);if(t!==n)throw new B(`Application registered for protocol \`${e}\` is externally managed.`,{reason:"precondition"});try{await this.fileSystem.delete(n,{recursive:!0}),await this.fileSystem.delete(this.getHandlerAppPath(e),{recursive:!0});}catch(r){throw new B("Failed to unregister protocol handler.",{cause:r})}}async install(e){let t=this.getLauncherAppPath(e.protocol),n=this.getHandlerAppPath(e.protocol),r=this.createLauncherApp(e,n),i=this.createHandlerApp(e),a=await this.fileSystem.createTemporaryDirectory("protocol"),s=this.fileSystem.joinPaths(a,"launcher.scpt"),p=this.fileSystem.joinPaths(a,"handler.scpt");await this.fileSystem.writeTextFile(s,r),await this.fileSystem.writeTextFile(p,i),await this.fileSystem.createDirectory(this.appDirectory,{recursive:true}),await this.execute({name:"osacompile",arguments:["-o",t,s]}),await this.execute({name:"osacompile",arguments:["-o",n,p]}),await this.execute({name:"plutil",arguments:["-insert","CFBundleURLTypes","-json",JSON.stringify([{CFBundleURLName:o.formatId(e.id),CFBundleURLSchemes:[e.protocol]}]),`${t}/Contents/Info.plist`]}),await this.execute({name:"open",arguments:["-g",t]});}async findLauncher(e){let n=(await this.execute({name:"osascript",arguments:["-e",te`
|
|
1776
1787
|
use AppleScript version "2.4"
|
|
1777
1788
|
use framework "Foundation"
|
|
1778
1789
|
use framework "AppKit"
|
|
@@ -1787,18 +1798,18 @@ ${a}`),{exitCode:r.status??1,output:i}}};var wo=class{constructor(e){this.provid
|
|
|
1787
1798
|
end if
|
|
1788
1799
|
|
|
1789
1800
|
return appUrl's path as text
|
|
1790
|
-
`]})).trim();return n===""?null:n}async execute(e){let t=this.commandExecutor.run(e);if(await t.wait()!==0)throw new d(`Failed to execute command \`${e.name}\`.`);return t.read()}createLauncherApp(e,t){let n=o.formatId(e.id);return
|
|
1801
|
+
`]})).trim();return n===""?null:n}async execute(e){let t=this.commandExecutor.run(e);if(await t.wait()!==0)throw new d(`Failed to execute command \`${e.name}\`.`);return t.read()}createLauncherApp(e,t){let n=o.formatId(e.id);return te`
|
|
1791
1802
|
on open location this_URL
|
|
1792
1803
|
do shell script "defaults write ${n} current_url " & quoted form of this_URL
|
|
1793
1804
|
tell application "${t}" to activate
|
|
1794
1805
|
end open location
|
|
1795
|
-
`}createHandlerApp(e){let t=o.formatId(e.id),n=e.command.replace(/\$url/,'" & quoted form of this_URL & "');return
|
|
1806
|
+
`}createHandlerApp(e){let t=o.formatId(e.id),n=e.command.replace(/\$url/,'" & quoted form of this_URL & "');return te`
|
|
1796
1807
|
set this_URL to do shell script "defaults read ${t} current_url"
|
|
1797
1808
|
tell application "Terminal"
|
|
1798
1809
|
do script "${n}"
|
|
1799
1810
|
activate
|
|
1800
1811
|
end tell
|
|
1801
|
-
`}getLauncherAppPath(e){return this.getAppPath(`${e}`)}getHandlerAppPath(e){return this.getAppPath(`${e}-handler`)}getAppPath(e){return this.fileSystem.joinPaths(this.appDirectory,`${e}.app`)}static formatId(e){return e.split(/[^a-zA-Z0-9]+/g).join(".")}};var
|
|
1812
|
+
`}getLauncherAppPath(e){return this.getAppPath(`${e}`)}getHandlerAppPath(e){return this.getAppPath(`${e}-handler`)}getAppPath(e){return this.fileSystem.joinPaths(this.appDirectory,`${e}.app`)}static formatId(e){return e.split(/[^a-zA-Z0-9]+/g).join(".")}};var Do=class o{constructor({commandExecutor:e}){this.commandExecutor=e;}async isRegistered(e){return await this.findCommand(e)!==null}async register(e){if(await this.isRegistered(e.protocol))throw new B(`Protocol \`${e.protocol}\` is already registered.`,{reason:"precondition"});try{await this.install(e);}catch(t){throw new B("Failed to register protocol handler",{cause:t})}}async install(e){let t=o.getRegistryPath(e.protocol),n=o.getCommandRegistryPath(e.protocol),r=o.getCommand(e.command);await this.execute({name:"REG",arguments:["add",t,"/f"]}),await this.execute({name:"REG",arguments:["add",t,"/v","URL Protocol","/t","REG_SZ","/d","","/f"]}),await this.execute({name:"REG",arguments:["add",t,"/ve","/t","REG_SZ","/d",`URL:${e.protocol}`,"/f"]}),await this.execute({name:"REG",arguments:["add",n,"/ve","/t","REG_SZ","/d",r,"/f"]});}async unregister(e){let t=await this.findCommand(e);if(t!==null){if(!t.startsWith(o.getCommand("")))throw new B(`Application registered for protocol \`${e}\` is externally managed.`,{reason:"precondition"});try{await this.execute({name:"REG",arguments:["DELETE",`${o.getRegistryPath(e)}`,"/f"]});}catch(n){throw new B("Failed to unregister protocol handler",{cause:n})}}}async execute(e){let t=this.commandExecutor.run(e);if(await t.wait()!==0)throw new d(`Failed to execute command \`${e.name}\`.`);return t.read()}async findCommand(e){let t=await this.execute({name:"REG",arguments:["query",`${o.getCommandRegistryPath(e)}`,"/ve"]}).catch(()=>null);if(t===null)return null;let n=/REG_SZ\s+(.*)/g.exec(t);return n===null?null:n[1].trim()}static getCommand(e){return `PowerShell -NoExit -Command ${e.replace(/\$url/,'"%1"')}`}static getCommandRegistryPath(e){return o.getRegistryPath(e,"shell\\open\\command")}static getRegistryPath(e,t){return `HKCU\\Software\\Classes\\${e}${t!==void 0?`\\${t}`:""}`}};var Mo=class o{static{this.COMMAND="gnome-terminal -- bash --login -ic ";}constructor({fileSystem:e,commandExecutor:t,homeDirectory:n}){this.fileSystem=e,this.commandExecutor=t,this.homeDirectory=n;}async isRegistered(e){return await this.findDesktopEntry(e)!==null}async register(e){if(await this.isRegistered(e.protocol))throw new B(`Protocol \`${e.protocol}\` is already registered.`,{reason:"precondition"});try{await this.fileSystem.writeTextFile(this.getDesktopEntryPath(e.protocol),o.createDesktopEntry(e)),await this.updateDesktopDatabase();}catch(t){throw new B("Failed to register protocol handler.",{cause:t})}}async unregister(e){let t=await this.findDesktopEntry(e);if(t===null)return;let n=await this.getCommand(t),r=this.getDesktopEntryPath(e);if(t!==r||n?.startsWith(o.COMMAND)!==true)throw new B(`Application registered for protocol \`${e}\` is externally managed.`,{reason:"precondition"});try{await this.fileSystem.delete(t),await this.updateDesktopDatabase();}catch(i){throw new B("Failed to unregister protocol handler.",{cause:i})}}async updateDesktopDatabase(){await this.execute({name:"update-desktop-database",arguments:[this.getApplicationPath()]});}async getCommand(e){if(!await this.fileSystem.exists(e))return null;let t=await this.fileSystem.readTextFile(e);if(!/^MimeType=x-scheme-handler\//im.test(t))return null;let n=t.match(/^Exec=(.*)$/im);return n===null?null:n[1].trim()}async findDesktopEntry(e){let t=null;try{t=await this.execute({name:"xdg-mime",arguments:["query","default",`x-scheme-handler/${e}`]});}catch{return null}let n=t.trim();return n===""?null:this.fileSystem.joinPaths(this.getApplicationPath(),n)}async execute(e){let t=this.commandExecutor.run(e);if(await t.wait()!==0)throw new d(`Failed to execute command \`${e.name}\`.`);return t.read()}static createDesktopEntry(e){let t=e.command.replace(/\$url/,"'%u'");return te`
|
|
1802
1813
|
[Desktop Entry]
|
|
1803
1814
|
Type=Application
|
|
1804
1815
|
Name=${e.name}
|
|
@@ -1806,13 +1817,13 @@ ${a}`),{exitCode:r.status??1,output:i}}};var wo=class{constructor(e){this.provid
|
|
|
1806
1817
|
StartupNotify=false
|
|
1807
1818
|
Terminal=true
|
|
1808
1819
|
MimeType=x-scheme-handler/${e.protocol}
|
|
1809
|
-
`}getDesktopEntryPath(e){return this.fileSystem.joinPaths(this.getApplicationPath(),`${e}.desktop`)}getApplicationPath(){return this.fileSystem.joinPaths(this.homeDirectory,".local","share","applications")}};var $o=class{constructor(e){this.config=e;}async execute({url:e}){if(!URL.canParse(e))throw new d("The URL is not valid.",{reason:"invalid_input"});let t=new URL(e);if(!this.isValidUrl(t))throw new d("The URL is not supported.",{reason:"invalid_input"});let{input:n,output:r}=this.config.io;if(n===void 0)throw new d("Deep links requires explicit user interaction.",{reason:"precondition",details:["Retry in interactive mode."]});let i=this.parseArguments(t);r.announce({semantics:"neutral",title:"\u{1F517} Croct link",message:"You just opened a link to a `Croct CLI` command.",alignment:"center"});let a=i.join(" ");r.inform(`The command is \`${a}\``),await n.confirm({message:"Continue?",default:true})&&(await this.selectDirectory(n),await this.config.program(i));}async selectDirectory(e){let{workingDirectory:t,configurationProvider:n,fileSystem:r,io:{output:i}}=this.config,a=t.get(),{projectPaths:s}=await n.get(),p="";if(s.length>0){let c=r.getDirectoryName(s[0]);p=await e.select({message:"Where should this command run?",options:[{label:`${a} (current)`,value:""},{label:c,value:c},...s.map(l=>({value:l,label:l}))]});}else i.inform(`You are currently in \`${a}\``),await e.confirm({message:"Run the command from the current directory?",default:true})||await e.prompt({message:"Where do you want to run the command from?",default:a,validate:async c=>await r.isDirectory(c)?true:"Enter a valid directory path."});p!==""&&t.setCurrentDirectory(p);}parseArguments(e){let t=[];for(let r of (e.hostname+e.pathname).split("/"))r!==""&&t.push(r);let n=[];for(let[r,i]of e.searchParams){if(r==="arg"){n.push(i);continue}if(i===""){t.push(`-${r.length===1?"":"-"}${r}`);continue}t.push(`--${r}`),t.push(i);}return t.push(...n),t}isValidUrl(e){return e.protocol===`${this.config.protocol}:`&&e.username===""&&e.password===""&&e.port===""&&e.hash===""}};var Fm=z.strictObject({projectPaths:z.array(z.string().min(1)),isDeepLinkingEnabled:z.boolean().optional()}),_o=class extends Q{constructor(){super(Fm);}};var Lo=class{constructor({manager:e,workingDirectory:t,store:n}){this.manager=e,this.workingDirectory=t,this.store=n;}isInitialized(){return this.manager.isInitialized()}async load(){let e=await this.manager.load();return await this.updateIndex(),e}update(e){return Promise.all([this.manager.update(e),this.updateIndex()]).then(([t])=>t)}async updateIndex(){let e=await this.store.get();await this.store.save({...e,projectPaths:[this.workingDirectory.get(),...e.projectPaths]});}};var Fo=class{constructor(e){this.fileSystem=e.fileSystem,this.executablePaths=e.executablePaths,this.executableExtensions=e.executableExtensions??[],this.executableCache=e.cache??new NoopCache;}locate(e){return this.executableCache.get(e,t=>this.findPath(t))}async findPath(e){for(let t of this.executablePaths)for(let n of ["",...this.executableExtensions]){let r=this.fileSystem.joinPaths(t,e+n.toLowerCase());if(r!==null&&await this.fileSystem.exists(r))return r}return null}};var jo=class{constructor(e){this.projectDirectory=e.projectDirectory,this.fileSystem=e.fileSystem,this.packageManager=e.packageManager;}async test(){return (await this.getPreferredPackageManager())?.includes(this.packageManager)===true}async getPreferredPackageManager(){let e=this.fileSystem.joinPaths(this.projectDirectory.get(),"package.json");if(!await this.fileSystem.exists(e))return null;let t;try{t=JSON.parse(await this.fileSystem.readTextFile(e));}catch{return null}return typeof t=="object"&&t!==null&&"packageManager"in t&&typeof t.packageManager=="string"?t.packageManager:null}};var On=class{constructor(e){this.config=e;}async execute(){try{await this.enableDeepLinks();}catch{}}async enableDeepLinks(){let{cliPackage:e,packageManager:t,protocolRegistryProvider:n,protocolHandler:r,io:{output:i,input:a}}=this.config,s=await n.get();if(s===null||a===void 0)return;let[p,c]=await Promise.all([s.isRegistered(r.protocol),t.isInstalled()]);if(p||!c||!await a.confirm({message:"Turn on deep links to streamline your experience?",default:true}))return;let l=i.notify("Enabling deep links...");try{let m=await t.getPackageCommand(e,["open","$url"]);await s.register({...r,command:`${m.name} ${(m.arguments??[]).join(" ")}`}),i.confirm("Deep links enabled");}finally{l.stop();}}};var Wo=class{constructor(e){this.process=e.process,this.variable=e.variable,this.value=e.value;}test(){let e=this.process.getEnvValue(this.variable);return e===null?false:this.value?.test(e)===true}};var Vo=class{constructor(...e){this.providers=e;}async get(...e){for(let t of this.providers){let n=await t.get(...e)??null;if(n!==null)return n}return null}};var Uo=class{constructor(e){this.config=e;}async handle(){let{input:e,output:t,userApi:n}=this.config,r=await n.getInvitations();if(r.length!==0){if(r.length===1){let{id:i,organization:a}=r[0];await e.confirm({message:`${a.name} has invited you to join. Accept?`,default:true})&&await n.acceptInvitation(i);return}r.length>1&&t.inform(`You have ${r.length} pending invitations:`);for(let{id:i,organization:a}of r)await e.confirm({message:`Accept invitation to join ${a.name}?`,default:true})&&await n.acceptInvitation(i);}}};var qo=class{constructor(e){this.authenticator=e.authenticator,this.invitationForm=e.invitationForm;}getToken(){return this.authenticator.getToken()}async login(e){let t=await this.authenticator.login(e);return await this.invitationForm.handle({}),t}logout(){return this.authenticator.logout()}};var Ho=class o{static{this.EMPTY_SETTINGS={projectPaths:[]};}constructor({fileSystem:e,validator:t,filePath:n}){this.fileSystem=e,this.validator=t,this.filePath=n;}async get(){if(!await this.fileSystem.exists(this.filePath))return o.EMPTY_SETTINGS;let e;try{e=await this.fileSystem.readTextFile(this.filePath);}catch{return o.EMPTY_SETTINGS}let t=await this.validator.validate(JSON.parse(e));return t.valid?t.data:o.EMPTY_SETTINGS}save(e){return this.fileSystem.writeTextFile(this.filePath,JSON.stringify(e),{overwrite:true})}};var Go=class{constructor({fileSystem:e,store:t}){this.fileSystem=e,this.store=t;}async get(){return this.normalizeSettings(await this.store.get())}async save(e){return this.store.save(await this.normalizeSettings(e))}async normalizeSettings(e){return {...e,projectPaths:(await Promise.all([...new Set(e.projectPaths)].map(async t=>await this.fileSystem.exists(t)?[t]:[]))).flat()}}};var Ko=class{constructor(e){this.config=e;}async execute(e){let{configurationManager:t,api:n,fileSystem:r,io:i}=this.config,a=await t.load(),s=e.environment??await i.input.select({message:"Which environment?",options:Ie.all().map(y=>({label:Ie.getLabel(y),value:y}))}),p=s==="PRODUCTION"?a.applications.production:a.applications.development;if(p===void 0)throw new d(`No ${Ie.getLabel(s).toLowerCase()} application found in the project configuration.`,{reason:"invalid_input"});let c=i.output.notify("Loading information"),l=e.name??`${(await n.user.getUser()).username} (CLI)`,m=await n.workspace.getFeatures({organizationSlug:a.organization,workspaceSlug:a.workspace});if(c.stop(),e.permissions?.includes("DATA_EXPORT")===true&&m?.features.dataExport!==true)throw new d("The workspace does not have the data export feature enabled.",{reason:"invalid_input"});let f=e.name??await Ne.prompt({input:i.input,label:"API key name",default:l}),b=e.permissions??await i.input.selectMultiple({message:"Select permissions",min:1,options:Ae.all().map(y=>({label:Ae.getLabel(y),value:y,disabled:y==="DATA_EXPORT"&&m?.features.dataExport!==true}))}),A=await n.application.createApiKey({organizationSlug:a.organization,workspaceSlug:a.workspace,applicationSlug:p,name:f,permissions:b});if(e.copy===true||await i.input.confirm({message:"Copy to clipboard?",default:false})){await Wm.write(A.secret),i.output.confirm("API key copied to clipboard");return}let w=`api-key-${A.id}.txt`;await r.writeTextFile(w,A.secret),i.output.confirm(`API key saved to \`${w}\``);}};var kc=ft(Zt());var Zo=class{constructor({apiKey:e,clock:t,tokenDuration:n}){this.apiKey=e,this.clock=t,this.tokenDuration=n;}getToken(){return Promise.resolve(this.token?.toString()??null)}async login(){return this.token=await this.issueToken(),this.token.toString()}logout(){return this.token=void 0,Promise.resolve()}async issueToken(){let e=kc.Instant.now(this.clock).getSeconds();return Token.of({kid:await this.apiKey.getIdentifierHash(),alg:"ES256",typ:"JWT"},{iat:e,nbf:e,exp:e+this.tokenDuration,iss:"cli.croct.com",aud:"app.croct.com",scope:["ADMIN"]}).signedWith(this.apiKey)}};var Jo=class{constructor(e){this.currentDirectory=e;}get(){return this.currentDirectory}setCurrentDirectory(e){this.currentDirectory=e;}toString(){return this.get()}};var Qo=class{constructor(e){this.process=e;}get(){return this.process.getCurrentDirectory()}setCurrentDirectory(e){this.process.changeDirectory(e);}toString(){return this.get()}};var Bo=class{constructor({authenticator:e,cacheKey:t,cacheProvider:n}){this.authenticator=e,this.cacheKey=t,this.cacheProvider=n;}getToken(){return this.cacheProvider.get(this.cacheKey,()=>this.authenticator.getToken())}async login(e){let t=await this.authenticator.login(e);return await this.cacheProvider.set(this.cacheKey,t),t}async logout(){await this.authenticator.logout(),await this.cacheProvider.delete(this.cacheKey);}};var Ac=ft(Zt());var Yo=class{constructor(e){this.revalidating=new Map;this.cacheProvider=e.cacheProvider,this.clock=e.clock,this.tokenFreshPeriod=e.tokenFreshPeriod,this.tokenIssuer=e.tokenIssuer;}async get(e,t){let n=await this.cacheProvider.get(e,async()=>await t(e)??"");if(n==="")return null;let r=this.clock.getInstant(),i=this.parseToken(n);if(i!==null){if(!i.isValidNow(r.getSeconds()))return null;this.revalidateToken(e,i).catch(()=>{});}return n}set(e,t){return this.cacheProvider.set(e,t)}delete(e){return this.cacheProvider.delete(e)}async revalidateToken(e,t){let n=this.clock.getInstant();if(this.revalidating.has(e))return;let r=t.getIssueTime(),i=Ac.Instant.ofEpochSecond(r+this.tokenFreshPeriod);n.isAfter(i)&&await this.renewToken(e,t);}async renewToken(e,t){let n=this.tokenIssuer(t);this.revalidating.set(e,true);try{await this.cacheProvider.set(e,await n);}finally{this.revalidating.delete(e);}}parseToken(e){let t;try{t=Token.parse(e);}catch{return null}return t}};var Xo=class{constructor(e){this.api=e.api,this.pollingInterval=e.pollingInterval;}async wait(e){let t=await this.api.closeSession(e);for(;t.status==="pending";)await this.delay(),t=await this.api.closeSession(e);switch(t.status){case "access-granted":return t.accessToken;case "recovery-granted":return t.recoveryToken}}delay(){return new Promise(e=>{setTimeout(e,this.pollingInterval);})}};var ea=class o{constructor(e){this.boxenStyle=e??{titleAlignment:"center",borderStyle:"round",padding:{top:1,bottom:1,right:2,left:2}};}formatCallout(e){return Ec(ee(e.message),{...this.boxenStyle,title:ee(e.title,{basic:true}),textAlignment:e.alignment,borderColor:Jt[e.semantics]})}formatError(e){return Ec(o.formatErrorBody(e),{...this.boxenStyle,title:o.formatErrorTitle(e),borderColor:"red"})}static formatErrorTitle(e){return e instanceof d?{access_denied:"Access denied",invalid_configuration:"Invalid configuration",invalid_input:"Invalid input",not_found:"Not found",not_supported:"Not supported",precondition:"Precondition failed",unexpected_result:"Unexpected result",other:"Error"}[e.reason]:"Unexpected error"}static formatErrorBody(e){let t=ee(d.formatMessage(e));if(e instanceof d){t+=o.formatErrorDetails(e);let{cause:n}=e.help;n!==void 0&&!o.isCauseReported(e.message,n)&&(t+=`
|
|
1820
|
+
`}getDesktopEntryPath(e){return this.fileSystem.joinPaths(this.getApplicationPath(),`${e}.desktop`)}getApplicationPath(){return this.fileSystem.joinPaths(this.homeDirectory,".local","share","applications")}};var No=class{constructor(e){this.config=e;}async execute({url:e}){if(!URL.canParse(e))throw new d("The URL is not valid.",{reason:"invalid_input"});let t=new URL(e);if(!this.isValidUrl(t))throw new d("The URL is not supported.",{reason:"invalid_input"});let{input:n,output:r}=this.config.io;if(n===void 0)throw new d("Deep links requires explicit user interaction.",{reason:"precondition",details:["Retry in interactive mode."]});let i=this.parseArguments(t);r.announce({semantics:"neutral",title:"\u{1F517} Croct link",message:"You just opened a link to a `Croct CLI` command.",alignment:"center"});let a=i.join(" ");r.inform(`The command is \`${a}\``),await n.confirm({message:"Continue?",default:true})&&(await this.selectDirectory(n),await this.config.program(i));}async selectDirectory(e){let{workingDirectory:t,configurationProvider:n,fileSystem:r,io:{output:i}}=this.config,a=t.get(),{projectPaths:s}=await n.get(),p="";if(s.length>0){let c=r.getDirectoryName(s[0]);p=await e.select({message:"Where should this command run?",options:[{label:`${a} (current)`,value:""},{label:c,value:c},...s.map(l=>({value:l,label:l}))]});}else i.inform(`You are currently in \`${a}\``),await e.confirm({message:"Run the command from the current directory?",default:true})||await e.prompt({message:"Where do you want to run the command from?",default:a,validate:async c=>await r.isDirectory(c)?true:"Enter a valid directory path."});p!==""&&t.setCurrentDirectory(p);}parseArguments(e){let t=[];for(let r of (e.hostname+e.pathname).split("/"))r!==""&&t.push(r);let n=[];for(let[r,i]of e.searchParams){if(r==="arg"){n.push(i);continue}if(i===""){t.push(`-${r.length===1?"":"-"}${r}`);continue}t.push(`--${r}`),t.push(i);}return t.push(...n),t}isValidUrl(e){return e.protocol===`${this.config.protocol}:`&&e.username===""&&e.password===""&&e.port===""&&e.hash===""}};var _m=z.strictObject({projectPaths:z.array(z.string().min(1)),isDeepLinkingEnabled:z.boolean().optional()}),zo=class extends Q{constructor(){super(_m);}};var _o=class{constructor({manager:e,workingDirectory:t,store:n}){this.manager=e,this.workingDirectory=t,this.store=n;}isInitialized(){return this.manager.isInitialized()}async load(){let e=await this.manager.load();return await this.updateIndex(),e}update(e){return Promise.all([this.manager.update(e),this.updateIndex()]).then(([t])=>t)}async updateIndex(){let e=await this.store.get();await this.store.save({...e,projectPaths:[this.workingDirectory.get(),...e.projectPaths]});}};var Lo=class{constructor(e){this.fileSystem=e.fileSystem,this.executablePaths=e.executablePaths,this.executableExtensions=e.executableExtensions??[],this.executableCache=e.cache??new NoopCache;}locate(e){return this.executableCache.get(e,t=>this.findPath(t))}async findPath(e){for(let t of this.executablePaths)for(let n of ["",...this.executableExtensions]){let r=this.fileSystem.joinPaths(t,e+n.toLowerCase());if(r!==null&&await this.fileSystem.exists(r))return r}return null}};var Fo=class{constructor(e){this.projectDirectory=e.projectDirectory,this.fileSystem=e.fileSystem,this.packageManager=e.packageManager;}async test(){return (await this.getPreferredPackageManager())?.includes(this.packageManager)===true}async getPreferredPackageManager(){let e=this.fileSystem.joinPaths(this.projectDirectory.get(),"package.json");if(!await this.fileSystem.exists(e))return null;let t;try{t=JSON.parse(await this.fileSystem.readTextFile(e));}catch{return null}return typeof t=="object"&&t!==null&&"packageManager"in t&&typeof t.packageManager=="string"?t.packageManager:null}};var Tn=class{constructor(e){this.config=e;}async execute(){try{await this.enableDeepLinks();}catch{}}async enableDeepLinks(){let{cliPackage:e,packageManager:t,protocolRegistryProvider:n,protocolHandler:r,io:{output:i,input:a}}=this.config,s=await n.get();if(s===null||a===void 0)return;let[p,c]=await Promise.all([s.isRegistered(r.protocol),t.isInstalled()]);if(p||!c||!await a.confirm({message:"Turn on deep links to streamline your experience?",default:true}))return;let l=i.notify("Enabling deep links...");try{let m=await t.getPackageCommand(e,["open","$url"]);await s.register({...r,command:`${m.name} ${(m.arguments??[]).join(" ")}`}),i.confirm("Deep links enabled");}finally{l.stop();}}};var jo=class{constructor(e){this.process=e.process,this.variable=e.variable,this.value=e.value;}test(){let e=this.process.getEnvValue(this.variable);return e===null?false:this.value?.test(e)===true}};var Wo=class{constructor(...e){this.providers=e;}async get(...e){for(let t of this.providers){let n=await t.get(...e)??null;if(n!==null)return n}return null}};var Vo=class{constructor(e){this.config=e;}async handle(){let{input:e,output:t,userApi:n}=this.config,r=await n.getInvitations();if(r.length!==0){if(r.length===1){let{id:i,organization:a}=r[0];await e.confirm({message:`${a.name} has invited you to join. Accept?`,default:true})&&await n.acceptInvitation(i);return}r.length>1&&t.inform(`You have ${r.length} pending invitations:`);for(let{id:i,organization:a}of r)await e.confirm({message:`Accept invitation to join ${a.name}?`,default:true})&&await n.acceptInvitation(i);}}};var Uo=class{constructor(e){this.authenticator=e.authenticator,this.invitationForm=e.invitationForm;}getToken(){return this.authenticator.getToken()}async login(e){let t=await this.authenticator.login(e);return await this.invitationForm.handle({}),t}logout(){return this.authenticator.logout()}};var qo=class o{static{this.EMPTY_SETTINGS={projectPaths:[]};}constructor({fileSystem:e,validator:t,filePath:n}){this.fileSystem=e,this.validator=t,this.filePath=n;}async get(){if(!await this.fileSystem.exists(this.filePath))return o.EMPTY_SETTINGS;let e;try{e=await this.fileSystem.readTextFile(this.filePath);}catch{return o.EMPTY_SETTINGS}let t=await this.validator.validate(JSON.parse(e));return t.valid?t.data:o.EMPTY_SETTINGS}save(e){return this.fileSystem.writeTextFile(this.filePath,JSON.stringify(e),{overwrite:true})}};var Ho=class{constructor({fileSystem:e,store:t}){this.fileSystem=e,this.store=t;}async get(){return this.normalizeSettings(await this.store.get())}async save(e){return this.store.save(await this.normalizeSettings(e))}async normalizeSettings(e){return {...e,projectPaths:(await Promise.all([...new Set(e.projectPaths)].map(async t=>await this.fileSystem.exists(t)?[t]:[]))).flat()}}};var Go=class{constructor(e){this.config=e;}async execute(e){let{configurationManager:t,api:n,fileSystem:r,io:i}=this.config,a=await t.load(),s=e.environment??await i.input.select({message:"Which environment?",options:xe.all().map(y=>({label:xe.getLabel(y),value:y}))}),p=s==="PRODUCTION"?a.applications.production:a.applications.development;if(p===void 0)throw new d(`No ${xe.getLabel(s).toLowerCase()} application found in the project configuration.`,{reason:"invalid_input"});let c=i.output.notify("Loading information"),l=e.name??`${(await n.user.getUser()).username} (CLI)`,m=await n.workspace.getFeatures({organizationSlug:a.organization,workspaceSlug:a.workspace});if(c.stop(),e.permissions?.includes("DATA_EXPORT")===true&&m?.features.dataExport!==true)throw new d("The workspace does not have the data export feature enabled.",{reason:"invalid_input"});let f=e.name??await Ne.prompt({input:i.input,label:"API key name",default:l}),b=e.permissions??await i.input.selectMultiple({message:"Select permissions",min:1,options:Ee.all().map(y=>({label:Ee.getLabel(y),value:y,disabled:y==="DATA_EXPORT"&&m?.features.dataExport!==true}))}),A=await n.application.createApiKey({organizationSlug:a.organization,workspaceSlug:a.workspace,applicationSlug:p,name:f,permissions:b});if(e.copy===true||await i.input.confirm({message:"Copy to clipboard?",default:false})){await Fm.write(A.secret),i.output.confirm("API key copied to clipboard");return}let v=`api-key-${A.id}.txt`;await r.writeTextFile(v,A.secret),i.output.confirm(`API key saved to \`${v}\``);}};var Pc=ft(Kt());var Ko=class{constructor({apiKey:e,clock:t,tokenDuration:n}){this.apiKey=e,this.clock=t,this.tokenDuration=n;}getToken(){return Promise.resolve(this.token?.toString()??null)}async login(){return this.token=await this.issueToken(),this.token.toString()}logout(){return this.token=void 0,Promise.resolve()}async issueToken(){let e=Pc.Instant.now(this.clock).getSeconds();return Token.of({kid:await this.apiKey.getIdentifierHash(),alg:"ES256",typ:"JWT"},{iat:e,nbf:e,exp:e+this.tokenDuration,iss:"cli.croct.com",aud:"app.croct.com",scope:["ADMIN"]}).signedWith(this.apiKey)}};var Zo=class{constructor(e){this.currentDirectory=e;}get(){return this.currentDirectory}setCurrentDirectory(e){this.currentDirectory=e;}toString(){return this.get()}};var Jo=class{constructor(e){this.process=e;}get(){return this.process.getCurrentDirectory()}setCurrentDirectory(e){this.process.changeDirectory(e);}toString(){return this.get()}};var Qo=class{constructor({authenticator:e,cacheKey:t,cacheProvider:n}){this.authenticator=e,this.cacheKey=t,this.cacheProvider=n;}getToken(){return this.cacheProvider.get(this.cacheKey,()=>this.authenticator.getToken())}async login(e){let t=await this.authenticator.login(e);return await this.cacheProvider.set(this.cacheKey,t),t}async logout(){await this.authenticator.logout(),await this.cacheProvider.delete(this.cacheKey);}};var kc=ft(Kt());var Bo=class{constructor(e){this.revalidating=new Map;this.cacheProvider=e.cacheProvider,this.clock=e.clock,this.tokenFreshPeriod=e.tokenFreshPeriod,this.tokenIssuer=e.tokenIssuer;}async get(e,t){let n=await this.cacheProvider.get(e,async()=>await t(e)??"");if(n==="")return null;let r=this.clock.getInstant(),i=this.parseToken(n);if(i!==null){if(!i.isValidNow(r.getSeconds()))return null;this.revalidateToken(e,i).catch(()=>{});}return n}set(e,t){return this.cacheProvider.set(e,t)}delete(e){return this.cacheProvider.delete(e)}async revalidateToken(e,t){let n=this.clock.getInstant();if(this.revalidating.has(e))return;let r=t.getIssueTime(),i=kc.Instant.ofEpochSecond(r+this.tokenFreshPeriod);n.isAfter(i)&&await this.renewToken(e,t);}async renewToken(e,t){let n=this.tokenIssuer(t);this.revalidating.set(e,true);try{await this.cacheProvider.set(e,await n);}finally{this.revalidating.delete(e);}}parseToken(e){let t;try{t=Token.parse(e);}catch{return null}return t}};var Yo=class{constructor(e){this.api=e.api,this.pollingInterval=e.pollingInterval;}async wait(e){let t=await this.api.closeSession(e);for(;t.status==="pending";)await this.delay(),t=await this.api.closeSession(e);switch(t.status){case "access-granted":return t.accessToken;case "recovery-granted":return t.recoveryToken}}delay(){return new Promise(e=>{setTimeout(e,this.pollingInterval);})}};var Xo=class o{constructor(e){this.boxenStyle=e??{titleAlignment:"center",borderStyle:"round",padding:{top:1,bottom:1,right:2,left:2}};}formatCallout(e){return Ac(X(e.message),{...this.boxenStyle,title:X(e.title,{basic:true}),textAlignment:e.alignment,borderColor:Zt[e.semantics]})}formatError(e){return Ac(o.formatErrorBody(e),{...this.boxenStyle,title:o.formatErrorTitle(e),borderColor:"red"})}static formatErrorTitle(e){return e instanceof d?{access_denied:"Access denied",invalid_configuration:"Invalid configuration",invalid_input:"Invalid input",not_found:"Not found",not_supported:"Not supported",precondition:"Precondition failed",unexpected_result:"Unexpected result",other:"Error"}[e.reason]:"Unexpected error"}static formatErrorBody(e){let t=X(d.formatMessage(e));if(e instanceof d){t+=o.formatErrorDetails(e);let{cause:n}=e.help;n!==void 0&&!o.isCauseReported(e.message,n)&&(t+=`
|
|
1810
1821
|
|
|
1811
1822
|
\u{1F6A8} ${nt.bold("Cause")}
|
|
1812
|
-
`,t+=`${
|
|
1823
|
+
`,t+=`${X(d.formatMessage(e.help.cause))}`),t+=o.formatErrorSuggestions(e),t+=o.formatErrorUsefulLinks(e);}return (!(e instanceof d)||e.reason==="other"&&e.help.cause instanceof Error)&&(t+=o.formatStackTrace(e)),t}static isCauseReported(e,t){return e.toLowerCase().includes(d.formatMessage(t).toLowerCase())}static formatErrorDetails(e){let t="",{details:n}=e.help;return n!==void 0&&(t+=`
|
|
1813
1824
|
|
|
1814
1825
|
\u{1F50D} ${nt.bold("Details")}
|
|
1815
|
-
`,t+=n.map(r=>` \u2022 ${
|
|
1826
|
+
`,t+=n.map(r=>` \u2022 ${X(r)}`).join(`
|
|
1816
1827
|
`)),t}static formatStackTrace(e){if(!(e instanceof Error)||e.stack===void 0)return "";let t=e.stack.split(`
|
|
1817
1828
|
`).map(n=>` \u203A ${n.trim().replace(/^at /,"")}`).slice(1);return `
|
|
1818
1829
|
|
|
@@ -1821,13 +1832,13 @@ ${t.join(`
|
|
|
1821
1832
|
`)}`}static formatErrorSuggestions(e){let{suggestions:t}=e.help,n="";return t!==void 0&&t.length>0&&(n+=`
|
|
1822
1833
|
|
|
1823
1834
|
\u{1F4A1} ${nt.bold("Suggestions")}
|
|
1824
|
-
`,n+=t.map(r=>` \u2022 ${
|
|
1835
|
+
`,n+=t.map(r=>` \u2022 ${X(r)}`).join(`
|
|
1825
1836
|
`)),n}static formatErrorUsefulLinks(e){let t=[],n="";switch(e.reason){case "invalid_input":case "precondition":t.push({label:"Documentation",url:"https://docs.croct.io/sdk/cli"});break;case "invalid_configuration":break;default:t.push({label:"Open an issue",url:"https://github.com/croct-tech/croct-cli/issues/new"});break}return e.help.links!==void 0&&t.push(...e.help.links),t.length>0&&(n+=`
|
|
1826
1837
|
|
|
1827
1838
|
\u{1F517} ${nt.bold("Useful links")}
|
|
1828
|
-
`,n+=t.map(({label:r,url:i})=>` \u2022 ${
|
|
1829
|
-
`)),n}};var ta=class{constructor(){this.listeners={};}on(e,t){this.listeners[e]===void 0&&(this.listeners[e]=new Set),this.listeners[e].add(t);}off(e,t){this.listeners[e]!==void 0&&this.listeners[e].delete(t);}async emit(e,...t){this.listeners[e]!==void 0&&await Promise.all(Array.from(this.listeners[e]).map(n=>n(...t)));}};var na=class{constructor(){this.eventDispatcher=new ta;Le.on("SIGTERM",()=>this.exit()),Le.on("SIGINT",()=>this.exit());}getCurrentDirectory(){return Le.cwd()}getEnvValue(e){return Le.env[e]??null}getEnvList(e){return this.getEnvValue(e)?.split(delimiter)??null}getPlatform(){return Le.platform}getStandardError(){return Le.stderr}getStandardInput(){return Le.stdin}getStandardOutput(){return Le.stdout}on(e,t){this.eventDispatcher.on(e,t);}off(e,t){this.eventDispatcher.off(e,t);}async exit(e){return await this.eventDispatcher.emit("exit").catch(()=>{}),Le.exit(e)}changeDirectory(e){Le.chdir(e);}};var ra=class{constructor({callback:e}){this.callback=e;}async execute(e,t){try{return await this.callback(e,t)}catch(n){if(!(n instanceof I))throw I.fromCause(n)}}};var Km=z.strictObject({}),ia=class extends v{constructor(){super(Km);}};var oa=class o{static{this.REPOSITORY_PATTERNS=[/git\+(https:\/\/.+)\.git$/];}constructor(e){this.metadataProvider=e;}async get(e){let t=this.getMetadataUrl(e);if(t===null)throw new W("Unsupported NPM URL.",{reason:"not_supported",url:e});let{value:n}=await this.metadataProvider.get(t),r=o.getRepositoryUrl(n.repository);return r===null?{url:e,value:[]}:{url:r,value:[{pattern:".*",destination:r}]}}static getRepositoryUrl(e){for(let t of o.REPOSITORY_PATTERNS){let n=t.exec(e.url);if(n!==null)return new URL(`${n[1]}/`)}return null}getMetadataUrl(e){if(e.protocol!=="npm:")return null;let t=e.pathname.slice(1);return new URL(`https://registry.npmjs.org/${t}/latest`)}};var aa=class o{constructor({provider:e,reader:t}){this.provider=e,this.reader=t;}static text(e){return new o({provider:e,reader:t=>t.text()})}static json(e){return new o({provider:e,reader:t=>t.json()})}static blob(e){return new o({provider:e,reader:t=>t.blob()})}async get(e){let t=await this.provider.get(e),n;try{n=await this.reader(new Response(t.value.body));}catch(r){throw new W("Failed to read response body.",{reason:"unexpected_result",url:e,cause:r})}return {url:t.url,value:n}}};var Zm=z.object({name:z.string(),repository:z.object({type:z.string(),url:z.string()})}),sa=class extends Q{constructor(){super(Zm);}};var ca=class{constructor({provider:e,logger:t,label:n}){this.provider=e,this.logger=t,this.label=n;}get(e){return this.logger.nest({message:`\`${this.label??this.provider.constructor.name}\``,level:LogLevel.DEBUG},()=>this.trace(e))}async trace(e){this.logger.log({message:`URL: ${e}`,level:LogLevel.DEBUG});try{let t=await this.provider.get(e);return this.logger.log({message:"No errors",level:LogLevel.DEBUG}),t}catch(t){throw this.logger.log({message:`Error: ${d.formatMessage(t)}`,level:LogLevel.DEBUG}),t}}};var la=class{constructor(e){this.storage=new AsyncLocalStorage;this.logger=e;}nest(e,t){let n=this.storage.getStore();if(n!==void 0)return this.logNested(n,e,t);let r={level:0,logs:[]};return this.storage.run(r,()=>this.logNested(r,e,t))}async logNested(e,t,n){this.buffer(e,{...t,message:`\u250C\u2500 ${t.message}`}),e.level++;try{return await n()}finally{e.level--,this.buffer(e,{...t,message:"\u2514\u2500"}),e.level===0&&(e.logs.forEach(r=>this.logger.log(r)),e.logs=[]);}}log(e){let t=this.storage.getStore();if(t!==void 0){this.buffer(t,e);return}this.logger.log(e);}buffer(e,t){e.logs.push({...t,message:`${e.level>0?`${"\u2502 ".repeat(e.level-1)}\u2502 `:""}${t.message}`});}};var ua=class{constructor(e){this.output=e;}log(e){switch(e.level){case "debug":this.output.debug(e.message);break;case "info":this.output.inform(e.message);break;case "warning":this.output.warn(e.message);break;case "error":this.output.alert(e.message);}}};var ma=class o{static{this.PREFIX="?/";}constructor(e){this.rootPath=e.rootPath,this.importResolver=e.importResolver,this.exportMatcher=e.exportMatcher,this.importCodemod=e.importCodemod,this.fileSystem=e.fileSystem,this.maxSearchDepth=e.maxSearchDepth;}apply(e){return this.importCodemod.apply(e,{transformer:t=>{if(!t.source.startsWith(o.PREFIX))return;let n=t.source.slice(o.PREFIX.length);return this.resolvePath(t,n,e)}})}async resolvePath(e,t,n){let r=new Minimatch(t);for await(let i of this.fileSystem.list(this.rootPath.get(),this.maxSearchDepth))if(i.type==="file"&&r.match(i.name)&&await this.exportMatcher.test(await new Response(i.content).text(),e))return this.importResolver.getImportPath(i.name,n);throw new Ge(`Unable to resolve import \`${t}\` from \`${n}\`.`,{reason:"not_found"})}};var da=class{constructor({codemods:e}){this.codemods=e;}apply(e,t){let[,n]=Object.entries(this.codemods).find(([r])=>minimatch(e,r))??[];return n===void 0?Promise.resolve({modified:false,result:e}):n.apply(e,t)}};function Rc(o){let e=typeof o=="string"?Ke(o,["jsx","typescript"]):o,t=[];return traverse(e,{ExportDeclaration:n=>{let{node:r}=n;if(g.isExportNamedDeclaration(r))if(r.specifiers.length>0)for(let i of r.specifiers)g.isExportSpecifier(i)?(!g.isIdentifier(i.exported)||i.exported.name!=="default")&&t.push(g.isIdentifier(i.exported)?i.exported.name:i.exported.value):g.isExportNamespaceSpecifier(i)&&g.isIdentifier(i.exported)&&t.push(i.exported.name);else if(g.isVariableDeclaration(r.declaration))for(let i of r.declaration.declarations)g.isVariableDeclarator(i)&&g.isIdentifier(i.id)&&t.push(i.id.name);else typeof r.declaration=="object"&&r.declaration!==null&&"id"in r.declaration&&g.isIdentifier(r.declaration.id)&&t.push(r.declaration.id.name);return n.skip()}}),t}async function Tc(o,e){let t=[];return traverse(o,{ImportDeclaration:n=>{let{node:r}=n,i=Promise.resolve(e(ed(r)));return i!==void 0&&t.push(i.then(a=>typeof a=="string"&&r.source.value!==a?(r.source.value=a,true):false)),n.skip()}}),(await Promise.all(t)).some(n=>n)}function ed(o){let e={names:[],source:o.source.value};for(let t of o.specifiers)g.isImportSpecifier(t)&&e.names.push(g.isIdentifier(t.imported)?t.imported.name:t.imported.value);return e}var fa=class{async apply(e,t){let n=await Tc(e,t.transformer);return {result:e,modified:n}}};var ya=class{constructor(...e){this.codemods=e;}async apply(e,t){let n=e,r=false;for(let i of this.codemods){let a=await i.apply(n,t);n=a.result,r=r||a.modified;}return {modified:r,result:n}}};var ha=class o{constructor(e,t){this.client=e,this.cache=t;}getHierarchy(e){return this.cache.get(o.getHierarchyKey(e),async()=>{let t=await this.resolveHierarchy(e);return await this.saveCache(e,t),t})}async resolveHierarchy(e){let{data:{organization:t}}=await this.client.execute(cp,e),n=t?.id,r=t?.workspace?.id,i=t?.workspace?.application?.id;return o.checkMissing("organization",e.organizationSlug,n),"workspaceSlug"in e?(o.checkMissing("workspace",e.workspaceSlug,r),"applicationSlug"in e?(o.checkMissing("application",e.applicationSlug,i),{organizationId:n,workspaceId:r,applicationId:i}):{organizationId:n,workspaceId:r}):{organizationId:n}}async saveCache(e,t){let n=[this.setCache({organizationSlug:e.organizationSlug},{organizationId:t.organizationId})];"workspaceId"in t&&"workspaceSlug"in e&&n.push(this.setCache({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug},{organizationId:t.organizationId,workspaceId:t.workspaceId})),"applicationId"in t&&"applicationSlug"in e&&n.push(this.setCache({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,applicationSlug:e.applicationSlug},{organizationId:t.organizationId,workspaceId:t.workspaceId,applicationId:t.applicationId})),await Promise.all(n);}setCache(e,t){return this.cache.set(o.getHierarchyKey(e),t)}static getHierarchyKey(e){let t=[`organization:${e.organizationSlug}`];return "workspaceSlug"in e&&t.push(`workspace:${e.workspaceSlug}`),"applicationSlug"in e&&t.push(`application${e.applicationSlug}`),t.join("/")}static checkMissing(e,t,n){if(n===void 0)throw new te(`No ${e} found with slug "${t}".`,[],{reason:"not_found"})}};var Sa=class o{constructor(e){this.instances=new Map;this.configuration=e,this.skipPrompts=e.skipPrompts,this.initialDirectory=e.directories.current??e.process.getCurrentDirectory(),this.workingDirectory=new Jo(this.initialDirectory);}static{this.READ_ONLY_COMMANDS=new Set([On,on,an,kt,At,nn,rn,cn,Bt]);}static fromDefaults(e){let t=nd("com.croct.cli"),n=new na;return new o({program:e.program??(()=>{throw new d("CLI is running in standalone mode.")}),process:e.process??n,quiet:e.quiet??false,debug:e.debug??false,interactive:e.interactive??!rd.isCI,apiKey:e.apiKey,skipPrompts:e.skipPrompts??false,adminTokenDuration:e.adminTokenDuration??7*gt.LocalTime.SECONDS_PER_DAY,apiKeyTokenDuration:e.apiKeyTokenDuration??30*gt.LocalTime.SECONDS_PER_MINUTE,cliTokenDuration:e.cliTokenDuration??90*gt.LocalTime.SECONDS_PER_DAY,cliTokenFreshPeriod:e.cliTokenFreshPeriod??15*gt.LocalTime.SECONDS_PER_DAY,cliTokenIssuer:e.cliTokenIssuer??"croct.com",deepLinkProtocol:e.deepLinkProtocol??"croct",templateRegistryUrl:e.templateRegistryUrl??new URL("github:/croct-tech/templates/templates/registry.json5"),adminUrl:e.adminUrl??new URL("https://app.croct.com"),adminTokenParameter:e.adminTokenParameter??"accessToken",adminGraphqlEndpoint:e?.adminGraphqlEndpoint??new URL("https://app.croct.com/graphql"),directories:{current:e.directories?.current??n.getCurrentDirectory(),config:e.directories?.config??t.config(),cache:e.directories?.cache??t.cache(),data:e.directories?.data??t.data(),home:e.directories?.home??homedir()},verificationLinkDestination:{accountActivation:e.verificationLinkDestination?.accountActivation??"./cli",passwordReset:e.verificationLinkDestination?.passwordReset??"./cli"},emailSubject:{passwordReset:e.emailSubject?.passwordReset??"Forgot password",accountActivation:e.emailSubject?.accountActivation??"Welcome to Croct"}})}welcome(e){return this.execute(new On({packageManager:this.getNodePackageManager(),protocolRegistryProvider:this.getProtocolRegistryProvider(),cliPackage:"croct@latest",protocolHandler:{id:"com.croct.cli",name:"croct-cli",protocol:this.configuration.deepLinkProtocol},io:{input:this.getInput(),output:this.getOutput()}}),e)}open(e){return this.execute(new $o({program:this.configuration.program,protocol:this.configuration.deepLinkProtocol,configurationProvider:this.getCliConfigurationStore(),workingDirectory:new Qo(this.configuration.process),fileSystem:this.getFileSystem(),io:{input:this.getInput(),output:this.getOutput()}}),e)}init(e){return this.execute(new rr({sdkProvider:this.getSdkProvider(),platformProvider:this.getPlatformProvider(),configurationManager:this.getConfigurationManager(),skipConfirmation:new Ro(new Tn(new En(new Cn({fileSystem:this.getFileSystem(),files:[".git"]})))),api:{user:this.getUserApi(),organization:this.getOrganizationApi(),workspace:this.getWorkspaceApi()},form:{organization:new pr({input:this.getFormInput(),output:this.getOutput(),userApi:this.getUserApi()}),workspace:new cr({input:this.getFormInput(),output:this.getOutput(),organizationApi:this.getOrganizationApi()}),application:new lr({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()})},io:{input:this.getInput(),output:this.getOutput()}}),e)}install(e){return this.execute(new on({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),io:{input:this.getInput(),output:this.getOutput()}}),e)}upgrade(e){return this.execute(new an({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),form:{slotForm:new Qe({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),componentForm:new Be({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()})},io:{input:this.getInput(),output:this.getOutput()}}),e)}addSlot(e){return this.execute(new kt({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),workspaceApi:this.getWorkspaceApi(),slotForm:new Qe({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),io:{input:this.getInput(),output:this.getOutput()}}),e)}removeSlot(e){return this.execute(new nn({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),slotForm:new Qe({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),io:{input:this.getInput(),output:this.getOutput()}}),e)}addComponent(e){return this.execute(new At({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),componentForm:new Be({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),io:{input:this.getInput(),output:this.getOutput()}}),e)}removeComponent(e){return this.execute(new rn({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),componentForm:new Be({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),io:{input:this.getInput(),output:this.getOutput()}}),e)}login(e){return this.execute(new ir({authenticator:this.getAuthenticator()}),e)}logout(){return this.execute(new Bt({authenticator:this.getAuthenticator(),output:this.getOutput()}),{})}admin(e){return this.execute(new fr({output:this.getOutput(),pageForm:new Cr({input:this.getFormInput()}),configurationManager:this.getConfigurationManager(),userApi:this.getUserApi(),adminUrl:this.configuration.adminUrl,adminTokenParameter:this.configuration.adminTokenParameter,adminTokenDuration:this.configuration.adminTokenDuration}),e)}createTemplate(e){return this.execute(new cn({configurationManager:this.getConfigurationManager(),fileSystem:this.getFileSystem(),templateForm:new Vr({input:this.getFormInput(),form:{component:new Be({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),slot:new Qe({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),experience:new Ur({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),audience:new qr({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()})}}),io:{input:this.getInput(),output:this.getOutput()}}),e)}useTemplate(e){return this.execute(this.getUseTemplateCommand(),e)}async getTemplateOptions(e){let t=this.getUseTemplateCommand(),r=this.getOutput().notify("Loading template");try{return await t.getOptions(e)}finally{r.stop();}}getUseTemplateCommand(){return new Hr({templateProvider:new Mt({provider:new dn(this.getTemplateProvider()),validator:new hn}),fileSystem:this.getFileSystem(),action:this.getImportAction(),io:{input:this.getInput(),output:this.getOutput()}})}createApiKey(e){return this.execute(new Ko({fileSystem:this.getFileSystem(),configurationManager:this.getConfigurationManager(),api:{user:this.getUserApi(),workspace:this.getWorkspaceApi(),application:this.getApplicationApi()},io:{input:this.getFormInput(),output:this.getOutput()}}),e)}getFormInput(e){return this.getInput()??this.getNonInteractiveInput(e)}getNonInteractiveInput(e){return new Rn(new Ar(e??{message:"Input is not available in non-interactive mode."}))}getInput(){if(this.configuration.interactive)return this.share(this.getInput,()=>{let e=this.getOutput(),t=new Kn({input:this.configuration.process.getStandardInput(),output:this.configuration.process.getStandardOutput(),onAbort:()=>e.exit(),onInteractionStart:()=>e.suspend(),onInteractionEnd:()=>e.resume()});return this.skipPrompts?new Rn(t):t})}getNonInteractiveOutput(e=false){let{configuration:t}=this;return new Qt({output:t.process.getStandardOutput(),formatter:this.getLogFormatter(),interactive:false,quiet:e,onExit:()=>t.process.exit(),linkOpener:async n=>{await Oc(n,{wait:true});}})}getHierarchicalLogger(){return this.share(this.getHierarchicalLogger,()=>new la(this.getLogger()))}getLogger(){return this.share(this.getLogger,()=>{let e=new ua(this.getOutput());return this.configuration.debug?e:new FilteredLogger(e,LogLevel.WARNING)})}getOutput(){return this.share(this.getOutput,()=>{let{configuration:e}=this;return new Qt({output:e.process.getStandardOutput(),formatter:this.getLogFormatter(),interactive:this.configuration.interactive,quiet:this.configuration.quiet,onExit:()=>e.process.exit(),linkOpener:async t=>{await Oc(t);}})})}getLogFormatter(){return this.share(this.getLogFormatter,()=>new ea)}getTemplateProvider(){return this.share(this.getTemplateProvider,()=>{let e=n=>new Xe(...["template.json5","template.json"].map(r=>new Dt({dataProvider:n,registryProvider:new xn([{pattern:/^(https:\/\/(?:www\.)?github.com\/[^/]+\/[^/]+)\/?$/,destination:`$1/blob/main/${r}`},{pattern:/^(.+?:\/*[^/]+(\/+[^/.]+|\/[^/]+(?=\/))*)\/*$/,destination:`$1/${r}`}])}))),t=this.traceProvider({provider:this.getHttpProvider()});return this.traceProvider({label:"TemplateProvider",provider:new fn({resourceCache:new AutoSaveCache(new InMemoryCache),errorCache:new InMemoryCache,provider:new Xe(new Dt({dataProvider:this.traceProvider({label:"ResourceProvider",provider:e(new mt(new Xe(this.traceProvider({provider:new ln(t)}),this.traceProvider({provider:new un(t)}))))}),registryProvider:this.traceProvider({label:"NpmRegistryProvider",provider:new oa(new Mt({provider:aa.json(this.traceProvider({provider:this.getHttpProvider()})),validator:new sa}))})}),e(new mt(this.getFileProvider())))})})})}getFileProvider(){return this.share(this.getFileProvider,()=>{let e=this.traceProvider({provider:this.getHttpProvider()}),t=this.traceProvider({provider:new ai(this.getFileSystem())}),n=new Xe(t,this.traceProvider({provider:new ln(e)}),this.traceProvider({provider:new un(e)}));return this.traceProvider({label:"FileProvider",provider:new Xe(t,this.traceProvider({provider:new Dt({baseUrl:new URL("./",this.configuration.templateRegistryUrl),dataProvider:this.traceProvider({label:"ResourceProvider",provider:n}),registryProvider:new Li({url:this.configuration.templateRegistryUrl,provider:this.traceProvider({label:"GlobalRegistryProvider",provider:new fn({errorCache:new InMemoryCache,resourceCache:new AutoSaveCache(new InMemoryCache),provider:new Mt({provider:new dn(new mt(n)),validator:new li})})})})})}))})})}traceProvider({provider:e,label:t}){return new ca({label:t,provider:e,logger:this.getHierarchicalLogger()})}getImportAction(){return this.share(this.getImportAction,()=>{let e=this.getFileSystem(),t={run:new L({action:new Ye(new Oe(()=>new Ji(t))),validator:new Qi}),try:new L({action:new Ye(new Oe(()=>new Yr(t.run))),validator:new yi}),test:new L({action:new Ye(new Oe(()=>new Ti(t.run))),validator:new Di}),repeat:new L({action:new Ye(new Oe(()=>new To(t.run))),validator:new Oo}),print:new L({action:new Mi,validator:new $i}),fail:new L({action:new zi,validator:new _i}),define:new L({action:new eo,validator:new Xi}),prompt:new L({action:new qi,validator:new Hi}),"change-directory":new L({action:new ao({fileSystem:e,rootDirectory:this.initialDirectory,currentDirectory:this.workingDirectory}),validator:new oo}),"open-link":new L({action:new Bi,validator:new Yi}),"start-server":new L({action:new Gi({serverProvider:this.getServerProvider()}),validator:new Zi}),"stop-server":new L({action:new to({serverProvider:this.getServerProvider()}),validator:new no}),"execute-package":new L({action:new po({packageManager:this.getPackageManager(),packageManagerProvider:this.getPackageManagerRegistry(),workingDirectory:this.workingDirectory,commandExecutor:new fo({cols:80,rows:24}),commandTimeout:2*60*1e3,sourceChecker:{test:()=>true}}),validator:new co}),"check-dependencies":new L({action:new oi({packageManager:this.getPackageManager()}),validator:new hi}),download:new L({action:new Gr({fileSystem:e,provider:this.getFileProvider(),codemod:new da({codemods:{"**/*.{js,jsx,ts,tsx}":new ya(new ma({fileSystem:e,rootPath:this.workingDirectory,maxSearchDepth:10,importResolver:this.getNodeImportResolver(),importCodemod:new Ue({fileSystem:e,codemod:new We({languages:["typescript","jsx"],codemod:new fa})}),exportMatcher:{test:(n,{names:r})=>r.length===0?true:Rc(n).some(i=>r.includes(i))}}),new Ve(this.getJavaScriptFormatter()))}})}),validator:new Si}),"add-dependency":new L({action:new Kr({packageManager:this.getPackageManager()}),validator:new Ii}),"locate-file":new L({action:new Zr({projectDirectory:this.workingDirectory,fileSystem:e,matcherProvider:{get:async n=>{let r=e.joinPaths(this.workingDirectory.get(),".gitignore"),i=ko.fromPattern(n);if(await e.exists(r)){let a=await e.readTextFile(r);return new Ao(new En(Eo.fromPatterns(a)),i)}return i}}}),validator:new xi}),"replace-file-content":new L({action:new Jr({fileSystem:e}),validator:new vi}),initialize:new L({action:new ra({callback:()=>this.init({})}),validator:new ia}),"add-slot":new L({action:new Qr({installer:(n,r)=>{let i=this.getNonInteractiveOutput(true);return this.execute(new kt({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),workspaceApi:this.getWorkspaceApi(),slotForm:new Qe({input:this.getNonInteractiveInput(),output:i,workspaceApi:this.getWorkspaceApi()}),io:{output:i}}),{slots:n,example:r})}}),validator:new Pi}),"add-component":new L({action:new Br({installer:n=>{let r=this.getNonInteractiveOutput(true);return this.execute(new At({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),componentForm:new Be({input:this.getNonInteractiveInput(),output:r,workspaceApi:this.getWorkspaceApi()}),io:{output:r}}),{components:n})}}),validator:new Ci}),"create-resource":new L({action:new ti({configurationManager:this.getConfigurationManager(),matcher:new ri({workspaceApi:this.getWorkspaceApi()}),api:{user:this.getUserApi(),workspace:this.getWorkspaceApi(),organization:this.getOrganizationApi()},mappingForm:new ni({input:this.getFormInput({message:"Some resource IDs are in use and interactive mode is required to assign new ones.",suggestions:["Retry in interactive mode"]}),workspaceApi:this.getWorkspaceApi()})}),validator:new ki}),"format-code":new L({action:new Ei({formatter:this.getCodeFormatter()}),validator:new Ri}),import:new L({action:new Ye(new Oe(()=>new di({runner:t.run,templateProvider:new fi({evaluator:new ui({functions:ns}),validator:new hn,templateProvider:this.getTemplateProvider(),fileProvider:new mt(this.getFileProvider())}),variables:this.getActionVariables()}))),validator:new Ai})};return t.import})}getActionVariables(){let e=t=>new URL(t,this.configuration.adminUrl).toString();return {project:{features:ne.transient(async()=>{let{organization:t,workspace:n}=await this.getConfigurationManager().load(),{features:r}=await this.getWorkspaceApi().getFeatures({organizationSlug:t,workspaceSlug:n})??{};return r??{}}),quotas:ne.transient(async()=>{let{organization:t,workspace:n}=await this.getConfigurationManager().load(),{quotas:r}=await this.getWorkspaceApi().getFeatures({organizationSlug:t,workspaceSlug:n})??{};return r??{}}),organization:ne.transient(async()=>{let{organization:t}=await this.getConfigurationManager().load();return {slug:t,url:e(`organizations/${t}`)}}),workspace:ne.transient(async()=>{let{organization:t,workspace:n}=await this.getConfigurationManager().load();return {slug:n,url:e(`organizations/${t}/workspaces/${n}`)}}),application:ne.transient(async()=>{let{organization:t,workspace:n,applications:r}=await this.getConfigurationManager().load(),i=`organizations/${t}/workspaces/${n}/applications/`;return {development:{slug:r.development,url:e(i+r.development)},production:{slug:r.production,url:e(i+r.production)}}}),path:{example:ne.transient(async()=>(await this.getConfigurationManager().load()).paths.examples),component:ne.transient(async()=>(await this.getConfigurationManager().load()).paths.components)},platform:ne.transient(async()=>await this.getPlatformProvider().get()??"unknown"),server:ne.transient(async()=>{let n=await this.getServerProvider().get();if(n===null)return null;try{let r=await n.getStatus();if(r.running)return {running:!0,url:r.url.toString()}}catch{}return {running:false}})}}}getHttpProvider(){return this.share(this.getHttpProvider,()=>new ii)}getAuthenticator(){return this.share(this.getAuthenticator,()=>{if(this.configuration.apiKey!==void 0)return new Zo({apiKey:this.configuration.apiKey,clock:this.getClock(),tokenDuration:this.configuration.apiKeyTokenDuration});let e=this.getFormInput(),t=this.getFileSystem(),n=new mr({input:e,output:this.getOutput(),userApi:this.getUserApi(true),form:{signIn:new dr({input:e,output:this.getOutput(),userApi:this.getUserApi(true),listener:this.getTokenListener(),tokenDuration:this.configuration.cliTokenDuration,emailLinkGenerator:{recovery:this.createEmailLinkGenerator(this.configuration.emailSubject.passwordReset),verification:this.createEmailLinkGenerator(this.configuration.emailSubject.accountActivation)},verificationLinkDestination:{accountActivation:this.configuration.verificationLinkDestination.accountActivation,passwordReset:this.configuration.verificationLinkDestination.passwordReset}}),signUp:new gr({input:e,output:this.getOutput(),userApi:this.getUserApi(true),listener:this.getTokenListener(),emailLinkGenerator:this.createEmailLinkGenerator(this.configuration.emailSubject.accountActivation),verificationLinkDestination:this.configuration.verificationLinkDestination.accountActivation})}}),r=this.getUserApi(true),i=new Bo({cacheKey:"token",cacheProvider:new Yo({clock:this.getClock(),tokenFreshPeriod:this.configuration.cliTokenFreshPeriod,tokenIssuer:()=>r.issueToken({duration:this.configuration.cliTokenDuration}),cacheProvider:new gn({fileSystem:t,directory:this.configuration.directories.config,useKeyAsFileName:true})}),authenticator:new Er({default:this.configuration.interactive?n:new kr({authenticator:n,instruction:{message:"Authentication required.",suggestions:["Run `login` to authenticate"],reason:"precondition"}}),credentials:n})});return this.configuration.interactive?new qo({authenticator:i,invitationForm:new Uo({output:this.getOutput(),input:e,userApi:this.getUserApi(true)})}):i})}getSdk(){return this.share(this.getSdk,()=>{let e=new Wt(this.getSdkProvider(),new Oe(()=>{throw new U("No suitable SDK detected.",{reason:"not_supported",suggestions:["Make sure you are running the command in the project root directory."]})}));return new Po(e)})}getSdkProvider(){return this.share(this.getSdkProvider,()=>{let e=this.getJavaScriptFormatter(),t=this.getFileSystem(),n=this.getNodeImportResolver(),r={projectDirectory:this.workingDirectory,packageManager:this.getNodePackageManager(),fileSystem:t,formatter:e,workspaceApi:this.getWorkspaceApi(),tsConfigLoader:this.getTsConfigLoader()},i=Symbol("unknown");return new Lt({discriminator:async()=>await this.getPlatformProvider().get()??i,mapping:{javascript:()=>new Yn({...r,bundlers:["vite","parcel","tsup","rollup"]}),react:()=>new Xn({...r,importResolver:n,codemod:{provider:new Ve(e,new Ue({fileSystem:this.getFileSystem(),codemod:new We({languages:["typescript","jsx"],codemod:new pt({fallbackToNamedExports:true,wrapper:{module:"@croct/plug-react",component:"CroctProvider"},targets:{variable:"children"}})})}))},bundlers:[{package:"react-scripts",prefix:"process.env.REACT_APP_"},{package:"vite",prefix:"import.meta.env.VITE_"},{package:"parcel",prefix:"process.env."}]}),nextjs:()=>{let a={appId:{type:"reference",path:["process","env","NEXT_PUBLIC_CROCT_APP_ID"]},debug:{type:"comparison",operator:"===",left:{type:"reference",path:["process","env","NEXT_PUBLIC_CROCT_DEBUG"]},right:{type:"literal",value:"true"}}};return new nr({...r,userApi:this.getUserApi(),applicationApi:this.getApplicationApi(),importResolver:n,codemod:{middleware:new Ve(e,new Ue({fileSystem:this.getFileSystem(),codemod:new We({languages:["typescript","jsx"],codemod:new Ir({import:{module:"@croct/plug-next/middleware",middlewareName:"middleware",middlewareFactoryName:"withCroct",configName:"config",matcherName:"matcher",matcherLocalName:"croctMatcher"}})})})),appRouterProvider:new Ve(e,new Ue({fileSystem:this.getFileSystem(),codemod:new We({languages:["typescript","jsx"],codemod:new pt({fallbackToNamedExports:false,fallbackCodemod:new xr({provider:{component:"CroctProvider",module:"@croct/plug-next/CroctProvider"}}),wrapper:{module:"@croct/plug-next/CroctProvider",component:"CroctProvider"},targets:{variable:"children"}})})})),pageRouterProvider:new Ve(e,new Ue({fileSystem:this.getFileSystem(),codemod:new We({languages:["typescript","jsx"],codemod:new pt({fallbackToNamedExports:false,fallbackCodemod:new tn({provider:{component:"CroctProvider",module:"@croct/plug-next/CroctProvider"}}),wrapper:{module:"@croct/plug-next/CroctProvider",component:"CroctProvider"},targets:{component:"Component"}})})})),fallbackProvider:new Ve(e,new Ue({fileSystem:this.getFileSystem(),codemod:new We({languages:["typescript","jsx"],codemod:new pt({fallbackToNamedExports:false,fallbackCodemod:new tn({provider:{component:"CroctProvider",module:"@croct/plug-react",props:a}}),wrapper:{module:"@croct/plug-react",component:"CroctProvider",props:a},targets:{component:"Component"}})})}))}})},[i]:()=>null}})})}getCodeFormatter(){return this.share(this.getCodeFormatter,()=>{let e=Symbol("unknown");return new wo(new Lt({discriminator:async()=>await this.getPlatformProvider().get()??e,mapping:{javascript:()=>this.getJavaScriptFormatter(),react:()=>this.getJavaScriptFormatter(),nextjs:()=>this.getJavaScriptFormatter(),[e]:()=>{throw new U("No code formatter detected.",{reason:"not_supported",suggestions:["Make sure you are running the command in the project root directory."]})}}}))})}share(e,t){let n=this.instances.get(e);if(n===void 0){let r=t();return this.instances.set(e,r),r}return n}getPackageManagerRegistry(){return this.share(this.getPackageManagerRegistry,()=>new bo(new Map(Object.entries(this.getPackageManagers()))))}getPackageManagers(){return this.getNodePackageManagers()}getPackageManager(){return this.share(this.getPackageManager,()=>new Pn(new Wt(this.getNodePackageManagerProvider(),new Oe(()=>{throw new U("No package manager detected.",{reason:"not_supported",suggestions:["Make sure you are running the command in the project root directory.","Initialize your project and retry the command."]})}))))}getNodePackageManager(){return this.share(this.getNodePackageManager,()=>{let e=this.getNodePackageManagers();return new Pn(new Wt(this.getNodePackageManagerProvider(),new xn(e.npm)))})}getNodePackageManagerProvider(){return this.share(this.getNodePackageManagerProvider,()=>{let e=this.getNodePackageManagers(),t=this.getFileSystem(),n={npm:["package-lock.json"],yarn:["yarn.lock"],bun:["bun.lock","bun.lockb"],pnpm:["pnpm-lock.yaml"]};return new An(new Vo(new Vt({candidates:Object.entries(e).map(([r,i])=>({value:i,condition:new Wo({process:this.configuration.process,variable:"npm_config_user_agent",value:new RegExp(`^${r}`)})}))}),new Vt({candidates:Object.entries(e).map(([r,i])=>({value:i,condition:new Tn(new jo({packageManager:r,fileSystem:t,projectDirectory:this.workingDirectory}),new Cn({fileSystem:t,files:n[r]}))}))})),this.workingDirectory)})}getNodePackageManagers(){return this.share(this.getNodePackageManagers,()=>{let e=this.getFileSystem(),t={projectDirectory:this.workingDirectory,fileSystem:e,commandExecutor:this.getCommandExecutor(),executableLocator:this.getExecutableLocator()},n=new mn,r={fileSystem:e,projectDirectory:this.workingDirectory,packageValidator:n};return {npm:new et({...r,agent:new lo(t)}),yarn:new et({...r,agent:new uo(t)}),bun:new et({...r,agent:new mo(t)}),pnpm:new et({...r,agent:new go(t)})}})}getNodeServerProvider(){return this.share(this.getNodeServerProvider,()=>new Fi({packageManager:this.getNodePackageManager(),factory:this.getServerFactory(),parsers:[new ji,new Wi,new Vi,new Ui]}))}getServerProvider(){return this.share(this.getServerProvider,()=>{let e=Symbol("unknown");return new Lt({discriminator:async()=>await this.getPlatformProvider().get()??e,mapping:{javascript:()=>this.getNodeServerProvider().get(),react:()=>this.getNodeServerProvider().get(),nextjs:()=>this.getNodeServerProvider().get(),[e]:()=>null}})})}getServerFactory(){return this.share(this.getServerFactory,()=>new Co(new io({commandExecutor:this.getCommandExecutor(),workingDirectory:this.workingDirectory,startupTimeout:2e4,startupCheckDelay:1500,lookupMaxPorts:30,lookupTimeout:2e3,processObserver:this.configuration.process})))}getJavaScriptFormatter(){return this.share(this.getJavaScriptFormatter,()=>new wr({commandExecutor:this.getCommandExecutor(),workingDirectory:this.workingDirectory,packageManager:this.getNodePackageManager(),fileSystem:this.getFileSystem(),timeout:1e4,tools:[{package:"eslint",bin:"eslint",args:e=>["--fix",...e]},{package:"prettier",args:e=>["--write",...e]},{package:"@biomejs/biome",bin:"biome",args:e=>["format","--write",...e]}]}))}getNodeImportResolver(){return this.share(this.getNodeImportResolver,()=>new ho({fileSystem:this.getFileSystem(),tsConfigLoader:this.getTsConfigLoader(),projectDirectory:this.workingDirectory}))}getTsConfigLoader(){return this.share(this.getTsConfigLoader,()=>new yo({fileSystem:this.getFileSystem(),tsconfigValidator:new So}))}getCommandExecutor(){return this.share(this.getCommandExecutor,()=>new vo)}getExecutableLocator(){return this.share(this.getExecutableLocator,()=>{let{process:e}=this.configuration;return new Fo({fileSystem:this.getFileSystem(),cache:new AutoSaveCache(new InMemoryCache),executablePaths:e.getEnvList("PATH")??[],executableExtensions:e.getEnvList("PATHEXT")??[]})})}getPlatformProvider(){return this.share(this.getPlatformProvider,()=>{let e=new et({projectDirectory:this.workingDirectory,packageValidator:new mn,fileSystem:this.getFileSystem(),agent:new Io});return new An(new Vt({candidates:[{value:"nextjs",condition:new kn({packageManager:e,dependencies:["next"]})},{value:"react",condition:new kn({packageManager:e,dependencies:["react"]})},{value:"javascript",condition:new xo({packageManager:e})}]}),this.workingDirectory)})}getConfigurationManager(){return this.share(this.getConfigurationManager,()=>{let e=this.getOutput(),t=new or({fileSystem:this.getFileSystem(),validator:new pi,projectDirectory:this.workingDirectory});return new Lo({workingDirectory:this.workingDirectory,store:this.getCliConfigurationStore(),manager:new Xr(this.configuration.interactive&&!this.isReadOnlyMode()?new Pr({manager:t,initializer:{initialize:async()=>{await this.init({}),e.break();}}}):t)})})}getUserApi(e=false){return e?new en(this.getGraphqlClient(true)):this.share(this.getUserApi,()=>new en(this.getGraphqlClient()))}getOrganizationApi(){return this.share(this.getOrganizationApi,()=>new ar(this.getGraphqlClient(),this.getHierarchyResolver()))}getWorkspaceApi(){return this.share(this.getWorkspaceApi,()=>new sr(this.getGraphqlClient(),this.getHierarchyResolver()))}getApplicationApi(){return this.share(this.getApplicationApi,()=>new ur(this.getGraphqlClient(),this.getHierarchyResolver()))}getHierarchyResolver(){return this.share(this.getHierarchyResolver,()=>{let e=this.getFileSystem();return new ha(this.getGraphqlClient(),AdaptedCache.transformValues(new gn({fileSystem:e,directory:e.joinPaths(this.configuration.directories.cache,"hierarchy")}),AdaptedCache.jsonSerializer(),AdaptedCache.jsonDeserializer()))})}getGraphqlClient(e=false){return e?new Yt({endpoint:this.configuration.adminGraphqlEndpoint,tokenProvider:{getToken:()=>this.getAuthenticator().getToken()}}):this.share(this.getGraphqlClient,()=>{let t=this.getAuthenticator();return new Yt({endpoint:this.configuration.adminGraphqlEndpoint,tokenProvider:{getToken:async()=>await t.getToken()??t.login({method:"default"})}})})}getTokenListener(){return this.share(this.getTokenListener,()=>{let{configuration:e}=this;return new Dr({platform:e.process.getPlatform(),commandExecutor:this.getCommandExecutor(),timeout:2e3,listener:new Xo({api:this.getUserApi(true),pollingInterval:1e3})})})}getFileSystem(){return this.share(this.getFileSystem,()=>new Or({workingDirectory:this.workingDirectory,defaultEncoding:"utf-8"}))}createEmailLinkGenerator(e){let t=this.getEmailLinkGenerator(),n=this.getClock();return r=>t.generate({recipient:r,sender:"croct.com",subject:e,timestamp:gt.Instant.now(n).getSeconds()})}getEmailLinkGenerator(){return this.share(this.getEmailLinkGenerator,()=>new Mr({detector:new Nr(new $r,new zr),templates:{google:new _r,icloud:new Lr,microsoft:new Fr,proton:new jr,yahoo:new Wr}}))}getClock(){return Dc.SystemClock.UTC}getProtocolRegistryProvider(){return this.share(this.getProtocolRegistryProvider,()=>new Oe(()=>{let e=this.getFileSystem(),{process:t}=this.configuration;switch(t.getPlatform()){case "darwin":return new Do({fileSystem:e,appDirectory:e.joinPaths(this.configuration.directories.data,"apps"),commandExecutor:this.getCommandExecutor()});case "win32":return new Mo({commandExecutor:this.getCommandExecutor()});case "linux":return new No({fileSystem:e,homeDirectory:this.configuration.directories.home,commandExecutor:this.getCommandExecutor()});default:return null}}))}getCliConfigurationStore(){return this.share(this.getCliConfigurationStore,()=>{let e=this.getFileSystem();return new Go({fileSystem:e,store:new Ho({fileSystem:e,validator:new _o,filePath:e.joinPaths(this.configuration.directories.config,"config.json")})})})}async execute(e,t){if(this.isReadOnlyMode()&&!o.READ_ONLY_COMMANDS.has(e.constructor))return this.reportError(new d("This command does not support API key authentication.",{reason:"precondition",suggestions:["Run the command without specifying an API key."]}));try{await e.execute(t);}catch(n){let r=o.handleError(n);return n instanceof Error&&r instanceof Error&&(r.stack=n.stack),this.reportError(r)}}isReadOnlyMode(){return this.configuration.apiKey!==void 0}reportError(e){let t=this.getOutput();return t.report(o.handleError(e)),t.exit()}static handleError(e){switch(true){case e instanceof te:if(e.isAccessDenied())return new d("Your user lacks the necessary permissions to complete this operation.",{reason:"access_denied",details:e.problems.map(t=>t.detail??t.title),suggestions:["Contact your organization or workspace administrator for assistance."],cause:e});break;case e instanceof I:if(e.tracing.length>0){let t=e.tracing.map(({name:n,source:r},i)=>{let a=r!==void 0?` at ${o.getSourceLocation(r)}`:"";return `${" ".repeat(i+1)}\u21B3 \`${n}\`${a}`}).join(`
|
|
1839
|
+
`,n+=t.map(({label:r,url:i})=>` \u2022 ${ll(r,i,{fallback:()=>`${r}: ${i}`})}`).join(`
|
|
1840
|
+
`)),n}};var ea=class{constructor(){this.listeners={};}on(e,t){this.listeners[e]===void 0&&(this.listeners[e]=new Set),this.listeners[e].add(t);}off(e,t){this.listeners[e]!==void 0&&this.listeners[e].delete(t);}async emit(e,...t){this.listeners[e]!==void 0&&await Promise.all(Array.from(this.listeners[e]).map(n=>n(...t)));}};var ta=class{constructor(){this.eventDispatcher=new ea;_e.on("SIGTERM",()=>this.exit()),_e.on("SIGINT",()=>this.exit());}getCurrentDirectory(){return _e.cwd()}getEnvValue(e){return _e.env[e]??null}getEnvList(e){return this.getEnvValue(e)?.split(delimiter)??null}getPlatform(){return _e.platform}getStandardError(){return _e.stderr}getStandardInput(){return _e.stdin}getStandardOutput(){return _e.stdout}on(e,t){this.eventDispatcher.on(e,t);}off(e,t){this.eventDispatcher.off(e,t);}async exit(e){return await this.eventDispatcher.emit("exit").catch(()=>{}),_e.exit(e)}changeDirectory(e){_e.chdir(e);}};var na=class{constructor({callback:e}){this.callback=e;}async execute(e,t){try{return await this.callback(e,t)}catch(n){if(!(n instanceof I))throw I.fromCause(n)}}};var Hm=z.strictObject({}),ra=class extends w{constructor(){super(Hm);}};var ia=class o{static{this.REPOSITORY_PATTERNS=[/git\+(https:\/\/.+)\.git$/];}constructor(e){this.metadataProvider=e;}async get(e){let t=this.getMetadataUrl(e);if(t===null)throw new W("Unsupported NPM URL.",{reason:"not_supported",url:e});let{value:n}=await this.metadataProvider.get(t),r=o.getRepositoryUrl(n.repository);return r===null?{url:e,value:[]}:{url:r,value:[{pattern:".*",destination:r}]}}static getRepositoryUrl(e){for(let t of o.REPOSITORY_PATTERNS){let n=t.exec(e.url);if(n!==null)return new URL(`${n[1]}/`)}return null}getMetadataUrl(e){if(e.protocol!=="npm:")return null;let t=e.pathname.slice(1);return new URL(`https://registry.npmjs.org/${t}/latest`)}};var oa=class o{constructor({provider:e,reader:t}){this.provider=e,this.reader=t;}static text(e){return new o({provider:e,reader:t=>t.text()})}static json(e){return new o({provider:e,reader:t=>t.json()})}static blob(e){return new o({provider:e,reader:t=>t.blob()})}async get(e){let t=await this.provider.get(e),n;try{n=await this.reader(new Response(t.value.body));}catch(r){throw new W("Failed to read response body.",{reason:"unexpected_result",url:e,cause:r})}return {url:t.url,value:n}}};var Gm=z.object({name:z.string(),repository:z.object({type:z.string(),url:z.string()})}),aa=class extends Q{constructor(){super(Gm);}};var pa=class{constructor({provider:e,logger:t,label:n}){this.provider=e,this.logger=t,this.label=n;}get(e){return this.logger.nest({message:`\`${this.label??this.provider.constructor.name}\``,level:LogLevel.DEBUG},()=>this.trace(e))}async trace(e){this.logger.log({message:`URL: ${e}`,level:LogLevel.DEBUG});try{let t=await this.provider.get(e);return this.logger.log({message:"No errors",level:LogLevel.DEBUG}),t}catch(t){throw this.logger.log({message:`Error: ${d.formatMessage(t)}`,level:LogLevel.DEBUG}),t}}};var ca=class{constructor(e){this.storage=new AsyncLocalStorage;this.logger=e;}nest(e,t){let n=this.storage.getStore();if(n!==void 0)return this.logNested(n,e,t);let r={level:0,logs:[]};return this.storage.run(r,()=>this.logNested(r,e,t))}async logNested(e,t,n){this.buffer(e,{...t,message:`\u250C\u2500 ${t.message}`}),e.level++;try{return await n()}finally{e.level--,this.buffer(e,{...t,message:"\u2514\u2500"}),e.level===0&&(e.logs.forEach(r=>this.logger.log(r)),e.logs=[]);}}log(e){let t=this.storage.getStore();if(t!==void 0){this.buffer(t,e);return}this.logger.log(e);}buffer(e,t){e.logs.push({...t,message:`${e.level>0?`${"\u2502 ".repeat(e.level-1)}\u2502 `:""}${t.message}`});}};var la=class{constructor(e){this.output=e;}log(e){switch(e.level){case "debug":this.output.debug(e.message);break;case "info":this.output.inform(e.message);break;case "warning":this.output.warn(e.message);break;case "error":this.output.alert(e.message);}}};var ua=class o{static{this.PREFIX="?/";}constructor(e){this.rootPath=e.rootPath,this.importResolver=e.importResolver,this.exportMatcher=e.exportMatcher,this.importCodemod=e.importCodemod,this.fileSystem=e.fileSystem,this.maxSearchDepth=e.maxSearchDepth;}apply(e){return this.importCodemod.apply(e,{transformer:t=>{if(!t.source.startsWith(o.PREFIX))return;let n=t.source.slice(o.PREFIX.length);return this.resolvePath(t,n,e)}})}async resolvePath(e,t,n){let r=new Minimatch(t);for await(let i of this.fileSystem.list(this.rootPath.get(),this.maxSearchDepth))if(i.type==="file"&&r.match(i.name)&&await this.exportMatcher.test(await new Response(i.content).text(),e))return this.importResolver.getImportPath(i.name,n);throw new He(`Unable to resolve import \`${t}\` from \`${n}\`.`,{reason:"not_found"})}};var ma=class{constructor({codemods:e}){this.codemods=e;}apply(e,t){let[,n]=Object.entries(this.codemods).find(([r])=>minimatch(e,r))??[];return n===void 0?Promise.resolve({modified:false,result:e}):n.apply(e,t)}};function Ec(o){let e=typeof o=="string"?Ge(o,["jsx","typescript"]):o,t=[];return traverse(e,{ExportDeclaration:n=>{let{node:r}=n;if(g.isExportNamedDeclaration(r))if(r.specifiers.length>0)for(let i of r.specifiers)g.isExportSpecifier(i)?(!g.isIdentifier(i.exported)||i.exported.name!=="default")&&t.push(g.isIdentifier(i.exported)?i.exported.name:i.exported.value):g.isExportNamespaceSpecifier(i)&&g.isIdentifier(i.exported)&&t.push(i.exported.name);else if(g.isVariableDeclaration(r.declaration))for(let i of r.declaration.declarations)g.isVariableDeclarator(i)&&g.isIdentifier(i.id)&&t.push(i.id.name);else typeof r.declaration=="object"&&r.declaration!==null&&"id"in r.declaration&&g.isIdentifier(r.declaration.id)&&t.push(r.declaration.id.name);return n.skip()}}),t}async function Rc(o,e){let t=[];return traverse(o,{ImportDeclaration:n=>{let{node:r}=n,i=Promise.resolve(e(Ym(r)));return i!==void 0&&t.push(i.then(a=>typeof a=="string"&&r.source.value!==a?(r.source.value=a,true):false)),n.skip()}}),(await Promise.all(t)).some(n=>n)}function Ym(o){let e={names:[],source:o.source.value};for(let t of o.specifiers)g.isImportSpecifier(t)&&e.names.push(g.isIdentifier(t.imported)?t.imported.name:t.imported.value);return e}var ga=class{async apply(e,t){let n=await Rc(e,t.transformer);return {result:e,modified:n}}};var fa=class{constructor(...e){this.codemods=e;}async apply(e,t){let n=e,r=false;for(let i of this.codemods){let a=await i.apply(n,t);n=a.result,r=r||a.modified;}return {modified:r,result:n}}};var ya=class o{constructor(e,t){this.client=e,this.cache=t;}getHierarchy(e){return this.cache.get(o.getHierarchyKey(e),async()=>{let t=await this.resolveHierarchy(e);return await this.saveCache(e,t),t})}async resolveHierarchy(e){let{data:{organization:t}}=await this.client.execute(pp,e),n=t?.id,r=t?.workspace?.id,i=t?.workspace?.application?.id;return o.checkMissing("organization",e.organizationSlug,n),"workspaceSlug"in e?(o.checkMissing("workspace",e.workspaceSlug,r),"applicationSlug"in e?(o.checkMissing("application",e.applicationSlug,i),{organizationId:n,workspaceId:r,applicationId:i}):{organizationId:n,workspaceId:r}):{organizationId:n}}async saveCache(e,t){let n=[this.setCache({organizationSlug:e.organizationSlug},{organizationId:t.organizationId})];"workspaceId"in t&&"workspaceSlug"in e&&n.push(this.setCache({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug},{organizationId:t.organizationId,workspaceId:t.workspaceId})),"applicationId"in t&&"applicationSlug"in e&&n.push(this.setCache({organizationSlug:e.organizationSlug,workspaceSlug:e.workspaceSlug,applicationSlug:e.applicationSlug},{organizationId:t.organizationId,workspaceId:t.workspaceId,applicationId:t.applicationId})),await Promise.all(n);}setCache(e,t){return this.cache.set(o.getHierarchyKey(e),t)}static getHierarchyKey(e){let t=[`organization:${e.organizationSlug}`];return "workspaceSlug"in e&&t.push(`workspace:${e.workspaceSlug}`),"applicationSlug"in e&&t.push(`application${e.applicationSlug}`),t.join("/")}static checkMissing(e,t,n){if(n===void 0)throw new ne(`No ${e} found with slug "${t}".`,[],{reason:"not_found"})}};var ha=class o{constructor(e){this.instances=new Map;this.configuration=e,this.skipPrompts=e.skipPrompts,this.initialDirectory=e.directories.current??e.process.getCurrentDirectory(),this.workingDirectory=new Zo(this.initialDirectory);}static{this.READ_ONLY_COMMANDS=new Set([Tn,rn,on,kt,At,tn,nn,pn,Qt]);}static fromDefaults(e){let t=ed("com.croct.cli"),n=new ta;return new o({program:e.program??(()=>{throw new d("CLI is running in standalone mode.")}),process:e.process??n,quiet:e.quiet??false,debug:e.debug??false,interactive:e.interactive??!td.isCI,apiKey:e.apiKey,skipPrompts:e.skipPrompts??false,adminTokenDuration:e.adminTokenDuration??7*gt.LocalTime.SECONDS_PER_DAY,apiKeyTokenDuration:e.apiKeyTokenDuration??30*gt.LocalTime.SECONDS_PER_MINUTE,cliTokenDuration:e.cliTokenDuration??90*gt.LocalTime.SECONDS_PER_DAY,cliTokenFreshPeriod:e.cliTokenFreshPeriod??15*gt.LocalTime.SECONDS_PER_DAY,cliTokenIssuer:e.cliTokenIssuer??"croct.com",deepLinkProtocol:e.deepLinkProtocol??"croct",templateRegistryUrl:e.templateRegistryUrl??new URL("github:/croct-tech/templates/templates/registry.json5"),adminUrl:e.adminUrl??new URL("https://app.croct.com"),adminTokenParameter:e.adminTokenParameter??"accessToken",adminGraphqlEndpoint:e?.adminGraphqlEndpoint??new URL("https://app.croct.com/graphql"),directories:{current:e.directories?.current??n.getCurrentDirectory(),config:e.directories?.config??t.config(),cache:e.directories?.cache??t.cache(),data:e.directories?.data??t.data(),home:e.directories?.home??homedir()},verificationLinkDestination:{accountActivation:e.verificationLinkDestination?.accountActivation??"./cli",passwordReset:e.verificationLinkDestination?.passwordReset??"./cli"},emailSubject:{passwordReset:e.emailSubject?.passwordReset??"Forgot password",accountActivation:e.emailSubject?.accountActivation??"Welcome to Croct"}})}welcome(e){return this.execute(new Tn({packageManager:this.getNodePackageManager(),protocolRegistryProvider:this.getProtocolRegistryProvider(),cliPackage:"croct@latest",protocolHandler:{id:"com.croct.cli",name:"croct-cli",protocol:this.configuration.deepLinkProtocol},io:{input:this.getInput(),output:this.getOutput()}}),e)}open(e){return this.execute(new No({program:this.configuration.program,protocol:this.configuration.deepLinkProtocol,configurationProvider:this.getCliConfigurationStore(),workingDirectory:new Jo(this.configuration.process),fileSystem:this.getFileSystem(),io:{input:this.getInput(),output:this.getOutput()}}),e)}init(e){return this.execute(new nr({sdkProvider:this.getSdkProvider(),platformProvider:this.getPlatformProvider(),configurationManager:this.getConfigurationManager(),skipConfirmation:new Eo(new Rn(new An(new Cn({fileSystem:this.getFileSystem(),files:[".git"]})))),api:{user:this.getUserApi(),organization:this.getOrganizationApi(),workspace:this.getWorkspaceApi()},form:{organization:new sr({input:this.getFormInput(),output:this.getOutput(),userApi:this.getUserApi()}),workspace:new pr({input:this.getFormInput(),output:this.getOutput(),organizationApi:this.getOrganizationApi()}),application:new cr({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()})},io:{input:this.getInput(),output:this.getOutput()}}),e)}install(e){return this.execute(new rn({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),io:{input:this.getInput(),output:this.getOutput()}}),e)}upgrade(e){return this.execute(new on({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),form:{slotForm:new Je({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),componentForm:new Qe({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()})},io:{input:this.getInput(),output:this.getOutput()}}),e)}addSlot(e){return this.execute(new kt({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),workspaceApi:this.getWorkspaceApi(),slotForm:new Je({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),io:{input:this.getInput(),output:this.getOutput()}}),e)}removeSlot(e){return this.execute(new tn({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),slotForm:new Je({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),io:{input:this.getInput(),output:this.getOutput()}}),e)}addComponent(e){return this.execute(new At({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),componentForm:new Qe({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),io:{input:this.getInput(),output:this.getOutput()}}),e)}removeComponent(e){return this.execute(new nn({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),componentForm:new Qe({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),io:{input:this.getInput(),output:this.getOutput()}}),e)}login(e){return this.execute(new rr({authenticator:this.getAuthenticator()}),e)}logout(){return this.execute(new Qt({authenticator:this.getAuthenticator(),output:this.getOutput()}),{})}admin(e){return this.execute(new gr({output:this.getOutput(),pageForm:new Cr({input:this.getFormInput()}),configurationManager:this.getConfigurationManager(),userApi:this.getUserApi(),adminUrl:this.configuration.adminUrl,adminTokenParameter:this.configuration.adminTokenParameter,adminTokenDuration:this.configuration.adminTokenDuration}),e)}createTemplate(e){return this.execute(new pn({configurationManager:this.getConfigurationManager(),fileSystem:this.getFileSystem(),templateForm:new Wr({input:this.getFormInput(),form:{component:new Qe({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),slot:new Je({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),experience:new Vr({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()}),audience:new Ur({input:this.getFormInput(),output:this.getOutput(),workspaceApi:this.getWorkspaceApi()})}}),io:{input:this.getInput(),output:this.getOutput()}}),e)}useTemplate(e){return this.execute(this.getUseTemplateCommand(),e)}async getTemplateOptions(e){let t=this.getUseTemplateCommand(),r=this.getOutput().notify("Loading template");try{return await t.getOptions(e)}finally{r.stop();}}getUseTemplateCommand(){return new qr({templateProvider:new Mt({provider:new mn(this.getTemplateProvider()),validator:new yn}),fileSystem:this.getFileSystem(),action:this.getImportAction(),io:{input:this.getInput(),output:this.getOutput()}})}createApiKey(e){return this.execute(new Go({fileSystem:this.getFileSystem(),configurationManager:this.getConfigurationManager(),api:{user:this.getUserApi(),workspace:this.getWorkspaceApi(),application:this.getApplicationApi()},io:{input:this.getFormInput(),output:this.getOutput()}}),e)}getFormInput(e){return this.getInput()??this.getNonInteractiveInput(e)}getNonInteractiveInput(e){return new En(new kr(e??{message:"Input is not available in non-interactive mode."}))}getInput(){if(this.configuration.interactive)return this.share(this.getInput,()=>{let e=this.getOutput(),t=new Gn({input:this.configuration.process.getStandardInput(),output:this.configuration.process.getStandardOutput(),onAbort:()=>e.exit(),onInteractionStart:()=>e.suspend(),onInteractionEnd:()=>e.resume()});return this.skipPrompts?new En(t):t})}getNonInteractiveOutput(e=false){let{configuration:t}=this;return new Jt({output:t.process.getStandardOutput(),formatter:this.getLogFormatter(),interactive:false,quiet:e,onExit:()=>t.process.exit(),linkOpener:async n=>{await Tc(n,{wait:true});}})}getHierarchicalLogger(){return this.share(this.getHierarchicalLogger,()=>new ca(this.getLogger()))}getLogger(){return this.share(this.getLogger,()=>{let e=new la(this.getOutput());return this.configuration.debug?e:new FilteredLogger(e,LogLevel.WARNING)})}getOutput(){return this.share(this.getOutput,()=>{let{configuration:e}=this;return new Jt({output:e.process.getStandardOutput(),formatter:this.getLogFormatter(),interactive:this.configuration.interactive,quiet:this.configuration.quiet,onExit:()=>e.process.exit(),linkOpener:async t=>{await Tc(t);}})})}getLogFormatter(){return this.share(this.getLogFormatter,()=>new Xo)}getTemplateProvider(){return this.share(this.getTemplateProvider,()=>{let e=n=>new Ye(...["template.json5","template.json"].map(r=>new Dt({dataProvider:n,registryProvider:new In([{pattern:/^(https:\/\/(?:www\.)?github.com\/[^/]+\/[^/]+)\/?$/,destination:`$1/blob/main/${r}`},{pattern:/^(.+?:\/*[^/]+(\/+[^/.]+|\/[^/]+(?=\/))*)\/*$/,destination:`$1/${r}`}])}))),t=this.traceProvider({provider:this.getHttpProvider()});return this.traceProvider({label:"TemplateProvider",provider:new gn({resourceCache:new AutoSaveCache(new InMemoryCache),errorCache:new InMemoryCache,provider:new Ye(new Dt({dataProvider:this.traceProvider({label:"ResourceProvider",provider:e(new mt(new Ye(this.traceProvider({provider:new cn(t)}),this.traceProvider({provider:new ln(t)}))))}),registryProvider:this.traceProvider({label:"NpmRegistryProvider",provider:new ia(new Mt({provider:oa.json(this.traceProvider({provider:this.getHttpProvider()})),validator:new aa}))})}),e(new mt(this.getFileProvider())))})})})}getFileProvider(){return this.share(this.getFileProvider,()=>{let e=this.traceProvider({provider:this.getHttpProvider()}),t=this.traceProvider({provider:new oi(this.getFileSystem())}),n=new Ye(t,this.traceProvider({provider:new cn(e)}),this.traceProvider({provider:new ln(e)}));return this.traceProvider({label:"FileProvider",provider:new Ye(t,this.traceProvider({provider:new Dt({baseUrl:new URL("./",this.configuration.templateRegistryUrl),dataProvider:this.traceProvider({label:"ResourceProvider",provider:n}),registryProvider:new _i({url:this.configuration.templateRegistryUrl,provider:this.traceProvider({label:"GlobalRegistryProvider",provider:new gn({errorCache:new InMemoryCache,resourceCache:new AutoSaveCache(new InMemoryCache),provider:new Mt({provider:new mn(new mt(n)),validator:new ci})})})})})}))})})}traceProvider({provider:e,label:t}){return new pa({label:t,provider:e,logger:this.getHierarchicalLogger()})}getImportAction(){return this.share(this.getImportAction,()=>{let e=this.getFileSystem(),t={run:new L({action:new Be(new Oe(()=>new Zi(t))),validator:new Ji}),try:new L({action:new Be(new Oe(()=>new Br(t.run))),validator:new fi}),test:new L({action:new Be(new Oe(()=>new Ri(t.run))),validator:new Oi}),repeat:new L({action:new Be(new Oe(()=>new Ro(t.run))),validator:new To}),print:new L({action:new Di,validator:new Ni}),fail:new L({action:new $i,validator:new zi}),define:new L({action:new Xi,validator:new Yi}),prompt:new L({action:new Ui,validator:new qi}),"change-directory":new L({action:new oo({fileSystem:e,rootDirectory:this.initialDirectory,currentDirectory:this.workingDirectory}),validator:new io}),"open-link":new L({action:new Qi,validator:new Bi}),"start-server":new L({action:new Hi({serverProvider:this.getServerProvider()}),validator:new Ki}),"stop-server":new L({action:new eo({serverProvider:this.getServerProvider()}),validator:new to}),"execute-package":new L({action:new so({packageManager:this.getPackageManager(),packageManagerProvider:this.getPackageManagerRegistry(),workingDirectory:this.workingDirectory,commandExecutor:this.getCommandExecutor(),commandTimeout:2*60*1e3,sourceChecker:{test:n=>n.protocol==="file:"||`${n}`.startsWith("https://github.com/croct-tech")}}),validator:new po}),"check-dependencies":new L({action:new ii({packageManager:this.getPackageManager()}),validator:new yi}),download:new L({action:new Hr({fileSystem:e,provider:this.getFileProvider(),codemod:new ma({codemods:{"**/*.{js,jsx,ts,tsx}":new fa(new ua({fileSystem:e,rootPath:this.workingDirectory,maxSearchDepth:10,importResolver:this.getNodeImportResolver(),importCodemod:new Ve({fileSystem:e,codemod:new je({languages:["typescript","jsx"],codemod:new ga})}),exportMatcher:{test:(n,{names:r})=>r.length===0?true:Ec(n).some(i=>r.includes(i))}}),new We(this.getJavaScriptFormatter()))}})}),validator:new hi}),"add-dependency":new L({action:new Gr({packageManager:this.getPackageManager()}),validator:new bi}),"locate-file":new L({action:new Kr({projectDirectory:this.workingDirectory,fileSystem:e,matcherProvider:{get:async n=>{let r=e.joinPaths(this.workingDirectory.get(),".gitignore"),i=Po.fromPattern(n);if(await e.exists(r)){let a=await e.readTextFile(r);return new ko(new An(Ao.fromPatterns(a)),i)}return i}}}),validator:new Ii}),"replace-file-content":new L({action:new Zr({fileSystem:e}),validator:new xi}),initialize:new L({action:new na({callback:()=>this.init({})}),validator:new ra}),"add-slot":new L({action:new Jr({installer:(n,r)=>{let i=this.getNonInteractiveOutput(true);return this.execute(new kt({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),workspaceApi:this.getWorkspaceApi(),slotForm:new Je({input:this.getNonInteractiveInput(),output:i,workspaceApi:this.getWorkspaceApi()}),io:{output:i}}),{slots:n,example:r})}}),validator:new wi}),"add-component":new L({action:new Qr({installer:n=>{let r=this.getNonInteractiveOutput(true);return this.execute(new At({sdk:this.getSdk(),configurationManager:this.getConfigurationManager(),componentForm:new Qe({input:this.getNonInteractiveInput(),output:r,workspaceApi:this.getWorkspaceApi()}),io:{output:r}}),{components:n})}}),validator:new Ci}),"create-resource":new L({action:new ei({configurationManager:this.getConfigurationManager(),matcher:new ni({workspaceApi:this.getWorkspaceApi()}),api:{user:this.getUserApi(),workspace:this.getWorkspaceApi(),organization:this.getOrganizationApi()},mappingForm:new ti({input:this.getFormInput({message:"Some resource IDs are in use and interactive mode is required to assign new ones.",suggestions:["Retry in interactive mode"]}),workspaceApi:this.getWorkspaceApi()})}),validator:new Pi}),"format-code":new L({action:new Ai({formatter:this.getCodeFormatter()}),validator:new Ei}),import:new L({action:new Be(new Oe(()=>new mi({runner:t.run,templateProvider:new gi({evaluator:new li({functions:ts}),validator:new yn,templateProvider:this.getTemplateProvider(),fileProvider:new mt(this.getFileProvider())}),variables:this.getActionVariables()}))),validator:new ki})};return t.import})}getActionVariables(){let e=t=>new URL(t,this.configuration.adminUrl).toString();return {project:{features:re.transient(async()=>{let{organization:t,workspace:n}=await this.getConfigurationManager().load(),{features:r}=await this.getWorkspaceApi().getFeatures({organizationSlug:t,workspaceSlug:n})??{};return r??{}}),quotas:re.transient(async()=>{let{organization:t,workspace:n}=await this.getConfigurationManager().load(),{quotas:r}=await this.getWorkspaceApi().getFeatures({organizationSlug:t,workspaceSlug:n})??{};return r??{}}),organization:re.transient(async()=>{let{organization:t}=await this.getConfigurationManager().load();return {slug:t,url:e(`organizations/${t}`)}}),workspace:re.transient(async()=>{let{organization:t,workspace:n}=await this.getConfigurationManager().load();return {slug:n,url:e(`organizations/${t}/workspaces/${n}`)}}),application:re.transient(async()=>{let{organization:t,workspace:n,applications:r}=await this.getConfigurationManager().load(),i=`organizations/${t}/workspaces/${n}/applications/`;return {development:{slug:r.development,url:e(i+r.development)},production:{slug:r.production,url:e(i+r.production)}}}),path:{example:re.transient(async()=>(await this.getConfigurationManager().load()).paths.examples),component:re.transient(async()=>(await this.getConfigurationManager().load()).paths.components)},platform:re.transient(async()=>await this.getPlatformProvider().get()??"unknown"),server:re.transient(async()=>{let n=await this.getServerProvider().get();if(n===null)return null;try{let r=await n.getStatus();if(r.running)return {running:!0,url:r.url.toString()}}catch{}return {running:false}})}}}getHttpProvider(){return this.share(this.getHttpProvider,()=>new ri)}getAuthenticator(){return this.share(this.getAuthenticator,()=>{if(this.configuration.apiKey!==void 0)return new Ko({apiKey:this.configuration.apiKey,clock:this.getClock(),tokenDuration:this.configuration.apiKeyTokenDuration});let e=this.getFormInput(),t=this.getFileSystem(),n=new ur({input:e,output:this.getOutput(),userApi:this.getUserApi(true),form:{signIn:new mr({input:e,output:this.getOutput(),userApi:this.getUserApi(true),listener:this.getTokenListener(),tokenDuration:this.configuration.cliTokenDuration,emailLinkGenerator:{recovery:this.createEmailLinkGenerator(this.configuration.emailSubject.passwordReset),verification:this.createEmailLinkGenerator(this.configuration.emailSubject.accountActivation)},verificationLinkDestination:{accountActivation:this.configuration.verificationLinkDestination.accountActivation,passwordReset:this.configuration.verificationLinkDestination.passwordReset}}),signUp:new dr({input:e,output:this.getOutput(),userApi:this.getUserApi(true),listener:this.getTokenListener(),emailLinkGenerator:this.createEmailLinkGenerator(this.configuration.emailSubject.accountActivation),verificationLinkDestination:this.configuration.verificationLinkDestination.accountActivation})}}),r=this.getUserApi(true),i=new Qo({cacheKey:"token",cacheProvider:new Bo({clock:this.getClock(),tokenFreshPeriod:this.configuration.cliTokenFreshPeriod,tokenIssuer:()=>r.issueToken({duration:this.configuration.cliTokenDuration}),cacheProvider:new dn({fileSystem:t,directory:this.configuration.directories.config,useKeyAsFileName:true})}),authenticator:new Ar({default:this.configuration.interactive?n:new Pr({authenticator:n,instruction:{message:"Authentication required.",suggestions:["Run `login` to authenticate"],reason:"precondition"}}),credentials:n})});return this.configuration.interactive?new Uo({authenticator:i,invitationForm:new Vo({output:this.getOutput(),input:e,userApi:this.getUserApi(true)})}):i})}getSdk(){return this.share(this.getSdk,()=>{let e=new jt(this.getSdkProvider(),new Oe(()=>{throw new U("No suitable SDK detected.",{reason:"not_supported",suggestions:["Make sure you are running the command in the project root directory."]})}));return new wo(e)})}getSdkProvider(){return this.share(this.getSdkProvider,()=>{let e=this.getJavaScriptFormatter(),t=this.getFileSystem(),n=this.getNodeImportResolver(),r={projectDirectory:this.workingDirectory,packageManager:this.getNodePackageManager(),fileSystem:t,formatter:e,workspaceApi:this.getWorkspaceApi(),tsConfigLoader:this.getTsConfigLoader()},i=Symbol("unknown");return new Lt({discriminator:async()=>await this.getPlatformProvider().get()??i,mapping:{javascript:()=>new Bn({...r,bundlers:["vite","parcel","tsup","rollup"]}),react:()=>new Yn({...r,importResolver:n,codemod:{provider:new We(e,new Ve({fileSystem:this.getFileSystem(),codemod:new je({languages:["typescript","jsx"],codemod:new pt({fallbackToNamedExports:true,wrapper:{module:"@croct/plug-react",component:"CroctProvider"},targets:{variable:"children"}})})}))},bundlers:[{package:"react-scripts",prefix:"process.env.REACT_APP_"},{package:"vite",prefix:"import.meta.env.VITE_"},{package:"parcel",prefix:"process.env."}]}),nextjs:()=>{let a={appId:{type:"reference",path:["process","env","NEXT_PUBLIC_CROCT_APP_ID"]},debug:{type:"comparison",operator:"===",left:{type:"reference",path:["process","env","NEXT_PUBLIC_CROCT_DEBUG"]},right:{type:"literal",value:"true"}}};return new tr({...r,userApi:this.getUserApi(),applicationApi:this.getApplicationApi(),importResolver:n,codemod:{middleware:new We(e,new Ve({fileSystem:this.getFileSystem(),codemod:new je({languages:["typescript","jsx"],codemod:new br({import:{module:"@croct/plug-next/middleware",middlewareName:"middleware",middlewareFactoryName:"withCroct",configName:"config",matcherName:"matcher",matcherLocalName:"croctMatcher"}})})})),appRouterProvider:new We(e,new Ve({fileSystem:this.getFileSystem(),codemod:new je({languages:["typescript","jsx"],codemod:new pt({fallbackToNamedExports:false,fallbackCodemod:new Ir({provider:{component:"CroctProvider",module:"@croct/plug-next/CroctProvider"}}),wrapper:{module:"@croct/plug-next/CroctProvider",component:"CroctProvider"},targets:{variable:"children"}})})})),pageRouterProvider:new We(e,new Ve({fileSystem:this.getFileSystem(),codemod:new je({languages:["typescript","jsx"],codemod:new pt({fallbackToNamedExports:false,fallbackCodemod:new en({provider:{component:"CroctProvider",module:"@croct/plug-next/CroctProvider"}}),wrapper:{module:"@croct/plug-next/CroctProvider",component:"CroctProvider"},targets:{component:"Component"}})})})),fallbackProvider:new We(e,new Ve({fileSystem:this.getFileSystem(),codemod:new je({languages:["typescript","jsx"],codemod:new pt({fallbackToNamedExports:false,fallbackCodemod:new en({provider:{component:"CroctProvider",module:"@croct/plug-react",props:a}}),wrapper:{module:"@croct/plug-react",component:"CroctProvider",props:a},targets:{component:"Component"}})})}))}})},[i]:()=>null}})})}getCodeFormatter(){return this.share(this.getCodeFormatter,()=>{let e=Symbol("unknown");return new vo(new Lt({discriminator:async()=>await this.getPlatformProvider().get()??e,mapping:{javascript:()=>this.getJavaScriptFormatter(),react:()=>this.getJavaScriptFormatter(),nextjs:()=>this.getJavaScriptFormatter(),[e]:()=>{throw new U("No code formatter detected.",{reason:"not_supported",suggestions:["Make sure you are running the command in the project root directory."]})}}}))})}share(e,t){let n=this.instances.get(e);if(n===void 0){let r=t();return this.instances.set(e,r),r}return n}getPackageManagerRegistry(){return this.share(this.getPackageManagerRegistry,()=>new ho(new Map(Object.entries(this.getPackageManagers()))))}getPackageManagers(){return this.getNodePackageManagers()}getPackageManager(){return this.share(this.getPackageManager,()=>new wn(new jt(this.getNodePackageManagerProvider(),new Oe(()=>{throw new U("No package manager detected.",{reason:"not_supported",suggestions:["Make sure you are running the command in the project root directory.","Initialize your project and retry the command."]})}))))}getNodePackageManager(){return this.share(this.getNodePackageManager,()=>{let e=this.getNodePackageManagers();return new wn(new jt(this.getNodePackageManagerProvider(),new In(e.npm)))})}getNodePackageManagerProvider(){return this.share(this.getNodePackageManagerProvider,()=>{let e=this.getNodePackageManagers(),t=this.getFileSystem(),n={npm:["package-lock.json"],yarn:["yarn.lock"],bun:["bun.lock","bun.lockb"],pnpm:["pnpm-lock.yaml"]};return new kn(new Wo(new Wt({candidates:Object.entries(e).map(([r,i])=>({value:i,condition:new jo({process:this.configuration.process,variable:"npm_config_user_agent",value:new RegExp(`^${r}`)})}))}),new Wt({candidates:Object.entries(e).map(([r,i])=>({value:i,condition:new Rn(new Fo({packageManager:r,fileSystem:t,projectDirectory:this.workingDirectory}),new Cn({fileSystem:t,files:n[r]}))}))})),this.workingDirectory)})}getNodePackageManagers(){return this.share(this.getNodePackageManagers,()=>{let e=this.getFileSystem(),t={projectDirectory:this.workingDirectory,fileSystem:e,commandExecutor:this.getCommandExecutor(),executableLocator:this.getExecutableLocator()},n=new un,r={fileSystem:e,projectDirectory:this.workingDirectory,packageValidator:n};return {npm:new Xe({...r,agent:new co(t)}),yarn:new Xe({...r,agent:new lo(t)}),bun:new Xe({...r,agent:new uo(t)}),pnpm:new Xe({...r,agent:new mo(t)})}})}getNodeServerProvider(){return this.share(this.getNodeServerProvider,()=>new Li({packageManager:this.getNodePackageManager(),factory:this.getServerFactory(),parsers:[new Fi,new ji,new Wi,new Vi]}))}getServerProvider(){return this.share(this.getServerProvider,()=>{let e=Symbol("unknown");return new Lt({discriminator:async()=>await this.getPlatformProvider().get()??e,mapping:{javascript:()=>this.getNodeServerProvider().get(),react:()=>this.getNodeServerProvider().get(),nextjs:()=>this.getNodeServerProvider().get(),[e]:()=>null}})})}getServerFactory(){return this.share(this.getServerFactory,()=>new Co(new ro({commandExecutor:this.getCommandExecutor(),workingDirectory:this.workingDirectory,startupTimeout:2e4,startupCheckDelay:1500,lookupMaxPorts:30,lookupTimeout:2e3,processObserver:this.configuration.process})))}getJavaScriptFormatter(){return this.share(this.getJavaScriptFormatter,()=>new vr({commandExecutor:this.getCommandExecutor(),workingDirectory:this.workingDirectory,packageManager:this.getNodePackageManager(),fileSystem:this.getFileSystem(),timeout:1e4,tools:[{package:"eslint",bin:"eslint",args:e=>["--fix",...e]},{package:"prettier",args:e=>["--write",...e]},{package:"@biomejs/biome",bin:"biome",args:e=>["format","--write",...e]}]}))}getNodeImportResolver(){return this.share(this.getNodeImportResolver,()=>new fo({fileSystem:this.getFileSystem(),tsConfigLoader:this.getTsConfigLoader(),projectDirectory:this.workingDirectory}))}getTsConfigLoader(){return this.share(this.getTsConfigLoader,()=>new go({fileSystem:this.getFileSystem(),tsconfigValidator:new yo}))}getCommandExecutor(){return this.share(this.getCommandExecutor,()=>new xo)}getExecutableLocator(){return this.share(this.getExecutableLocator,()=>{let{process:e}=this.configuration;return new Lo({fileSystem:this.getFileSystem(),cache:new AutoSaveCache(new InMemoryCache),executablePaths:e.getEnvList("PATH")??[],executableExtensions:e.getEnvList("PATHEXT")??[]})})}getPlatformProvider(){return this.share(this.getPlatformProvider,()=>{let e=new Xe({projectDirectory:this.workingDirectory,packageValidator:new un,fileSystem:this.getFileSystem(),agent:new So});return new kn(new Wt({candidates:[{value:"nextjs",condition:new Pn({packageManager:e,dependencies:["next"]})},{value:"react",condition:new Pn({packageManager:e,dependencies:["react"]})},{value:"javascript",condition:new bo({packageManager:e})}]}),this.workingDirectory)})}getConfigurationManager(){return this.share(this.getConfigurationManager,()=>{let e=this.getOutput(),t=new ir({fileSystem:this.getFileSystem(),validator:new si,projectDirectory:this.workingDirectory});return new _o({workingDirectory:this.workingDirectory,store:this.getCliConfigurationStore(),manager:new Yr(this.configuration.interactive&&!this.isReadOnlyMode()?new wr({manager:t,initializer:{initialize:async()=>{await this.init({}),e.break();}}}):t)})})}getUserApi(e=false){return e?new Xt(this.getGraphqlClient(true)):this.share(this.getUserApi,()=>new Xt(this.getGraphqlClient()))}getOrganizationApi(){return this.share(this.getOrganizationApi,()=>new or(this.getGraphqlClient(),this.getHierarchyResolver()))}getWorkspaceApi(){return this.share(this.getWorkspaceApi,()=>new ar(this.getGraphqlClient(),this.getHierarchyResolver()))}getApplicationApi(){return this.share(this.getApplicationApi,()=>new lr(this.getGraphqlClient(),this.getHierarchyResolver()))}getHierarchyResolver(){return this.share(this.getHierarchyResolver,()=>{let e=this.getFileSystem();return new ya(this.getGraphqlClient(),AdaptedCache.transformValues(new dn({fileSystem:e,directory:e.joinPaths(this.configuration.directories.cache,"hierarchy")}),AdaptedCache.jsonSerializer(),AdaptedCache.jsonDeserializer()))})}getGraphqlClient(e=false){return e?new Bt({endpoint:this.configuration.adminGraphqlEndpoint,tokenProvider:{getToken:()=>this.getAuthenticator().getToken()}}):this.share(this.getGraphqlClient,()=>{let t=this.getAuthenticator();return new Bt({endpoint:this.configuration.adminGraphqlEndpoint,tokenProvider:{getToken:async()=>await t.getToken()??t.login({method:"default"})}})})}getTokenListener(){return this.share(this.getTokenListener,()=>{let{configuration:e}=this;return new Or({platform:e.process.getPlatform(),commandExecutor:this.getCommandExecutor(),timeout:2e3,listener:new Yo({api:this.getUserApi(true),pollingInterval:1e3})})})}getFileSystem(){return this.share(this.getFileSystem,()=>new Tr({workingDirectory:this.workingDirectory,defaultEncoding:"utf-8"}))}createEmailLinkGenerator(e){let t=this.getEmailLinkGenerator(),n=this.getClock();return r=>t.generate({recipient:r,sender:"croct.com",subject:e,timestamp:gt.Instant.now(n).getSeconds()})}getEmailLinkGenerator(){return this.share(this.getEmailLinkGenerator,()=>new Dr({detector:new Mr(new Nr,new $r),templates:{google:new zr,icloud:new _r,microsoft:new Lr,proton:new Fr,yahoo:new jr}}))}getClock(){return Oc.SystemClock.UTC}getProtocolRegistryProvider(){return this.share(this.getProtocolRegistryProvider,()=>new Oe(()=>{let e=this.getFileSystem(),{process:t}=this.configuration;switch(t.getPlatform()){case "darwin":return new Oo({fileSystem:e,appDirectory:e.joinPaths(this.configuration.directories.data,"apps"),commandExecutor:this.getCommandExecutor()});case "win32":return new Do({commandExecutor:this.getCommandExecutor()});case "linux":return new Mo({fileSystem:e,homeDirectory:this.configuration.directories.home,commandExecutor:this.getCommandExecutor()});default:return null}}))}getCliConfigurationStore(){return this.share(this.getCliConfigurationStore,()=>{let e=this.getFileSystem();return new Ho({fileSystem:e,store:new qo({fileSystem:e,validator:new zo,filePath:e.joinPaths(this.configuration.directories.config,"config.json")})})})}async execute(e,t){if(this.isReadOnlyMode()&&!o.READ_ONLY_COMMANDS.has(e.constructor))return this.reportError(new d("This command does not support API key authentication.",{reason:"precondition",suggestions:["Run the command without specifying an API key."]}));try{await e.execute(t);}catch(n){let r=o.handleError(n);return n instanceof Error&&r instanceof Error&&(r.stack=n.stack),this.reportError(r)}}isReadOnlyMode(){return this.configuration.apiKey!==void 0}reportError(e){let t=this.getOutput();return t.report(o.handleError(e)),t.exit()}static handleError(e){switch(true){case e instanceof ne:if(e.isAccessDenied())return new d("Your user lacks the necessary permissions to complete this operation.",{reason:"access_denied",details:e.problems.map(t=>t.detail??t.title),suggestions:["Contact your organization or workspace administrator for assistance."],cause:e});break;case e instanceof I:if(e.tracing.length>0){let t=e.tracing.map(({name:n,source:r},i)=>{let a=r!==void 0?` at ${o.getSourceLocation(r)}`:"";return `${" ".repeat(i+1)}\u21B3 \`${n}\`${a}`}).join(`
|
|
1830
1841
|
`);return new d(`${e.message}
|
|
1831
1842
|
|
|
1832
1843
|
\u25B6\uFE0F **Trace**
|
|
1833
|
-
${t}`,e.help)}break;case e instanceof it:return new d(e.message,{...e.help,suggestions:["Run `init` to create a new configuration."]})}return e}static getSourceLocation(e){return e.url.protocol==="file:"?`${e.url}:${e.start.line}:${e.start.column}`:e.url.hostname==="github.com"?`${e.url}#L${e.start.line}-L${e.end.line}`:`${e.url}#${e.start.line}:${e.start.column}-${e.end.line}:${e.end.column}`}};function
|
|
1844
|
+
${t}`,e.help)}break;case e instanceof it:return new d(e.message,{...e.help,suggestions:["Run `init` to create a new configuration."]})}return e}static getSourceLocation(e){return e.url.protocol==="file:"?`${e.url}:${e.start.line}:${e.start.column}`:e.url.hostname==="github.com"?`${e.url}#L${e.start.line}-L${e.end.line}`:`${e.url}#${e.start.line}:${e.start.column}-${e.end.line}:${e.end.column}`}};function Dc(o){let e=new cs().name("croct").description("Manage your Croct projects").enablePositionalOptions().option("--cwd <path>","The working directory.",y=>{try{return realpathSync(y)}catch{throw new Le("The path does not exist.")}}).addOption(new se("--api-key <key>","The API key to use for authentication.").env("CROCT_API_KEY").argParser(y=>{try{return ApiKey.parse(y)}catch{throw new Le("The API key is malformed.")}})).option("--registry <url>","The template registry.",y=>{if(!URL.canParse(y))throw new Le("Malformed URL.");return y}).option("--no-interaction","Disable interaction mode.").addOption(new se("-s, --skip-prompts","Skip prompts with default options.").default(false)).addOption(new se("-q, --quiet","Disable output messages.").default(false).implies({interaction:false})).option("--debug","Enable debug mode.").version("0.0.1","-v, --version","Display the version number.").helpOption("-h, --help","Display help for a command.").helpCommand("help [command]","Display help for a command.");e.command("open <url>").description("Open a deep link.").action(async y=>{await o.cli?.open({url:y});});let t=e.command("login").description("Authenticate your user."),n=new se("-u, --username <username>","The email."),r=new se("-p, --password <password>","The password.");t.command("credentials",{isDefault:true}).description("Authenticate using credentials.").addOption(o.interactive?n:n.makeOptionMandatory()).addOption(o.interactive?r:r.makeOptionMandatory()).action(async y=>{await o.cli?.login({method:"credentials",username:y.username,password:y.password});}),e.command("logout").description("Logout the current user.").action(async()=>{await o.cli?.logout();}),e.command("admin").argument("[page...]","The name of the page or path to open.").description("Log in and open the admin panel.").action(async y=>{await o.cli?.admin({page:y!==void 0?y.join(" "):o.interactive?void 0:"/"});});let i=new se("--wor <workspace-slug>","The workspace slug."),a=new se("--org <organization-slug>","The organization slug."),s=new se("--dev-app <application-slug>","The development application slug."),p=new se("--prod-app <application-slug>","The production application slug.");e.command("init").description("Configure the project.").option("-o, --override","Override any existing configuration.").addOption(new se("-n, --new <resource>","The resources to create.").choices(["organization","org","workspace","wor","application","app"])).addOption(new se("-s, --sdk <platform>","The SDK to use.").choices(["javascript","react","next"])).addOption(o.interactive?a:a.makeOptionMandatory()).addOption(o.interactive?i:i.makeOptionMandatory()).addOption(o.interactive?s:s.makeOptionMandatory()).addOption(p).action(async y=>{await o.cli?.init({override:y.override,new:(()=>{switch(y.new){case "organization":case "org":return "organization";case "workspace":case "wor":return "workspace";case "application":case "app":return "application";default:return}})(),sdk:y.sdk,organization:y.org,workspace:y.wor,devApplication:y.devApp,prodApplication:y.prodApp});}),e.command("install").description("Install content and types.").action(async()=>{await o.cli?.install({});}),e.command("update").description("Update content and types.").action(async()=>{await o.cli?.install({clean:true});}),e.command("upgrade").description("Upgrade components and slots to the latest version.").option("-s, --slots <slots...>","The slots to upgrade.").option("-c, --components <components...>","The components to upgrade.").action(async y=>{await o.cli?.upgrade({slots:y.slots??(y.components!==void 0?[]:void 0),components:y.components??(y.slots!==void 0?[]:void 0)});});let c=e.command("add").description("Add a resource to your project.");c.command("slot").description("Add a slot to your project.").argument(o.interactive?"[slots...]":"<slots...>").option("-e, --example","Generate an implementation example.").action(async(y,M)=>{await o.cli?.addSlot({slots:y,example:M.example});}),c.command("component").description("Add a component to your project.").argument(o.interactive?"[components...]":"<components...>").action(async y=>{await o.cli?.addComponent({components:y});});let l=e.command("remove").description("Remove a resource from your project.");l.command("slot").description("Remove a slot from your project.").argument(o.interactive?"[slots...]":"<slots...>").action(async y=>{await o.cli?.removeSlot({slots:y});}),l.command("component").description("Remove a component from your project.").argument(o.interactive?"[components...]":"<components...>").action(async y=>{await o.cli?.removeComponent({components:y});});let m=e.command("create").description("Create a resource in your project.");m.command("template").description("Create a template from your project.").addArgument(new ls("<path>","The path to the file.").argOptional()).option("-e, --empty","Create an empty template.").action(async(y,M)=>{await o.cli?.createTemplate({file:y,empty:M.empty});});let f=new se("--permissions <permissions...>","The permissions of the API key.").argParser(y=>y.split(",").map(M=>{try{return Ee.fromValue(M)}catch{throw new Le(`Unknown permission "${M}".`)}})),b=new se("--env <environment>","The environment of the API key.").choices(["prod","dev"]).argParser(y=>y==="prod"?"PRODUCTION":"DEVELOPMENT");m.command("api-key").description("Create an API key.").option("--name <name>","The name of the API key.").addOption(o.interactive?f:f.makeOptionMandatory()).addOption(o.interactive?b:b.makeOptionMandatory()).option("-c, --copy","Copy the API key to the clipboard.").action(async y=>{await o.cli?.createApiKey({name:y.name,permissions:y.permissions,environment:y.env,copy:y.copy});});let A={},v=e.command("use").description("Use a template.").argument("template","The path to the template.").passThroughOptions(o.cli===void 0).allowUnknownOption(o.cli===void 0||o.template===null).action(async(y,M)=>{await o.cli?.useTemplate({template:y,options:Object.fromEntries(Object.entries(M).map(([j,T])=>[A[j],T]))});});for(let[y,M]of Object.entries(o.template??{})){let j=`--${y}${M.type!=="boolean"?" <value>":""}`,T=new se(j,M.description).makeOptionMandatory(M.required===true);switch(M.type){case "string":M.options!==void 0&&M.options.length>0&&T.choices(M.options);break;case "number":T.argParser(q=>{let be=Number.parseFloat(q);if(Number.isNaN(be))throw new Le("The value must be a number.");return be});break;case "array":T.argParser(q=>{let be;try{be=JSON.parse(q);}catch{}if(be===void 0||!Array.isArray(be))throw new Le("The value must be a JSON array.");return q.split(",")});break;case "object":T.argParser(q=>{let be;try{be=JSON.parse(q);}catch{throw new Le("The JSON is malformed.")}if(typeof be!="object"||be===null)throw new Le("The value must be a JSON object.")});break}A[T.attributeName()]=y,v.addOption(T);}return e}function ad(o){let e=["use","help use"];for(let t of e){let n=t.split(" ").length;if(o.length>n&&o.slice(0,n).join(" ")===t&&(o[n]??"")!=="")return o[n]}return null}(async function o(e=process.argv,t=true){let n=Dc({interactive:true}).parse(e),r=n.opts(),i=ha.fromDefaults({program:c=>o(n.args.slice(0,2).concat(c)),quiet:r.quiet,debug:r.debug,interactive:r.interaction?void 0:false,apiKey:r.apiKey,skipPrompts:r.skipPrompts===true,templateRegistryUrl:r.registry===void 0?void 0:new URL(r.registry)}),a=ad(n.args),s=a!==null?await i.getTemplateOptions(a).catch(()=>null):void 0,p=Dc({cli:i,interactive:r.interaction,template:s});t&&await i.welcome({}),await p.parseAsync(e);})();
|