create-turbo 2.9.16-canary.1 → 2.9.16

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.
Files changed (2) hide show
  1. package/dist/cli.js +4 -4
  2. package/package.json +3 -3
package/dist/cli.js CHANGED
@@ -97,7 +97,7 @@ For faster downloads, install git: https://git-scm.com/downloads`),await vg({url
97
97
  `).reverse(),r=t.stack.slice(t.stack.indexOf(t.message)+t.message.length).split(`
98
98
  `).reverse();for(;r.length!==0&&r[0]===n[0];)n.shift();this.stack=`${this.stack.slice(0,e)}${n.reverse().join(`
99
99
  `)}${r.reverse().join(`
100
- `)}`}}};exports.RequestError=J;var ae=class extends J{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name=`MaxRedirectsError`,this.code=`ERR_TOO_MANY_REDIRECTS`}};exports.MaxRedirectsError=ae;var oe=class extends J{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name=`HTTPError`,this.code=`ERR_NON_2XX_3XX_RESPONSE`}};exports.HTTPError=oe;var Y=class extends J{constructor(e,t){super(e.message,e,t),this.name=`CacheError`,this.code=this.code===`ERR_GOT_REQUEST_ERROR`?`ERR_CACHE_ACCESS`:this.code}};exports.CacheError=Y;var se=class extends J{constructor(e,t){super(e.message,e,t),this.name=`UploadError`,this.code=this.code===`ERR_GOT_REQUEST_ERROR`?`ERR_UPLOAD`:this.code}};exports.UploadError=se;var ce=class extends J{constructor(e,t,n){super(e.message,e,n),this.name=`TimeoutError`,this.event=e.event,this.timings=t}};exports.TimeoutError=ce;var le=class extends J{constructor(e,t){super(e.message,e,t),this.name=`ReadError`,this.code=this.code===`ERR_GOT_REQUEST_ERROR`?`ERR_READING_RESPONSE_STREAM`:this.code}};exports.ReadError=le;var ue=class extends J{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name=`UnsupportedProtocolError`,this.code=`ERR_UNSUPPORTED_PROTOCOL`}};exports.UnsupportedProtocolError=ue;let de=[`socket`,`connect`,`continue`,`information`,`upgrade`,`timeout`];var fe=class extends n.Duplex{constructor(t,n={},i){super({autoDestroy:!1,highWaterMark:0}),this[M]=0,this[P]=0,this.requestInitialized=!1,this[F]=new Set,this.redirects=[],this[z]=!1,this[B]=!1,this[H]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on(`pipe`,e=>{e.prependListener(`data`,a),e.on(`data`,s),e.prependListener(`end`,a),e.on(`end`,s)}),this.on(`unpipe`,e=>{e.off(`data`,a),e.off(`data`,s),e.off(`end`,a),e.off(`end`,s)}),this.on(`pipe`,e=>{e instanceof o.IncomingMessage&&(this.options.headers={...e.headers,...this.options.headers})});let{json:c,body:l,form:u}=n;if((c||l||u)&&this._lockWrite(),exports.kIsNormalizedAlready in n)this.options=n;else try{this.options=this.constructor.normalizeArguments(t,n,i)}catch(e){m.default.nodeStream(n.body)&&n.body.destroy(),this.destroy(e);return}(async()=>{var e;try{this.options.body instanceof r.ReadStream&&await q(this.options.body);let{url:t}=this.options;if(!t)throw TypeError("Missing `url` property");if(this.requestUrl=t.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(e=this[k])==null||e.destroy();return}for(let e of this[H])e();this[H].length=0,this.requestInitialized=!0}catch(e){if(e instanceof J){this._beforeError(e);return}this.destroyed||this.destroy(e)}})()}static normalizeArguments(n,r,a){var o,s,c,d,f;let h=r;if(m.default.object(n)&&!m.default.urlInstance(n))r={...a,...n,...r};else{if(n&&r&&r.url!==void 0)throw TypeError("The `url` option is mutually exclusive with the `input` argument");r={...a,...r},n!==void 0&&(r.url=n),m.default.urlInstance(r.url)&&(r.url=new i.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),m.assert.any([m.default.string,m.default.undefined],r.method),m.assert.any([m.default.object,m.default.undefined],r.headers),m.assert.any([m.default.string,m.default.urlInstance,m.default.undefined],r.prefixUrl),m.assert.any([m.default.object,m.default.undefined],r.cookieJar),m.assert.any([m.default.object,m.default.string,m.default.undefined],r.searchParams),m.assert.any([m.default.object,m.default.string,m.default.undefined],r.cache),m.assert.any([m.default.object,m.default.number,m.default.undefined],r.timeout),m.assert.any([m.default.object,m.default.undefined],r.context),m.assert.any([m.default.object,m.default.undefined],r.hooks),m.assert.any([m.default.boolean,m.default.undefined],r.decompress),m.assert.any([m.default.boolean,m.default.undefined],r.ignoreInvalidCookies),m.assert.any([m.default.boolean,m.default.undefined],r.followRedirect),m.assert.any([m.default.number,m.default.undefined],r.maxRedirects),m.assert.any([m.default.boolean,m.default.undefined],r.throwHttpErrors),m.assert.any([m.default.boolean,m.default.undefined],r.http2),m.assert.any([m.default.boolean,m.default.undefined],r.allowGetBody),m.assert.any([m.default.string,m.default.undefined],r.localAddress),m.assert.any([C.isDnsLookupIpVersion,m.default.undefined],r.dnsLookupIpVersion),m.assert.any([m.default.object,m.default.undefined],r.https),m.assert.any([m.default.boolean,m.default.undefined],r.rejectUnauthorized),r.https&&(m.assert.any([m.default.boolean,m.default.undefined],r.https.rejectUnauthorized),m.assert.any([m.default.function_,m.default.undefined],r.https.checkServerIdentity),m.assert.any([m.default.string,m.default.object,m.default.array,m.default.undefined],r.https.certificateAuthority),m.assert.any([m.default.string,m.default.object,m.default.array,m.default.undefined],r.https.key),m.assert.any([m.default.string,m.default.object,m.default.array,m.default.undefined],r.https.certificate),m.assert.any([m.default.string,m.default.undefined],r.https.passphrase),m.assert.any([m.default.string,m.default.buffer,m.default.array,m.default.undefined],r.https.pfx)),m.assert.any([m.default.object,m.default.undefined],r.cacheOptions),m.default.string(r.method)?r.method=r.method.toUpperCase():r.method=`GET`,r.headers===a?.headers?r.headers={...r.headers}:r.headers=p({...a?.headers,...r.headers}),`slashes`in r)throw TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if(`auth`in r)throw TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if(`searchParams`in r&&r.searchParams&&r.searchParams!==a?.searchParams){let e;if(m.default.string(r.searchParams)||r.searchParams instanceof i.URLSearchParams)e=new i.URLSearchParams(r.searchParams);else for(let t in K(r.searchParams),e=new i.URLSearchParams,r.searchParams){let n=r.searchParams[t];n===null?e.append(t,``):n!==void 0&&e.append(t,n)}(o=a?.searchParams)==null||o.forEach((t,n)=>{e.has(n)||e.append(n,t)}),r.searchParams=e}if(r.username=(s=r.username)??``,r.password=(c=r.password)??``,m.default.undefined(r.prefixUrl)?r.prefixUrl=(d=a?.prefixUrl)??``:(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==``&&!r.prefixUrl.endsWith(`/`)&&(r.prefixUrl+=`/`)),m.default.string(r.url)){if(r.url.startsWith(`/`))throw Error("`input` must not start with a slash when using `prefixUrl`");r.url=b.default(r.prefixUrl+r.url,r)}else (m.default.undefined(r.url)&&r.prefixUrl!==``||r.protocol)&&(r.url=b.default(r.prefixUrl,r));if(r.url){`port`in r&&delete r.port;let{prefixUrl:e}=r;Object.defineProperty(r,`prefixUrl`,{set:t=>{let n=r.url;if(!n.href.startsWith(t))throw Error(`Cannot change \`prefixUrl\` from ${e} to ${t}: ${n.href}`);r.url=new i.URL(t+n.href.slice(e.length)),e=t},get:()=>e});let{protocol:t}=r.url;if(t===`unix:`&&(t=`http:`,r.url=new i.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),t!==`http:`&&t!==`https:`)throw new ue(r);r.username===``?r.username=r.url.username:r.url.username=r.username,r.password===``?r.password=r.url.password:r.url.password=r.password}let{cookieJar:g}=r;if(g){let{setCookie:e,getCookieString:n}=g;m.assert.function_(e),m.assert.function_(n),e.length===4&&n.length===0&&(e=t.promisify(e.bind(r.cookieJar)),n=t.promisify(n.bind(r.cookieJar)),r.cookieJar={setCookie:e,getCookieString:n})}let{cache:_}=r;if(_&&(ne.has(_)||ne.set(_,new u((e,t)=>{let n=e[k](e,t);return m.default.promise(n)&&(n.once=(e,t)=>{if(e===`error`)n.catch(t);else if(e===`abort`)(async()=>{try{let e=await n;e.once(`abort`,t)}catch{}})();else throw Error(`Unknown HTTP2 promise event: ${e}`);return n}),n},_))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)O||=new l.default,r.dnsCache=O;else if(!m.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${m.default(r.dnsCache)}`);m.default.number(r.timeout)?r.timeout={request:r.timeout}:a&&r.timeout!==a.timeout?r.timeout={...a.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||={};let v=r.hooks===a?.hooks;r.hooks={...r.hooks};for(let t of exports.knownHookEvents)if(t in r.hooks)if(m.default.array(r.hooks[t]))r.hooks[t]=[...r.hooks[t]];else throw TypeError(`Parameter \`${t}\` must be an Array, got ${m.default(r.hooks[t])}`);else r.hooks[t]=[];if(a&&!v)for(let t of exports.knownHookEvents){let e=a.hooks[t];e.length>0&&(r.hooks[t]=[...a.hooks[t],...r.hooks[t]])}if(`family`in r&&T.default(`"options.family" was never documented, please use "options.dnsLookupIpVersion"`),a?.https&&(r.https={...a.https,...r.https}),`rejectUnauthorized`in r&&T.default(`"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"`),`checkServerIdentity`in r&&T.default(`"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"`),`ca`in r&&T.default(`"options.ca" was never documented, please use "options.https.certificateAuthority"`),`key`in r&&T.default(`"options.key" was never documented, please use "options.https.key"`),`cert`in r&&T.default(`"options.cert" was never documented, please use "options.https.certificate"`),`passphrase`in r&&T.default(`"options.passphrase" was never documented, please use "options.https.passphrase"`),`pfx`in r&&T.default(`"options.pfx" was never documented, please use "options.https.pfx"`),`followRedirects`in r)throw TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let e in r.agent)if(e!==`http`&&e!==`https`&&e!==`http2`)throw TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${e}\``)}return r.maxRedirects=(f=r.maxRedirects)??0,exports.setNonEnumerableProperties([a,h],r),E.default(r,a)}_lockWrite(){let e=()=>{throw TypeError(`The payload has been already provided`)};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:t}=this,{headers:r}=t,a=!m.default.undefined(t.form),o=!m.default.undefined(t.json),s=!m.default.undefined(t.body),c=a||o||s,l=exports.withoutBody.has(t.method)&&!(t.method===`GET`&&t.allowGetBody);if(this._cannotHaveBody=l,c){if(l)throw TypeError(`The \`${t.method}\` method cannot be used with a body`);if([s,a,o].filter(e=>e).length>1)throw TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(t.body instanceof n.Readable)&&!m.default.string(t.body)&&!m.default.buffer(t.body)&&!g.default(t.body))throw TypeError("The `body` option must be a stream.Readable, string or Buffer");if(a&&!m.default.object(t.form))throw TypeError("The `form` option must be an Object");{let e=!m.default.string(r[`content-type`]);s?(g.default(t.body)&&e&&(r[`content-type`]=`multipart/form-data; boundary=${t.body.getBoundary()}`),this[V]=t.body):a?(e&&(r[`content-type`]=`application/x-www-form-urlencoded`),this[V]=new i.URLSearchParams(t.form).toString()):(e&&(r[`content-type`]=`application/json`),this[V]=t.stringifyJson(t.json));let n=await h.default(this[V],t.headers);m.default.undefined(r[`content-length`])&&m.default.undefined(r[`transfer-encoding`])&&!l&&!m.default.undefined(n)&&(r[`content-length`]=String(n))}}else l?this._lockWrite():this._unlockWrite();this[N]=Number(r[`content-length`])||void 0}async _onResponseBase(e){let{options:t}=this,{url:n}=t;this[U]=e,t.decompress&&(e=d(e));let r=e.statusCode,o=e;o.statusMessage=o.statusMessage?o.statusMessage:a.STATUS_CODES[r],o.url=t.url.toString(),o.requestUrl=this.requestUrl,o.redirectUrls=this.redirects,o.request=this,o.isFromCache=e.fromCache||!1,o.ip=this.ip,o.retryCount=this.retryCount,this[ee]=o.isFromCache,this[j]=Number(e.headers[`content-length`])||void 0,this[A]=e,e.once(`end`,()=>{this[j]=this[M],this.emit(`downloadProgress`,this.downloadProgress)}),e.once(`error`,t=>{e.destroy(),this._beforeError(new le(t,this))}),e.once(`aborted`,()=>{this._beforeError(new le({name:`Error`,message:`The server aborted pending request`,code:`ECONNRESET`},this))}),this.emit(`downloadProgress`,this.downloadProgress);let s=e.headers[`set-cookie`];if(m.default.object(t.cookieJar)&&s){let e=s.map(async e=>t.cookieJar.setCookie(e,n.toString()));t.ignoreInvalidCookies&&(e=e.map(async e=>e.catch(()=>{})));try{await Promise.all(e)}catch(e){this._beforeError(e);return}}if(t.followRedirect&&e.headers.location&&re.has(r)){e.resume(),this[k]&&(this[L](),delete this[k],this[I]());let a=r===303&&t.method!==`GET`&&t.method!==`HEAD`;if((a||!t.methodRewriting)&&(t.method=`GET`,`body`in t&&delete t.body,`json`in t&&delete t.json,`form`in t&&delete t.form,this[V]=void 0,delete t.headers[`content-length`]),this.redirects.length>=t.maxRedirects){this._beforeError(new ae(this));return}try{let r=Buffer.from(e.headers.location,`binary`).toString(),a=new i.URL(r,n),s=a.toString();decodeURI(s);function c(e){return e.protocol===`unix:`||e.hostname===`unix`}if(!c(n)&&c(a)){this._beforeError(new J(`Cannot redirect to UNIX socket`,{},this));return}a.hostname!==n.hostname||a.port!==n.port?(`host`in t.headers&&delete t.headers.host,`cookie`in t.headers&&delete t.headers.cookie,`authorization`in t.headers&&delete t.headers.authorization,(t.username||t.password)&&(t.username=``,t.password=``)):(a.username=t.username,a.password=t.password),this.redirects.push(s),t.url=a;for(let e of t.hooks.beforeRedirect)await e(t,o);this.emit(`redirect`,o,t),await this._makeRequest()}catch(e){this._beforeError(e);return}return}if(t.isStream&&t.throwHttpErrors&&!w.isResponseOk(o)){this._beforeError(new oe(o));return}e.on(`readable`,()=>{this[B]&&this._read()}),this.on(`resume`,()=>{e.resume()}),this.on(`pause`,()=>{e.pause()}),e.once(`end`,()=>{this.push(null)}),this.emit(`response`,e);for(let n of this[F]){if(n.headersSent)continue;for(let r in e.headers){let i=t.decompress?r!==`content-encoding`:!0,a=e.headers[r];i&&n.setHeader(r,a)}n.statusCode=r}}async _onResponse(e){try{await this._onResponseBase(e)}catch(e){this._beforeError(e)}}_onRequest(e){let{options:t}=this,{timeout:n,url:r}=t;c.default(e),this[L]=v.default(e,n,r);let i=t.cache?`cacheableResponse`:`response`;e.once(i,e=>{this._onResponse(e)}),e.once(`error`,t=>{var n;e.destroy(),(n=e.res)==null||n.removeAllListeners(`end`),t=t instanceof v.TimeoutError?new ce(t,this.timings,this):new J(t.message,t,this),this._beforeError(t)}),this[I]=_.default(e,this,de),this[k]=e,this.emit(`uploadProgress`,this.uploadProgress);let a=this[V],o=this.redirects.length===0?this:e;m.default.nodeStream(a)?(a.pipe(o),a.once(`error`,e=>{this._beforeError(new se(e,this))})):(this._unlockWrite(),m.default.undefined(a)?(this._cannotHaveBody||this._noPipe)&&(o.end(),this._lockWrite()):(this._writeRequest(a,void 0,()=>{}),o.end(),this._lockWrite())),this.emit(`request`,e)}async _createCacheableRequest(e,t){return new Promise((n,r)=>{Object.assign(t,y.default(e)),delete t.url;let i,a=ne.get(t.cache)(t,async e=>{e._readableState.autoDestroy=!1,i&&(await i).emit(`cacheableResponse`,e),n(e)});t.url=e,a.once(`error`,r),a.once(`request`,async e=>{i=e,n(i)})})}async _makeRequest(){var e,t,n,r,i;let{options:o}=this,{headers:c}=o;for(let e in c)if(m.default.undefined(c[e]))delete c[e];else if(m.default.null_(c[e]))throw TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${e}\` header`);if(o.decompress&&m.default.undefined(c[`accept-encoding`])&&(c[`accept-encoding`]=G?`gzip, deflate, br`:`gzip, deflate`),o.cookieJar){let e=await o.cookieJar.getCookieString(o.url.toString());m.default.nonEmptyString(e)&&(o.headers.cookie=e)}for(let e of o.hooks.beforeRequest){let t=await e(o);if(!m.default.undefined(t)){o.request=()=>t;break}}o.body&&this[V]!==o.body&&(this[V]=o.body);let{agent:l,request:d,timeout:p,url:h}=o;if(o.dnsCache&&!(`lookup`in o)&&(o.lookup=o.dnsCache.lookup),h.hostname===`unix`){let e=/(?<socketPath>.+?):(?<path>.+)/.exec(`${h.pathname}${h.search}`);if(e?.groups){let{socketPath:t,path:n}=e.groups;Object.assign(o,{socketPath:t,path:n,host:``})}}let g=h.protocol===`https:`,_;_=o.http2?f.auto:g?s.request:a.request;let v=(e=o.request)??_,y=o.cache?this._createCacheableRequest:v;l&&!o.http2&&(o.agent=l[g?`https`:`http`]),o[k]=v,delete o.request,delete o.timeout;let b=o;if(b.shared=(t=o.cacheOptions)?.shared,b.cacheHeuristic=(n=o.cacheOptions)?.cacheHeuristic,b.immutableMinTimeToLive=(r=o.cacheOptions)?.immutableMinTimeToLive,b.ignoreCargoCult=(i=o.cacheOptions)?.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{b.family=C.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch{throw Error("Invalid `dnsLookupIpVersion` option value")}o.https&&(`rejectUnauthorized`in o.https&&(b.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(b.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(b.ca=o.https.certificateAuthority),o.https.certificate&&(b.cert=o.https.certificate),o.https.key&&(b.key=o.https.key),o.https.passphrase&&(b.passphrase=o.https.passphrase),o.https.pfx&&(b.pfx=o.https.pfx));try{let e=await y(h,b);m.default.undefined(e)&&(e=_(h,b)),o.request=d,o.timeout=p,o.agent=l,o.https&&(`rejectUnauthorized`in o.https&&delete b.rejectUnauthorized,o.https.checkServerIdentity&&delete b.checkServerIdentity,o.https.certificateAuthority&&delete b.ca,o.https.certificate&&delete b.cert,o.https.key&&delete b.key,o.https.passphrase&&delete b.passphrase,o.https.pfx&&delete b.pfx),te(e)?this._onRequest(e):this.writable?(this.once(`finish`,()=>{this._onResponse(e)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(e)}catch(e){throw e instanceof u.CacheError?new Y(e,this):new J(e.message,e,this)}}async _error(e){try{for(let t of this.options.hooks.beforeError)e=await t(e)}catch(t){e=new J(t.message,t,this)}this.destroy(e)}_beforeError(e){if(this[z])return;let{options:t}=this,n=this.retryCount+1;this[z]=!0,e instanceof J||(e=new J(e.message,e,this));let r=e,{response:i}=r;(async()=>{if(i&&!i.body){i.setEncoding(this._readableState.encoding);try{i.rawBody=await S.default(i),i.body=i.rawBody.toString()}catch{}}if(this.listenerCount(`retry`)!==0){let a;try{let e;i&&`retry-after`in i.headers&&(e=Number(i.headers[`retry-after`]),Number.isNaN(e)?(e=Date.parse(i.headers[`retry-after`])-Date.now(),e<=0&&(e=1)):e*=1e3),a=await t.retry.calculateDelay({attemptCount:n,retryOptions:t.retry,error:r,retryAfter:e,computedValue:D.default({attemptCount:n,retryOptions:t.retry,error:r,retryAfter:e,computedValue:0})})}catch(e){this._error(new J(e.message,e,this));return}if(a){let t=async()=>{try{for(let e of this.options.hooks.beforeRetry)await e(this.options,r,n)}catch(t){this._error(new J(t.message,e,this));return}this.destroyed||(this.destroy(),this.emit(`retry`,n,e))};this[W]=setTimeout(t,a);return}}this._error(r)})()}_read(){this[B]=!0;let e=this[A];if(e&&!this[z]){e.readableLength&&(this[B]=!1);let t;for(;(t=e.read())!==null;){this[M]+=t.length,this[R]=!0;let e=this.downloadProgress;e.percent<1&&this.emit(`downloadProgress`,e),this.push(t)}}}_write(e,t,n){let r=()=>{this._writeRequest(e,t,n)};this.requestInitialized?r():this[H].push(r)}_writeRequest(e,t,n){this[k].destroyed||(this._progressCallbacks.push(()=>{this[P]+=Buffer.byteLength(e,t);let n=this.uploadProgress;n.percent<1&&this.emit(`uploadProgress`,n)}),this[k].write(e,t,e=>{!e&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),n(e)}))}_final(e){let t=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(k in this)){e();return}if(this[k].destroyed){e();return}this[k].end(t=>{t||(this[N]=this[P],this.emit(`uploadProgress`,this.uploadProgress),this[k].emit(`upload-complete`)),e(t)})};this.requestInitialized?t():this[H].push(t)}_destroy(e,t){var n;this[z]=!0,clearTimeout(this[W]),k in this&&(this[L](),(n=this[A])?.complete||this[k].destroy()),e!==null&&!m.default.undefined(e)&&!(e instanceof J)&&(e=new J(e.message,e,this)),t(e)}get _isAboutToError(){return this[z]}get ip(){var e;return(e=this.socket)?.remoteAddress}get aborted(){var e,t,n;return((t=(e=this[k])?.destroyed)??this.destroyed)&&!(n=this[U])?.complete}get socket(){var e,t;return(t=(e=this[k])?.socket)??void 0}get downloadProgress(){let e;return e=this[j]?this[M]/this[j]:this[j]===this[M]?1:0,{percent:e,transferred:this[M],total:this[j]}}get uploadProgress(){let e;return e=this[N]?this[P]/this[N]:this[N]===this[P]?1:0,{percent:e,transferred:this[P],total:this[N]}}get timings(){var e;return(e=this[k])?.timings}get isFromCache(){return this[ee]}pipe(e,t){if(this[R])throw Error(`Failed to pipe. The response has been emitted already.`);return e instanceof o.ServerResponse&&this[F].add(e),super.pipe(e,t)}unpipe(e){return e instanceof o.ServerResponse&&this[F].delete(e),super.unpipe(e),this}};exports.default=fe}),eb=o(exports=>{var t=Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]},n=function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(exports,`__esModule`,{value:!0}),exports.CancelError=exports.ParseError=void 0;let r=$y();var i=class extends r.RequestError{constructor(e,t){let{options:n}=t.request;super(`${e.message} in "${n.url.toString()}"`,e,t.request),this.name=`ParseError`,this.code=this.code===`ERR_GOT_REQUEST_ERROR`?`ERR_BODY_PARSE_FAILURE`:this.code}};exports.ParseError=i;var a=class extends r.RequestError{constructor(e){super(`Promise was canceled`,{},e),this.name=`CancelError`,this.code=`ERR_CANCELED`}get isCanceled(){return!0}};exports.CancelError=a,n($y(),exports)}),tb=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=eb(),n=(e,n,r,i)=>{let{rawBody:a}=e;try{if(n===`text`)return a.toString(i);if(n===`json`)return a.length===0?``:r(a.toString());if(n===`buffer`)return a;throw new t.ParseError({message:`Unknown body type '${n}'`,name:`Error`},e)}catch(n){throw new t.ParseError(n,e)}};exports.default=n}),nb=o(exports=>{var t=Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]},n=function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(exports,`__esModule`,{value:!0});let r=require(`events`),i=ay(),a=oy(),o=eb(),s=tb(),c=$y(),l=Vy(),u=qy(),d=Yy(),f=[`request`,`response`,`redirect`,`uploadProgress`,`downloadProgress`];function p(e){let t,n,m=new r.EventEmitter,h=new a((r,a,g)=>{let _=v=>{let y=new c.default(void 0,e);y.retryCount=v,y._noPipe=!0,g(()=>y.destroy()),g.shouldReject=!1,g(()=>a(new o.CancelError(y))),t=y,y.once(`response`,async e=>{var t;if(e.retryCount=v,e.request.aborted)return;let i;try{i=await u.default(y),e.rawBody=i}catch{return}if(y._isAboutToError)return;let a=((t=e.headers[`content-encoding`])??``).toLowerCase(),l=[`gzip`,`deflate`,`br`].includes(a),{options:f}=y;if(l&&!f.decompress)e.body=i;else try{e.body=s.default(e,f.responseType,f.parseJson,f.encoding)}catch(t){if(e.body=i.toString(),d.isResponseOk(e)){y._beforeError(t);return}}try{for(let[t,n]of f.hooks.afterResponse.entries())e=await n(e,async e=>{let n=c.default.normalizeArguments(void 0,{...e,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},f);n.hooks.afterResponse=n.hooks.afterResponse.slice(0,t);for(let e of n.hooks.beforeRetry)await e(n);let r=p(n);return g(()=>{r.catch(()=>{}),r.cancel()}),r})}catch(e){y._beforeError(new o.RequestError(e.message,e,y));return}if(n=e,!d.isResponseOk(e)){y._beforeError(new o.HTTPError(e));return}y.destroy(),r(y.options.resolveBodyOnly?e.body:e)});let b=e=>{if(h.isCanceled)return;let{options:t}=y;if(e instanceof o.HTTPError&&!t.throwHttpErrors){let{response:t}=e;r(y.options.resolveBodyOnly?t.body:t);return}a(e)};y.once(`error`,b);let x=y.options.body;y.once(`retry`,(e,t)=>{var n,r;if(x===(n=t.request)?.options.body&&i.default.nodeStream((r=t.request)?.options.body)){b(t);return}_(e)}),l.default(y,m,f)};_(0)});h.on=(e,t)=>(m.on(e,t),h);let g=e=>{let t=(async()=>{await h;let{options:t}=n.request;return s.default(n,e,t.parseJson,t.encoding)})();return Object.defineProperties(t,Object.getOwnPropertyDescriptors(h)),t};return h.json=()=>{let{headers:e}=t.options;return!t.writableFinished&&e.accept===void 0&&(e.accept=`application/json`),g(`json`)},h.buffer=()=>g(`buffer`),h.text=()=>g(`text`),h}exports.default=p,n(eb(),exports)}),rb=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=eb();function n(e,...n){let r=(async()=>{if(e instanceof t.RequestError)try{for(let t of n)if(t)for(let n of t)e=await n(e)}catch(t){e=t}throw e})(),i=()=>r;return r.json=i,r.text=i,r.buffer=i,r.on=i,r}exports.default=n}),ib=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=ay();function n(e){for(let r of Object.values(e))(t.default.plainObject(r)||t.default.array(r))&&n(r);return Object.freeze(e)}exports.default=n}),ab=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0})}),ob=o(exports=>{var t=Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]},n=function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(exports,`__esModule`,{value:!0}),exports.defaultHandler=void 0;let r=ay(),i=nb(),a=rb(),o=$y(),s=ib(),c={RequestError:i.RequestError,CacheError:i.CacheError,ReadError:i.ReadError,HTTPError:i.HTTPError,MaxRedirectsError:i.MaxRedirectsError,TimeoutError:i.TimeoutError,ParseError:i.ParseError,CancelError:i.CancelError,UnsupportedProtocolError:i.UnsupportedProtocolError,UploadError:i.UploadError},l=async e=>new Promise(t=>{setTimeout(t,e)}),{normalizeArguments:u}=o.default,d=(...e)=>{let t;for(let n of e)t=u(void 0,n,t);return t},f=e=>e.isStream?new o.default(void 0,e):i.default(e),p=e=>`defaults`in e&&`options`in e.defaults,m=[`get`,`post`,`put`,`patch`,`head`,`delete`];exports.defaultHandler=(e,t)=>t(e);let h=(e,t)=>{if(e)for(let n of e)n(t)},g=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(e=>(t,n)=>{let r,i=e(t,e=>(r=n(e),r));if(i!==r&&!t.isStream&&r){let e=i,{then:t,catch:n,finally:a}=e;Object.setPrototypeOf(e,Object.getPrototypeOf(r)),Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)),e.then=t,e.catch=n,e.finally=a}return i});let n=(e,n={},s)=>{var c,l;let d=0,p=e=>t.handlers[d++](e,d===t.handlers.length?f:p);if(r.default.plainObject(e)){let t={...e,...n};o.setNonEnumerableProperties([e,n],t),n=t,e=void 0}try{let r;try{h(t.options.hooks.init,n),h((c=n.hooks)?.init,n)}catch(e){r=e}let a=u(e,n,s??t.options);if(a[o.kIsNormalizedAlready]=!0,r)throw new i.RequestError(r.message,r,a);return p(a)}catch(e){if(n.isStream)throw e;return a.default(e,t.options.hooks.beforeError,(l=n.hooks)?.beforeError)}};n.extend=(...n)=>{let r=[t.options],i=[...t._rawHandlers],a;for(let e of n)p(e)?(r.push(e.defaults.options),i.push(...e.defaults._rawHandlers),a=e.defaults.mutableDefaults):(r.push(e),`handlers`in e&&i.push(...e.handlers),a=e.mutableDefaults);return i=i.filter(t=>t!==exports.defaultHandler),i.length===0&&i.push(exports.defaultHandler),g({options:d(...r),handlers:i,mutableDefaults:!!a})};let _=async function*(e,i){let a=u(e,i,t.options);a.resolveBodyOnly=!1;let o=a.pagination;if(!r.default.object(o))throw TypeError("`options.pagination` must be implemented");let s=[],{countLimit:c}=o,d=0;for(;d<o.requestLimit;){d!==0&&await l(o.backoff);let e=await n(void 0,void 0,a),t=await o.transform(e),r=[];for(let e of t)if(o.filter(e,s,r)&&(!o.shouldContinue(e,s,r)||(yield e,o.stackAllItems&&s.push(e),r.push(e),--c<=0)))return;let i=o.paginate(e,s,r);if(i===!1)return;i===e.request.options?a=e.request.options:i!==void 0&&(a=u(void 0,i,a)),d++}};n.paginate=_,n.paginate.all=async(e,t)=>{let n=[];for await(let r of _(e,t))n.push(r);return n},n.paginate.each=_,n.stream=(e,t)=>n(e,{...t,isStream:!0});for(let e of m)n[e]=(t,r)=>n(t,{...r,method:e}),n.stream[e]=(t,r)=>n(t,{...r,method:e,isStream:!0});return Object.assign(n,c),Object.defineProperty(n,`defaults`,{value:t.mutableDefaults?t:s.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),n.mergeOptions=d,n};exports.default=g,n(ab(),exports)}),sb=o((exports,t)=>{var n=Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]},r=function(e,t){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(t,r)&&n(t,e,r)};Object.defineProperty(exports,`__esModule`,{value:!0});let i=require(`url`),a=ob(),o={options:{method:`GET`,retry:{limit:2,methods:[`GET`,`PUT`,`HEAD`,`DELETE`,`OPTIONS`,`TRACE`],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:[`ETIMEDOUT`,`ECONNRESET`,`EADDRINUSE`,`ECONNREFUSED`,`EPIPE`,`ENOTFOUND`,`ENETUNREACH`,`EAI_AGAIN`],maxRetryAfter:void 0,calculateDelay:({computedValue:e})=>e},timeout:{},headers:{"user-agent":`got (https://github.com/sindresorhus/got)`},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:`text`,resolveBodyOnly:!1,maxRedirects:10,prefixUrl:``,methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:e=>e.request.options.responseType===`json`?e.body:JSON.parse(e.body),paginate:e=>{if(!Reflect.has(e.headers,`link`))return!1;let t=e.headers.link.split(`,`),n;for(let e of t){let t=e.split(`;`);if(t[1].includes(`next`)){n=t[0].trimStart().trim(),n=n.slice(1,-1);break}}if(n){let e={url:new i.URL(n)};return e}return!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:e=>JSON.parse(e),stringifyJson:e=>JSON.stringify(e),cacheOptions:{}},handlers:[a.defaultHandler],mutableDefaults:!1},s=a.default(o);exports.default=s,t.exports=s,t.exports.default=s,t.exports.__esModule=!0,r(ob(),exports),r(nb(),exports)}),cb=l(sb());const lb=20,ub=`/api/turborepo/v1/events`;var db=class{api;packageInfo;batchSize=lb;timeout=250;sessionId=(0,A.randomUUID)();eventBatches=[];events=[];config;constructor({api:e,packageInfo:t,config:n,opts:r}){let i=new URL(ub,e);this.api=i.toString(),this.packageInfo=t,this.config=n,r?.timeout&&(this.timeout=r.timeout),r?.batchSize&&(this.batchSize=r.batchSize)}hasPendingEvents(){return this.events.length!==0}async waitForFlush(){await Promise.all(this.eventBatches)}flushEvents(){let e=this.events.splice(0,this.batchSize);this.config.isEnabled()&&this.eventBatches.push(cb.default.post(this.api,{timeout:this.timeout,json:e,headers:{"x-turbo-telemetry-id":this.config.id,"x-turbo-session-id":this.sessionId,"User-Agent":Qv.buildUserAgent(this.packageInfo)}}))}track({key:e,value:t,parentId:n,isSensitive:r}){let i={id:(0,A.randomUUID)(),key:e,value:r?this.config.oneWayHash(t):t,package_name:this.packageInfo.name,package_version:this.packageInfo.version,parent_id:n};return iy.isDebug()&&(Qo(),qo(`[telemetry event]`),Yo(JSON.stringify(i,null,2)),Qo()),this.config.isEnabled()&&(this.events.push({package:i}),this.events.length>=this.batchSize&&this.flushEvents()),i}async close(){for(;this.hasPendingEvents();)this.flushEvents();try{await this.waitForFlush()}catch{}}trackCliOption({option:e,value:t}){return this.track({key:`option:${e}`,value:t})}trackCliArgument({argument:e,value:t}){return this.track({key:`argument:${e}`,value:t})}trackCliCommand({command:e,value:t}){return this.track({key:`command:${e}`,value:t})}trackCommandStatus({command:e,status:t}){return this.trackCliCommand({command:e,value:t})}trackCommandWarning(e){return this.track({key:`warning`,value:e})}trackCommandError(e){return this.track({key:`error`,value:e})}};function fb(e){if(e===`default`)return`default`;try{let t=new URL(e);return t.hostname===`github.com`?`github_url`:`other_url`}catch{return`official`}}var pb=class extends db{trackOptionExample(e){if(e)return this.trackCliOption({option:`example`,value:fb(e)})}trackOptionPackageManager(e){if(e)return this.trackCliOption({option:`package_manager`,value:e})}trackOptionSkipInstall(e){if(e)return this.trackCliOption({option:`skip_install`,value:e.toString()})}trackOptionSkipTransforms(e){if(e)return this.trackCliOption({option:`skip_transforms`,value:e.toString()})}trackOptionTurboVersion(e){if(e)return this.trackCliOption({option:`turbo_version`,value:e})}trackOptionExamplePath(e){if(e)return this.trackCliOption({option:`example_path`,value:`provided`})}trackArgumentDirectory(e){if(e)return this.trackCliArgument({argument:`project_directory`,value:`provided`})}trackArgumentPackageManager(e){if(e)return this.trackCliArgument({argument:`package_manager`,value:e})}},mb=o((exports,t)=>{t.exports=[{name:`Agola CI`,constant:`AGOLA`,env:`AGOLA_GIT_REF`,pr:`AGOLA_PULL_REQUEST_ID`},{name:`Appcircle`,constant:`APPCIRCLE`,env:`AC_APPCIRCLE`},{name:`AppVeyor`,constant:`APPVEYOR`,env:`APPVEYOR`,pr:`APPVEYOR_PULL_REQUEST_NUMBER`},{name:`AWS CodeBuild`,constant:`CODEBUILD`,env:`CODEBUILD_BUILD_ARN`},{name:`Azure Pipelines`,constant:`AZURE_PIPELINES`,env:`TF_BUILD`,pr:{BUILD_REASON:`PullRequest`}},{name:`Bamboo`,constant:`BAMBOO`,env:`bamboo_planKey`},{name:`Bitbucket Pipelines`,constant:`BITBUCKET`,env:`BITBUCKET_COMMIT`,pr:`BITBUCKET_PR_ID`},{name:`Bitrise`,constant:`BITRISE`,env:`BITRISE_IO`,pr:`BITRISE_PULL_REQUEST`},{name:`Buddy`,constant:`BUDDY`,env:`BUDDY_WORKSPACE_ID`,pr:`BUDDY_EXECUTION_PULL_REQUEST_ID`},{name:`Buildkite`,constant:`BUILDKITE`,env:`BUILDKITE`,pr:{env:`BUILDKITE_PULL_REQUEST`,ne:`false`}},{name:`CircleCI`,constant:`CIRCLE`,env:`CIRCLECI`,pr:`CIRCLE_PULL_REQUEST`},{name:`Cirrus CI`,constant:`CIRRUS`,env:`CIRRUS_CI`,pr:`CIRRUS_PR`},{name:`Codefresh`,constant:`CODEFRESH`,env:`CF_BUILD_ID`,pr:{any:[`CF_PULL_REQUEST_NUMBER`,`CF_PULL_REQUEST_ID`]}},{name:`Codemagic`,constant:`CODEMAGIC`,env:`CM_BUILD_ID`,pr:`CM_PULL_REQUEST`},{name:`Codeship`,constant:`CODESHIP`,env:{CI_NAME:`codeship`}},{name:`Drone`,constant:`DRONE`,env:`DRONE`,pr:{DRONE_BUILD_EVENT:`pull_request`}},{name:`dsari`,constant:`DSARI`,env:`DSARI`},{name:`Earthly`,constant:`EARTHLY`,env:`EARTHLY_CI`},{name:`Expo Application Services`,constant:`EAS`,env:`EAS_BUILD`},{name:`Gerrit`,constant:`GERRIT`,env:`GERRIT_PROJECT`},{name:`Gitea Actions`,constant:`GITEA_ACTIONS`,env:`GITEA_ACTIONS`},{name:`GitHub Actions`,constant:`GITHUB_ACTIONS`,env:`GITHUB_ACTIONS`,pr:{GITHUB_EVENT_NAME:`pull_request`}},{name:`GitLab CI`,constant:`GITLAB`,env:`GITLAB_CI`,pr:`CI_MERGE_REQUEST_ID`},{name:`GoCD`,constant:`GOCD`,env:`GO_PIPELINE_LABEL`},{name:`Google Cloud Build`,constant:`GOOGLE_CLOUD_BUILD`,env:`BUILDER_OUTPUT`},{name:`Harness CI`,constant:`HARNESS`,env:`HARNESS_BUILD_ID`},{name:`Heroku`,constant:`HEROKU`,env:{env:`NODE`,includes:`/app/.heroku/node/bin/node`}},{name:`Hudson`,constant:`HUDSON`,env:`HUDSON_URL`},{name:`Jenkins`,constant:`JENKINS`,env:[`JENKINS_URL`,`BUILD_ID`],pr:{any:[`ghprbPullId`,`CHANGE_ID`]}},{name:`LayerCI`,constant:`LAYERCI`,env:`LAYERCI`,pr:`LAYERCI_PULL_REQUEST`},{name:`Magnum CI`,constant:`MAGNUM`,env:`MAGNUM`},{name:`Netlify CI`,constant:`NETLIFY`,env:`NETLIFY`,pr:{env:`PULL_REQUEST`,ne:`false`}},{name:`Nevercode`,constant:`NEVERCODE`,env:`NEVERCODE`,pr:{env:`NEVERCODE_PULL_REQUEST`,ne:`false`}},{name:`Prow`,constant:`PROW`,env:`PROW_JOB_ID`},{name:`ReleaseHub`,constant:`RELEASEHUB`,env:`RELEASE_BUILD_ID`},{name:`Render`,constant:`RENDER`,env:`RENDER`,pr:{IS_PULL_REQUEST:`true`}},{name:`Sail CI`,constant:`SAIL`,env:`SAILCI`,pr:`SAIL_PULL_REQUEST_NUMBER`},{name:`Screwdriver`,constant:`SCREWDRIVER`,env:`SCREWDRIVER`,pr:{env:`SD_PULL_REQUEST`,ne:`false`}},{name:`Semaphore`,constant:`SEMAPHORE`,env:`SEMAPHORE`,pr:`PULL_REQUEST_NUMBER`},{name:`Sourcehut`,constant:`SOURCEHUT`,env:{CI_NAME:`sourcehut`}},{name:`Strider CD`,constant:`STRIDER`,env:`STRIDER`},{name:`TaskCluster`,constant:`TASKCLUSTER`,env:[`TASK_ID`,`RUN_ID`]},{name:`TeamCity`,constant:`TEAMCITY`,env:`TEAMCITY_VERSION`},{name:`Travis CI`,constant:`TRAVIS`,env:`TRAVIS`,pr:{env:`TRAVIS_PULL_REQUEST`,ne:`false`}},{name:`Vela`,constant:`VELA`,env:`VELA`,pr:{VELA_PULL_REQUEST:`1`}},{name:`Vercel`,constant:`VERCEL`,env:{any:[`NOW_BUILDER`,`VERCEL`]},pr:`VERCEL_GIT_PULL_REQUEST_ID`},{name:`Visual Studio App Center`,constant:`APPCENTER`,env:`APPCENTER_BUILD_ID`},{name:`Woodpecker`,constant:`WOODPECKER`,env:{CI:`woodpecker`},pr:{CI_BUILD_EVENT:`pull_request`}},{name:`Xcode Cloud`,constant:`XCODE_CLOUD`,env:`CI_XCODE_PROJECT`,pr:`CI_PULL_REQUEST_NUMBER`},{name:`Xcode Server`,constant:`XCODE_SERVER`,env:`XCS`}]}),hb=o(exports=>{let t=mb(),n=process.env;Object.defineProperty(exports,`_vendors`,{value:t.map(function(e){return e.constant})}),exports.name=null,exports.isPR=null,t.forEach(function(t){let i=Array.isArray(t.env)?t.env:[t.env],a=i.every(function(e){return r(e)});if(exports[t.constant]=a,a)switch(exports.name=t.name,typeof t.pr){case`string`:exports.isPR=!!n[t.pr];break;case`object`:`env`in t.pr?exports.isPR=t.pr.env in n&&n[t.pr.env]!==t.pr.ne:`any`in t.pr?exports.isPR=t.pr.any.some(function(e){return!!n[e]}):exports.isPR=r(t.pr);break;default:exports.isPR=null}}),exports.isCI=!!(n.CI!==`false`&&(n.BUILD_ID||n.BUILD_NUMBER||n.CI||n.CI_APP_ID||n.CI_BUILD_ID||n.CI_BUILD_NUMBER||n.CI_NAME||n.CONTINUOUS_INTEGRATION||n.RUN_ID||exports.name));function r(e){return typeof e==`string`?!!n[e]:`env`in e?n[e.env]&&n[e.env].includes(e.includes):`any`in e?e.any.some(function(e){return!!n[e]}):Object.keys(e).every(function(t){return n[t]===e[t]})}}),gb=l(hb());const _b=[`build`,`test`,`lint`,`typecheck`,`checktypes`,`check-types`,`type-check`,`check`];var vb=class extends db{trackCI(){return this.track({key:`ci`,value:gb.name??`unknown`})}trackArgumentWorkspace(e){if(e)return this.trackCliArgument({argument:`workspace`,value:`provided`})}trackOptionTask(e){if(e)return this.trackCliOption({option:`task`,value:_b.includes(e)?e:`other`})}trackOptionFallback(e){if(e)return this.trackCliOption({option:`fallback`,value:e})}trackOptionDirectory(e){if(e)return this.trackCliOption({option:`directory`,value:`custom`})}trackOptionMaxBuffer(e){if(e!==void 0)return this.trackCliOption({option:`max_buffer`,value:e.toString()})}};const yb={"create-turbo":pb,"turbo-ignore":vb},bb=`https://telemetry.vercel.com`;async function xb({packageInfo:e,opts:t}){let n=yb[e.name],r=await iy.fromDefaultConfig();if(r){r.showAlert();let i=new n({api:bb,packageInfo:e,config:r,opts:t});return{telemetry:i}}return{telemetry:void 0}}const Sb=`status`,Cb=[`enable`,`disable`,Sb];function wb(e){let t=e.telemetry?.config.isEnabled();Qo(`Status: ${t?u.default.bold(u.default.green(`Enabled`)):u.default.bold(u.default.red(`Disabled`))}`),Qo(),Qo(t?`Turborepo telemetry is completely anonymous. Thank you for participating!`:`You have opted-out of Turborepo anonymous telemetry. No data will be collected from your machine.`),Qo(`Learn more: https://turborepo.dev/docs/telemetry`)}function Tb(e,t){if(!t.telemetry){es(`Telemetry could not be initialized`);return}e===`enable`?(t.telemetry.config.enable(),qo(`Success!`)):e===`disable`&&(t.telemetry.config.disable(),qo(`Success!`)),Qo(),wb(t)}function Eb(e){e.command(`telemetry`).description(`Manage telemetry settings`).addArgument(new d.Argument(`[action]`,`Action to perform`).choices(Cb).default(Sb)).action(Tb)}var Db=o((exports,t)=>{t.exports={name:`create-turbo`,version:`2.9.16-canary.1`,description:`Create a new Turborepo`,homepage:`https://turborepo.dev`,bugs:{url:`https://github.com/vercel/turborepo/issues`},license:`MIT`,repository:{type:`git`,url:`https://github.com/vercel/turborepo`,directory:`packages/create-turbo`},bin:{"create-turbo":`dist/cli.js`},files:[`dist`],scripts:{build:`tsdown`,test:`jest`,"check-types":`tsc --noEmit`,"lint:prettier":`prettier -c . --cache --ignore-path=../../.prettierignore`},dependencies:{"@inquirer/prompts":`^7.10.1`,commander:`11.0.0`,"fs-extra":`11.1.1`,picocolors:`1.0.1`,semver:`7.7.3`,"update-check":`1.5.4`},devDependencies:{"@jest/globals":`30.3.0`,"@turbo/telemetry":`workspace:*`,"@turbo/test-utils":`workspace:*`,"@turbo/tsconfig":`workspace:*`,"@turbo/utils":`workspace:*`,"@turbo/workspaces":`workspace:*`,"@types/fs-extra":`9.0.13`,"@types/node":`18.17.4`,"@types/semver":`7.3.12`,jest:`30.3.0`,"ts-jest":`29.4.9`,tsdown:`0.12.0`,typescript:`5.5.4`}}}),Ob=o((exports,t)=>{function n(e){return e==null}function r(e){return typeof e==`object`&&!!e}function i(e){return Array.isArray(e)?e:n(e)?[]:[e]}function a(e,t){var n,r,i,a;if(t)for(a=Object.keys(t),n=0,r=a.length;n<r;n+=1)i=a[n],e[i]=t[i];return e}function o(e,t){var n=``,r;for(r=0;r<t;r+=1)n+=e;return n}function s(e){return e===0&&1/e==-1/0}t.exports.isNothing=n,t.exports.isObject=r,t.exports.toArray=i,t.exports.repeat=o,t.exports.isNegativeZero=s,t.exports.extend=a}),kb=o((exports,t)=>{function n(e,t){var n=``,r=e.reason||`(unknown reason)`;return e.mark?(e.mark.name&&(n+=`in "`+e.mark.name+`" `),n+=`(`+(e.mark.line+1)+`:`+(e.mark.column+1)+`)`,!t&&e.mark.snippet&&(n+=`
100
+ `)}`}}};exports.RequestError=J;var ae=class extends J{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name=`MaxRedirectsError`,this.code=`ERR_TOO_MANY_REDIRECTS`}};exports.MaxRedirectsError=ae;var oe=class extends J{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name=`HTTPError`,this.code=`ERR_NON_2XX_3XX_RESPONSE`}};exports.HTTPError=oe;var Y=class extends J{constructor(e,t){super(e.message,e,t),this.name=`CacheError`,this.code=this.code===`ERR_GOT_REQUEST_ERROR`?`ERR_CACHE_ACCESS`:this.code}};exports.CacheError=Y;var se=class extends J{constructor(e,t){super(e.message,e,t),this.name=`UploadError`,this.code=this.code===`ERR_GOT_REQUEST_ERROR`?`ERR_UPLOAD`:this.code}};exports.UploadError=se;var ce=class extends J{constructor(e,t,n){super(e.message,e,n),this.name=`TimeoutError`,this.event=e.event,this.timings=t}};exports.TimeoutError=ce;var le=class extends J{constructor(e,t){super(e.message,e,t),this.name=`ReadError`,this.code=this.code===`ERR_GOT_REQUEST_ERROR`?`ERR_READING_RESPONSE_STREAM`:this.code}};exports.ReadError=le;var ue=class extends J{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name=`UnsupportedProtocolError`,this.code=`ERR_UNSUPPORTED_PROTOCOL`}};exports.UnsupportedProtocolError=ue;let de=[`socket`,`connect`,`continue`,`information`,`upgrade`,`timeout`];var fe=class extends n.Duplex{constructor(t,n={},i){super({autoDestroy:!1,highWaterMark:0}),this[M]=0,this[P]=0,this.requestInitialized=!1,this[F]=new Set,this.redirects=[],this[z]=!1,this[B]=!1,this[H]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on(`pipe`,e=>{e.prependListener(`data`,a),e.on(`data`,s),e.prependListener(`end`,a),e.on(`end`,s)}),this.on(`unpipe`,e=>{e.off(`data`,a),e.off(`data`,s),e.off(`end`,a),e.off(`end`,s)}),this.on(`pipe`,e=>{e instanceof o.IncomingMessage&&(this.options.headers={...e.headers,...this.options.headers})});let{json:c,body:l,form:u}=n;if((c||l||u)&&this._lockWrite(),exports.kIsNormalizedAlready in n)this.options=n;else try{this.options=this.constructor.normalizeArguments(t,n,i)}catch(e){m.default.nodeStream(n.body)&&n.body.destroy(),this.destroy(e);return}(async()=>{var e;try{this.options.body instanceof r.ReadStream&&await q(this.options.body);let{url:t}=this.options;if(!t)throw TypeError("Missing `url` property");if(this.requestUrl=t.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(e=this[k])==null||e.destroy();return}for(let e of this[H])e();this[H].length=0,this.requestInitialized=!0}catch(e){if(e instanceof J){this._beforeError(e);return}this.destroyed||this.destroy(e)}})()}static normalizeArguments(n,r,a){var o,s,c,d,f;let h=r;if(m.default.object(n)&&!m.default.urlInstance(n))r={...a,...n,...r};else{if(n&&r&&r.url!==void 0)throw TypeError("The `url` option is mutually exclusive with the `input` argument");r={...a,...r},n!==void 0&&(r.url=n),m.default.urlInstance(r.url)&&(r.url=new i.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),m.assert.any([m.default.string,m.default.undefined],r.method),m.assert.any([m.default.object,m.default.undefined],r.headers),m.assert.any([m.default.string,m.default.urlInstance,m.default.undefined],r.prefixUrl),m.assert.any([m.default.object,m.default.undefined],r.cookieJar),m.assert.any([m.default.object,m.default.string,m.default.undefined],r.searchParams),m.assert.any([m.default.object,m.default.string,m.default.undefined],r.cache),m.assert.any([m.default.object,m.default.number,m.default.undefined],r.timeout),m.assert.any([m.default.object,m.default.undefined],r.context),m.assert.any([m.default.object,m.default.undefined],r.hooks),m.assert.any([m.default.boolean,m.default.undefined],r.decompress),m.assert.any([m.default.boolean,m.default.undefined],r.ignoreInvalidCookies),m.assert.any([m.default.boolean,m.default.undefined],r.followRedirect),m.assert.any([m.default.number,m.default.undefined],r.maxRedirects),m.assert.any([m.default.boolean,m.default.undefined],r.throwHttpErrors),m.assert.any([m.default.boolean,m.default.undefined],r.http2),m.assert.any([m.default.boolean,m.default.undefined],r.allowGetBody),m.assert.any([m.default.string,m.default.undefined],r.localAddress),m.assert.any([C.isDnsLookupIpVersion,m.default.undefined],r.dnsLookupIpVersion),m.assert.any([m.default.object,m.default.undefined],r.https),m.assert.any([m.default.boolean,m.default.undefined],r.rejectUnauthorized),r.https&&(m.assert.any([m.default.boolean,m.default.undefined],r.https.rejectUnauthorized),m.assert.any([m.default.function_,m.default.undefined],r.https.checkServerIdentity),m.assert.any([m.default.string,m.default.object,m.default.array,m.default.undefined],r.https.certificateAuthority),m.assert.any([m.default.string,m.default.object,m.default.array,m.default.undefined],r.https.key),m.assert.any([m.default.string,m.default.object,m.default.array,m.default.undefined],r.https.certificate),m.assert.any([m.default.string,m.default.undefined],r.https.passphrase),m.assert.any([m.default.string,m.default.buffer,m.default.array,m.default.undefined],r.https.pfx)),m.assert.any([m.default.object,m.default.undefined],r.cacheOptions),m.default.string(r.method)?r.method=r.method.toUpperCase():r.method=`GET`,r.headers===a?.headers?r.headers={...r.headers}:r.headers=p({...a?.headers,...r.headers}),`slashes`in r)throw TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if(`auth`in r)throw TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if(`searchParams`in r&&r.searchParams&&r.searchParams!==a?.searchParams){let e;if(m.default.string(r.searchParams)||r.searchParams instanceof i.URLSearchParams)e=new i.URLSearchParams(r.searchParams);else for(let t in K(r.searchParams),e=new i.URLSearchParams,r.searchParams){let n=r.searchParams[t];n===null?e.append(t,``):n!==void 0&&e.append(t,n)}(o=a?.searchParams)==null||o.forEach((t,n)=>{e.has(n)||e.append(n,t)}),r.searchParams=e}if(r.username=(s=r.username)??``,r.password=(c=r.password)??``,m.default.undefined(r.prefixUrl)?r.prefixUrl=(d=a?.prefixUrl)??``:(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==``&&!r.prefixUrl.endsWith(`/`)&&(r.prefixUrl+=`/`)),m.default.string(r.url)){if(r.url.startsWith(`/`))throw Error("`input` must not start with a slash when using `prefixUrl`");r.url=b.default(r.prefixUrl+r.url,r)}else (m.default.undefined(r.url)&&r.prefixUrl!==``||r.protocol)&&(r.url=b.default(r.prefixUrl,r));if(r.url){`port`in r&&delete r.port;let{prefixUrl:e}=r;Object.defineProperty(r,`prefixUrl`,{set:t=>{let n=r.url;if(!n.href.startsWith(t))throw Error(`Cannot change \`prefixUrl\` from ${e} to ${t}: ${n.href}`);r.url=new i.URL(t+n.href.slice(e.length)),e=t},get:()=>e});let{protocol:t}=r.url;if(t===`unix:`&&(t=`http:`,r.url=new i.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),t!==`http:`&&t!==`https:`)throw new ue(r);r.username===``?r.username=r.url.username:r.url.username=r.username,r.password===``?r.password=r.url.password:r.url.password=r.password}let{cookieJar:g}=r;if(g){let{setCookie:e,getCookieString:n}=g;m.assert.function_(e),m.assert.function_(n),e.length===4&&n.length===0&&(e=t.promisify(e.bind(r.cookieJar)),n=t.promisify(n.bind(r.cookieJar)),r.cookieJar={setCookie:e,getCookieString:n})}let{cache:_}=r;if(_&&(ne.has(_)||ne.set(_,new u((e,t)=>{let n=e[k](e,t);return m.default.promise(n)&&(n.once=(e,t)=>{if(e===`error`)n.catch(t);else if(e===`abort`)(async()=>{try{let e=await n;e.once(`abort`,t)}catch{}})();else throw Error(`Unknown HTTP2 promise event: ${e}`);return n}),n},_))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)O||=new l.default,r.dnsCache=O;else if(!m.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${m.default(r.dnsCache)}`);m.default.number(r.timeout)?r.timeout={request:r.timeout}:a&&r.timeout!==a.timeout?r.timeout={...a.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||={};let v=r.hooks===a?.hooks;r.hooks={...r.hooks};for(let t of exports.knownHookEvents)if(t in r.hooks)if(m.default.array(r.hooks[t]))r.hooks[t]=[...r.hooks[t]];else throw TypeError(`Parameter \`${t}\` must be an Array, got ${m.default(r.hooks[t])}`);else r.hooks[t]=[];if(a&&!v)for(let t of exports.knownHookEvents){let e=a.hooks[t];e.length>0&&(r.hooks[t]=[...a.hooks[t],...r.hooks[t]])}if(`family`in r&&T.default(`"options.family" was never documented, please use "options.dnsLookupIpVersion"`),a?.https&&(r.https={...a.https,...r.https}),`rejectUnauthorized`in r&&T.default(`"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"`),`checkServerIdentity`in r&&T.default(`"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"`),`ca`in r&&T.default(`"options.ca" was never documented, please use "options.https.certificateAuthority"`),`key`in r&&T.default(`"options.key" was never documented, please use "options.https.key"`),`cert`in r&&T.default(`"options.cert" was never documented, please use "options.https.certificate"`),`passphrase`in r&&T.default(`"options.passphrase" was never documented, please use "options.https.passphrase"`),`pfx`in r&&T.default(`"options.pfx" was never documented, please use "options.https.pfx"`),`followRedirects`in r)throw TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let e in r.agent)if(e!==`http`&&e!==`https`&&e!==`http2`)throw TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${e}\``)}return r.maxRedirects=(f=r.maxRedirects)??0,exports.setNonEnumerableProperties([a,h],r),E.default(r,a)}_lockWrite(){let e=()=>{throw TypeError(`The payload has been already provided`)};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:t}=this,{headers:r}=t,a=!m.default.undefined(t.form),o=!m.default.undefined(t.json),s=!m.default.undefined(t.body),c=a||o||s,l=exports.withoutBody.has(t.method)&&!(t.method===`GET`&&t.allowGetBody);if(this._cannotHaveBody=l,c){if(l)throw TypeError(`The \`${t.method}\` method cannot be used with a body`);if([s,a,o].filter(e=>e).length>1)throw TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(t.body instanceof n.Readable)&&!m.default.string(t.body)&&!m.default.buffer(t.body)&&!g.default(t.body))throw TypeError("The `body` option must be a stream.Readable, string or Buffer");if(a&&!m.default.object(t.form))throw TypeError("The `form` option must be an Object");{let e=!m.default.string(r[`content-type`]);s?(g.default(t.body)&&e&&(r[`content-type`]=`multipart/form-data; boundary=${t.body.getBoundary()}`),this[V]=t.body):a?(e&&(r[`content-type`]=`application/x-www-form-urlencoded`),this[V]=new i.URLSearchParams(t.form).toString()):(e&&(r[`content-type`]=`application/json`),this[V]=t.stringifyJson(t.json));let n=await h.default(this[V],t.headers);m.default.undefined(r[`content-length`])&&m.default.undefined(r[`transfer-encoding`])&&!l&&!m.default.undefined(n)&&(r[`content-length`]=String(n))}}else l?this._lockWrite():this._unlockWrite();this[N]=Number(r[`content-length`])||void 0}async _onResponseBase(e){let{options:t}=this,{url:n}=t;this[U]=e,t.decompress&&(e=d(e));let r=e.statusCode,o=e;o.statusMessage=o.statusMessage?o.statusMessage:a.STATUS_CODES[r],o.url=t.url.toString(),o.requestUrl=this.requestUrl,o.redirectUrls=this.redirects,o.request=this,o.isFromCache=e.fromCache||!1,o.ip=this.ip,o.retryCount=this.retryCount,this[ee]=o.isFromCache,this[j]=Number(e.headers[`content-length`])||void 0,this[A]=e,e.once(`end`,()=>{this[j]=this[M],this.emit(`downloadProgress`,this.downloadProgress)}),e.once(`error`,t=>{e.destroy(),this._beforeError(new le(t,this))}),e.once(`aborted`,()=>{this._beforeError(new le({name:`Error`,message:`The server aborted pending request`,code:`ECONNRESET`},this))}),this.emit(`downloadProgress`,this.downloadProgress);let s=e.headers[`set-cookie`];if(m.default.object(t.cookieJar)&&s){let e=s.map(async e=>t.cookieJar.setCookie(e,n.toString()));t.ignoreInvalidCookies&&(e=e.map(async e=>e.catch(()=>{})));try{await Promise.all(e)}catch(e){this._beforeError(e);return}}if(t.followRedirect&&e.headers.location&&re.has(r)){e.resume(),this[k]&&(this[L](),delete this[k],this[I]());let a=r===303&&t.method!==`GET`&&t.method!==`HEAD`;if((a||!t.methodRewriting)&&(t.method=`GET`,`body`in t&&delete t.body,`json`in t&&delete t.json,`form`in t&&delete t.form,this[V]=void 0,delete t.headers[`content-length`]),this.redirects.length>=t.maxRedirects){this._beforeError(new ae(this));return}try{let r=Buffer.from(e.headers.location,`binary`).toString(),a=new i.URL(r,n),s=a.toString();decodeURI(s);function c(e){return e.protocol===`unix:`||e.hostname===`unix`}if(!c(n)&&c(a)){this._beforeError(new J(`Cannot redirect to UNIX socket`,{},this));return}a.hostname!==n.hostname||a.port!==n.port?(`host`in t.headers&&delete t.headers.host,`cookie`in t.headers&&delete t.headers.cookie,`authorization`in t.headers&&delete t.headers.authorization,(t.username||t.password)&&(t.username=``,t.password=``)):(a.username=t.username,a.password=t.password),this.redirects.push(s),t.url=a;for(let e of t.hooks.beforeRedirect)await e(t,o);this.emit(`redirect`,o,t),await this._makeRequest()}catch(e){this._beforeError(e);return}return}if(t.isStream&&t.throwHttpErrors&&!w.isResponseOk(o)){this._beforeError(new oe(o));return}e.on(`readable`,()=>{this[B]&&this._read()}),this.on(`resume`,()=>{e.resume()}),this.on(`pause`,()=>{e.pause()}),e.once(`end`,()=>{this.push(null)}),this.emit(`response`,e);for(let n of this[F]){if(n.headersSent)continue;for(let r in e.headers){let i=t.decompress?r!==`content-encoding`:!0,a=e.headers[r];i&&n.setHeader(r,a)}n.statusCode=r}}async _onResponse(e){try{await this._onResponseBase(e)}catch(e){this._beforeError(e)}}_onRequest(e){let{options:t}=this,{timeout:n,url:r}=t;c.default(e),this[L]=v.default(e,n,r);let i=t.cache?`cacheableResponse`:`response`;e.once(i,e=>{this._onResponse(e)}),e.once(`error`,t=>{var n;e.destroy(),(n=e.res)==null||n.removeAllListeners(`end`),t=t instanceof v.TimeoutError?new ce(t,this.timings,this):new J(t.message,t,this),this._beforeError(t)}),this[I]=_.default(e,this,de),this[k]=e,this.emit(`uploadProgress`,this.uploadProgress);let a=this[V],o=this.redirects.length===0?this:e;m.default.nodeStream(a)?(a.pipe(o),a.once(`error`,e=>{this._beforeError(new se(e,this))})):(this._unlockWrite(),m.default.undefined(a)?(this._cannotHaveBody||this._noPipe)&&(o.end(),this._lockWrite()):(this._writeRequest(a,void 0,()=>{}),o.end(),this._lockWrite())),this.emit(`request`,e)}async _createCacheableRequest(e,t){return new Promise((n,r)=>{Object.assign(t,y.default(e)),delete t.url;let i,a=ne.get(t.cache)(t,async e=>{e._readableState.autoDestroy=!1,i&&(await i).emit(`cacheableResponse`,e),n(e)});t.url=e,a.once(`error`,r),a.once(`request`,async e=>{i=e,n(i)})})}async _makeRequest(){var e,t,n,r,i;let{options:o}=this,{headers:c}=o;for(let e in c)if(m.default.undefined(c[e]))delete c[e];else if(m.default.null_(c[e]))throw TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${e}\` header`);if(o.decompress&&m.default.undefined(c[`accept-encoding`])&&(c[`accept-encoding`]=G?`gzip, deflate, br`:`gzip, deflate`),o.cookieJar){let e=await o.cookieJar.getCookieString(o.url.toString());m.default.nonEmptyString(e)&&(o.headers.cookie=e)}for(let e of o.hooks.beforeRequest){let t=await e(o);if(!m.default.undefined(t)){o.request=()=>t;break}}o.body&&this[V]!==o.body&&(this[V]=o.body);let{agent:l,request:d,timeout:p,url:h}=o;if(o.dnsCache&&!(`lookup`in o)&&(o.lookup=o.dnsCache.lookup),h.hostname===`unix`){let e=/(?<socketPath>.+?):(?<path>.+)/.exec(`${h.pathname}${h.search}`);if(e?.groups){let{socketPath:t,path:n}=e.groups;Object.assign(o,{socketPath:t,path:n,host:``})}}let g=h.protocol===`https:`,_;_=o.http2?f.auto:g?s.request:a.request;let v=(e=o.request)??_,y=o.cache?this._createCacheableRequest:v;l&&!o.http2&&(o.agent=l[g?`https`:`http`]),o[k]=v,delete o.request,delete o.timeout;let b=o;if(b.shared=(t=o.cacheOptions)?.shared,b.cacheHeuristic=(n=o.cacheOptions)?.cacheHeuristic,b.immutableMinTimeToLive=(r=o.cacheOptions)?.immutableMinTimeToLive,b.ignoreCargoCult=(i=o.cacheOptions)?.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{b.family=C.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch{throw Error("Invalid `dnsLookupIpVersion` option value")}o.https&&(`rejectUnauthorized`in o.https&&(b.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(b.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(b.ca=o.https.certificateAuthority),o.https.certificate&&(b.cert=o.https.certificate),o.https.key&&(b.key=o.https.key),o.https.passphrase&&(b.passphrase=o.https.passphrase),o.https.pfx&&(b.pfx=o.https.pfx));try{let e=await y(h,b);m.default.undefined(e)&&(e=_(h,b)),o.request=d,o.timeout=p,o.agent=l,o.https&&(`rejectUnauthorized`in o.https&&delete b.rejectUnauthorized,o.https.checkServerIdentity&&delete b.checkServerIdentity,o.https.certificateAuthority&&delete b.ca,o.https.certificate&&delete b.cert,o.https.key&&delete b.key,o.https.passphrase&&delete b.passphrase,o.https.pfx&&delete b.pfx),te(e)?this._onRequest(e):this.writable?(this.once(`finish`,()=>{this._onResponse(e)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(e)}catch(e){throw e instanceof u.CacheError?new Y(e,this):new J(e.message,e,this)}}async _error(e){try{for(let t of this.options.hooks.beforeError)e=await t(e)}catch(t){e=new J(t.message,t,this)}this.destroy(e)}_beforeError(e){if(this[z])return;let{options:t}=this,n=this.retryCount+1;this[z]=!0,e instanceof J||(e=new J(e.message,e,this));let r=e,{response:i}=r;(async()=>{if(i&&!i.body){i.setEncoding(this._readableState.encoding);try{i.rawBody=await S.default(i),i.body=i.rawBody.toString()}catch{}}if(this.listenerCount(`retry`)!==0){let a;try{let e;i&&`retry-after`in i.headers&&(e=Number(i.headers[`retry-after`]),Number.isNaN(e)?(e=Date.parse(i.headers[`retry-after`])-Date.now(),e<=0&&(e=1)):e*=1e3),a=await t.retry.calculateDelay({attemptCount:n,retryOptions:t.retry,error:r,retryAfter:e,computedValue:D.default({attemptCount:n,retryOptions:t.retry,error:r,retryAfter:e,computedValue:0})})}catch(e){this._error(new J(e.message,e,this));return}if(a){let t=async()=>{try{for(let e of this.options.hooks.beforeRetry)await e(this.options,r,n)}catch(t){this._error(new J(t.message,e,this));return}this.destroyed||(this.destroy(),this.emit(`retry`,n,e))};this[W]=setTimeout(t,a);return}}this._error(r)})()}_read(){this[B]=!0;let e=this[A];if(e&&!this[z]){e.readableLength&&(this[B]=!1);let t;for(;(t=e.read())!==null;){this[M]+=t.length,this[R]=!0;let e=this.downloadProgress;e.percent<1&&this.emit(`downloadProgress`,e),this.push(t)}}}_write(e,t,n){let r=()=>{this._writeRequest(e,t,n)};this.requestInitialized?r():this[H].push(r)}_writeRequest(e,t,n){this[k].destroyed||(this._progressCallbacks.push(()=>{this[P]+=Buffer.byteLength(e,t);let n=this.uploadProgress;n.percent<1&&this.emit(`uploadProgress`,n)}),this[k].write(e,t,e=>{!e&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),n(e)}))}_final(e){let t=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(k in this)){e();return}if(this[k].destroyed){e();return}this[k].end(t=>{t||(this[N]=this[P],this.emit(`uploadProgress`,this.uploadProgress),this[k].emit(`upload-complete`)),e(t)})};this.requestInitialized?t():this[H].push(t)}_destroy(e,t){var n;this[z]=!0,clearTimeout(this[W]),k in this&&(this[L](),(n=this[A])?.complete||this[k].destroy()),e!==null&&!m.default.undefined(e)&&!(e instanceof J)&&(e=new J(e.message,e,this)),t(e)}get _isAboutToError(){return this[z]}get ip(){var e;return(e=this.socket)?.remoteAddress}get aborted(){var e,t,n;return((t=(e=this[k])?.destroyed)??this.destroyed)&&!(n=this[U])?.complete}get socket(){var e,t;return(t=(e=this[k])?.socket)??void 0}get downloadProgress(){let e;return e=this[j]?this[M]/this[j]:this[j]===this[M]?1:0,{percent:e,transferred:this[M],total:this[j]}}get uploadProgress(){let e;return e=this[N]?this[P]/this[N]:this[N]===this[P]?1:0,{percent:e,transferred:this[P],total:this[N]}}get timings(){var e;return(e=this[k])?.timings}get isFromCache(){return this[ee]}pipe(e,t){if(this[R])throw Error(`Failed to pipe. The response has been emitted already.`);return e instanceof o.ServerResponse&&this[F].add(e),super.pipe(e,t)}unpipe(e){return e instanceof o.ServerResponse&&this[F].delete(e),super.unpipe(e),this}};exports.default=fe}),eb=o(exports=>{var t=Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]},n=function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(exports,`__esModule`,{value:!0}),exports.CancelError=exports.ParseError=void 0;let r=$y();var i=class extends r.RequestError{constructor(e,t){let{options:n}=t.request;super(`${e.message} in "${n.url.toString()}"`,e,t.request),this.name=`ParseError`,this.code=this.code===`ERR_GOT_REQUEST_ERROR`?`ERR_BODY_PARSE_FAILURE`:this.code}};exports.ParseError=i;var a=class extends r.RequestError{constructor(e){super(`Promise was canceled`,{},e),this.name=`CancelError`,this.code=`ERR_CANCELED`}get isCanceled(){return!0}};exports.CancelError=a,n($y(),exports)}),tb=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=eb(),n=(e,n,r,i)=>{let{rawBody:a}=e;try{if(n===`text`)return a.toString(i);if(n===`json`)return a.length===0?``:r(a.toString());if(n===`buffer`)return a;throw new t.ParseError({message:`Unknown body type '${n}'`,name:`Error`},e)}catch(n){throw new t.ParseError(n,e)}};exports.default=n}),nb=o(exports=>{var t=Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]},n=function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(exports,`__esModule`,{value:!0});let r=require(`events`),i=ay(),a=oy(),o=eb(),s=tb(),c=$y(),l=Vy(),u=qy(),d=Yy(),f=[`request`,`response`,`redirect`,`uploadProgress`,`downloadProgress`];function p(e){let t,n,m=new r.EventEmitter,h=new a((r,a,g)=>{let _=v=>{let y=new c.default(void 0,e);y.retryCount=v,y._noPipe=!0,g(()=>y.destroy()),g.shouldReject=!1,g(()=>a(new o.CancelError(y))),t=y,y.once(`response`,async e=>{var t;if(e.retryCount=v,e.request.aborted)return;let i;try{i=await u.default(y),e.rawBody=i}catch{return}if(y._isAboutToError)return;let a=((t=e.headers[`content-encoding`])??``).toLowerCase(),l=[`gzip`,`deflate`,`br`].includes(a),{options:f}=y;if(l&&!f.decompress)e.body=i;else try{e.body=s.default(e,f.responseType,f.parseJson,f.encoding)}catch(t){if(e.body=i.toString(),d.isResponseOk(e)){y._beforeError(t);return}}try{for(let[t,n]of f.hooks.afterResponse.entries())e=await n(e,async e=>{let n=c.default.normalizeArguments(void 0,{...e,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},f);n.hooks.afterResponse=n.hooks.afterResponse.slice(0,t);for(let e of n.hooks.beforeRetry)await e(n);let r=p(n);return g(()=>{r.catch(()=>{}),r.cancel()}),r})}catch(e){y._beforeError(new o.RequestError(e.message,e,y));return}if(n=e,!d.isResponseOk(e)){y._beforeError(new o.HTTPError(e));return}y.destroy(),r(y.options.resolveBodyOnly?e.body:e)});let b=e=>{if(h.isCanceled)return;let{options:t}=y;if(e instanceof o.HTTPError&&!t.throwHttpErrors){let{response:t}=e;r(y.options.resolveBodyOnly?t.body:t);return}a(e)};y.once(`error`,b);let x=y.options.body;y.once(`retry`,(e,t)=>{var n,r;if(x===(n=t.request)?.options.body&&i.default.nodeStream((r=t.request)?.options.body)){b(t);return}_(e)}),l.default(y,m,f)};_(0)});h.on=(e,t)=>(m.on(e,t),h);let g=e=>{let t=(async()=>{await h;let{options:t}=n.request;return s.default(n,e,t.parseJson,t.encoding)})();return Object.defineProperties(t,Object.getOwnPropertyDescriptors(h)),t};return h.json=()=>{let{headers:e}=t.options;return!t.writableFinished&&e.accept===void 0&&(e.accept=`application/json`),g(`json`)},h.buffer=()=>g(`buffer`),h.text=()=>g(`text`),h}exports.default=p,n(eb(),exports)}),rb=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=eb();function n(e,...n){let r=(async()=>{if(e instanceof t.RequestError)try{for(let t of n)if(t)for(let n of t)e=await n(e)}catch(t){e=t}throw e})(),i=()=>r;return r.json=i,r.text=i,r.buffer=i,r.on=i,r}exports.default=n}),ib=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=ay();function n(e){for(let r of Object.values(e))(t.default.plainObject(r)||t.default.array(r))&&n(r);return Object.freeze(e)}exports.default=n}),ab=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0})}),ob=o(exports=>{var t=Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]},n=function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(exports,`__esModule`,{value:!0}),exports.defaultHandler=void 0;let r=ay(),i=nb(),a=rb(),o=$y(),s=ib(),c={RequestError:i.RequestError,CacheError:i.CacheError,ReadError:i.ReadError,HTTPError:i.HTTPError,MaxRedirectsError:i.MaxRedirectsError,TimeoutError:i.TimeoutError,ParseError:i.ParseError,CancelError:i.CancelError,UnsupportedProtocolError:i.UnsupportedProtocolError,UploadError:i.UploadError},l=async e=>new Promise(t=>{setTimeout(t,e)}),{normalizeArguments:u}=o.default,d=(...e)=>{let t;for(let n of e)t=u(void 0,n,t);return t},f=e=>e.isStream?new o.default(void 0,e):i.default(e),p=e=>`defaults`in e&&`options`in e.defaults,m=[`get`,`post`,`put`,`patch`,`head`,`delete`];exports.defaultHandler=(e,t)=>t(e);let h=(e,t)=>{if(e)for(let n of e)n(t)},g=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(e=>(t,n)=>{let r,i=e(t,e=>(r=n(e),r));if(i!==r&&!t.isStream&&r){let e=i,{then:t,catch:n,finally:a}=e;Object.setPrototypeOf(e,Object.getPrototypeOf(r)),Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)),e.then=t,e.catch=n,e.finally=a}return i});let n=(e,n={},s)=>{var c,l;let d=0,p=e=>t.handlers[d++](e,d===t.handlers.length?f:p);if(r.default.plainObject(e)){let t={...e,...n};o.setNonEnumerableProperties([e,n],t),n=t,e=void 0}try{let r;try{h(t.options.hooks.init,n),h((c=n.hooks)?.init,n)}catch(e){r=e}let a=u(e,n,s??t.options);if(a[o.kIsNormalizedAlready]=!0,r)throw new i.RequestError(r.message,r,a);return p(a)}catch(e){if(n.isStream)throw e;return a.default(e,t.options.hooks.beforeError,(l=n.hooks)?.beforeError)}};n.extend=(...n)=>{let r=[t.options],i=[...t._rawHandlers],a;for(let e of n)p(e)?(r.push(e.defaults.options),i.push(...e.defaults._rawHandlers),a=e.defaults.mutableDefaults):(r.push(e),`handlers`in e&&i.push(...e.handlers),a=e.mutableDefaults);return i=i.filter(t=>t!==exports.defaultHandler),i.length===0&&i.push(exports.defaultHandler),g({options:d(...r),handlers:i,mutableDefaults:!!a})};let _=async function*(e,i){let a=u(e,i,t.options);a.resolveBodyOnly=!1;let o=a.pagination;if(!r.default.object(o))throw TypeError("`options.pagination` must be implemented");let s=[],{countLimit:c}=o,d=0;for(;d<o.requestLimit;){d!==0&&await l(o.backoff);let e=await n(void 0,void 0,a),t=await o.transform(e),r=[];for(let e of t)if(o.filter(e,s,r)&&(!o.shouldContinue(e,s,r)||(yield e,o.stackAllItems&&s.push(e),r.push(e),--c<=0)))return;let i=o.paginate(e,s,r);if(i===!1)return;i===e.request.options?a=e.request.options:i!==void 0&&(a=u(void 0,i,a)),d++}};n.paginate=_,n.paginate.all=async(e,t)=>{let n=[];for await(let r of _(e,t))n.push(r);return n},n.paginate.each=_,n.stream=(e,t)=>n(e,{...t,isStream:!0});for(let e of m)n[e]=(t,r)=>n(t,{...r,method:e}),n.stream[e]=(t,r)=>n(t,{...r,method:e,isStream:!0});return Object.assign(n,c),Object.defineProperty(n,`defaults`,{value:t.mutableDefaults?t:s.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),n.mergeOptions=d,n};exports.default=g,n(ab(),exports)}),sb=o((exports,t)=>{var n=Object.create?function(e,t,n,r){r===void 0&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]},r=function(e,t){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(t,r)&&n(t,e,r)};Object.defineProperty(exports,`__esModule`,{value:!0});let i=require(`url`),a=ob(),o={options:{method:`GET`,retry:{limit:2,methods:[`GET`,`PUT`,`HEAD`,`DELETE`,`OPTIONS`,`TRACE`],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:[`ETIMEDOUT`,`ECONNRESET`,`EADDRINUSE`,`ECONNREFUSED`,`EPIPE`,`ENOTFOUND`,`ENETUNREACH`,`EAI_AGAIN`],maxRetryAfter:void 0,calculateDelay:({computedValue:e})=>e},timeout:{},headers:{"user-agent":`got (https://github.com/sindresorhus/got)`},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:`text`,resolveBodyOnly:!1,maxRedirects:10,prefixUrl:``,methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:e=>e.request.options.responseType===`json`?e.body:JSON.parse(e.body),paginate:e=>{if(!Reflect.has(e.headers,`link`))return!1;let t=e.headers.link.split(`,`),n;for(let e of t){let t=e.split(`;`);if(t[1].includes(`next`)){n=t[0].trimStart().trim(),n=n.slice(1,-1);break}}if(n){let e={url:new i.URL(n)};return e}return!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:e=>JSON.parse(e),stringifyJson:e=>JSON.stringify(e),cacheOptions:{}},handlers:[a.defaultHandler],mutableDefaults:!1},s=a.default(o);exports.default=s,t.exports=s,t.exports.default=s,t.exports.__esModule=!0,r(ob(),exports),r(nb(),exports)}),cb=l(sb());const lb=20,ub=`/api/turborepo/v1/events`;var db=class{api;packageInfo;batchSize=lb;timeout=250;sessionId=(0,A.randomUUID)();eventBatches=[];events=[];config;constructor({api:e,packageInfo:t,config:n,opts:r}){let i=new URL(ub,e);this.api=i.toString(),this.packageInfo=t,this.config=n,r?.timeout&&(this.timeout=r.timeout),r?.batchSize&&(this.batchSize=r.batchSize)}hasPendingEvents(){return this.events.length!==0}async waitForFlush(){await Promise.all(this.eventBatches)}flushEvents(){let e=this.events.splice(0,this.batchSize);this.config.isEnabled()&&this.eventBatches.push(cb.default.post(this.api,{timeout:this.timeout,json:e,headers:{"x-turbo-telemetry-id":this.config.id,"x-turbo-session-id":this.sessionId,"User-Agent":Qv.buildUserAgent(this.packageInfo)}}))}track({key:e,value:t,parentId:n,isSensitive:r}){let i={id:(0,A.randomUUID)(),key:e,value:r?this.config.oneWayHash(t):t,package_name:this.packageInfo.name,package_version:this.packageInfo.version,parent_id:n};return iy.isDebug()&&(Qo(),qo(`[telemetry event]`),Yo(JSON.stringify(i,null,2)),Qo()),this.config.isEnabled()&&(this.events.push({package:i}),this.events.length>=this.batchSize&&this.flushEvents()),i}async close(){for(;this.hasPendingEvents();)this.flushEvents();try{await this.waitForFlush()}catch{}}trackCliOption({option:e,value:t}){return this.track({key:`option:${e}`,value:t})}trackCliArgument({argument:e,value:t}){return this.track({key:`argument:${e}`,value:t})}trackCliCommand({command:e,value:t}){return this.track({key:`command:${e}`,value:t})}trackCommandStatus({command:e,status:t}){return this.trackCliCommand({command:e,value:t})}trackCommandWarning(e){return this.track({key:`warning`,value:e})}trackCommandError(e){return this.track({key:`error`,value:e})}};function fb(e){if(e===`default`)return`default`;try{let t=new URL(e);return t.hostname===`github.com`?`github_url`:`other_url`}catch{return`official`}}var pb=class extends db{trackOptionExample(e){if(e)return this.trackCliOption({option:`example`,value:fb(e)})}trackOptionPackageManager(e){if(e)return this.trackCliOption({option:`package_manager`,value:e})}trackOptionSkipInstall(e){if(e)return this.trackCliOption({option:`skip_install`,value:e.toString()})}trackOptionSkipTransforms(e){if(e)return this.trackCliOption({option:`skip_transforms`,value:e.toString()})}trackOptionTurboVersion(e){if(e)return this.trackCliOption({option:`turbo_version`,value:e})}trackOptionExamplePath(e){if(e)return this.trackCliOption({option:`example_path`,value:`provided`})}trackArgumentDirectory(e){if(e)return this.trackCliArgument({argument:`project_directory`,value:`provided`})}trackArgumentPackageManager(e){if(e)return this.trackCliArgument({argument:`package_manager`,value:e})}},mb=o((exports,t)=>{t.exports=[{name:`Agola CI`,constant:`AGOLA`,env:`AGOLA_GIT_REF`,pr:`AGOLA_PULL_REQUEST_ID`},{name:`Appcircle`,constant:`APPCIRCLE`,env:`AC_APPCIRCLE`},{name:`AppVeyor`,constant:`APPVEYOR`,env:`APPVEYOR`,pr:`APPVEYOR_PULL_REQUEST_NUMBER`},{name:`AWS CodeBuild`,constant:`CODEBUILD`,env:`CODEBUILD_BUILD_ARN`},{name:`Azure Pipelines`,constant:`AZURE_PIPELINES`,env:`TF_BUILD`,pr:{BUILD_REASON:`PullRequest`}},{name:`Bamboo`,constant:`BAMBOO`,env:`bamboo_planKey`},{name:`Bitbucket Pipelines`,constant:`BITBUCKET`,env:`BITBUCKET_COMMIT`,pr:`BITBUCKET_PR_ID`},{name:`Bitrise`,constant:`BITRISE`,env:`BITRISE_IO`,pr:`BITRISE_PULL_REQUEST`},{name:`Buddy`,constant:`BUDDY`,env:`BUDDY_WORKSPACE_ID`,pr:`BUDDY_EXECUTION_PULL_REQUEST_ID`},{name:`Buildkite`,constant:`BUILDKITE`,env:`BUILDKITE`,pr:{env:`BUILDKITE_PULL_REQUEST`,ne:`false`}},{name:`CircleCI`,constant:`CIRCLE`,env:`CIRCLECI`,pr:`CIRCLE_PULL_REQUEST`},{name:`Cirrus CI`,constant:`CIRRUS`,env:`CIRRUS_CI`,pr:`CIRRUS_PR`},{name:`Codefresh`,constant:`CODEFRESH`,env:`CF_BUILD_ID`,pr:{any:[`CF_PULL_REQUEST_NUMBER`,`CF_PULL_REQUEST_ID`]}},{name:`Codemagic`,constant:`CODEMAGIC`,env:`CM_BUILD_ID`,pr:`CM_PULL_REQUEST`},{name:`Codeship`,constant:`CODESHIP`,env:{CI_NAME:`codeship`}},{name:`Drone`,constant:`DRONE`,env:`DRONE`,pr:{DRONE_BUILD_EVENT:`pull_request`}},{name:`dsari`,constant:`DSARI`,env:`DSARI`},{name:`Earthly`,constant:`EARTHLY`,env:`EARTHLY_CI`},{name:`Expo Application Services`,constant:`EAS`,env:`EAS_BUILD`},{name:`Gerrit`,constant:`GERRIT`,env:`GERRIT_PROJECT`},{name:`Gitea Actions`,constant:`GITEA_ACTIONS`,env:`GITEA_ACTIONS`},{name:`GitHub Actions`,constant:`GITHUB_ACTIONS`,env:`GITHUB_ACTIONS`,pr:{GITHUB_EVENT_NAME:`pull_request`}},{name:`GitLab CI`,constant:`GITLAB`,env:`GITLAB_CI`,pr:`CI_MERGE_REQUEST_ID`},{name:`GoCD`,constant:`GOCD`,env:`GO_PIPELINE_LABEL`},{name:`Google Cloud Build`,constant:`GOOGLE_CLOUD_BUILD`,env:`BUILDER_OUTPUT`},{name:`Harness CI`,constant:`HARNESS`,env:`HARNESS_BUILD_ID`},{name:`Heroku`,constant:`HEROKU`,env:{env:`NODE`,includes:`/app/.heroku/node/bin/node`}},{name:`Hudson`,constant:`HUDSON`,env:`HUDSON_URL`},{name:`Jenkins`,constant:`JENKINS`,env:[`JENKINS_URL`,`BUILD_ID`],pr:{any:[`ghprbPullId`,`CHANGE_ID`]}},{name:`LayerCI`,constant:`LAYERCI`,env:`LAYERCI`,pr:`LAYERCI_PULL_REQUEST`},{name:`Magnum CI`,constant:`MAGNUM`,env:`MAGNUM`},{name:`Netlify CI`,constant:`NETLIFY`,env:`NETLIFY`,pr:{env:`PULL_REQUEST`,ne:`false`}},{name:`Nevercode`,constant:`NEVERCODE`,env:`NEVERCODE`,pr:{env:`NEVERCODE_PULL_REQUEST`,ne:`false`}},{name:`Prow`,constant:`PROW`,env:`PROW_JOB_ID`},{name:`ReleaseHub`,constant:`RELEASEHUB`,env:`RELEASE_BUILD_ID`},{name:`Render`,constant:`RENDER`,env:`RENDER`,pr:{IS_PULL_REQUEST:`true`}},{name:`Sail CI`,constant:`SAIL`,env:`SAILCI`,pr:`SAIL_PULL_REQUEST_NUMBER`},{name:`Screwdriver`,constant:`SCREWDRIVER`,env:`SCREWDRIVER`,pr:{env:`SD_PULL_REQUEST`,ne:`false`}},{name:`Semaphore`,constant:`SEMAPHORE`,env:`SEMAPHORE`,pr:`PULL_REQUEST_NUMBER`},{name:`Sourcehut`,constant:`SOURCEHUT`,env:{CI_NAME:`sourcehut`}},{name:`Strider CD`,constant:`STRIDER`,env:`STRIDER`},{name:`TaskCluster`,constant:`TASKCLUSTER`,env:[`TASK_ID`,`RUN_ID`]},{name:`TeamCity`,constant:`TEAMCITY`,env:`TEAMCITY_VERSION`},{name:`Travis CI`,constant:`TRAVIS`,env:`TRAVIS`,pr:{env:`TRAVIS_PULL_REQUEST`,ne:`false`}},{name:`Vela`,constant:`VELA`,env:`VELA`,pr:{VELA_PULL_REQUEST:`1`}},{name:`Vercel`,constant:`VERCEL`,env:{any:[`NOW_BUILDER`,`VERCEL`]},pr:`VERCEL_GIT_PULL_REQUEST_ID`},{name:`Visual Studio App Center`,constant:`APPCENTER`,env:`APPCENTER_BUILD_ID`},{name:`Woodpecker`,constant:`WOODPECKER`,env:{CI:`woodpecker`},pr:{CI_BUILD_EVENT:`pull_request`}},{name:`Xcode Cloud`,constant:`XCODE_CLOUD`,env:`CI_XCODE_PROJECT`,pr:`CI_PULL_REQUEST_NUMBER`},{name:`Xcode Server`,constant:`XCODE_SERVER`,env:`XCS`}]}),hb=o(exports=>{let t=mb(),n=process.env;Object.defineProperty(exports,`_vendors`,{value:t.map(function(e){return e.constant})}),exports.name=null,exports.isPR=null,t.forEach(function(t){let i=Array.isArray(t.env)?t.env:[t.env],a=i.every(function(e){return r(e)});if(exports[t.constant]=a,a)switch(exports.name=t.name,typeof t.pr){case`string`:exports.isPR=!!n[t.pr];break;case`object`:`env`in t.pr?exports.isPR=t.pr.env in n&&n[t.pr.env]!==t.pr.ne:`any`in t.pr?exports.isPR=t.pr.any.some(function(e){return!!n[e]}):exports.isPR=r(t.pr);break;default:exports.isPR=null}}),exports.isCI=!!(n.CI!==`false`&&(n.BUILD_ID||n.BUILD_NUMBER||n.CI||n.CI_APP_ID||n.CI_BUILD_ID||n.CI_BUILD_NUMBER||n.CI_NAME||n.CONTINUOUS_INTEGRATION||n.RUN_ID||exports.name));function r(e){return typeof e==`string`?!!n[e]:`env`in e?n[e.env]&&n[e.env].includes(e.includes):`any`in e?e.any.some(function(e){return!!n[e]}):Object.keys(e).every(function(t){return n[t]===e[t]})}}),gb=l(hb());const _b=[`build`,`test`,`lint`,`typecheck`,`checktypes`,`check-types`,`type-check`,`check`];var vb=class extends db{trackCI(){return this.track({key:`ci`,value:gb.name??`unknown`})}trackArgumentWorkspace(e){if(e)return this.trackCliArgument({argument:`workspace`,value:`provided`})}trackOptionTask(e){if(e)return this.trackCliOption({option:`task`,value:_b.includes(e)?e:`other`})}trackOptionFallback(e){if(e)return this.trackCliOption({option:`fallback`,value:e})}trackOptionDirectory(e){if(e)return this.trackCliOption({option:`directory`,value:`custom`})}trackOptionMaxBuffer(e){if(e!==void 0)return this.trackCliOption({option:`max_buffer`,value:e.toString()})}};const yb={"create-turbo":pb,"turbo-ignore":vb},bb=`https://telemetry.vercel.com`;async function xb({packageInfo:e,opts:t}){let n=yb[e.name],r=await iy.fromDefaultConfig();if(r){r.showAlert();let i=new n({api:bb,packageInfo:e,config:r,opts:t});return{telemetry:i}}return{telemetry:void 0}}const Sb=`status`,Cb=[`enable`,`disable`,Sb];function wb(e){let t=e.telemetry?.config.isEnabled();Qo(`Status: ${t?u.default.bold(u.default.green(`Enabled`)):u.default.bold(u.default.red(`Disabled`))}`),Qo(),Qo(t?`Turborepo telemetry is completely anonymous. Thank you for participating!`:`You have opted-out of Turborepo anonymous telemetry. No data will be collected from your machine.`),Qo(`Learn more: https://turborepo.dev/docs/telemetry`)}function Tb(e,t){if(!t.telemetry){es(`Telemetry could not be initialized`);return}e===`enable`?(t.telemetry.config.enable(),qo(`Success!`)):e===`disable`&&(t.telemetry.config.disable(),qo(`Success!`)),Qo(),wb(t)}function Eb(e){e.command(`telemetry`).description(`Manage telemetry settings`).addArgument(new d.Argument(`[action]`,`Action to perform`).choices(Cb).default(Sb)).action(Tb)}var Db=o((exports,t)=>{t.exports={name:`create-turbo`,version:`2.9.16`,description:`Create a new Turborepo`,homepage:`https://turborepo.dev`,bugs:{url:`https://github.com/vercel/turborepo/issues`},license:`MIT`,repository:{type:`git`,url:`https://github.com/vercel/turborepo`,directory:`packages/create-turbo`},bin:{"create-turbo":`dist/cli.js`},files:[`dist`],scripts:{build:`tsdown`,test:`jest`,"check-types":`tsc --noEmit`,"lint:prettier":`prettier -c . --cache --ignore-path=../../.prettierignore`},dependencies:{"@inquirer/prompts":`^7.10.1`,commander:`11.0.0`,"fs-extra":`11.1.1`,picocolors:`1.0.1`,semver:`7.7.3`,"update-check":`1.5.4`},devDependencies:{"@jest/globals":`30.3.0`,"@turbo/telemetry":`workspace:*`,"@turbo/test-utils":`workspace:*`,"@turbo/tsconfig":`workspace:*`,"@turbo/utils":`workspace:*`,"@turbo/workspaces":`workspace:*`,"@types/fs-extra":`9.0.13`,"@types/node":`18.17.4`,"@types/semver":`7.3.12`,jest:`30.3.0`,"ts-jest":`29.4.9`,tsdown:`0.12.0`,typescript:`5.5.4`}}}),Ob=o((exports,t)=>{function n(e){return e==null}function r(e){return typeof e==`object`&&!!e}function i(e){return Array.isArray(e)?e:n(e)?[]:[e]}function a(e,t){var n,r,i,a;if(t)for(a=Object.keys(t),n=0,r=a.length;n<r;n+=1)i=a[n],e[i]=t[i];return e}function o(e,t){var n=``,r;for(r=0;r<t;r+=1)n+=e;return n}function s(e){return e===0&&1/e==-1/0}t.exports.isNothing=n,t.exports.isObject=r,t.exports.toArray=i,t.exports.repeat=o,t.exports.isNegativeZero=s,t.exports.extend=a}),kb=o((exports,t)=>{function n(e,t){var n=``,r=e.reason||`(unknown reason)`;return e.mark?(e.mark.name&&(n+=`in "`+e.mark.name+`" `),n+=`(`+(e.mark.line+1)+`:`+(e.mark.column+1)+`)`,!t&&e.mark.snippet&&(n+=`
101
101
 
102
102
  `+e.mark.snippet),r+` `+n):r}function r(e,t){Error.call(this),this.name=`YAMLException`,this.reason=e,this.mark=t,this.message=n(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=Error().stack||``}r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r.prototype.toString=function(e){return this.name+`: `+n(this,e)},t.exports=r}),Ab=o((exports,t)=>{var n=Ob();function r(e,t,n,r,i){var a=``,o=``,s=Math.floor(i/2)-1;return r-t>s&&(a=` ... `,t=r-s+a.length),n-r>s&&(o=` ...`,n=r+s-o.length),{str:a+e.slice(t,n).replace(/\t/g,`→`)+o,pos:r-t+a.length}}function i(e,t){return n.repeat(` `,t-e.length)+e}function a(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||=79,typeof t.indent!=`number`&&(t.indent=1),typeof t.linesBefore!=`number`&&(t.linesBefore=3),typeof t.linesAfter!=`number`&&(t.linesAfter=2);for(var a=/\r?\n|\r|\0/g,o=[0],s=[],c,l=-1;c=a.exec(e.buffer);)s.push(c.index),o.push(c.index+c[0].length),e.position<=c.index&&l<0&&(l=o.length-2);l<0&&(l=o.length-1);var u=``,d,f,p=Math.min(e.line+t.linesAfter,s.length).toString().length,m=t.maxLength-(t.indent+p+3);for(d=1;d<=t.linesBefore&&!(l-d<0);d++)f=r(e.buffer,o[l-d],s[l-d],e.position-(o[l]-o[l-d]),m),u=n.repeat(` `,t.indent)+i((e.line-d+1).toString(),p)+` | `+f.str+`
103
103
  `+u;for(f=r(e.buffer,o[l],s[l],e.position,m),u+=n.repeat(` `,t.indent)+i((e.line+1).toString(),p)+` | `+f.str+`
@@ -198,9 +198,9 @@ yarn-error.log*
198
198
 
199
199
  # vercel
200
200
  .vercel
201
- `,nx=/[`$(){}|;&<>!#]/;function rx(e){if(nx.test(e))throw Error(`Directory path contains potentially unsafe characters: ${e}`)}function ix(e,t){let n=(0,T.spawnSync)(`git`,e,{stdio:`ignore`,cwd:t});if(n.status!==0)throw Error(`git ${e[0]} failed`);return!0}function ax(e){try{return ix([`rev-parse`,`--is-inside-work-tree`],e),!0}catch{return!1}}function ox(e){try{let t=(0,T.spawnSync)(`hg`,[`--cwd`,`.`,`root`],{stdio:`ignore`,cwd:e});if(t.status!==0)throw Error(`hg check failed`);return!0}catch{return!1}}function sx(e){if(rx(e),ax(e)||ox(e))return!1;let t=!1;try{return ix([`init`],e),t=!0,ix([`checkout`,`-b`,`main`],e),ix([`add`,`-A`],e),ix([`commit`,`-m`,`Initial commit from create-turbo`],e),!0}catch{if(t)try{(0,f.rmSync)(p.default.join(e,`.git`),{recursive:!0,force:!0})}catch{}return!1}}function cx(e){try{return(0,f.rmSync)(p.default.join(e,`.git`),{recursive:!0,force:!0}),!0}catch{return!1}}var lx=l(ex());const ux={name:`package-manager`};async function dx(e){let{project:t,prompts:n}=e,{root:r,packageManager:i}=n;if(i&&t.packageManager!==i.name)await(0,lx.convert)({root:r,to:i.name,options:{skipInstall:!0}});else return{result:`not-applicable`,...ux};return{result:`success`,...ux}}const fx=new Set([`basic`,`default`]);function px(e){return fx.has(e)}var mx=class e extends Error{transform;fatal;constructor(t,n){super(t),this.name=`TransformError`,this.transform=n?.transform??`unknown`,this.fatal=n?.fatal??!0,Error.captureStackTrace(this,e)}};const hx=[`turbo`,`turborepo`],gx={name:`official-starter`};async function _x(e){let{prompts:t,example:n,opts:r}=e,i=px(n.name),a=!n.repo||n.repo.username===`vercel`&&hx.includes(n.repo.name);if(!a)return{result:`not-applicable`,...gx};let o=p.default.join(t.root,`package.json`),s=p.default.join(t.root,`meta.json`),c=g.default.existsSync(o),l;try{l=g.default.readJsonSync(s),g.default.rmSync(s,{force:!0})}catch{}if(c){let e;try{e=g.default.readJsonSync(o)}catch{throw new mx(`Unable to read package.json`,{transform:gx.name,fatal:!1})}if(e){if(i&&(e.name=t.projectName),e.devDependencies?.turbo)if(r.turboVersion)e.devDependencies.turbo=r.turboVersion;else{let t=Db().version;e.devDependencies.turbo=`^${t}`}try{g.default.writeJsonSync(o,e,{spaces:2})}catch{throw new mx(`Unable to write package.json`,{transform:gx.name,fatal:!1})}}}return{result:`success`,metaJson:l,...gx}}const vx={name:`git-ignore`};async function yx(e){let{prompts:t}=e,n=p.default.join(t.root,`.gitignore`);try{if(!g.default.existsSync(n))g.default.writeFileSync(n,tx);else return{result:`not-applicable`,...vx}}catch{throw new mx(`Unable to write .gitignore`,{transform:vx.name,fatal:!1})}return{result:`success`,...vx}}const bx={name:`update-commands-in-readme`},xx=[`pnpm`,`npm`,`yarn`,`bun`],Sx=xx.map(e=>`${e} run`).join(`|`),Cx=xx.join(`|`),wx=RegExp(`\\b(?:${Sx})\\b`,`g`),Tx=RegExp(`\\b(?:${Cx})\\b(?!\\s+run)`,`g`),Ex=/```[\s\S]*?```|`[^`]+`/g;async function Dx(e){let{prompts:t}=e;if(!t.packageManager)return{result:`not-applicable`,...bx};let n=p.default.join(t.root,`README.md`);if(!g.default.existsSync(n))return{result:`not-applicable`,...bx};try{let e=await g.default.readFile(n,`utf8`),r=Ox(t.packageManager.name,e);await g.default.writeFile(n,r,`utf8`)}catch{throw new mx(`Unable to update README.md`,{transform:bx.name,fatal:!1})}return{result:`success`,...bx}}function Ox(e,t){return t.replace(Ex,t=>{let n=t.replace(wx,`${e} run`);return n=n.replace(Tx,e),n})}const kx=[_x,yx,dx,Dx];async function Ax({dir:e}){if(e)return Zs(e);let t=await(0,M.input)({message:`Where would you like to create your Turborepo?`,default:`./my-turborepo`,validate:e=>{let{valid:t,error:n}=Zs(e);return!t&&n?n:!0},transformer:e=>e.trim()});return Zs(t.trim())}async function jx({manager:e,skipTransforms:t}){if(t)return;let n=await Js();if(e&&n[e])return{name:e,version:n[e]};let r=await(0,M.select)({message:`Which package manager do you want to use?`,choices:[{pm:`npm`,label:`npm`},{pm:`pnpm`,label:`pnpm`},{pm:`yarn`,label:`yarn`},{pm:`bun`,label:`bun`}].sort((e,t)=>{let r=!!n[e.pm],i=!!n[t.pm];return Number(i)-Number(r)}).map(({pm:e,label:t})=>({name:t,value:e,disabled:n[e]?!1:`not installed`}))});return{name:r,version:n[r]}}var Mx=l(ex());const{turboGradient:Nx,turboLoader:Px,info:Fx,error:Ix,warn:Lx}=Po;function Rx(e){e.telemetry?.trackOptionPackageManager(e.packageManager),e.telemetry?.trackOptionSkipInstall(e.skipInstall),e.telemetry?.trackOptionSkipTransforms(e.skipTransforms),e.telemetry?.trackOptionExample(e.example),e.telemetry?.trackOptionTurboVersion(e.turboVersion),e.telemetry?.trackOptionExamplePath(e.examplePath)}function zx(e,t){if(t?.trackCommandStatus({command:`create`,status:`error`}),e instanceof mx)Ix(u.default.bold(e.transform),u.default.red(e.message)),e.fatal&&process.exit(1);else if(e instanceof Mx.ConvertError&&e.type!==`unknown`)Ix(u.default.red(e.message)),process.exit(1);else if(e instanceof kg)Ix(u.default.red(`Unable to download template from GitHub`)),Ix(u.default.red(e.message)),process.exit(1);else throw e}const Bx={build:`Build`,dev:`Develop`,test:`Test`,lint:`Lint`};async function Vx(e,t){t.telemetry?.trackCommandStatus({command:`create`,status:`start`}),t.telemetry?.trackArgumentDirectory(!!e),Rx(t);let n=!1,{packageManager:r,skipInstall:i,skipTransforms:a,git:o}=t,s=await Js(),{root:c,projectName:l}=await Ax({dir:e}),d=p.default.relative(process.cwd(),c),f=d===``,m=await jx({manager:r,skipTransforms:a});r&&t.skipTransforms&&Lx(`--skip-transforms conflicts with <package-manager>. The package manager argument will be ignored.`);let{example:h,examplePath:g}=t,_=h&&h!==`default`?h:`basic`,v={};try{v=await jg({appPath:c,example:_,isDefaultExample:px(_),examplePath:g})}catch(e){zx(e,t.telemetry)}let{hasPackageJson:y,availableScripts:b,repoInfo:x}=v,S={};try{S=await(0,Mx.getWorkspaceDetails)({root:c})}catch(e){zx(e,t.telemetry)}if(!a)for(let e of kx)try{let r=await e({example:{repo:x,name:_},project:S,prompts:{projectName:l,root:c,packageManager:m},opts:t});r.metaJson?.maintainedByCoreTeam&&(n=!0)}catch(e){zx(e,t.telemetry)}let C=a||!m?{name:S.packageManager,version:s[S.packageManager]}:m;if(Fx(`Creating a new Turborepo with:`),Qo(),S.workspaceData.workspaces.length>0){let e=S.workspaceData.workspaces.map(e=>{let t=e=>e===`apps`?`Application packages`:e===`packages`?`Library packages`:e;return{group:t(p.default.relative(c,e.paths.root).split(p.default.sep)[0]||``),title:p.default.relative(c,e.paths.root),description:e.description}}).sort((e,t)=>e.title.localeCompare(t.title)),t;for(let[n,{group:r,title:i,description:a}]of e.entries())(n===0||r!==t)&&Qo(u.default.cyan(r)),Qo(` - ${u.default.bold(i)}${a?`: ${a}`:``}`),t=r}else Qo(u.default.cyan(`apps`)),Qo(` - ${u.default.bold(l)}`);if(Qo(),y&&!i){if(t.skipTransforms&&!s[S.packageManager])Lx(`Unable to install dependencies - "${_}" uses "${S.packageManager}" which could not be found.`),Lx(`Try running without "--skip-transforms" to convert "${_}" to a package manager that is available on your system.`),Qo();else if(C.version){let e=Px(`Installing dependencies...`).start();await(0,Mx.install)({project:S,to:C,options:{interactive:!1}}),e.stop()}}n||(Qo(u.default.dim(`Note: This is a community-maintained example.
201
+ `,nx=/[`$(){}|;&<>!#]/;function rx(e){if(nx.test(e))throw Error(`Directory path contains potentially unsafe characters: ${e}`)}function ix(e,t){let n=(0,T.spawnSync)(`git`,e,{stdio:`ignore`,cwd:t});if(n.status!==0)throw Error(`git ${e[0]} failed`);return!0}function ax(e){try{return ix([`rev-parse`,`--is-inside-work-tree`],e),!0}catch{return!1}}function ox(e){try{let t=(0,T.spawnSync)(`hg`,[`--cwd`,`.`,`root`],{stdio:`ignore`,cwd:e});if(t.status!==0)throw Error(`hg check failed`);return!0}catch{return!1}}function sx(e){if(rx(e),ax(e)||ox(e))return!1;let t=!1;try{return ix([`init`],e),t=!0,ix([`checkout`,`-b`,`main`],e),ix([`add`,`-A`],e),ix([`commit`,`-m`,`Initial commit from create-turbo`],e),!0}catch{if(t)try{(0,f.rmSync)(p.default.join(e,`.git`),{recursive:!0,force:!0})}catch{}return!1}}var cx=l(ex());const lx={name:`package-manager`};async function ux(e){let{project:t,prompts:n}=e,{root:r,packageManager:i}=n;if(i&&t.packageManager!==i.name)await(0,cx.convert)({root:r,to:i.name,options:{skipInstall:!0}});else return{result:`not-applicable`,...lx};return{result:`success`,...lx}}const dx=new Set([`basic`,`default`]);function fx(e){return dx.has(e)}var px=class e extends Error{transform;fatal;constructor(t,n){super(t),this.name=`TransformError`,this.transform=n?.transform??`unknown`,this.fatal=n?.fatal??!0,Error.captureStackTrace(this,e)}};const mx=[`turbo`,`turborepo`],hx={name:`official-starter`};async function gx(e){let{prompts:t,example:n,opts:r}=e,i=fx(n.name),a=!n.repo||n.repo.username===`vercel`&&mx.includes(n.repo.name);if(!a)return{result:`not-applicable`,...hx};let o=p.default.join(t.root,`package.json`),s=p.default.join(t.root,`meta.json`),c=g.default.existsSync(o),l;try{l=g.default.readJsonSync(s),g.default.rmSync(s,{force:!0})}catch{}if(c){let e;try{e=g.default.readJsonSync(o)}catch{throw new px(`Unable to read package.json`,{transform:hx.name,fatal:!1})}if(e){if(i&&(e.name=t.projectName),e.devDependencies?.turbo)if(r.turboVersion)e.devDependencies.turbo=r.turboVersion;else{let t=Db().version;e.devDependencies.turbo=`^${t}`}try{g.default.writeJsonSync(o,e,{spaces:2})}catch{throw new px(`Unable to write package.json`,{transform:hx.name,fatal:!1})}}}return{result:`success`,metaJson:l,...hx}}const _x={name:`git-ignore`};async function vx(e){let{prompts:t}=e,n=p.default.join(t.root,`.gitignore`);try{if(!g.default.existsSync(n))g.default.writeFileSync(n,tx);else return{result:`not-applicable`,..._x}}catch{throw new px(`Unable to write .gitignore`,{transform:_x.name,fatal:!1})}return{result:`success`,..._x}}const yx={name:`update-commands-in-readme`},bx=[`pnpm`,`npm`,`yarn`,`bun`],xx=bx.map(e=>`${e} run`).join(`|`),Sx=bx.join(`|`),Cx=RegExp(`\\b(?:${xx})\\b`,`g`),wx=RegExp(`\\b(?:${Sx})\\b(?!\\s+run)`,`g`),Tx=/```[\s\S]*?```|`[^`]+`/g;async function Ex(e){let{prompts:t}=e;if(!t.packageManager)return{result:`not-applicable`,...yx};let n=p.default.join(t.root,`README.md`);if(!g.default.existsSync(n))return{result:`not-applicable`,...yx};try{let e=await g.default.readFile(n,`utf8`),r=Dx(t.packageManager.name,e);await g.default.writeFile(n,r,`utf8`)}catch{throw new px(`Unable to update README.md`,{transform:yx.name,fatal:!1})}return{result:`success`,...yx}}function Dx(e,t){return t.replace(Tx,t=>{let n=t.replace(Cx,`${e} run`);return n=n.replace(wx,e),n})}const Ox=[gx,vx,ux,Ex];async function kx({dir:e}){if(e)return Zs(e);let t=await(0,M.input)({message:`Where would you like to create your Turborepo?`,default:`./my-turborepo`,validate:e=>{let{valid:t,error:n}=Zs(e);return!t&&n?n:!0},transformer:e=>e.trim()});return Zs(t.trim())}async function Ax({manager:e,skipTransforms:t}){if(t)return;let n=await Js();if(e&&n[e])return{name:e,version:n[e]};let r=await(0,M.select)({message:`Which package manager do you want to use?`,choices:[{pm:`npm`,label:`npm`},{pm:`pnpm`,label:`pnpm`},{pm:`yarn`,label:`yarn`},{pm:`bun`,label:`bun`}].sort((e,t)=>{let r=!!n[e.pm],i=!!n[t.pm];return Number(i)-Number(r)}).map(({pm:e,label:t})=>({name:t,value:e,disabled:n[e]?!1:`not installed`}))});return{name:r,version:n[r]}}var jx=l(ex());const{turboGradient:Mx,turboLoader:Nx,info:Px,error:Fx,warn:Ix}=Po;function Lx(e){e.telemetry?.trackOptionPackageManager(e.packageManager),e.telemetry?.trackOptionSkipInstall(e.skipInstall),e.telemetry?.trackOptionSkipTransforms(e.skipTransforms),e.telemetry?.trackOptionExample(e.example),e.telemetry?.trackOptionTurboVersion(e.turboVersion),e.telemetry?.trackOptionExamplePath(e.examplePath)}function Rx(e,t){if(t?.trackCommandStatus({command:`create`,status:`error`}),e instanceof px)Fx(u.default.bold(e.transform),u.default.red(e.message)),e.fatal&&process.exit(1);else if(e instanceof jx.ConvertError&&e.type!==`unknown`)Fx(u.default.red(e.message)),process.exit(1);else if(e instanceof kg)Fx(u.default.red(`Unable to download template from GitHub`)),Fx(u.default.red(e.message)),process.exit(1);else throw e}const zx={build:`Build`,dev:`Develop`,test:`Test`,lint:`Lint`};async function Bx(e,t){t.telemetry?.trackCommandStatus({command:`create`,status:`start`}),t.telemetry?.trackArgumentDirectory(!!e),Lx(t);let n=!1,{packageManager:r,skipInstall:i,skipTransforms:a,git:o}=t,s=await Js(),{root:c,projectName:l}=await kx({dir:e}),d=p.default.relative(process.cwd(),c),f=d===``,m=await Ax({manager:r,skipTransforms:a});r&&t.skipTransforms&&Ix(`--skip-transforms conflicts with <package-manager>. The package manager argument will be ignored.`);let{example:h,examplePath:g}=t,_=h&&h!==`default`?h:`basic`,v={};try{v=await jg({appPath:c,example:_,isDefaultExample:fx(_),examplePath:g})}catch(e){Rx(e,t.telemetry)}let{hasPackageJson:y,availableScripts:b,repoInfo:x}=v,S={};try{S=await(0,jx.getWorkspaceDetails)({root:c})}catch(e){Rx(e,t.telemetry)}if(!a)for(let e of Ox)try{let r=await e({example:{repo:x,name:_},project:S,prompts:{projectName:l,root:c,packageManager:m},opts:t});r.metaJson?.maintainedByCoreTeam&&(n=!0)}catch(e){Rx(e,t.telemetry)}let C=a||!m?{name:S.packageManager,version:s[S.packageManager]}:m;if(Px(`Creating a new Turborepo with:`),Qo(),S.workspaceData.workspaces.length>0){let e=S.workspaceData.workspaces.map(e=>{let t=e=>e===`apps`?`Application packages`:e===`packages`?`Library packages`:e;return{group:t(p.default.relative(c,e.paths.root).split(p.default.sep)[0]||``),title:p.default.relative(c,e.paths.root),description:e.description}}).sort((e,t)=>e.title.localeCompare(t.title)),t;for(let[n,{group:r,title:i,description:a}]of e.entries())(n===0||r!==t)&&Qo(u.default.cyan(r)),Qo(` - ${u.default.bold(i)}${a?`: ${a}`:``}`),t=r}else Qo(u.default.cyan(`apps`)),Qo(` - ${u.default.bold(l)}`);if(Qo(),y&&!i){if(t.skipTransforms&&!s[S.packageManager])Ix(`Unable to install dependencies - "${_}" uses "${S.packageManager}" which could not be found.`),Ix(`Try running without "--skip-transforms" to convert "${_}" to a package manager that is available on your system.`),Qo();else if(C.version){let e=Nx(`Installing dependencies...`).start();await(0,jx.install)({project:S,to:C,options:{interactive:!1}}),e.stop()}}n||(Qo(u.default.dim(`Note: This is a community-maintained example.
202
202
  If you experience a problem, please submit a pull request with a fix.
203
- GitHub Issues will be closed.`)),Qo()),Qo(f?`${u.default.bold(Nx(`>>> Success!`))} Your new Turborepo is ready.`:`${u.default.bold(Nx(`>>> Success!`))} Created your Turborepo at ${u.default.green(d)}`);let w=(0,Mx.getPackageManagerMeta)(C);if(w&&y){Qo(),Qo(u.default.bold(`To get started:`)),f||Qo(`- Change to the directory: ${u.default.cyan(`cd ${d}`)}`),Qo(`- Enable Remote Caching (recommended): ${u.default.cyan(`${w.executable} turbo login`)}`),Qo(` - Learn more: https://turborepo.dev/remote-cache`),Qo(),Qo(`- Run commands with Turborepo:`);let e=b.filter(e=>Bx[e]);for(let t of e)Qo(` - ${u.default.cyan(`${w.command} run ${t}`)}: ${Bx[t]} all apps and packages`);Qo(`- Run a command twice to hit cache`)}o===!1?cx(c):sx(c)&&Fx(`Initialized a git repository.`),t.telemetry?.trackCommandStatus({command:`create`,status:`end`})}var Hx=l(Db());const Ux=Mg({packageInfo:Hx.default});let Wx;const Gx=new d.Command;Gx.name(u.default.bold(Vo(`create-turbo`))).description(`Create a new Turborepo`).usage(`${u.default.bold(`<project-directory>`)} [options]`).hook(`preAction`,async(e,t)=>{let{telemetry:n}=await xb({packageInfo:{name:`create-turbo`,version:Hx.default.version}});t.addOption(new d.Option(`--telemetry`).default(n).hideHelp()),Wx=n}).hook(`postAction`,async()=>{await Wx?.close()}).argument(`[project-directory]`).addOption(new d.Option(`-m, --package-manager <package-manager>`,`Specify the package manager to use`).choices([`npm`,`yarn`,`pnpm`,`bun`])).option(`--skip-install`,`Do not run a package manager install after creating the project`,!1).option(`--skip-transforms`,`Do not run any code transformation after creating the project`,!1).option(`--turbo-version <version>`,`Use a specific version of turbo (default: latest)`).option(`-e, --example <name>|<github-url>`,`
203
+ GitHub Issues will be closed.`)),Qo()),Qo(f?`${u.default.bold(Mx(`>>> Success!`))} Your new Turborepo is ready.`:`${u.default.bold(Mx(`>>> Success!`))} Created your Turborepo at ${u.default.green(d)}`);let w=(0,jx.getPackageManagerMeta)(C);if(w&&y){Qo(),Qo(u.default.bold(`To get started:`)),f||Qo(`- Change to the directory: ${u.default.cyan(`cd ${d}`)}`),Qo(`- Enable Remote Caching (recommended): ${u.default.cyan(`${w.executable} turbo login`)}`),Qo(` - Learn more: https://turborepo.dev/remote-cache`),Qo(),Qo(`- Run commands with Turborepo:`);let e=b.filter(e=>zx[e]);for(let t of e)Qo(` - ${u.default.cyan(`${w.command} run ${t}`)}: ${zx[t]} all apps and packages`);Qo(`- Run a command twice to hit cache`)}o!==!1&&sx(c)&&Px(`Initialized a git repository.`),t.telemetry?.trackCommandStatus({command:`create`,status:`end`})}var Vx=l(Db());const Hx=Mg({packageInfo:Vx.default});let Ux;const Wx=new d.Command;Wx.name(u.default.bold(Vo(`create-turbo`))).description(`Create a new Turborepo`).usage(`${u.default.bold(`<project-directory>`)} [options]`).hook(`preAction`,async(e,t)=>{let{telemetry:n}=await xb({packageInfo:{name:`create-turbo`,version:Vx.default.version}});t.addOption(new d.Option(`--telemetry`).default(n).hideHelp()),Ux=n}).hook(`postAction`,async()=>{await Ux?.close()}).argument(`[project-directory]`).addOption(new d.Option(`-m, --package-manager <package-manager>`,`Specify the package manager to use`).choices([`npm`,`yarn`,`pnpm`,`bun`])).option(`--skip-install`,`Do not run a package manager install after creating the project`,!1).option(`--skip-transforms`,`Do not run any code transformation after creating the project`,!1).option(`--turbo-version <version>`,`Use a specific version of turbo (default: latest)`).option(`-e, --example <name>|<github-url>`,`
204
204
  An example to bootstrap the app with. You can use an example name
205
205
  from the official Turborepo repo or a GitHub URL. The URL can use
206
206
  any branch and/or subdirectory
@@ -209,4 +209,4 @@ GitHub Issues will be closed.`)),Qo()),Qo(f?`${u.default.bold(Nx(`>>> Success!`)
209
209
  a slash (e.g. bug/fix-1) and the path to the example (e.g. foo/bar).
210
210
  In this case, you must specify the path to the example separately:
211
211
  --example-path foo/bar
212
- `).option(`--no-git`,`Skip initializing a git repository`).version(Hx.default.version,`-v, --version`,`Output the current version`).helpOption(`-h, --help`,`Display help for command`).action(Vx),Eb(Gx),Gx.parseAsync().then(()=>Ux()).catch(async e=>{Qo(),es(`Unexpected error. Please report it as a bug:`),Qo(e),Qo(),await Ux(1)});
212
+ `).option(`--no-git`,`Skip initializing a git repository`).version(Vx.default.version,`-v, --version`,`Output the current version`).helpOption(`-h, --help`,`Display help for command`).action(Bx),Eb(Wx),Wx.parseAsync().then(()=>Hx()).catch(async e=>{Qo(),es(`Unexpected error. Please report it as a bug:`),Qo(e),Qo(),await Hx(1)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-turbo",
3
- "version": "2.9.16-canary.1",
3
+ "version": "2.9.16",
4
4
  "description": "Create a new Turborepo",
5
5
  "homepage": "https://turborepo.dev",
6
6
  "bugs": {
@@ -36,10 +36,10 @@
36
36
  "tsdown": "0.12.0",
37
37
  "typescript": "5.5.4",
38
38
  "@turbo/telemetry": "0.0.0",
39
- "@turbo/test-utils": "0.0.0",
40
39
  "@turbo/tsconfig": "0.0.0",
41
40
  "@turbo/utils": "0.0.0",
42
- "@turbo/workspaces": "2.9.16-canary.1"
41
+ "@turbo/workspaces": "2.9.16",
42
+ "@turbo/test-utils": "0.0.0"
43
43
  },
44
44
  "scripts": {
45
45
  "build": "tsdown",