@tanstack/router-cli 1.131.12 → 1.132.0-alpha.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.
@@ -1 +1 @@
1
- {"version":3,"file":"generate.cjs","sources":["../../src/generate.ts"],"sourcesContent":["import { Generator } from '@tanstack/router-generator'\nimport type { Config } from '@tanstack/router-generator'\n\nexport async function generate(config: Config, root: string) {\n try {\n const generator = new Generator({\n config,\n root,\n })\n await generator.run()\n process.exit(0)\n } catch (err) {\n console.error(err)\n process.exit(1)\n }\n}\n"],"names":["Generator"],"mappings":";;;AAGsB,eAAA,SAAS,QAAgB,MAAc;AACvD,MAAA;AACI,UAAA,YAAY,IAAIA,0BAAU;AAAA,MAC9B;AAAA,MACA;AAAA,IAAA,CACD;AACD,UAAM,UAAU,IAAI;AACpB,YAAQ,KAAK,CAAC;AAAA,WACP,KAAK;AACZ,YAAQ,MAAM,GAAG;AACjB,YAAQ,KAAK,CAAC;AAAA,EAAA;AAElB;;"}
1
+ {"version":3,"file":"generate.cjs","sources":["../../src/generate.ts"],"sourcesContent":["import { Generator } from '@tanstack/router-generator'\nimport type { Config } from '@tanstack/router-generator'\n\nexport async function generate(config: Config, root: string) {\n try {\n const generator = new Generator({\n config,\n root,\n })\n await generator.run()\n process.exit(0)\n } catch (err) {\n console.error(err)\n process.exit(1)\n }\n}\n"],"names":["Generator"],"mappings":";;;AAGA,eAAsB,SAAS,QAAgB,MAAc;AAC3D,MAAI;AACF,UAAM,YAAY,IAAIA,0BAAU;AAAA,MAC9B;AAAA,MACA;AAAA,IAAA,CACD;AACD,UAAM,UAAU,IAAA;AAChB,YAAQ,KAAK,CAAC;AAAA,EAChB,SAAS,KAAK;AACZ,YAAQ,MAAM,GAAG;AACjB,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import * as yargs from 'yargs'\nimport { getConfig } from '@tanstack/router-generator'\nimport { generate } from './generate'\nimport { watch } from './watch'\n\nmain()\n\nexport function main() {\n yargs\n // @ts-expect-error\n .scriptName('tsr')\n .usage('$0 <cmd> [args]')\n .command('generate', 'Generate the routes for a project', async () => {\n const config = getConfig()\n await generate(config, process.cwd())\n })\n .command(\n 'watch',\n 'Continuously watch and generate the routes for a project',\n () => {\n watch(process.cwd())\n },\n )\n .help().argv\n}\n"],"names":["yargs","getConfig","generate","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKA,KAAK;AAEE,SAAS,OAAO;AAGlBA,mBAAA,WAAW,KAAK,EAChB,MAAM,iBAAiB,EACvB,QAAQ,YAAY,qCAAqC,YAAY;AACpE,UAAM,SAASC,gBAAAA,UAAU;AACzB,UAAMC,kBAAS,QAAQ,QAAQ,IAAA,CAAK;AAAA,EACrC,CAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AACEC,kBAAA,QAAQ,KAAK;AAAA,IAAA;AAAA,EACrB,EAED,KAAO,EAAA;AACZ;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import * as yargs from 'yargs'\nimport { getConfig } from '@tanstack/router-generator'\nimport { generate } from './generate'\nimport { watch } from './watch'\n\nmain()\n\nexport function main() {\n yargs\n // @ts-expect-error\n .scriptName('tsr')\n .usage('$0 <cmd> [args]')\n .command('generate', 'Generate the routes for a project', async () => {\n const config = getConfig()\n await generate(config, process.cwd())\n })\n .command(\n 'watch',\n 'Continuously watch and generate the routes for a project',\n () => {\n watch(process.cwd())\n },\n )\n .help().argv\n}\n"],"names":["yargs","getConfig","generate","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKA,KAAA;AAEO,SAAS,OAAO;AACrBA,mBAEG,WAAW,KAAK,EAChB,MAAM,iBAAiB,EACvB,QAAQ,YAAY,qCAAqC,YAAY;AACpE,UAAM,SAASC,gBAAAA,UAAA;AACf,UAAMC,kBAAS,QAAQ,QAAQ,IAAA,CAAK;AAAA,EACtC,CAAC,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AACJC,kBAAM,QAAQ,KAAK;AAAA,IACrB;AAAA,EAAA,EAED,OAAO;AACZ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"watch.cjs","sources":["../../src/watch.ts"],"sourcesContent":["import chokidar from 'chokidar'\nimport {\n Generator,\n getConfig,\n resolveConfigPath,\n} from '@tanstack/router-generator'\nimport type { FileEventType } from '@tanstack/router-generator'\n\nexport function watch(root: string) {\n const configPath = resolveConfigPath({\n configDirectory: root,\n })\n const configWatcher = chokidar.watch(configPath)\n\n let watcher = new chokidar.FSWatcher({})\n\n const generatorWatcher = () => {\n const config = getConfig()\n const generator = new Generator({ config, root })\n\n watcher.close()\n\n console.info(`TSR: Watching routes (${config.routesDirectory})...`)\n watcher = chokidar.watch(config.routesDirectory)\n\n watcher.on('ready', async () => {\n const handle = async () => {\n try {\n await generator.run()\n } catch (err) {\n console.error(err)\n console.info()\n }\n }\n\n await handle()\n\n watcher.on('all', (event, path) => {\n let type: FileEventType | undefined\n switch (event) {\n case 'add':\n type = 'create'\n break\n case 'change':\n type = 'update'\n break\n case 'unlink':\n type = 'delete'\n break\n }\n if (type) {\n return generator.run({ path, type })\n }\n return generator.run()\n })\n })\n }\n\n configWatcher.on('ready', generatorWatcher)\n configWatcher.on('change', generatorWatcher)\n}\n"],"names":["resolveConfigPath","getConfig","Generator"],"mappings":";;;;AAQO,SAAS,MAAM,MAAc;AAClC,QAAM,aAAaA,gBAAAA,kBAAkB;AAAA,IACnC,iBAAiB;AAAA,EAAA,CAClB;AACK,QAAA,gBAAgB,SAAS,MAAM,UAAU;AAE/C,MAAI,UAAU,IAAI,SAAS,UAAU,CAAA,CAAE;AAEvC,QAAM,mBAAmB,MAAM;AAC7B,UAAM,SAASC,gBAAAA,UAAU;AACzB,UAAM,YAAY,IAAIC,gBAAAA,UAAU,EAAE,QAAQ,MAAM;AAEhD,YAAQ,MAAM;AAEd,YAAQ,KAAK,yBAAyB,OAAO,eAAe,MAAM;AACxD,cAAA,SAAS,MAAM,OAAO,eAAe;AAEvC,YAAA,GAAG,SAAS,YAAY;AAC9B,YAAM,SAAS,YAAY;AACrB,YAAA;AACF,gBAAM,UAAU,IAAI;AAAA,iBACb,KAAK;AACZ,kBAAQ,MAAM,GAAG;AACjB,kBAAQ,KAAK;AAAA,QAAA;AAAA,MAEjB;AAEA,YAAM,OAAO;AAEb,cAAQ,GAAG,OAAO,CAAC,OAAO,SAAS;AAC7B,YAAA;AACJ,gBAAQ,OAAO;AAAA,UACb,KAAK;AACI,mBAAA;AACP;AAAA,UACF,KAAK;AACI,mBAAA;AACP;AAAA,UACF,KAAK;AACI,mBAAA;AACP;AAAA,QAAA;AAEJ,YAAI,MAAM;AACR,iBAAO,UAAU,IAAI,EAAE,MAAM,MAAM;AAAA,QAAA;AAErC,eAAO,UAAU,IAAI;AAAA,MAAA,CACtB;AAAA,IAAA,CACF;AAAA,EACH;AAEc,gBAAA,GAAG,SAAS,gBAAgB;AAC5B,gBAAA,GAAG,UAAU,gBAAgB;AAC7C;;"}
1
+ {"version":3,"file":"watch.cjs","sources":["../../src/watch.ts"],"sourcesContent":["import chokidar from 'chokidar'\nimport {\n Generator,\n getConfig,\n resolveConfigPath,\n} from '@tanstack/router-generator'\nimport type { FileEventType } from '@tanstack/router-generator'\n\nexport function watch(root: string) {\n const configPath = resolveConfigPath({\n configDirectory: root,\n })\n const configWatcher = chokidar.watch(configPath)\n\n let watcher = new chokidar.FSWatcher({})\n\n const generatorWatcher = () => {\n const config = getConfig()\n const generator = new Generator({ config, root })\n\n watcher.close()\n\n console.info(`TSR: Watching routes (${config.routesDirectory})...`)\n watcher = chokidar.watch(config.routesDirectory)\n\n watcher.on('ready', async () => {\n const handle = async () => {\n try {\n await generator.run()\n } catch (err) {\n console.error(err)\n console.info()\n }\n }\n\n await handle()\n\n watcher.on('all', (event, path) => {\n let type: FileEventType | undefined\n switch (event) {\n case 'add':\n type = 'create'\n break\n case 'change':\n type = 'update'\n break\n case 'unlink':\n type = 'delete'\n break\n }\n if (type) {\n return generator.run({ path, type })\n }\n return generator.run()\n })\n })\n }\n\n configWatcher.on('ready', generatorWatcher)\n configWatcher.on('change', generatorWatcher)\n}\n"],"names":["resolveConfigPath","getConfig","Generator"],"mappings":";;;;AAQO,SAAS,MAAM,MAAc;AAClC,QAAM,aAAaA,gBAAAA,kBAAkB;AAAA,IACnC,iBAAiB;AAAA,EAAA,CAClB;AACD,QAAM,gBAAgB,SAAS,MAAM,UAAU;AAE/C,MAAI,UAAU,IAAI,SAAS,UAAU,CAAA,CAAE;AAEvC,QAAM,mBAAmB,MAAM;AAC7B,UAAM,SAASC,gBAAAA,UAAA;AACf,UAAM,YAAY,IAAIC,gBAAAA,UAAU,EAAE,QAAQ,MAAM;AAEhD,YAAQ,MAAA;AAER,YAAQ,KAAK,yBAAyB,OAAO,eAAe,MAAM;AAClE,cAAU,SAAS,MAAM,OAAO,eAAe;AAE/C,YAAQ,GAAG,SAAS,YAAY;AAC9B,YAAM,SAAS,YAAY;AACzB,YAAI;AACF,gBAAM,UAAU,IAAA;AAAA,QAClB,SAAS,KAAK;AACZ,kBAAQ,MAAM,GAAG;AACjB,kBAAQ,KAAA;AAAA,QACV;AAAA,MACF;AAEA,YAAM,OAAA;AAEN,cAAQ,GAAG,OAAO,CAAC,OAAO,SAAS;AACjC,YAAI;AACJ,gBAAQ,OAAA;AAAA,UACN,KAAK;AACH,mBAAO;AACP;AAAA,UACF,KAAK;AACH,mBAAO;AACP;AAAA,UACF,KAAK;AACH,mBAAO;AACP;AAAA,QAAA;AAEJ,YAAI,MAAM;AACR,iBAAO,UAAU,IAAI,EAAE,MAAM,MAAM;AAAA,QACrC;AACA,eAAO,UAAU,IAAA;AAAA,MACnB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,gBAAc,GAAG,SAAS,gBAAgB;AAC1C,gBAAc,GAAG,UAAU,gBAAgB;AAC7C;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sources":["../../src/generate.ts"],"sourcesContent":["import { Generator } from '@tanstack/router-generator'\nimport type { Config } from '@tanstack/router-generator'\n\nexport async function generate(config: Config, root: string) {\n try {\n const generator = new Generator({\n config,\n root,\n })\n await generator.run()\n process.exit(0)\n } catch (err) {\n console.error(err)\n process.exit(1)\n }\n}\n"],"names":[],"mappings":";AAGsB,eAAA,SAAS,QAAgB,MAAc;AACvD,MAAA;AACI,UAAA,YAAY,IAAI,UAAU;AAAA,MAC9B;AAAA,MACA;AAAA,IAAA,CACD;AACD,UAAM,UAAU,IAAI;AACpB,YAAQ,KAAK,CAAC;AAAA,WACP,KAAK;AACZ,YAAQ,MAAM,GAAG;AACjB,YAAQ,KAAK,CAAC;AAAA,EAAA;AAElB;"}
1
+ {"version":3,"file":"generate.js","sources":["../../src/generate.ts"],"sourcesContent":["import { Generator } from '@tanstack/router-generator'\nimport type { Config } from '@tanstack/router-generator'\n\nexport async function generate(config: Config, root: string) {\n try {\n const generator = new Generator({\n config,\n root,\n })\n await generator.run()\n process.exit(0)\n } catch (err) {\n console.error(err)\n process.exit(1)\n }\n}\n"],"names":[],"mappings":";AAGA,eAAsB,SAAS,QAAgB,MAAc;AAC3D,MAAI;AACF,UAAM,YAAY,IAAI,UAAU;AAAA,MAC9B;AAAA,MACA;AAAA,IAAA,CACD;AACD,UAAM,UAAU,IAAA;AAChB,YAAQ,KAAK,CAAC;AAAA,EAChB,SAAS,KAAK;AACZ,YAAQ,MAAM,GAAG;AACjB,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import * as yargs from 'yargs'\nimport { getConfig } from '@tanstack/router-generator'\nimport { generate } from './generate'\nimport { watch } from './watch'\n\nmain()\n\nexport function main() {\n yargs\n // @ts-expect-error\n .scriptName('tsr')\n .usage('$0 <cmd> [args]')\n .command('generate', 'Generate the routes for a project', async () => {\n const config = getConfig()\n await generate(config, process.cwd())\n })\n .command(\n 'watch',\n 'Continuously watch and generate the routes for a project',\n () => {\n watch(process.cwd())\n },\n )\n .help().argv\n}\n"],"names":[],"mappings":";;;;AAKA,KAAK;AAEE,SAAS,OAAO;AAGlB,QAAA,WAAW,KAAK,EAChB,MAAM,iBAAiB,EACvB,QAAQ,YAAY,qCAAqC,YAAY;AACpE,UAAM,SAAS,UAAU;AACzB,UAAM,SAAS,QAAQ,QAAQ,IAAA,CAAK;AAAA,EACrC,CAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AACE,YAAA,QAAQ,KAAK;AAAA,IAAA;AAAA,EACrB,EAED,KAAO,EAAA;AACZ;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import * as yargs from 'yargs'\nimport { getConfig } from '@tanstack/router-generator'\nimport { generate } from './generate'\nimport { watch } from './watch'\n\nmain()\n\nexport function main() {\n yargs\n // @ts-expect-error\n .scriptName('tsr')\n .usage('$0 <cmd> [args]')\n .command('generate', 'Generate the routes for a project', async () => {\n const config = getConfig()\n await generate(config, process.cwd())\n })\n .command(\n 'watch',\n 'Continuously watch and generate the routes for a project',\n () => {\n watch(process.cwd())\n },\n )\n .help().argv\n}\n"],"names":[],"mappings":";;;;AAKA,KAAA;AAEO,SAAS,OAAO;AACrB,QAEG,WAAW,KAAK,EAChB,MAAM,iBAAiB,EACvB,QAAQ,YAAY,qCAAqC,YAAY;AACpE,UAAM,SAAS,UAAA;AACf,UAAM,SAAS,QAAQ,QAAQ,IAAA,CAAK;AAAA,EACtC,CAAC,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA,MAAM;AACJ,YAAM,QAAQ,KAAK;AAAA,IACrB;AAAA,EAAA,EAED,OAAO;AACZ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sources":["../../src/watch.ts"],"sourcesContent":["import chokidar from 'chokidar'\nimport {\n Generator,\n getConfig,\n resolveConfigPath,\n} from '@tanstack/router-generator'\nimport type { FileEventType } from '@tanstack/router-generator'\n\nexport function watch(root: string) {\n const configPath = resolveConfigPath({\n configDirectory: root,\n })\n const configWatcher = chokidar.watch(configPath)\n\n let watcher = new chokidar.FSWatcher({})\n\n const generatorWatcher = () => {\n const config = getConfig()\n const generator = new Generator({ config, root })\n\n watcher.close()\n\n console.info(`TSR: Watching routes (${config.routesDirectory})...`)\n watcher = chokidar.watch(config.routesDirectory)\n\n watcher.on('ready', async () => {\n const handle = async () => {\n try {\n await generator.run()\n } catch (err) {\n console.error(err)\n console.info()\n }\n }\n\n await handle()\n\n watcher.on('all', (event, path) => {\n let type: FileEventType | undefined\n switch (event) {\n case 'add':\n type = 'create'\n break\n case 'change':\n type = 'update'\n break\n case 'unlink':\n type = 'delete'\n break\n }\n if (type) {\n return generator.run({ path, type })\n }\n return generator.run()\n })\n })\n }\n\n configWatcher.on('ready', generatorWatcher)\n configWatcher.on('change', generatorWatcher)\n}\n"],"names":[],"mappings":";;AAQO,SAAS,MAAM,MAAc;AAClC,QAAM,aAAa,kBAAkB;AAAA,IACnC,iBAAiB;AAAA,EAAA,CAClB;AACK,QAAA,gBAAgB,SAAS,MAAM,UAAU;AAE/C,MAAI,UAAU,IAAI,SAAS,UAAU,CAAA,CAAE;AAEvC,QAAM,mBAAmB,MAAM;AAC7B,UAAM,SAAS,UAAU;AACzB,UAAM,YAAY,IAAI,UAAU,EAAE,QAAQ,MAAM;AAEhD,YAAQ,MAAM;AAEd,YAAQ,KAAK,yBAAyB,OAAO,eAAe,MAAM;AACxD,cAAA,SAAS,MAAM,OAAO,eAAe;AAEvC,YAAA,GAAG,SAAS,YAAY;AAC9B,YAAM,SAAS,YAAY;AACrB,YAAA;AACF,gBAAM,UAAU,IAAI;AAAA,iBACb,KAAK;AACZ,kBAAQ,MAAM,GAAG;AACjB,kBAAQ,KAAK;AAAA,QAAA;AAAA,MAEjB;AAEA,YAAM,OAAO;AAEb,cAAQ,GAAG,OAAO,CAAC,OAAO,SAAS;AAC7B,YAAA;AACJ,gBAAQ,OAAO;AAAA,UACb,KAAK;AACI,mBAAA;AACP;AAAA,UACF,KAAK;AACI,mBAAA;AACP;AAAA,UACF,KAAK;AACI,mBAAA;AACP;AAAA,QAAA;AAEJ,YAAI,MAAM;AACR,iBAAO,UAAU,IAAI,EAAE,MAAM,MAAM;AAAA,QAAA;AAErC,eAAO,UAAU,IAAI;AAAA,MAAA,CACtB;AAAA,IAAA,CACF;AAAA,EACH;AAEc,gBAAA,GAAG,SAAS,gBAAgB;AAC5B,gBAAA,GAAG,UAAU,gBAAgB;AAC7C;"}
1
+ {"version":3,"file":"watch.js","sources":["../../src/watch.ts"],"sourcesContent":["import chokidar from 'chokidar'\nimport {\n Generator,\n getConfig,\n resolveConfigPath,\n} from '@tanstack/router-generator'\nimport type { FileEventType } from '@tanstack/router-generator'\n\nexport function watch(root: string) {\n const configPath = resolveConfigPath({\n configDirectory: root,\n })\n const configWatcher = chokidar.watch(configPath)\n\n let watcher = new chokidar.FSWatcher({})\n\n const generatorWatcher = () => {\n const config = getConfig()\n const generator = new Generator({ config, root })\n\n watcher.close()\n\n console.info(`TSR: Watching routes (${config.routesDirectory})...`)\n watcher = chokidar.watch(config.routesDirectory)\n\n watcher.on('ready', async () => {\n const handle = async () => {\n try {\n await generator.run()\n } catch (err) {\n console.error(err)\n console.info()\n }\n }\n\n await handle()\n\n watcher.on('all', (event, path) => {\n let type: FileEventType | undefined\n switch (event) {\n case 'add':\n type = 'create'\n break\n case 'change':\n type = 'update'\n break\n case 'unlink':\n type = 'delete'\n break\n }\n if (type) {\n return generator.run({ path, type })\n }\n return generator.run()\n })\n })\n }\n\n configWatcher.on('ready', generatorWatcher)\n configWatcher.on('change', generatorWatcher)\n}\n"],"names":[],"mappings":";;AAQO,SAAS,MAAM,MAAc;AAClC,QAAM,aAAa,kBAAkB;AAAA,IACnC,iBAAiB;AAAA,EAAA,CAClB;AACD,QAAM,gBAAgB,SAAS,MAAM,UAAU;AAE/C,MAAI,UAAU,IAAI,SAAS,UAAU,CAAA,CAAE;AAEvC,QAAM,mBAAmB,MAAM;AAC7B,UAAM,SAAS,UAAA;AACf,UAAM,YAAY,IAAI,UAAU,EAAE,QAAQ,MAAM;AAEhD,YAAQ,MAAA;AAER,YAAQ,KAAK,yBAAyB,OAAO,eAAe,MAAM;AAClE,cAAU,SAAS,MAAM,OAAO,eAAe;AAE/C,YAAQ,GAAG,SAAS,YAAY;AAC9B,YAAM,SAAS,YAAY;AACzB,YAAI;AACF,gBAAM,UAAU,IAAA;AAAA,QAClB,SAAS,KAAK;AACZ,kBAAQ,MAAM,GAAG;AACjB,kBAAQ,KAAA;AAAA,QACV;AAAA,MACF;AAEA,YAAM,OAAA;AAEN,cAAQ,GAAG,OAAO,CAAC,OAAO,SAAS;AACjC,YAAI;AACJ,gBAAQ,OAAA;AAAA,UACN,KAAK;AACH,mBAAO;AACP;AAAA,UACF,KAAK;AACH,mBAAO;AACP;AAAA,UACF,KAAK;AACH,mBAAO;AACP;AAAA,QAAA;AAEJ,YAAI,MAAM;AACR,iBAAO,UAAU,IAAI,EAAE,MAAM,MAAM;AAAA,QACrC;AACA,eAAO,UAAU,IAAA;AAAA,MACnB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,gBAAc,GAAG,SAAS,gBAAgB;AAC1C,gBAAc,GAAG,UAAU,gBAAgB;AAC7C;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/router-cli",
3
- "version": "1.131.12",
3
+ "version": "1.132.0-alpha.1",
4
4
  "description": "Modern and scalable routing for React applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -55,7 +55,7 @@
55
55
  "dependencies": {
56
56
  "chokidar": "^3.6.0",
57
57
  "yargs": "^17.7.2",
58
- "@tanstack/router-generator": "1.131.12"
58
+ "@tanstack/router-generator": "1.132.0-alpha.1"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@types/yargs": "^17.0.33"