create-turbo 2.9.4 → 2.9.5-canary.1

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 +4 -4
package/dist/cli.js CHANGED
@@ -97,7 +97,7 @@ For faster downloads, install git: https://git-scm.com/downloads`),await lg({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=re;var ie=class extends re{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name=`MaxRedirectsError`,this.code=`ERR_TOO_MANY_REDIRECTS`}};exports.MaxRedirectsError=ie;var ae=class extends re{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name=`HTTPError`,this.code=`ERR_NON_2XX_3XX_RESPONSE`}};exports.HTTPError=ae;var X=class extends re{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=X;var oe=class extends re{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=oe;var se=class extends re{constructor(e,t,n){super(e.message,e,n),this.name=`TimeoutError`,this.event=e.event,this.timings=t}};exports.TimeoutError=se;var ce=class extends re{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=ce;var le=class extends re{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name=`UnsupportedProtocolError`,this.code=`ERR_UNSUPPORTED_PROTOCOL`}};exports.UnsupportedProtocolError=le;let ue=[`socket`,`connect`,`continue`,`information`,`upgrade`,`timeout`];var de=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[B]=!1,this[V]=!1,this[U]=[],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 J(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[U])e();this[U].length=0,this.requestInitialized=!0}catch(e){if(e instanceof re){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 q(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 le(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(_&&(te.has(_)||te.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[H]=t.body):a?(e&&(r[`content-type`]=`application/x-www-form-urlencoded`),this[H]=new i.URLSearchParams(t.form).toString()):(e&&(r[`content-type`]=`application/json`),this[H]=t.stringifyJson(t.json));let n=await h.default(this[H],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[W]=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[L]=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 ce(t,this))}),e.once(`aborted`,()=>{this._beforeError(new ce({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&&ne.has(r)){e.resume(),this[k]&&(this[R](),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[H]=void 0,delete t.headers[`content-length`]),this.redirects.length>=t.maxRedirects){this._beforeError(new ie(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 re(`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 ae(o));return}e.on(`readable`,()=>{this[V]&&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[R]=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 se(t,this.timings,this):new re(t.message,t,this),this._beforeError(t)}),this[I]=_.default(e,this,ue),this[k]=e,this.emit(`uploadProgress`,this.uploadProgress);let a=this[H],o=this.redirects.length===0?this:e;m.default.nodeStream(a)?(a.pipe(o),a.once(`error`,e=>{this._beforeError(new oe(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=te.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`]=K?`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[H]!==o.body&&(this[H]=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),ee(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 X(e,this):new re(e.message,e,this)}}async _error(e){try{for(let t of this.options.hooks.beforeError)e=await t(e)}catch(t){e=new re(t.message,t,this)}this.destroy(e)}_beforeError(e){if(this[B])return;let{options:t}=this,n=this.retryCount+1;this[B]=!0,e instanceof re||(e=new re(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 re(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 re(t.message,e,this));return}this.destroyed||(this.destroy(),this.emit(`retry`,n,e))};this[G]=setTimeout(t,a);return}}this._error(r)})()}_read(){this[V]=!0;let e=this[A];if(e&&!this[B]){e.readableLength&&(this[V]=!1);let t;for(;(t=e.read())!==null;){this[M]+=t.length,this[z]=!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[U].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[U].push(t)}_destroy(e,t){var n;this[B]=!0,clearTimeout(this[G]),k in this&&(this[R](),(n=this[A])?.complete||this[k].destroy()),e!==null&&!m.default.undefined(e)&&!(e instanceof re)&&(e=new re(e.message,e,this)),t(e)}get _isAboutToError(){return this[B]}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[W])?.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[L]}pipe(e,t){if(this[z])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=de}),Gy=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=Wy();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(Wy(),exports)}),Ky=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=Gy(),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}),qy=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=Xv(),a=Zv(),o=Gy(),s=Ky(),c=Wy(),l=My(),u=Ry(),d=By(),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(Gy(),exports)}),Jy=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=Gy();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}),Yy=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=Xv();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}),Xy=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0})}),Zy=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=Xv(),i=qy(),a=Jy(),o=Wy(),s=Yy(),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(Xy(),exports)}),Qy=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=Zy(),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(Zy(),exports),r(qy(),exports)}),$y=l(Qy());const eb=20,tb=`/api/turborepo/v1/events`;var nb=class{api;packageInfo;batchSize=eb;timeout=250;sessionId=(0,A.randomUUID)();eventBatches=[];events=[];config;constructor({api:e,packageInfo:t,config:n,opts:r}){let i=new URL(tb,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($y.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":Uv.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 Yv.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})}},rb=class extends nb{trackOptionExample(e){if(e)return this.trackCliOption({option:`example`,value: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:e})}trackArgumentDirectory(e){if(e)return this.trackCliArgument({argument:`project_directory`,value:`provided`})}trackArgumentPackageManager(e){if(e)return this.trackCliArgument({argument:`package_manager`,value:e})}},ib=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`}]}),ab=o(exports=>{let t=ib(),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]})}}),ob=l(ab());const sb=[`build`,`test`,`lint`,`typecheck`,`checktypes`,`check-types`,`type-check`,`check`];var cb=class extends nb{trackCI(){return this.track({key:`ci`,value:ob.name??`unknown`})}trackArgumentWorkspace(e){if(e)return this.trackCliArgument({argument:`workspace`,value:`provided`})}trackOptionTask(e){if(e)return this.trackCliOption({option:`task`,value:sb.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 lb={"create-turbo":rb,"turbo-ignore":cb},ub=`https://telemetry.vercel.com`;async function db({packageInfo:e,opts:t}){let n=lb[e.name],r=await Yv.fromDefaultConfig();if(r){r.showAlert();let i=new n({api:ub,packageInfo:e,config:r,opts:t});return{telemetry:i}}return{telemetry:void 0}}const fb=`status`,pb=[`enable`,`disable`,fb];function mb(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 hb(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(),mb(t)}function gb(e){e.command(`telemetry`).description(`Manage telemetry settings`).addArgument(new d.Argument(`[action]`,`Action to perform`).choices(pb).default(fb)).action(hb)}var _b=o((exports,t)=>{t.exports={name:`create-turbo`,version:`2.9.4`,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.2.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.2.0`,"ts-jest":`29.4.6`,tsdown:`0.12.0`,typescript:`5.5.4`}}}),vb=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}),yb=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=re;var ie=class extends re{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name=`MaxRedirectsError`,this.code=`ERR_TOO_MANY_REDIRECTS`}};exports.MaxRedirectsError=ie;var ae=class extends re{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name=`HTTPError`,this.code=`ERR_NON_2XX_3XX_RESPONSE`}};exports.HTTPError=ae;var X=class extends re{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=X;var oe=class extends re{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=oe;var se=class extends re{constructor(e,t,n){super(e.message,e,n),this.name=`TimeoutError`,this.event=e.event,this.timings=t}};exports.TimeoutError=se;var ce=class extends re{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=ce;var le=class extends re{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name=`UnsupportedProtocolError`,this.code=`ERR_UNSUPPORTED_PROTOCOL`}};exports.UnsupportedProtocolError=le;let ue=[`socket`,`connect`,`continue`,`information`,`upgrade`,`timeout`];var de=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[B]=!1,this[V]=!1,this[U]=[],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 J(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[U])e();this[U].length=0,this.requestInitialized=!0}catch(e){if(e instanceof re){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 q(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 le(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(_&&(te.has(_)||te.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[H]=t.body):a?(e&&(r[`content-type`]=`application/x-www-form-urlencoded`),this[H]=new i.URLSearchParams(t.form).toString()):(e&&(r[`content-type`]=`application/json`),this[H]=t.stringifyJson(t.json));let n=await h.default(this[H],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[W]=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[L]=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 ce(t,this))}),e.once(`aborted`,()=>{this._beforeError(new ce({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&&ne.has(r)){e.resume(),this[k]&&(this[R](),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[H]=void 0,delete t.headers[`content-length`]),this.redirects.length>=t.maxRedirects){this._beforeError(new ie(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 re(`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 ae(o));return}e.on(`readable`,()=>{this[V]&&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[R]=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 se(t,this.timings,this):new re(t.message,t,this),this._beforeError(t)}),this[I]=_.default(e,this,ue),this[k]=e,this.emit(`uploadProgress`,this.uploadProgress);let a=this[H],o=this.redirects.length===0?this:e;m.default.nodeStream(a)?(a.pipe(o),a.once(`error`,e=>{this._beforeError(new oe(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=te.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`]=K?`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[H]!==o.body&&(this[H]=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),ee(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 X(e,this):new re(e.message,e,this)}}async _error(e){try{for(let t of this.options.hooks.beforeError)e=await t(e)}catch(t){e=new re(t.message,t,this)}this.destroy(e)}_beforeError(e){if(this[B])return;let{options:t}=this,n=this.retryCount+1;this[B]=!0,e instanceof re||(e=new re(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 re(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 re(t.message,e,this));return}this.destroyed||(this.destroy(),this.emit(`retry`,n,e))};this[G]=setTimeout(t,a);return}}this._error(r)})()}_read(){this[V]=!0;let e=this[A];if(e&&!this[B]){e.readableLength&&(this[V]=!1);let t;for(;(t=e.read())!==null;){this[M]+=t.length,this[z]=!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[U].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[U].push(t)}_destroy(e,t){var n;this[B]=!0,clearTimeout(this[G]),k in this&&(this[R](),(n=this[A])?.complete||this[k].destroy()),e!==null&&!m.default.undefined(e)&&!(e instanceof re)&&(e=new re(e.message,e,this)),t(e)}get _isAboutToError(){return this[B]}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[W])?.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[L]}pipe(e,t){if(this[z])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=de}),Gy=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=Wy();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(Wy(),exports)}),Ky=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=Gy(),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}),qy=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=Xv(),a=Zv(),o=Gy(),s=Ky(),c=Wy(),l=My(),u=Ry(),d=By(),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(Gy(),exports)}),Jy=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=Gy();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}),Yy=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0});let t=Xv();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}),Xy=o(exports=>{Object.defineProperty(exports,`__esModule`,{value:!0})}),Zy=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=Xv(),i=qy(),a=Jy(),o=Wy(),s=Yy(),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(Xy(),exports)}),Qy=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=Zy(),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(Zy(),exports),r(qy(),exports)}),$y=l(Qy());const eb=20,tb=`/api/turborepo/v1/events`;var nb=class{api;packageInfo;batchSize=eb;timeout=250;sessionId=(0,A.randomUUID)();eventBatches=[];events=[];config;constructor({api:e,packageInfo:t,config:n,opts:r}){let i=new URL(tb,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($y.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":Uv.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 Yv.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})}},rb=class extends nb{trackOptionExample(e){if(e)return this.trackCliOption({option:`example`,value: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:e})}trackArgumentDirectory(e){if(e)return this.trackCliArgument({argument:`project_directory`,value:`provided`})}trackArgumentPackageManager(e){if(e)return this.trackCliArgument({argument:`package_manager`,value:e})}},ib=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`}]}),ab=o(exports=>{let t=ib(),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]})}}),ob=l(ab());const sb=[`build`,`test`,`lint`,`typecheck`,`checktypes`,`check-types`,`type-check`,`check`];var cb=class extends nb{trackCI(){return this.track({key:`ci`,value:ob.name??`unknown`})}trackArgumentWorkspace(e){if(e)return this.trackCliArgument({argument:`workspace`,value:`provided`})}trackOptionTask(e){if(e)return this.trackCliOption({option:`task`,value:sb.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 lb={"create-turbo":rb,"turbo-ignore":cb},ub=`https://telemetry.vercel.com`;async function db({packageInfo:e,opts:t}){let n=lb[e.name],r=await Yv.fromDefaultConfig();if(r){r.showAlert();let i=new n({api:ub,packageInfo:e,config:r,opts:t});return{telemetry:i}}return{telemetry:void 0}}const fb=`status`,pb=[`enable`,`disable`,fb];function mb(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 hb(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(),mb(t)}function gb(e){e.command(`telemetry`).description(`Manage telemetry settings`).addArgument(new d.Argument(`[action]`,`Action to perform`).choices(pb).default(fb)).action(hb)}var _b=o((exports,t)=>{t.exports={name:`create-turbo`,version:`2.9.5-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.2.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.2.0`,"ts-jest":`29.4.6`,tsdown:`0.12.0`,typescript:`5.5.4`}}}),vb=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}),yb=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}),bb=o((exports,t)=>{var n=vb();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
- `,Kb=/[`$(){}|;&<>!#]/;function qb(e){if(Kb.test(e))throw Error(`Directory path contains potentially unsafe characters: ${e}`)}function Jb(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 Yb(e){try{return Jb([`rev-parse`,`--is-inside-work-tree`],e),!0}catch{return!1}}function Xb(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 Zb(e){if(qb(e),Yb(e)||Xb(e))return!1;let t=!1;try{return Jb([`init`],e),t=!0,Jb([`checkout`,`-b`,`main`],e),Jb([`add`,`-A`],e),Jb([`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 Qb(e){try{return(0,f.rmSync)(p.default.join(e,`.git`),{recursive:!0,force:!0}),!0}catch{return!1}}var $b=l(Wb());const ex={name:`package-manager`};async function tx(e){let{project:t,prompts:n}=e,{root:r,packageManager:i}=n;if(i&&t.packageManager!==i.name)await(0,$b.convert)({root:r,to:i.name,options:{skipInstall:!0}});else return{result:`not-applicable`,...ex};return{result:`success`,...ex}}const nx=new Set([`basic`,`default`]);function rx(e){return nx.has(e)}var ix=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 ax=[`turbo`,`turborepo`],ox={name:`official-starter`};async function sx(e){let{prompts:t,example:n,opts:r}=e,i=rx(n.name),a=!n.repo||n.repo.username===`vercel`&&ax.includes(n.repo.name);if(!a)return{result:`not-applicable`,...ox};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 ix(`Unable to read package.json`,{transform:ox.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=_b().version;e.devDependencies.turbo=`^${t}`}try{g.default.writeJsonSync(o,e,{spaces:2})}catch{throw new ix(`Unable to write package.json`,{transform:ox.name,fatal:!1})}}}return{result:`success`,metaJson:l,...ox}}const cx={name:`git-ignore`};async function lx(e){let{prompts:t}=e,n=p.default.join(t.root,`.gitignore`);try{if(!g.default.existsSync(n))g.default.writeFileSync(n,Gb);else return{result:`not-applicable`,...cx}}catch{throw new ix(`Unable to write .gitignore`,{transform:cx.name,fatal:!1})}return{result:`success`,...cx}}const ux=[sx,lx,tx];async function dx({dir:e}){if(e)return Hs(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}=Hs(e);return!t&&n?n:!0},transformer:e=>e.trim()});return Hs(t.trim())}async function fx({manager:e,skipTransforms:t}){if(t)return;let n=await zs();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 px=l(Wb());const{turboGradient:mx,turboLoader:hx,info:gx,error:_x,warn:vx}=Po;function yx(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 bx(e,t){if(t?.trackCommandStatus({command:`create`,status:`error`}),e instanceof ix)_x(u.default.bold(e.transform),u.default.red(e.message)),e.fatal&&process.exit(1);else if(e instanceof px.ConvertError&&e.type!==`unknown`)_x(u.default.red(e.message)),process.exit(1);else if(e instanceof bg)_x(u.default.red(`Unable to download template from GitHub`)),_x(u.default.red(e.message)),process.exit(1);else throw e}const xx={build:`Build`,dev:`Develop`,test:`Test`,lint:`Lint`};async function Sx(e,t){t.telemetry?.trackCommandStatus({command:`create`,status:`start`}),t.telemetry?.trackArgumentDirectory(!!e),yx(t);let n=!1,{packageManager:r,skipInstall:i,skipTransforms:a,git:o}=t,s=await zs(),{root:c,projectName:l}=await dx({dir:e}),d=p.default.relative(process.cwd(),c),f=d===``,m=await fx({manager:r,skipTransforms:a});r&&t.skipTransforms&&vx(`--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 Sg({appPath:c,example:_,isDefaultExample:rx(_),examplePath:g})}catch(e){bx(e,t.telemetry)}let{hasPackageJson:y,availableScripts:b,repoInfo:x}=v,S={};try{S=await(0,px.getWorkspaceDetails)({root:c})}catch(e){bx(e,t.telemetry)}if(!a)for(let e of ux)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){bx(e,t.telemetry)}let C=a||!m?{name:S.packageManager,version:s[S.packageManager]}:m;if(gx(`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])vx(`Unable to install dependencies - "${_}" uses "${S.packageManager}" which could not be found.`),vx(`Try running without "--skip-transforms" to convert "${_}" to a package manager that is available on your system.`),Qo();else if(C.version){let e=hx(`Installing dependencies...`).start();await(0,px.install)({project:S,to:C,options:{interactive:!1}}),e.stop()}}n||(Qo(u.default.dim(`Note: This is a community-maintained example.
201
+ `,Kb=/[`$(){}|;&<>!#]/;function qb(e){if(Kb.test(e))throw Error(`Directory path contains potentially unsafe characters: ${e}`)}function Jb(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 Yb(e){try{return Jb([`rev-parse`,`--is-inside-work-tree`],e),!0}catch{return!1}}function Xb(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 Zb(e){if(qb(e),Yb(e)||Xb(e))return!1;let t=!1;try{return Jb([`init`],e),t=!0,Jb([`checkout`,`-b`,`main`],e),Jb([`add`,`-A`],e),Jb([`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 Qb(e){try{return(0,f.rmSync)(p.default.join(e,`.git`),{recursive:!0,force:!0}),!0}catch{return!1}}var $b=l(Wb());const ex={name:`package-manager`};async function tx(e){let{project:t,prompts:n}=e,{root:r,packageManager:i}=n;if(i&&t.packageManager!==i.name)await(0,$b.convert)({root:r,to:i.name,options:{skipInstall:!0}});else return{result:`not-applicable`,...ex};return{result:`success`,...ex}}const nx=new Set([`basic`,`default`]);function rx(e){return nx.has(e)}var ix=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 ax=[`turbo`,`turborepo`],ox={name:`official-starter`};async function sx(e){let{prompts:t,example:n,opts:r}=e,i=rx(n.name),a=!n.repo||n.repo.username===`vercel`&&ax.includes(n.repo.name);if(!a)return{result:`not-applicable`,...ox};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 ix(`Unable to read package.json`,{transform:ox.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=_b().version;e.devDependencies.turbo=`^${t}`}try{g.default.writeJsonSync(o,e,{spaces:2})}catch{throw new ix(`Unable to write package.json`,{transform:ox.name,fatal:!1})}}}return{result:`success`,metaJson:l,...ox}}const cx={name:`git-ignore`};async function lx(e){let{prompts:t}=e,n=p.default.join(t.root,`.gitignore`);try{if(!g.default.existsSync(n))g.default.writeFileSync(n,Gb);else return{result:`not-applicable`,...cx}}catch{throw new ix(`Unable to write .gitignore`,{transform:cx.name,fatal:!1})}return{result:`success`,...cx}}const ux={name:`update-commands-in-readme`},dx=[`pnpm`,`npm`,`yarn`,`bun`],fx=dx.map(e=>`${e} run`).join(`|`),px=dx.join(`|`),mx=RegExp(`\\b(?:${fx})\\b`,`g`),hx=RegExp(`\\b(?:${px})\\b(?!\\s+run)`,`g`),gx=/```[\s\S]*?```|`[^`]+`/g;async function _x(e){let{prompts:t}=e;if(!t.packageManager)return{result:`not-applicable`,...ux};let n=p.default.join(t.root,`README.md`);if(!g.default.existsSync(n))return{result:`not-applicable`,...ux};try{let e=await g.default.readFile(n,`utf8`),r=vx(t.packageManager.name,e);await g.default.writeFile(n,r,`utf8`)}catch{throw new ix(`Unable to update README.md`,{transform:ux.name,fatal:!1})}return{result:`success`,...ux}}function vx(e,t){return t.replace(gx,t=>{let n=t.replace(mx,`${e} run`);return n=n.replace(hx,e),n})}const yx=[sx,lx,tx,_x];async function bx({dir:e}){if(e)return Hs(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}=Hs(e);return!t&&n?n:!0},transformer:e=>e.trim()});return Hs(t.trim())}async function xx({manager:e,skipTransforms:t}){if(t)return;let n=await zs();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 Sx=l(Wb());const{turboGradient:Cx,turboLoader:wx,info:Tx,error:Ex,warn:Dx}=Po;function Ox(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 kx(e,t){if(t?.trackCommandStatus({command:`create`,status:`error`}),e instanceof ix)Ex(u.default.bold(e.transform),u.default.red(e.message)),e.fatal&&process.exit(1);else if(e instanceof Sx.ConvertError&&e.type!==`unknown`)Ex(u.default.red(e.message)),process.exit(1);else if(e instanceof bg)Ex(u.default.red(`Unable to download template from GitHub`)),Ex(u.default.red(e.message)),process.exit(1);else throw e}const Ax={build:`Build`,dev:`Develop`,test:`Test`,lint:`Lint`};async function jx(e,t){t.telemetry?.trackCommandStatus({command:`create`,status:`start`}),t.telemetry?.trackArgumentDirectory(!!e),Ox(t);let n=!1,{packageManager:r,skipInstall:i,skipTransforms:a,git:o}=t,s=await zs(),{root:c,projectName:l}=await bx({dir:e}),d=p.default.relative(process.cwd(),c),f=d===``,m=await xx({manager:r,skipTransforms:a});r&&t.skipTransforms&&Dx(`--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 Sg({appPath:c,example:_,isDefaultExample:rx(_),examplePath:g})}catch(e){kx(e,t.telemetry)}let{hasPackageJson:y,availableScripts:b,repoInfo:x}=v,S={};try{S=await(0,Sx.getWorkspaceDetails)({root:c})}catch(e){kx(e,t.telemetry)}if(!a)for(let e of yx)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){kx(e,t.telemetry)}let C=a||!m?{name:S.packageManager,version:s[S.packageManager]}:m;if(Tx(`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])Dx(`Unable to install dependencies - "${_}" uses "${S.packageManager}" which could not be found.`),Dx(`Try running without "--skip-transforms" to convert "${_}" to a package manager that is available on your system.`),Qo();else if(C.version){let e=wx(`Installing dependencies...`).start();await(0,Sx.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(mx(`>>> Success!`))} Your new Turborepo is ready.`:`${u.default.bold(mx(`>>> Success!`))} Created your Turborepo at ${u.default.green(d)}`);let w=(0,px.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=>xx[e]);for(let t of e)Qo(` - ${u.default.cyan(`${w.command} run ${t}`)}: ${xx[t]} all apps and packages`);Qo(`- Run a command twice to hit cache`)}o===!1?Qb(c):Zb(c)&&gx(`Initialized a git repository.`),t.telemetry?.trackCommandStatus({command:`create`,status:`end`})}var Cx=l(_b());const wx=Cg({packageInfo:Cx.default});let Tx;const Ex=new d.Command;Ex.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 db({packageInfo:{name:`create-turbo`,version:Cx.default.version}});t.addOption(new d.Option(`--telemetry`).default(n).hideHelp()),Tx=n}).hook(`postAction`,async()=>{await Tx?.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(Cx(`>>> Success!`))} Your new Turborepo is ready.`:`${u.default.bold(Cx(`>>> Success!`))} Created your Turborepo at ${u.default.green(d)}`);let w=(0,Sx.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=>Ax[e]);for(let t of e)Qo(` - ${u.default.cyan(`${w.command} run ${t}`)}: ${Ax[t]} all apps and packages`);Qo(`- Run a command twice to hit cache`)}o===!1?Qb(c):Zb(c)&&Tx(`Initialized a git repository.`),t.telemetry?.trackCommandStatus({command:`create`,status:`end`})}var Mx=l(_b());const Nx=Cg({packageInfo:Mx.default});let Px;const Fx=new d.Command;Fx.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 db({packageInfo:{name:`create-turbo`,version:Mx.default.version}});t.addOption(new d.Option(`--telemetry`).default(n).hideHelp()),Px=n}).hook(`postAction`,async()=>{await Px?.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(mx(`>>> 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(Cx.default.version,`-v, --version`,`Output the current version`).helpOption(`-h, --help`,`Display help for command`).action(Sx),gb(Ex),Ex.parseAsync().then(()=>wx()).catch(async e=>{Qo(),es(`Unexpected error. Please report it as a bug:`),Qo(e),Qo(),await wx(1)});
212
+ `).option(`--no-git`,`Skip initializing a git repository`).version(Mx.default.version,`-v, --version`,`Output the current version`).helpOption(`-h, --help`,`Display help for command`).action(jx),gb(Fx),Fx.parseAsync().then(()=>Nx()).catch(async e=>{Qo(),es(`Unexpected error. Please report it as a bug:`),Qo(e),Qo(),await Nx(1)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-turbo",
3
- "version": "2.9.4",
3
+ "version": "2.9.5-canary.1",
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
- "@turbo/workspaces": "2.9.4",
42
- "@turbo/utils": "0.0.0"
40
+ "@turbo/utils": "0.0.0",
41
+ "@turbo/test-utils": "0.0.0",
42
+ "@turbo/workspaces": "2.9.5-canary.1"
43
43
  },
44
44
  "scripts": {
45
45
  "build": "tsdown",