@by-association-only/cli 4.3.1 โ†’ 4.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -24,6 +24,7 @@ var path = __toESM(require("node:path"));
24
24
  var import_prompts2 = require("@clack/prompts");
25
25
  var import_octokit = require("octokit");
26
26
  var import_picocolors = __toESM(require("picocolors"));
27
+ var import_smol_toml = require("smol-toml");
27
28
 
28
29
  // packages/cli/src/constants.ts
29
30
  var APP_REFERENCE_NAME = "Unisian";
@@ -103,8 +104,26 @@ async function ensureWranglerSessionExists(s) {
103
104
  async function writeWranglerConfig(location, config) {
104
105
  return await import_promises.writeFile(location, JSON.stringify(config, null, 2));
105
106
  }
107
+ async function createD1Database(name, cwd) {
108
+ const result = await runWranglerCommand(["d1", "create", name, "--json"], cwd);
109
+ return JSON.parse(result.stdout);
110
+ }
106
111
 
107
112
  // packages/cli/src/commands/create.ts
113
+ function stripAppSpecificFields(tomlContent) {
114
+ const config = import_smol_toml.parse(tomlContent);
115
+ delete config.client_id;
116
+ delete config.name;
117
+ delete config.application_url;
118
+ if (config.auth && typeof config.auth === "object") {
119
+ const auth = config.auth;
120
+ delete auth.redirect_urls;
121
+ if (Object.keys(auth).length === 0) {
122
+ delete config.auth;
123
+ }
124
+ }
125
+ return import_smol_toml.stringify(config);
126
+ }
108
127
  async function create() {
109
128
  const initialContext = await initializeContext();
110
129
  const context = await validateEnvironment(initialContext);
@@ -237,7 +256,11 @@ async function provisionCloudflareResources(context) {
237
256
  "- R2 Bucket"
238
257
  ].join(`
239
258
  `));
240
- context.spinner.start(`Creating Cloudflare resources`);
259
+ context.spinner.start(`Creating D1 database`);
260
+ const d1DatabaseName = `${context.appName}-db`;
261
+ const d1Result = await createD1Database(d1DatabaseName);
262
+ context.cloudflare.d1Id = d1Result.uuid;
263
+ context.spinner.message("Writing wrangler.json");
241
264
  const wranglerConfig = {
242
265
  $schema: "node_modules/wrangler/config-schema.json",
243
266
  name: context.appName,
@@ -260,6 +283,8 @@ async function provisionCloudflareResources(context) {
260
283
  d1_databases: [
261
284
  {
262
285
  binding: "DB",
286
+ database_name: d1DatabaseName,
287
+ database_id: context.cloudflare.d1Id,
263
288
  migrations_dir: "./src/lib/db/migrations"
264
289
  }
265
290
  ],
@@ -276,12 +301,15 @@ async function provisionCloudflareResources(context) {
276
301
  context.spinner.stop("Cloudflare resources created and wrangler.json updated");
277
302
  }
278
303
  async function cleanup(context) {
279
- context.spinner.start("Removing unnecessary files from the template");
280
- fs.unlinkSync(path.join(context.localPath, "shopify.app.toml"));
304
+ context.spinner.start("Preparing Shopify config files");
305
+ const devTomlPath = path.join(context.localPath, "shopify.app.toml");
306
+ const devTomlContent = fs.readFileSync(devTomlPath, "utf-8");
307
+ const strippedToml = stripAppSpecificFields(devTomlContent);
308
+ fs.writeFileSync(devTomlPath, strippedToml);
281
309
  fs.unlinkSync(path.join(context.localPath, "shopify.app.production.toml"));
282
310
  import_prompts2.note([
283
- "- Removed default shopify.app.toml",
284
- "- Removed default shopify.app.production.toml"
311
+ "- Preserved scopes and config in shopify.app.toml",
312
+ "- Removed shopify.app.production.toml"
285
313
  ].join(`
286
314
  `), "\uD83E\uDDF9 Cleaning up");
287
315
  context.spinner.message("Installing packages");
@@ -318,5 +346,5 @@ if (command === "create" && subcommand === "app") {
318
346
  }
319
347
  })
320
348
 
321
- //# debugId=7599D33F7210F18A64756E2164756E21
349
+ //# debugId=20B2E550F74610FC64756E2164756E21
322
350
  //# sourceMappingURL=index.js.map
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ import {
15
15
  } from "@clack/prompts";
16
16
  import { Octokit } from "octokit";
17
17
  import color from "picocolors";
18
+ import { parse, stringify } from "smol-toml";
18
19
 
19
20
  // packages/cli/src/constants.ts
20
21
  var APP_REFERENCE_NAME = "Unisian";
@@ -94,8 +95,26 @@ async function ensureWranglerSessionExists(s) {
94
95
  async function writeWranglerConfig(location, config) {
95
96
  return await writeFile(location, JSON.stringify(config, null, 2));
96
97
  }
98
+ async function createD1Database(name, cwd) {
99
+ const result = await runWranglerCommand(["d1", "create", name, "--json"], cwd);
100
+ return JSON.parse(result.stdout);
101
+ }
97
102
 
98
103
  // packages/cli/src/commands/create.ts
104
+ function stripAppSpecificFields(tomlContent) {
105
+ const config = parse(tomlContent);
106
+ delete config.client_id;
107
+ delete config.name;
108
+ delete config.application_url;
109
+ if (config.auth && typeof config.auth === "object") {
110
+ const auth = config.auth;
111
+ delete auth.redirect_urls;
112
+ if (Object.keys(auth).length === 0) {
113
+ delete config.auth;
114
+ }
115
+ }
116
+ return stringify(config);
117
+ }
99
118
  async function create() {
100
119
  const initialContext = await initializeContext();
101
120
  const context = await validateEnvironment(initialContext);
@@ -228,7 +247,11 @@ async function provisionCloudflareResources(context) {
228
247
  "- R2 Bucket"
229
248
  ].join(`
230
249
  `));
231
- context.spinner.start(`Creating Cloudflare resources`);
250
+ context.spinner.start(`Creating D1 database`);
251
+ const d1DatabaseName = `${context.appName}-db`;
252
+ const d1Result = await createD1Database(d1DatabaseName);
253
+ context.cloudflare.d1Id = d1Result.uuid;
254
+ context.spinner.message("Writing wrangler.json");
232
255
  const wranglerConfig = {
233
256
  $schema: "node_modules/wrangler/config-schema.json",
234
257
  name: context.appName,
@@ -251,6 +274,8 @@ async function provisionCloudflareResources(context) {
251
274
  d1_databases: [
252
275
  {
253
276
  binding: "DB",
277
+ database_name: d1DatabaseName,
278
+ database_id: context.cloudflare.d1Id,
254
279
  migrations_dir: "./src/lib/db/migrations"
255
280
  }
256
281
  ],
@@ -267,12 +292,15 @@ async function provisionCloudflareResources(context) {
267
292
  context.spinner.stop("Cloudflare resources created and wrangler.json updated");
268
293
  }
269
294
  async function cleanup(context) {
270
- context.spinner.start("Removing unnecessary files from the template");
271
- fs.unlinkSync(path.join(context.localPath, "shopify.app.toml"));
295
+ context.spinner.start("Preparing Shopify config files");
296
+ const devTomlPath = path.join(context.localPath, "shopify.app.toml");
297
+ const devTomlContent = fs.readFileSync(devTomlPath, "utf-8");
298
+ const strippedToml = stripAppSpecificFields(devTomlContent);
299
+ fs.writeFileSync(devTomlPath, strippedToml);
272
300
  fs.unlinkSync(path.join(context.localPath, "shopify.app.production.toml"));
273
301
  note([
274
- "- Removed default shopify.app.toml",
275
- "- Removed default shopify.app.production.toml"
302
+ "- Preserved scopes and config in shopify.app.toml",
303
+ "- Removed shopify.app.production.toml"
276
304
  ].join(`
277
305
  `), "\uD83E\uDDF9 Cleaning up");
278
306
  context.spinner.message("Installing packages");
@@ -308,5 +336,5 @@ if (command === "create" && subcommand === "app") {
308
336
  process.exit(1);
309
337
  }
310
338
 
311
- //# debugId=0440F0BFBB1B7AEA64756E2164756E21
339
+ //# debugId=9989673FFF54358964756E2164756E21
312
340
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -2,13 +2,13 @@
2
2
  "version": 3,
3
3
  "sources": ["packages/cli/src/commands/create.ts", "packages/cli/src/constants.ts", "packages/cli/src/utils.ts", "packages/cli/src/wrangler.ts", "packages/cli/src/index.ts"],
4
4
  "sourcesContent": [
5
- "import * as fs from 'node:fs'\nimport * as path from 'node:path'\nimport {\n\tintro,\n\tisCancel,\n\tlog,\n\tnote,\n\toutro,\n\tspinner,\n\ttext,\n} from '@clack/prompts'\nimport { Octokit } from 'octokit'\nimport color from 'picocolors'\nimport { APP_REFERENCE_NAME } from '../constants'\nimport type { PartialCreateContext, ValidatedCreateContext } from '../types'\nimport { GITHUB_INFO } from '../utils'\nimport { ensureWranglerSessionExists, writeWranglerConfig } from '../wrangler'\n\n/**\n * TODO: Instead of removing the shopify.app.toml we should probably do something so when it creates the new app it'll keep the scopes and anything else relevant\n * TODO: Once the new .app.toml is made we need the .env to be created and then `cf-typegen` to be run so we can commit\n * TODO: The migrations_dir for the d1_database entry in the wrangler.json is getting flushed. We need to add this and run db:migrate\n */\n\nexport async function create(): Promise<void> {\n\tconst initialContext = await initializeContext()\n\n\tconst context = await validateEnvironment(initialContext)\n\n\tawait createGithubRepository(context)\n\tawait cloneGithubRepository(context)\n\tawait provisionCloudflareResources(context)\n\tawait cleanup(context)\n\n\tnote(\n\t\t[\n\t\t\t`1. cd ${context.localPath}`,\n\t\t\t'2. shopify app config link',\n\t\t\t'3. bun run dev',\n\t\t].join(`\\n`),\n\t\t`${color.bgYellow(color.black('Next steps.'))}`,\n\t)\n\n\toutro(\n\t\t`Go and build something ${color.underline(color.italic(color.yellow('stupendous')))}.`,\n\t)\n}\n\nasync function initializeContext(): Promise<PartialCreateContext> {\n\tintro(`Setting up a new BAO ${APP_REFERENCE_NAME} project`)\n\n\tconst appName = await text({\n\t\tmessage: 'What is the name of your project?',\n\t\tplaceholder: `my-${APP_REFERENCE_NAME.toLowerCase()}-project`,\n\t\tvalidate: (value) => {\n\t\t\tif (typeof value === 'undefined') return `You must provide a value`\n\n\t\t\tif (!value.match(/^[a-z0-9-]+$/)) {\n\t\t\t\treturn `Invalid app name: ${value}. App names can only contain lowercase letters, numbers, and dashes.`\n\t\t\t}\n\t\t},\n\t})\n\n\tif (isCancel(appName)) {\n\t\toutro(color.red('An app name is required to continue'))\n\n\t\tprocess.exit(1)\n\t}\n\n\tconst repoName = `${String(appName)}-app`\n\tconst localPath = `./${repoName}`\n\n\tif (fs.existsSync(localPath)) {\n\t\tlog.error(`Unable to continue as ${localPath} already exists`)\n\n\t\tprocess.exit(0)\n\t}\n\n\tconst s = spinner()\n\n\treturn {\n\t\tappName: String(appName),\n\t\trepoName,\n\t\tlocalPath,\n\t\tspinner: s,\n\t}\n}\n\nasync function validateEnvironment(\n\tinitialContext: PartialCreateContext,\n): Promise<ValidatedCreateContext> {\n\tinitialContext.spinner.start(\n\t\t'Welcome! Checking to make sure your environment is set up correctly.',\n\t)\n\n\tconst hasEnvironmentAccessToken =\n\t\ttypeof process.env.GITHUB_TOKEN !== 'undefined' &&\n\t\tprocess.env.GITHUB_TOKEN.trim() !== ''\n\n\tif (!hasEnvironmentAccessToken) {\n\t\tlog.warning(\n\t\t\t`Unable to find a GITHUB_TOKEN environment variable. Please go to https://github.com/settings/tokens/new?description=BAO%20CLI&scopes=repo and create an access token to be able to use the CLI.`,\n\t\t)\n\t}\n\n\tconst githubAccessToken =\n\t\tprocess.env.GITHUB_TOKEN ||\n\t\t(await text({\n\t\t\tmessage: 'Access token',\n\t\t}))\n\n\ttry {\n\t\tawait testGithubAccessTokenIsValid(String(githubAccessToken))\n\t} catch (error: any) {\n\t\tlog.error(`Invalid access token: ${error.message}`)\n\n\t\tprocess.exit(0)\n\t}\n\n\tawait ensureWranglerSessionExists(initialContext.spinner)\n\n\tinitialContext.spinner.stop('Validated environment')\n\n\tnote(\n\t\t'Before using R2, Queues, and Durable objects,\\n' +\n\t\t\t\"make sure you've enabled them in the Cloudflare Dashboard.\\n\" +\n\t\t\t'https://dash.cloudflare.com/\\n' +\n\t\t\t'Otherwise, the following commands might fail! ๐Ÿ˜ฌ',\n\t\t'๐Ÿ‘‹ Heads-up:',\n\t)\n\n\treturn {\n\t\t...initialContext,\n\t\tgithubPersonalAccessToken: String(githubAccessToken),\n\t\tcloudflare: {},\n\t}\n}\n\nasync function testGithubAccessTokenIsValid(\n\taccessToken: string,\n): Promise<string> {\n\tconst octokit = new Octokit({\n\t\tauth: accessToken,\n\t})\n\n\tconst {\n\t\tdata: { login },\n\t} = await octokit.rest.users.getAuthenticated()\n\n\treturn login\n}\n\nasync function createGithubRepository(\n\tcontext: ValidatedCreateContext,\n): Promise<void> {\n\tcontext.spinner.start(`Creating GitHub Repository ${context.repoName}`)\n\n\tconst octokit = new Octokit({\n\t\tauth: context.githubPersonalAccessToken,\n\t})\n\n\ttry {\n\t\tconst appRepo = await octokit.rest.repos.createUsingTemplate({\n\t\t\ttemplate_owner: GITHUB_INFO.organization,\n\t\t\ttemplate_repo: GITHUB_INFO.templateRepository,\n\t\t\towner: GITHUB_INFO.organization,\n\t\t\tname: context.repoName,\n\t\t\tprivate: true,\n\t\t})\n\n\t\tcontext.repoHttpUrl = appRepo.data.html_url\n\t\tcontext.repoSshUrl = appRepo.data.ssh_url\n\t} catch (error: any) {\n\t\tlog.error(`Unable to create Github Repository ${context.repoName}`)\n\t\tlog.error(error.message || String(error))\n\n\t\tprocess.exit(0)\n\t}\n\n\tcontext.spinner.stop('Github repository created! โญ')\n}\n\nasync function cloneGithubRepository(context: ValidatedCreateContext) {\n\tif (typeof context.repoSshUrl === 'undefined') {\n\t\tlog.error(\n\t\t\t`Unable to clone Github repository ${context.repoName} as can't find the .git URL`,\n\t\t)\n\n\t\tprocess.exit(0)\n\t}\n\n\tcontext.spinner.start(`Cloning ${context.repoName} from GitHub`)\n\n\tawait new Promise((resolve) => setTimeout(resolve, 5000))\n\n\tconst child = Bun.spawn(\n\t\t['git', 'clone', context.repoSshUrl, context.localPath],\n\t\t{\n\t\t\tstderr: 'ignore',\n\t\t\tstdout: 'ignore',\n\t\t},\n\t)\n\n\tawait child.exited\n\n\tif (fs.existsSync(context.localPath)) {\n\t\tcontext.spinner.stop(\n\t\t\t`Successfully cloned repository to ${context.localPath}`,\n\t\t)\n\n\t\treturn\n\t}\n\n\tcontext.spinner.stop()\n\tlog.error(`Unable to clone repository`)\n\n\tprocess.exit(0)\n}\n\nasync function provisionCloudflareResources(context: ValidatedCreateContext) {\n\tnote(\n\t\t[\n\t\t\t'Creating the following Cloudflare resources:',\n\t\t\t'- KV',\n\t\t\t'- D1',\n\t\t\t'- R2 Bucket',\n\t\t].join(`\\n`),\n\t)\n\n\tcontext.spinner.start(`Creating Cloudflare resources`)\n\n\tconst wranglerConfig = {\n\t\t$schema: 'node_modules/wrangler/config-schema.json',\n\t\tname: context.appName,\n\t\tcompatibility_date: '2025-09-21',\n\t\tcompatibility_flags: ['nodejs_compat'],\n\t\tmain: '@tanstack/react-start/server-entry',\n\t\tdev: {\n\t\t\tip: '0.0.0.0',\n\t\t\tport: 8647,\n\t\t},\n\t\tupload_source_maps: true,\n\t\tplacement: {\n\t\t\tmode: 'smart',\n\t\t},\n\t\tkv_namespaces: [\n\t\t\t{\n\t\t\t\tbinding: 'KV',\n\t\t\t},\n\t\t],\n\t\td1_databases: [\n\t\t\t{\n\t\t\t\tbinding: 'DB',\n\t\t\t\tmigrations_dir: './src/lib/db/migrations',\n\t\t\t},\n\t\t],\n\t\tr2_buckets: [\n\t\t\t{\n\t\t\t\tbinding: 'BUCKET',\n\t\t\t},\n\t\t],\n\t\tobservability: {\n\t\t\tenabled: true,\n\t\t},\n\t}\n\n\tawait writeWranglerConfig(\n\t\t`${context.localPath}/wrangler.json`,\n\t\twranglerConfig,\n\t)\n\n\tcontext.spinner.stop('Cloudflare resources created and wrangler.json updated')\n}\n\nasync function cleanup(context: ValidatedCreateContext) {\n\tcontext.spinner.start('Removing unnecessary files from the template')\n\n\tfs.unlinkSync(path.join(context.localPath, 'shopify.app.toml'))\n\tfs.unlinkSync(path.join(context.localPath, 'shopify.app.production.toml'))\n\n\tnote(\n\t\t[\n\t\t\t'- Removed default shopify.app.toml',\n\t\t\t'- Removed default shopify.app.production.toml',\n\t\t].join(`\\n`),\n\t\t'๐Ÿงน Cleaning up',\n\t)\n\n\tcontext.spinner.message('Installing packages')\n\n\tconst packageInstall = Bun.spawn(['bun', 'install'], {\n\t\tstderr: 'ignore',\n\t\tstdout: 'ignore',\n\t\tcwd: context.localPath,\n\t})\n\tawait packageInstall.exited\n\n\tcontext.spinner.message('Finalising app setup')\n\n\tconst gitAdd = Bun.spawn(['git', 'add', '.'], {\n\t\tstderr: 'ignore',\n\t\tstdout: 'ignore',\n\t\tcwd: context.localPath,\n\t})\n\tawait gitAdd.exited\n\n\tconst gitCommit = Bun.spawn(['git', 'commit', '-m', 'App setup'], {\n\t\tstderr: 'ignore',\n\t\tstdout: 'ignore',\n\t\tcwd: context.localPath,\n\t})\n\tawait gitCommit.exited\n\n\tcontext.spinner.stop()\n}\n",
5
+ "import * as fs from 'node:fs'\nimport * as path from 'node:path'\nimport {\n\tintro,\n\tisCancel,\n\tlog,\n\tnote,\n\toutro,\n\tspinner,\n\ttext,\n} from '@clack/prompts'\nimport { Octokit } from 'octokit'\nimport color from 'picocolors'\nimport { parse, stringify } from 'smol-toml'\nimport { APP_REFERENCE_NAME } from '../constants'\nimport type { PartialCreateContext, ValidatedCreateContext } from '../types'\nimport { GITHUB_INFO } from '../utils'\nimport {\n\tcreateD1Database,\n\tensureWranglerSessionExists,\n\twriteWranglerConfig,\n} from '../wrangler'\n\n/**\n * TODO: Once the new .app.toml is made we need the .env to be created and then `cf-typegen` to be run so we can commit\n * TODO: The migrations_dir for the d1_database entry in the wrangler.json is getting flushed. We need to add this and run db:migrate\n */\n\nfunction stripAppSpecificFields(tomlContent: string): string {\n\tconst config = parse(tomlContent) as Record<string, unknown>\n\n\tdelete config.client_id\n\tdelete config.name\n\tdelete config.application_url\n\n\tif (config.auth && typeof config.auth === 'object') {\n\t\tconst auth = config.auth as Record<string, unknown>\n\t\tdelete auth.redirect_urls\n\n\t\tif (Object.keys(auth).length === 0) {\n\t\t\tdelete config.auth\n\t\t}\n\t}\n\n\treturn stringify(config)\n}\n\nexport async function create(): Promise<void> {\n\tconst initialContext = await initializeContext()\n\n\tconst context = await validateEnvironment(initialContext)\n\n\tawait createGithubRepository(context)\n\tawait cloneGithubRepository(context)\n\tawait provisionCloudflareResources(context)\n\tawait cleanup(context)\n\n\tnote(\n\t\t[\n\t\t\t`1. cd ${context.localPath}`,\n\t\t\t'2. shopify app config link',\n\t\t\t'3. bun run dev',\n\t\t].join(`\\n`),\n\t\t`${color.bgYellow(color.black('Next steps.'))}`,\n\t)\n\n\toutro(\n\t\t`Go and build something ${color.underline(color.italic(color.yellow('stupendous')))}.`,\n\t)\n}\n\nasync function initializeContext(): Promise<PartialCreateContext> {\n\tintro(`Setting up a new BAO ${APP_REFERENCE_NAME} project`)\n\n\tconst appName = await text({\n\t\tmessage: 'What is the name of your project?',\n\t\tplaceholder: `my-${APP_REFERENCE_NAME.toLowerCase()}-project`,\n\t\tvalidate: (value) => {\n\t\t\tif (typeof value === 'undefined') return `You must provide a value`\n\n\t\t\tif (!value.match(/^[a-z0-9-]+$/)) {\n\t\t\t\treturn `Invalid app name: ${value}. App names can only contain lowercase letters, numbers, and dashes.`\n\t\t\t}\n\t\t},\n\t})\n\n\tif (isCancel(appName)) {\n\t\toutro(color.red('An app name is required to continue'))\n\n\t\tprocess.exit(1)\n\t}\n\n\tconst repoName = `${String(appName)}-app`\n\tconst localPath = `./${repoName}`\n\n\tif (fs.existsSync(localPath)) {\n\t\tlog.error(`Unable to continue as ${localPath} already exists`)\n\n\t\tprocess.exit(0)\n\t}\n\n\tconst s = spinner()\n\n\treturn {\n\t\tappName: String(appName),\n\t\trepoName,\n\t\tlocalPath,\n\t\tspinner: s,\n\t}\n}\n\nasync function validateEnvironment(\n\tinitialContext: PartialCreateContext,\n): Promise<ValidatedCreateContext> {\n\tinitialContext.spinner.start(\n\t\t'Welcome! Checking to make sure your environment is set up correctly.',\n\t)\n\n\tconst hasEnvironmentAccessToken =\n\t\ttypeof process.env.GITHUB_TOKEN !== 'undefined' &&\n\t\tprocess.env.GITHUB_TOKEN.trim() !== ''\n\n\tif (!hasEnvironmentAccessToken) {\n\t\tlog.warning(\n\t\t\t`Unable to find a GITHUB_TOKEN environment variable. Please go to https://github.com/settings/tokens/new?description=BAO%20CLI&scopes=repo and create an access token to be able to use the CLI.`,\n\t\t)\n\t}\n\n\tconst githubAccessToken =\n\t\tprocess.env.GITHUB_TOKEN ||\n\t\t(await text({\n\t\t\tmessage: 'Access token',\n\t\t}))\n\n\ttry {\n\t\tawait testGithubAccessTokenIsValid(String(githubAccessToken))\n\t} catch (error: any) {\n\t\tlog.error(`Invalid access token: ${error.message}`)\n\n\t\tprocess.exit(0)\n\t}\n\n\tawait ensureWranglerSessionExists(initialContext.spinner)\n\n\tinitialContext.spinner.stop('Validated environment')\n\n\tnote(\n\t\t'Before using R2, Queues, and Durable objects,\\n' +\n\t\t\t\"make sure you've enabled them in the Cloudflare Dashboard.\\n\" +\n\t\t\t'https://dash.cloudflare.com/\\n' +\n\t\t\t'Otherwise, the following commands might fail! ๐Ÿ˜ฌ',\n\t\t'๐Ÿ‘‹ Heads-up:',\n\t)\n\n\treturn {\n\t\t...initialContext,\n\t\tgithubPersonalAccessToken: String(githubAccessToken),\n\t\tcloudflare: {},\n\t}\n}\n\nasync function testGithubAccessTokenIsValid(\n\taccessToken: string,\n): Promise<string> {\n\tconst octokit = new Octokit({\n\t\tauth: accessToken,\n\t})\n\n\tconst {\n\t\tdata: { login },\n\t} = await octokit.rest.users.getAuthenticated()\n\n\treturn login\n}\n\nasync function createGithubRepository(\n\tcontext: ValidatedCreateContext,\n): Promise<void> {\n\tcontext.spinner.start(`Creating GitHub Repository ${context.repoName}`)\n\n\tconst octokit = new Octokit({\n\t\tauth: context.githubPersonalAccessToken,\n\t})\n\n\ttry {\n\t\tconst appRepo = await octokit.rest.repos.createUsingTemplate({\n\t\t\ttemplate_owner: GITHUB_INFO.organization,\n\t\t\ttemplate_repo: GITHUB_INFO.templateRepository,\n\t\t\towner: GITHUB_INFO.organization,\n\t\t\tname: context.repoName,\n\t\t\tprivate: true,\n\t\t})\n\n\t\tcontext.repoHttpUrl = appRepo.data.html_url\n\t\tcontext.repoSshUrl = appRepo.data.ssh_url\n\t} catch (error: any) {\n\t\tlog.error(`Unable to create Github Repository ${context.repoName}`)\n\t\tlog.error(error.message || String(error))\n\n\t\tprocess.exit(0)\n\t}\n\n\tcontext.spinner.stop('Github repository created! โญ')\n}\n\nasync function cloneGithubRepository(context: ValidatedCreateContext) {\n\tif (typeof context.repoSshUrl === 'undefined') {\n\t\tlog.error(\n\t\t\t`Unable to clone Github repository ${context.repoName} as can't find the .git URL`,\n\t\t)\n\n\t\tprocess.exit(0)\n\t}\n\n\tcontext.spinner.start(`Cloning ${context.repoName} from GitHub`)\n\n\tawait new Promise((resolve) => setTimeout(resolve, 5000))\n\n\tconst child = Bun.spawn(\n\t\t['git', 'clone', context.repoSshUrl, context.localPath],\n\t\t{\n\t\t\tstderr: 'ignore',\n\t\t\tstdout: 'ignore',\n\t\t},\n\t)\n\n\tawait child.exited\n\n\tif (fs.existsSync(context.localPath)) {\n\t\tcontext.spinner.stop(\n\t\t\t`Successfully cloned repository to ${context.localPath}`,\n\t\t)\n\n\t\treturn\n\t}\n\n\tcontext.spinner.stop()\n\tlog.error(`Unable to clone repository`)\n\n\tprocess.exit(0)\n}\n\nasync function provisionCloudflareResources(context: ValidatedCreateContext) {\n\tnote(\n\t\t[\n\t\t\t'Creating the following Cloudflare resources:',\n\t\t\t'- KV',\n\t\t\t'- D1',\n\t\t\t'- R2 Bucket',\n\t\t].join(`\\n`),\n\t)\n\n\tcontext.spinner.start(`Creating D1 database`)\n\n\tconst d1DatabaseName = `${context.appName}-db`\n\tconst d1Result = await createD1Database(d1DatabaseName)\n\tcontext.cloudflare.d1Id = d1Result.uuid\n\n\tcontext.spinner.message('Writing wrangler.json')\n\n\tconst wranglerConfig = {\n\t\t$schema: 'node_modules/wrangler/config-schema.json',\n\t\tname: context.appName,\n\t\tcompatibility_date: '2025-09-21',\n\t\tcompatibility_flags: ['nodejs_compat'],\n\t\tmain: '@tanstack/react-start/server-entry',\n\t\tdev: {\n\t\t\tip: '0.0.0.0',\n\t\t\tport: 8647,\n\t\t},\n\t\tupload_source_maps: true,\n\t\tplacement: {\n\t\t\tmode: 'smart',\n\t\t},\n\t\tkv_namespaces: [\n\t\t\t{\n\t\t\t\tbinding: 'KV',\n\t\t\t},\n\t\t],\n\t\td1_databases: [\n\t\t\t{\n\t\t\t\tbinding: 'DB',\n\t\t\t\tdatabase_name: d1DatabaseName,\n\t\t\t\tdatabase_id: context.cloudflare.d1Id,\n\t\t\t\tmigrations_dir: './src/lib/db/migrations',\n\t\t\t},\n\t\t],\n\t\tr2_buckets: [\n\t\t\t{\n\t\t\t\tbinding: 'BUCKET',\n\t\t\t},\n\t\t],\n\t\tobservability: {\n\t\t\tenabled: true,\n\t\t},\n\t}\n\n\tawait writeWranglerConfig(\n\t\t`${context.localPath}/wrangler.json`,\n\t\twranglerConfig,\n\t)\n\n\tcontext.spinner.stop('Cloudflare resources created and wrangler.json updated')\n}\n\nasync function cleanup(context: ValidatedCreateContext) {\n\tcontext.spinner.start('Preparing Shopify config files')\n\n\tconst devTomlPath = path.join(context.localPath, 'shopify.app.toml')\n\tconst devTomlContent = fs.readFileSync(devTomlPath, 'utf-8')\n\tconst strippedToml = stripAppSpecificFields(devTomlContent)\n\tfs.writeFileSync(devTomlPath, strippedToml)\n\n\tfs.unlinkSync(path.join(context.localPath, 'shopify.app.production.toml'))\n\n\tnote(\n\t\t[\n\t\t\t'- Preserved scopes and config in shopify.app.toml',\n\t\t\t'- Removed shopify.app.production.toml',\n\t\t].join(`\\n`),\n\t\t'๐Ÿงน Cleaning up',\n\t)\n\n\tcontext.spinner.message('Installing packages')\n\n\tconst packageInstall = Bun.spawn(['bun', 'install'], {\n\t\tstderr: 'ignore',\n\t\tstdout: 'ignore',\n\t\tcwd: context.localPath,\n\t})\n\tawait packageInstall.exited\n\n\tcontext.spinner.message('Finalising app setup')\n\n\tconst gitAdd = Bun.spawn(['git', 'add', '.'], {\n\t\tstderr: 'ignore',\n\t\tstdout: 'ignore',\n\t\tcwd: context.localPath,\n\t})\n\tawait gitAdd.exited\n\n\tconst gitCommit = Bun.spawn(['git', 'commit', '-m', 'App setup'], {\n\t\tstderr: 'ignore',\n\t\tstdout: 'ignore',\n\t\tcwd: context.localPath,\n\t})\n\tawait gitCommit.exited\n\n\tcontext.spinner.stop()\n}\n",
6
6
  "export const APP_REFERENCE_NAME = 'Unisian'\n",
7
7
  "export const PACKAGE_RUNNER_COMMAND = 'bunx'\n\nexport const GITHUB_INFO = {\n\torganization: 'baoagency',\n\ttemplateRepository: 'unisian',\n} as const\n",
8
- "import { readFile, writeFile } from 'node:fs/promises'\nimport { cancel, confirm, isCancel, type spinner } from '@clack/prompts'\nimport { APP_REFERENCE_NAME } from './constants'\nimport { PACKAGE_RUNNER_COMMAND } from './utils'\n\nexport async function runWranglerCommand(\n\tcommand: string[],\n\tcwd?: string,\n): Promise<{\n\tcode: number\n\tstdout: string\n\tstderr: string\n}> {\n\tconst child = Bun.spawn(\n\t\t[PACKAGE_RUNNER_COMMAND, 'wrangler@latest', ...command],\n\t\t{\n\t\t\tstdin: 'pipe',\n\t\t\tstderr: 'pipe',\n\t\t\tcwd,\n\t\t\tenv: {\n\t\t\t\t...process.env,\n\t\t\t\tCLOUDFLARE_ACCOUNT_ID: '824c12820335788e8daf77dba7e7891e',\n\t\t\t},\n\t\t},\n\t)\n\n\tconst stdout = await new Response(child.stdout).text()\n\tconst stderr = await new Response(child.stderr).text()\n\tconst code = await child.exited\n\n\treturn new Promise((resolve, reject) => {\n\t\tif (code === 0) {\n\t\t\tresolve({\n\t\t\t\tcode,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t})\n\t\t}\n\n\t\treject({\n\t\t\tcode,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t})\n\t})\n}\n\nexport async function ensureWranglerAuthenticated(): Promise<boolean> {\n\ttry {\n\t\tconst result = await runWranglerCommand(['whoami'])\n\n\t\treturn !result.stdout.includes('You are not authenticated')\n\t} catch {\n\t\t// Some older versions of Wrangler return a non-zero exit code when\n\t\t// you're not logged in.\n\t\treturn false\n\t}\n}\n\nexport async function wranglerLogin(): Promise<void> {\n\tconst child = Bun.spawn([PACKAGE_RUNNER_COMMAND, 'wrangler', 'login'], {\n\t\tstdin: 'inherit',\n\t})\n\tconst code = await child.exited\n\n\treturn await new Promise((resolve, reject) => {\n\t\tif (code === 0) {\n\t\t\tresolve()\n\t\t}\n\n\t\treject()\n\t})\n}\n\nexport async function ensureWranglerSessionExists(\n\ts: ReturnType<typeof spinner>,\n): Promise<void> {\n\ts.message(\n\t\t'Checking to make sure you have the Wrangler CLI installed and authenticated...',\n\t)\n\n\tif (!(await ensureWranglerAuthenticated())) {\n\t\ts.stop(\"Hmm. Looks like you're not logged in yet.\")\n\n\t\tconst wantsToLogIn = await confirm({\n\t\t\tmessage: `You need to be logged into wrangler to setup a ${APP_REFERENCE_NAME} app. Log in now?`,\n\t\t})\n\n\t\tif (isCancel(wantsToLogIn) || !wantsToLogIn) {\n\t\t\tcancel(\n\t\t\t\t`You need to be logged into wrangler to be able to setup a ${APP_REFERENCE_NAME} app.`,\n\t\t\t)\n\n\t\t\tprocess.exit(0)\n\t\t}\n\n\t\tawait wranglerLogin()\n\t}\n}\n\nexport async function getCurrentWranglerConfig(\n\tlocation: string,\n): Promise<Record<string, any>> {\n\treturn JSON.parse(await readFile(location, 'utf-8'))\n}\n\nexport async function writeWranglerConfig(\n\tlocation: string,\n\tconfig: Record<string, any>,\n): Promise<void> {\n\treturn await writeFile(location, JSON.stringify(config, null, 2))\n}\n",
8
+ "import { readFile, writeFile } from 'node:fs/promises'\nimport { cancel, confirm, isCancel, type spinner } from '@clack/prompts'\nimport { APP_REFERENCE_NAME } from './constants'\nimport { PACKAGE_RUNNER_COMMAND } from './utils'\n\nexport async function runWranglerCommand(\n\tcommand: string[],\n\tcwd?: string,\n): Promise<{\n\tcode: number\n\tstdout: string\n\tstderr: string\n}> {\n\tconst child = Bun.spawn(\n\t\t[PACKAGE_RUNNER_COMMAND, 'wrangler@latest', ...command],\n\t\t{\n\t\t\tstdin: 'pipe',\n\t\t\tstderr: 'pipe',\n\t\t\tcwd,\n\t\t\tenv: {\n\t\t\t\t...process.env,\n\t\t\t\tCLOUDFLARE_ACCOUNT_ID: '824c12820335788e8daf77dba7e7891e',\n\t\t\t},\n\t\t},\n\t)\n\n\tconst stdout = await new Response(child.stdout).text()\n\tconst stderr = await new Response(child.stderr).text()\n\tconst code = await child.exited\n\n\treturn new Promise((resolve, reject) => {\n\t\tif (code === 0) {\n\t\t\tresolve({\n\t\t\t\tcode,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t})\n\t\t}\n\n\t\treject({\n\t\t\tcode,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t})\n\t})\n}\n\nexport async function ensureWranglerAuthenticated(): Promise<boolean> {\n\ttry {\n\t\tconst result = await runWranglerCommand(['whoami'])\n\n\t\treturn !result.stdout.includes('You are not authenticated')\n\t} catch {\n\t\t// Some older versions of Wrangler return a non-zero exit code when\n\t\t// you're not logged in.\n\t\treturn false\n\t}\n}\n\nexport async function wranglerLogin(): Promise<void> {\n\tconst child = Bun.spawn([PACKAGE_RUNNER_COMMAND, 'wrangler', 'login'], {\n\t\tstdin: 'inherit',\n\t})\n\tconst code = await child.exited\n\n\treturn await new Promise((resolve, reject) => {\n\t\tif (code === 0) {\n\t\t\tresolve()\n\t\t}\n\n\t\treject()\n\t})\n}\n\nexport async function ensureWranglerSessionExists(\n\ts: ReturnType<typeof spinner>,\n): Promise<void> {\n\ts.message(\n\t\t'Checking to make sure you have the Wrangler CLI installed and authenticated...',\n\t)\n\n\tif (!(await ensureWranglerAuthenticated())) {\n\t\ts.stop(\"Hmm. Looks like you're not logged in yet.\")\n\n\t\tconst wantsToLogIn = await confirm({\n\t\t\tmessage: `You need to be logged into wrangler to setup a ${APP_REFERENCE_NAME} app. Log in now?`,\n\t\t})\n\n\t\tif (isCancel(wantsToLogIn) || !wantsToLogIn) {\n\t\t\tcancel(\n\t\t\t\t`You need to be logged into wrangler to be able to setup a ${APP_REFERENCE_NAME} app.`,\n\t\t\t)\n\n\t\t\tprocess.exit(0)\n\t\t}\n\n\t\tawait wranglerLogin()\n\t}\n}\n\nexport async function getCurrentWranglerConfig(\n\tlocation: string,\n): Promise<Record<string, any>> {\n\treturn JSON.parse(await readFile(location, 'utf-8'))\n}\n\nexport async function writeWranglerConfig(\n\tlocation: string,\n\tconfig: Record<string, any>,\n): Promise<void> {\n\treturn await writeFile(location, JSON.stringify(config, null, 2))\n}\n\ninterface D1CreateResult {\n\tuuid: string\n\tname: string\n\tbinding: string\n}\n\nexport async function createD1Database(\n\tname: string,\n\tcwd?: string,\n): Promise<D1CreateResult> {\n\tconst result = await runWranglerCommand(['d1', 'create', name, '--json'], cwd)\n\n\treturn JSON.parse(result.stdout) as D1CreateResult\n}\n",
9
9
  "#!/usr/bin/env bun\n\nimport { create } from './commands/create'\n\nconst args = Bun.argv.slice(2)\nconst [command, subcommand] = args\n\nif (command === 'create' && subcommand === 'app') {\n\tcreate().catch(console.error)\n} else {\n\tconsole.error('Unknown command. Usage: bao create app')\n\n\tprocess.exit(1)\n}\n"
10
10
  ],
11
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAoB,IAApB;AACsB,IAAtB;AASO,IARP;AASwB,IAAxB;AACkB,IAAlB;;;ACZO,IAAM,qBAAqB;;;ACA3B,IAAM,yBAAyB;AAE/B,IAAM,cAAc;AAAA,EAC1B,cAAc;AAAA,EACd,oBAAoB;AACrB;;;ACLoC,IAApC;AACwD,IAAxD;AAIA,eAAsB,kBAAkB,CACvC,SACA,KAKE;AAAA,EACF,MAAM,QAAQ,IAAI,MACjB,CAAC,wBAAwB,mBAAmB,GAAG,OAAO,GACtD;AAAA,IACC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR;AAAA,IACA,KAAK;AAAA,SACD,QAAQ;AAAA,MACX,uBAAuB;AAAA,IACxB;AAAA,EACD,CACD;AAAA,EAEA,MAAM,SAAS,MAAM,IAAI,SAAS,MAAM,MAAM,EAAE,KAAK;AAAA,EACrD,MAAM,SAAS,MAAM,IAAI,SAAS,MAAM,MAAM,EAAE,KAAK;AAAA,EACrD,MAAM,OAAO,MAAM,MAAM;AAAA,EAEzB,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,IACvC,IAAI,SAAS,GAAG;AAAA,MACf,QAAQ;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,GACD;AAAA;AAGF,eAAsB,2BAA2B,GAAqB;AAAA,EACrE,IAAI;AAAA,IACH,MAAM,SAAS,MAAM,mBAAmB,CAAC,QAAQ,CAAC;AAAA,IAElD,OAAO,CAAC,OAAO,OAAO,SAAS,2BAA2B;AAAA,IACzD,MAAM;AAAA,IAGP,OAAO;AAAA;AAAA;AAIT,eAAsB,aAAa,GAAkB;AAAA,EACpD,MAAM,QAAQ,IAAI,MAAM,CAAC,wBAAwB,YAAY,OAAO,GAAG;AAAA,IACtE,OAAO;AAAA,EACR,CAAC;AAAA,EACD,MAAM,OAAO,MAAM,MAAM;AAAA,EAEzB,OAAO,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,IAC7C,IAAI,SAAS,GAAG;AAAA,MACf,QAAQ;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,GACP;AAAA;AAGF,eAAsB,2BAA2B,CAChD,GACgB;AAAA,EAChB,EAAE,QACD,gFACD;AAAA,EAEA,IAAI,CAAE,MAAM,4BAA4B,GAAI;AAAA,IAC3C,EAAE,KAAK,2CAA2C;AAAA,IAElD,MAAM,eAAe,MAAM,uBAAQ;AAAA,MAClC,SAAS,kDAAkD;AAAA,IAC5D,CAAC;AAAA,IAED,IAAI,wBAAS,YAAY,KAAK,CAAC,cAAc;AAAA,MAC5C,sBACC,6DAA6D,yBAC9D;AAAA,MAEA,QAAQ,KAAK,CAAC;AAAA,IACf;AAAA,IAEA,MAAM,cAAc;AAAA,EACrB;AAAA;AASD,eAAsB,mBAAmB,CACxC,UACA,QACgB;AAAA,EAChB,OAAO,MAAM,0BAAU,UAAU,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA;;;AHtFjE,eAAsB,MAAM,GAAkB;AAAA,EAC7C,MAAM,iBAAiB,MAAM,kBAAkB;AAAA,EAE/C,MAAM,UAAU,MAAM,oBAAoB,cAAc;AAAA,EAExD,MAAM,uBAAuB,OAAO;AAAA,EACpC,MAAM,sBAAsB,OAAO;AAAA,EACnC,MAAM,6BAA6B,OAAO;AAAA,EAC1C,MAAM,QAAQ,OAAO;AAAA,EAErB,qBACC;AAAA,IACC,SAAS,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA,EACD,EAAE,KAAK;AAAA,CAAI,GACX,GAAG,0BAAM,SAAS,0BAAM,MAAM,aAAa,CAAC,GAC7C;AAAA,EAEA,sBACC,0BAA0B,0BAAM,UAAU,0BAAM,OAAO,0BAAM,OAAO,YAAY,CAAC,CAAC,IACnF;AAAA;AAGD,eAAe,iBAAiB,GAAkC;AAAA,EACjE,sBAAM,wBAAwB,4BAA4B;AAAA,EAE1D,MAAM,UAAU,MAAM,qBAAK;AAAA,IAC1B,SAAS;AAAA,IACT,aAAa,MAAM,mBAAmB,YAAY;AAAA,IAClD,UAAU,CAAC,UAAU;AAAA,MACpB,IAAI,OAAO,UAAU;AAAA,QAAa,OAAO;AAAA,MAEzC,IAAI,CAAC,MAAM,MAAM,cAAc,GAAG;AAAA,QACjC,OAAO,qBAAqB;AAAA,MAC7B;AAAA;AAAA,EAEF,CAAC;AAAA,EAED,IAAI,yBAAS,OAAO,GAAG;AAAA,IACtB,sBAAM,0BAAM,IAAI,qCAAqC,CAAC;AAAA,IAEtD,QAAQ,KAAK,CAAC;AAAA,EACf;AAAA,EAEA,MAAM,WAAW,GAAG,OAAO,OAAO;AAAA,EAClC,MAAM,YAAY,KAAK;AAAA,EAEvB,IAAO,cAAW,SAAS,GAAG;AAAA,IAC7B,oBAAI,MAAM,yBAAyB,0BAA0B;AAAA,IAE7D,QAAQ,KAAK,CAAC;AAAA,EACf;AAAA,EAEA,MAAM,IAAI,wBAAQ;AAAA,EAElB,OAAO;AAAA,IACN,SAAS,OAAO,OAAO;AAAA,IACvB;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EACV;AAAA;AAGD,eAAe,mBAAmB,CACjC,gBACkC;AAAA,EAClC,eAAe,QAAQ,MACtB,sEACD;AAAA,EAEA,MAAM,4BACL,OAAO,QAAQ,IAAI,iBAAiB,eACpC,QAAQ,IAAI,aAAa,KAAK,MAAM;AAAA,EAErC,IAAI,CAAC,2BAA2B;AAAA,IAC/B,oBAAI,QACH,iMACD;AAAA,EACD;AAAA,EAEA,MAAM,oBACL,QAAQ,IAAI,gBACX,MAAM,qBAAK;AAAA,IACX,SAAS;AAAA,EACV,CAAC;AAAA,EAEF,IAAI;AAAA,IACH,MAAM,6BAA6B,OAAO,iBAAiB,CAAC;AAAA,IAC3D,OAAO,OAAY;AAAA,IACpB,oBAAI,MAAM,yBAAyB,MAAM,SAAS;AAAA,IAElD,QAAQ,KAAK,CAAC;AAAA;AAAA,EAGf,MAAM,4BAA4B,eAAe,OAAO;AAAA,EAExD,eAAe,QAAQ,KAAK,uBAAuB;AAAA,EAEnD,qBACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,8DACD,wBACD;AAAA,EAEA,OAAO;AAAA,OACH;AAAA,IACH,2BAA2B,OAAO,iBAAiB;AAAA,IACnD,YAAY,CAAC;AAAA,EACd;AAAA;AAGD,eAAe,4BAA4B,CAC1C,aACkB;AAAA,EAClB,MAAM,UAAU,IAAI,uBAAQ;AAAA,IAC3B,MAAM;AAAA,EACP,CAAC;AAAA,EAED;AAAA,IACC,QAAQ;AAAA,MACL,MAAM,QAAQ,KAAK,MAAM,iBAAiB;AAAA,EAE9C,OAAO;AAAA;AAGR,eAAe,sBAAsB,CACpC,SACgB;AAAA,EAChB,QAAQ,QAAQ,MAAM,8BAA8B,QAAQ,UAAU;AAAA,EAEtE,MAAM,UAAU,IAAI,uBAAQ;AAAA,IAC3B,MAAM,QAAQ;AAAA,EACf,CAAC;AAAA,EAED,IAAI;AAAA,IACH,MAAM,UAAU,MAAM,QAAQ,KAAK,MAAM,oBAAoB;AAAA,MAC5D,gBAAgB,YAAY;AAAA,MAC5B,eAAe,YAAY;AAAA,MAC3B,OAAO,YAAY;AAAA,MACnB,MAAM,QAAQ;AAAA,MACd,SAAS;AAAA,IACV,CAAC;AAAA,IAED,QAAQ,cAAc,QAAQ,KAAK;AAAA,IACnC,QAAQ,aAAa,QAAQ,KAAK;AAAA,IACjC,OAAO,OAAY;AAAA,IACpB,oBAAI,MAAM,sCAAsC,QAAQ,UAAU;AAAA,IAClE,oBAAI,MAAM,MAAM,WAAW,OAAO,KAAK,CAAC;AAAA,IAExC,QAAQ,KAAK,CAAC;AAAA;AAAA,EAGf,QAAQ,QAAQ,KAAK,8BAA6B;AAAA;AAGnD,eAAe,qBAAqB,CAAC,SAAiC;AAAA,EACrE,IAAI,OAAO,QAAQ,eAAe,aAAa;AAAA,IAC9C,oBAAI,MACH,qCAAqC,QAAQ,qCAC9C;AAAA,IAEA,QAAQ,KAAK,CAAC;AAAA,EACf;AAAA,EAEA,QAAQ,QAAQ,MAAM,WAAW,QAAQ,sBAAsB;AAAA,EAE/D,MAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,IAAI,CAAC;AAAA,EAExD,MAAM,QAAQ,IAAI,MACjB,CAAC,OAAO,SAAS,QAAQ,YAAY,QAAQ,SAAS,GACtD;AAAA,IACC,QAAQ;AAAA,IACR,QAAQ;AAAA,EACT,CACD;AAAA,EAEA,MAAM,MAAM;AAAA,EAEZ,IAAO,cAAW,QAAQ,SAAS,GAAG;AAAA,IACrC,QAAQ,QAAQ,KACf,qCAAqC,QAAQ,WAC9C;AAAA,IAEA;AAAA,EACD;AAAA,EAEA,QAAQ,QAAQ,KAAK;AAAA,EACrB,oBAAI,MAAM,4BAA4B;AAAA,EAEtC,QAAQ,KAAK,CAAC;AAAA;AAGf,eAAe,4BAA4B,CAAC,SAAiC;AAAA,EAC5E,qBACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,EAAE,KAAK;AAAA,CAAI,CACZ;AAAA,EAEA,QAAQ,QAAQ,MAAM,+BAA+B;AAAA,EAErD,MAAM,iBAAiB;AAAA,IACtB,SAAS;AAAA,IACT,MAAM,QAAQ;AAAA,IACd,oBAAoB;AAAA,IACpB,qBAAqB,CAAC,eAAe;AAAA,IACrC,MAAM;AAAA,IACN,KAAK;AAAA,MACJ,IAAI;AAAA,MACJ,MAAM;AAAA,IACP;AAAA,IACA,oBAAoB;AAAA,IACpB,WAAW;AAAA,MACV,MAAM;AAAA,IACP;AAAA,IACA,eAAe;AAAA,MACd;AAAA,QACC,SAAS;AAAA,MACV;AAAA,IACD;AAAA,IACA,cAAc;AAAA,MACb;AAAA,QACC,SAAS;AAAA,QACT,gBAAgB;AAAA,MACjB;AAAA,IACD;AAAA,IACA,YAAY;AAAA,MACX;AAAA,QACC,SAAS;AAAA,MACV;AAAA,IACD;AAAA,IACA,eAAe;AAAA,MACd,SAAS;AAAA,IACV;AAAA,EACD;AAAA,EAEA,MAAM,oBACL,GAAG,QAAQ,2BACX,cACD;AAAA,EAEA,QAAQ,QAAQ,KAAK,wDAAwD;AAAA;AAG9E,eAAe,OAAO,CAAC,SAAiC;AAAA,EACvD,QAAQ,QAAQ,MAAM,8CAA8C;AAAA,EAEjE,cAAgB,UAAK,QAAQ,WAAW,kBAAkB,CAAC;AAAA,EAC3D,cAAgB,UAAK,QAAQ,WAAW,6BAA6B,CAAC;AAAA,EAEzE,qBACC;AAAA,IACC;AAAA,IACA;AAAA,EACD,EAAE,KAAK;AAAA,CAAI,GACX,0BACD;AAAA,EAEA,QAAQ,QAAQ,QAAQ,qBAAqB;AAAA,EAE7C,MAAM,iBAAiB,IAAI,MAAM,CAAC,OAAO,SAAS,GAAG;AAAA,IACpD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,KAAK,QAAQ;AAAA,EACd,CAAC;AAAA,EACD,MAAM,eAAe;AAAA,EAErB,QAAQ,QAAQ,QAAQ,sBAAsB;AAAA,EAE9C,MAAM,SAAS,IAAI,MAAM,CAAC,OAAO,OAAO,GAAG,GAAG;AAAA,IAC7C,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,KAAK,QAAQ;AAAA,EACd,CAAC;AAAA,EACD,MAAM,OAAO;AAAA,EAEb,MAAM,YAAY,IAAI,MAAM,CAAC,OAAO,UAAU,MAAM,WAAW,GAAG;AAAA,IACjE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,KAAK,QAAQ;AAAA,EACd,CAAC;AAAA,EACD,MAAM,UAAU;AAAA,EAEhB,QAAQ,QAAQ,KAAK;AAAA;;;AIrTtB,IAAM,OAAO,IAAI,KAAK,MAAM,CAAC;AAC7B,KAAO,SAAS,cAAc;AAE9B,IAAI,YAAY,YAAY,eAAe,OAAO;AAAA,EACjD,OAAO,EAAE,MAAM,QAAQ,KAAK;AAC7B,EAAO;AAAA,EACN,QAAQ,MAAM,wCAAwC;AAAA,EAEtD,QAAQ,KAAK,CAAC;AAAA;",
12
- "debugId": "7599D33F7210F18A64756E2164756E21",
11
+ "mappings": "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",
12
+ "debugId": "20B2E550F74610FC64756E2164756E21",
13
13
  "names": []
14
14
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@by-association-only/cli",
3
- "version": "4.3.1",
3
+ "version": "4.3.2",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -33,6 +33,7 @@
33
33
  "chalk": "^5.6.2",
34
34
  "execa": "^9.6.0",
35
35
  "octokit": "^5.0.5",
36
- "picocolors": "^1.1.1"
36
+ "picocolors": "^1.1.1",
37
+ "smol-toml": "^1.6.0"
37
38
  }
38
39
  }