nexusql 0.9.4 → 0.9.6
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/cli.js +9 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/spinners.json","../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/index.js","../src/cli.ts","../src/commands/gen.ts","../node_modules/.pnpm/ora@8.2.0/node_modules/ora/index.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/utilities.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js","../node_modules/.pnpm/cli-cursor@5.0.0/node_modules/cli-cursor/index.js","../node_modules/.pnpm/restore-cursor@5.1.0/node_modules/restore-cursor/index.js","../node_modules/.pnpm/mimic-function@5.0.1/node_modules/mimic-function/index.js","../node_modules/.pnpm/onetime@7.0.0/node_modules/onetime/index.js","../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/src/signals.ts","../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/src/index.ts","../node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../node_modules/.pnpm/log-symbols@6.0.0/node_modules/log-symbols/index.js","../node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js","../node_modules/.pnpm/strip-ansi@7.1.2/node_modules/strip-ansi/index.js","../node_modules/.pnpm/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js","../node_modules/.pnpm/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js","../node_modules/.pnpm/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs","../node_modules/.pnpm/string-width@7.2.0/node_modules/string-width/index.js","../node_modules/.pnpm/is-interactive@2.0.0/node_modules/is-interactive/index.js","../node_modules/.pnpm/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js","../node_modules/.pnpm/stdin-discarder@0.2.2/node_modules/stdin-discarder/index.js","../src/lib/database.ts","../src/lib/db-url.ts","../src/lib/dbml.ts","../src/lib/migra.ts","../src/lib/config.ts","../src/utils/check-migra.ts","../src/commands/migrate.ts","../src/lib/migrations.ts","../src/lib/reverse.ts","../src/lib/runner.ts","../src/utils/prompts.ts","../src/commands/mark-applied.ts","../src/commands/init.ts","../src/commands/types.ts","../src/lib/types-generator.ts","../src/commands/test-connection.ts"],"sourcesContent":["{\n\t\"dots\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠹\",\n\t\t\t\"⠸\",\n\t\t\t\"⠼\",\n\t\t\t\"⠴\",\n\t\t\t\"⠦\",\n\t\t\t\"⠧\",\n\t\t\t\"⠇\",\n\t\t\t\"⠏\"\n\t\t]\n\t},\n\t\"dots2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⣾\",\n\t\t\t\"⣽\",\n\t\t\t\"⣻\",\n\t\t\t\"⢿\",\n\t\t\t\"⡿\",\n\t\t\t\"⣟\",\n\t\t\t\"⣯\",\n\t\t\t\"⣷\"\n\t\t]\n\t},\n\t\"dots3\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠞\",\n\t\t\t\"⠖\",\n\t\t\t\"⠦\",\n\t\t\t\"⠴\",\n\t\t\t\"⠲\",\n\t\t\t\"⠳\",\n\t\t\t\"⠓\"\n\t\t]\n\t},\n\t\"dots4\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠄\",\n\t\t\t\"⠆\",\n\t\t\t\"⠇\",\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠸\",\n\t\t\t\"⠰\",\n\t\t\t\"⠠\",\n\t\t\t\"⠰\",\n\t\t\t\"⠸\",\n\t\t\t\"⠙\",\n\t\t\t\"⠋\",\n\t\t\t\"⠇\",\n\t\t\t\"⠆\"\n\t\t]\n\t},\n\t\"dots5\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠲\",\n\t\t\t\"⠴\",\n\t\t\t\"⠦\",\n\t\t\t\"⠖\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠋\"\n\t\t]\n\t},\n\t\"dots6\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠉\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠲\",\n\t\t\t\"⠴\",\n\t\t\t\"⠤\",\n\t\t\t\"⠄\",\n\t\t\t\"⠄\",\n\t\t\t\"⠤\",\n\t\t\t\"⠴\",\n\t\t\t\"⠲\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠚\",\n\t\t\t\"⠙\",\n\t\t\t\"⠉\",\n\t\t\t\"⠁\"\n\t\t]\n\t},\n\t\"dots7\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠈\",\n\t\t\t\"⠉\",\n\t\t\t\"⠋\",\n\t\t\t\"⠓\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠖\",\n\t\t\t\"⠦\",\n\t\t\t\"⠤\",\n\t\t\t\"⠠\",\n\t\t\t\"⠠\",\n\t\t\t\"⠤\",\n\t\t\t\"⠦\",\n\t\t\t\"⠖\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠋\",\n\t\t\t\"⠉\",\n\t\t\t\"⠈\"\n\t\t]\n\t},\n\t\"dots8\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠁\",\n\t\t\t\"⠉\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠲\",\n\t\t\t\"⠴\",\n\t\t\t\"⠤\",\n\t\t\t\"⠄\",\n\t\t\t\"⠄\",\n\t\t\t\"⠤\",\n\t\t\t\"⠠\",\n\t\t\t\"⠠\",\n\t\t\t\"⠤\",\n\t\t\t\"⠦\",\n\t\t\t\"⠖\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠋\",\n\t\t\t\"⠉\",\n\t\t\t\"⠈\",\n\t\t\t\"⠈\"\n\t\t]\n\t},\n\t\"dots9\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⢹\",\n\t\t\t\"⢺\",\n\t\t\t\"⢼\",\n\t\t\t\"⣸\",\n\t\t\t\"⣇\",\n\t\t\t\"⡧\",\n\t\t\t\"⡗\",\n\t\t\t\"⡏\"\n\t\t]\n\t},\n\t\"dots10\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⢄\",\n\t\t\t\"⢂\",\n\t\t\t\"⢁\",\n\t\t\t\"⡁\",\n\t\t\t\"⡈\",\n\t\t\t\"⡐\",\n\t\t\t\"⡠\"\n\t\t]\n\t},\n\t\"dots11\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠄\",\n\t\t\t\"⡀\",\n\t\t\t\"⢀\",\n\t\t\t\"⠠\",\n\t\t\t\"⠐\",\n\t\t\t\"⠈\"\n\t\t]\n\t},\n\t\"dots12\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⢀⠀\",\n\t\t\t\"⡀⠀\",\n\t\t\t\"⠄⠀\",\n\t\t\t\"⢂⠀\",\n\t\t\t\"⡂⠀\",\n\t\t\t\"⠅⠀\",\n\t\t\t\"⢃⠀\",\n\t\t\t\"⡃⠀\",\n\t\t\t\"⠍⠀\",\n\t\t\t\"⢋⠀\",\n\t\t\t\"⡋⠀\",\n\t\t\t\"⠍⠁\",\n\t\t\t\"⢋⠁\",\n\t\t\t\"⡋⠁\",\n\t\t\t\"⠍⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠩\",\n\t\t\t\"⠈⢙\",\n\t\t\t\"⠈⡙\",\n\t\t\t\"⢈⠩\",\n\t\t\t\"⡀⢙\",\n\t\t\t\"⠄⡙\",\n\t\t\t\"⢂⠩\",\n\t\t\t\"⡂⢘\",\n\t\t\t\"⠅⡘\",\n\t\t\t\"⢃⠨\",\n\t\t\t\"⡃⢐\",\n\t\t\t\"⠍⡐\",\n\t\t\t\"⢋⠠\",\n\t\t\t\"⡋⢀\",\n\t\t\t\"⠍⡁\",\n\t\t\t\"⢋⠁\",\n\t\t\t\"⡋⠁\",\n\t\t\t\"⠍⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠩\",\n\t\t\t\"⠈⢙\",\n\t\t\t\"⠈⡙\",\n\t\t\t\"⠈⠩\",\n\t\t\t\"⠀⢙\",\n\t\t\t\"⠀⡙\",\n\t\t\t\"⠀⠩\",\n\t\t\t\"⠀⢘\",\n\t\t\t\"⠀⡘\",\n\t\t\t\"⠀⠨\",\n\t\t\t\"⠀⢐\",\n\t\t\t\"⠀⡐\",\n\t\t\t\"⠀⠠\",\n\t\t\t\"⠀⢀\",\n\t\t\t\"⠀⡀\"\n\t\t]\n\t},\n\t\"dots13\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⣼\",\n\t\t\t\"⣹\",\n\t\t\t\"⢻\",\n\t\t\t\"⠿\",\n\t\t\t\"⡟\",\n\t\t\t\"⣏\",\n\t\t\t\"⣧\",\n\t\t\t\"⣶\"\n\t\t]\n\t},\n\t\"dots8Bit\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠀\",\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠃\",\n\t\t\t\"⠄\",\n\t\t\t\"⠅\",\n\t\t\t\"⠆\",\n\t\t\t\"⠇\",\n\t\t\t\"⡀\",\n\t\t\t\"⡁\",\n\t\t\t\"⡂\",\n\t\t\t\"⡃\",\n\t\t\t\"⡄\",\n\t\t\t\"⡅\",\n\t\t\t\"⡆\",\n\t\t\t\"⡇\",\n\t\t\t\"⠈\",\n\t\t\t\"⠉\",\n\t\t\t\"⠊\",\n\t\t\t\"⠋\",\n\t\t\t\"⠌\",\n\t\t\t\"⠍\",\n\t\t\t\"⠎\",\n\t\t\t\"⠏\",\n\t\t\t\"⡈\",\n\t\t\t\"⡉\",\n\t\t\t\"⡊\",\n\t\t\t\"⡋\",\n\t\t\t\"⡌\",\n\t\t\t\"⡍\",\n\t\t\t\"⡎\",\n\t\t\t\"⡏\",\n\t\t\t\"⠐\",\n\t\t\t\"⠑\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠔\",\n\t\t\t\"⠕\",\n\t\t\t\"⠖\",\n\t\t\t\"⠗\",\n\t\t\t\"⡐\",\n\t\t\t\"⡑\",\n\t\t\t\"⡒\",\n\t\t\t\"⡓\",\n\t\t\t\"⡔\",\n\t\t\t\"⡕\",\n\t\t\t\"⡖\",\n\t\t\t\"⡗\",\n\t\t\t\"⠘\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠛\",\n\t\t\t\"⠜\",\n\t\t\t\"⠝\",\n\t\t\t\"⠞\",\n\t\t\t\"⠟\",\n\t\t\t\"⡘\",\n\t\t\t\"⡙\",\n\t\t\t\"⡚\",\n\t\t\t\"⡛\",\n\t\t\t\"⡜\",\n\t\t\t\"⡝\",\n\t\t\t\"⡞\",\n\t\t\t\"⡟\",\n\t\t\t\"⠠\",\n\t\t\t\"⠡\",\n\t\t\t\"⠢\",\n\t\t\t\"⠣\",\n\t\t\t\"⠤\",\n\t\t\t\"⠥\",\n\t\t\t\"⠦\",\n\t\t\t\"⠧\",\n\t\t\t\"⡠\",\n\t\t\t\"⡡\",\n\t\t\t\"⡢\",\n\t\t\t\"⡣\",\n\t\t\t\"⡤\",\n\t\t\t\"⡥\",\n\t\t\t\"⡦\",\n\t\t\t\"⡧\",\n\t\t\t\"⠨\",\n\t\t\t\"⠩\",\n\t\t\t\"⠪\",\n\t\t\t\"⠫\",\n\t\t\t\"⠬\",\n\t\t\t\"⠭\",\n\t\t\t\"⠮\",\n\t\t\t\"⠯\",\n\t\t\t\"⡨\",\n\t\t\t\"⡩\",\n\t\t\t\"⡪\",\n\t\t\t\"⡫\",\n\t\t\t\"⡬\",\n\t\t\t\"⡭\",\n\t\t\t\"⡮\",\n\t\t\t\"⡯\",\n\t\t\t\"⠰\",\n\t\t\t\"⠱\",\n\t\t\t\"⠲\",\n\t\t\t\"⠳\",\n\t\t\t\"⠴\",\n\t\t\t\"⠵\",\n\t\t\t\"⠶\",\n\t\t\t\"⠷\",\n\t\t\t\"⡰\",\n\t\t\t\"⡱\",\n\t\t\t\"⡲\",\n\t\t\t\"⡳\",\n\t\t\t\"⡴\",\n\t\t\t\"⡵\",\n\t\t\t\"⡶\",\n\t\t\t\"⡷\",\n\t\t\t\"⠸\",\n\t\t\t\"⠹\",\n\t\t\t\"⠺\",\n\t\t\t\"⠻\",\n\t\t\t\"⠼\",\n\t\t\t\"⠽\",\n\t\t\t\"⠾\",\n\t\t\t\"⠿\",\n\t\t\t\"⡸\",\n\t\t\t\"⡹\",\n\t\t\t\"⡺\",\n\t\t\t\"⡻\",\n\t\t\t\"⡼\",\n\t\t\t\"⡽\",\n\t\t\t\"⡾\",\n\t\t\t\"⡿\",\n\t\t\t\"⢀\",\n\t\t\t\"⢁\",\n\t\t\t\"⢂\",\n\t\t\t\"⢃\",\n\t\t\t\"⢄\",\n\t\t\t\"⢅\",\n\t\t\t\"⢆\",\n\t\t\t\"⢇\",\n\t\t\t\"⣀\",\n\t\t\t\"⣁\",\n\t\t\t\"⣂\",\n\t\t\t\"⣃\",\n\t\t\t\"⣄\",\n\t\t\t\"⣅\",\n\t\t\t\"⣆\",\n\t\t\t\"⣇\",\n\t\t\t\"⢈\",\n\t\t\t\"⢉\",\n\t\t\t\"⢊\",\n\t\t\t\"⢋\",\n\t\t\t\"⢌\",\n\t\t\t\"⢍\",\n\t\t\t\"⢎\",\n\t\t\t\"⢏\",\n\t\t\t\"⣈\",\n\t\t\t\"⣉\",\n\t\t\t\"⣊\",\n\t\t\t\"⣋\",\n\t\t\t\"⣌\",\n\t\t\t\"⣍\",\n\t\t\t\"⣎\",\n\t\t\t\"⣏\",\n\t\t\t\"⢐\",\n\t\t\t\"⢑\",\n\t\t\t\"⢒\",\n\t\t\t\"⢓\",\n\t\t\t\"⢔\",\n\t\t\t\"⢕\",\n\t\t\t\"⢖\",\n\t\t\t\"⢗\",\n\t\t\t\"⣐\",\n\t\t\t\"⣑\",\n\t\t\t\"⣒\",\n\t\t\t\"⣓\",\n\t\t\t\"⣔\",\n\t\t\t\"⣕\",\n\t\t\t\"⣖\",\n\t\t\t\"⣗\",\n\t\t\t\"⢘\",\n\t\t\t\"⢙\",\n\t\t\t\"⢚\",\n\t\t\t\"⢛\",\n\t\t\t\"⢜\",\n\t\t\t\"⢝\",\n\t\t\t\"⢞\",\n\t\t\t\"⢟\",\n\t\t\t\"⣘\",\n\t\t\t\"⣙\",\n\t\t\t\"⣚\",\n\t\t\t\"⣛\",\n\t\t\t\"⣜\",\n\t\t\t\"⣝\",\n\t\t\t\"⣞\",\n\t\t\t\"⣟\",\n\t\t\t\"⢠\",\n\t\t\t\"⢡\",\n\t\t\t\"⢢\",\n\t\t\t\"⢣\",\n\t\t\t\"⢤\",\n\t\t\t\"⢥\",\n\t\t\t\"⢦\",\n\t\t\t\"⢧\",\n\t\t\t\"⣠\",\n\t\t\t\"⣡\",\n\t\t\t\"⣢\",\n\t\t\t\"⣣\",\n\t\t\t\"⣤\",\n\t\t\t\"⣥\",\n\t\t\t\"⣦\",\n\t\t\t\"⣧\",\n\t\t\t\"⢨\",\n\t\t\t\"⢩\",\n\t\t\t\"⢪\",\n\t\t\t\"⢫\",\n\t\t\t\"⢬\",\n\t\t\t\"⢭\",\n\t\t\t\"⢮\",\n\t\t\t\"⢯\",\n\t\t\t\"⣨\",\n\t\t\t\"⣩\",\n\t\t\t\"⣪\",\n\t\t\t\"⣫\",\n\t\t\t\"⣬\",\n\t\t\t\"⣭\",\n\t\t\t\"⣮\",\n\t\t\t\"⣯\",\n\t\t\t\"⢰\",\n\t\t\t\"⢱\",\n\t\t\t\"⢲\",\n\t\t\t\"⢳\",\n\t\t\t\"⢴\",\n\t\t\t\"⢵\",\n\t\t\t\"⢶\",\n\t\t\t\"⢷\",\n\t\t\t\"⣰\",\n\t\t\t\"⣱\",\n\t\t\t\"⣲\",\n\t\t\t\"⣳\",\n\t\t\t\"⣴\",\n\t\t\t\"⣵\",\n\t\t\t\"⣶\",\n\t\t\t\"⣷\",\n\t\t\t\"⢸\",\n\t\t\t\"⢹\",\n\t\t\t\"⢺\",\n\t\t\t\"⢻\",\n\t\t\t\"⢼\",\n\t\t\t\"⢽\",\n\t\t\t\"⢾\",\n\t\t\t\"⢿\",\n\t\t\t\"⣸\",\n\t\t\t\"⣹\",\n\t\t\t\"⣺\",\n\t\t\t\"⣻\",\n\t\t\t\"⣼\",\n\t\t\t\"⣽\",\n\t\t\t\"⣾\",\n\t\t\t\"⣿\"\n\t\t]\n\t},\n\t\"sand\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠄\",\n\t\t\t\"⡀\",\n\t\t\t\"⡈\",\n\t\t\t\"⡐\",\n\t\t\t\"⡠\",\n\t\t\t\"⣀\",\n\t\t\t\"⣁\",\n\t\t\t\"⣂\",\n\t\t\t\"⣄\",\n\t\t\t\"⣌\",\n\t\t\t\"⣔\",\n\t\t\t\"⣤\",\n\t\t\t\"⣥\",\n\t\t\t\"⣦\",\n\t\t\t\"⣮\",\n\t\t\t\"⣶\",\n\t\t\t\"⣷\",\n\t\t\t\"⣿\",\n\t\t\t\"⡿\",\n\t\t\t\"⠿\",\n\t\t\t\"⢟\",\n\t\t\t\"⠟\",\n\t\t\t\"⡛\",\n\t\t\t\"⠛\",\n\t\t\t\"⠫\",\n\t\t\t\"⢋\",\n\t\t\t\"⠋\",\n\t\t\t\"⠍\",\n\t\t\t\"⡉\",\n\t\t\t\"⠉\",\n\t\t\t\"⠑\",\n\t\t\t\"⠡\",\n\t\t\t\"⢁\"\n\t\t]\n\t},\n\t\"line\": {\n\t\t\"interval\": 130,\n\t\t\"frames\": [\n\t\t\t\"-\",\n\t\t\t\"\\\\\",\n\t\t\t\"|\",\n\t\t\t\"/\"\n\t\t]\n\t},\n\t\"line2\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"⠂\",\n\t\t\t\"-\",\n\t\t\t\"–\",\n\t\t\t\"—\",\n\t\t\t\"–\",\n\t\t\t\"-\"\n\t\t]\n\t},\n\t\"pipe\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"┤\",\n\t\t\t\"┘\",\n\t\t\t\"┴\",\n\t\t\t\"└\",\n\t\t\t\"├\",\n\t\t\t\"┌\",\n\t\t\t\"┬\",\n\t\t\t\"┐\"\n\t\t]\n\t},\n\t\"simpleDots\": {\n\t\t\"interval\": 400,\n\t\t\"frames\": [\n\t\t\t\". \",\n\t\t\t\".. \",\n\t\t\t\"...\",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"simpleDotsScrolling\": {\n\t\t\"interval\": 200,\n\t\t\"frames\": [\n\t\t\t\". \",\n\t\t\t\".. \",\n\t\t\t\"...\",\n\t\t\t\" ..\",\n\t\t\t\" .\",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"star\": {\n\t\t\"interval\": 70,\n\t\t\"frames\": [\n\t\t\t\"✶\",\n\t\t\t\"✸\",\n\t\t\t\"✹\",\n\t\t\t\"✺\",\n\t\t\t\"✹\",\n\t\t\t\"✷\"\n\t\t]\n\t},\n\t\"star2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"+\",\n\t\t\t\"x\",\n\t\t\t\"*\"\n\t\t]\n\t},\n\t\"flip\": {\n\t\t\"interval\": 70,\n\t\t\"frames\": [\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"-\",\n\t\t\t\"`\",\n\t\t\t\"`\",\n\t\t\t\"'\",\n\t\t\t\"´\",\n\t\t\t\"-\",\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"_\"\n\t\t]\n\t},\n\t\"hamburger\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"☱\",\n\t\t\t\"☲\",\n\t\t\t\"☴\"\n\t\t]\n\t},\n\t\"growVertical\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▁\",\n\t\t\t\"▃\",\n\t\t\t\"▄\",\n\t\t\t\"▅\",\n\t\t\t\"▆\",\n\t\t\t\"▇\",\n\t\t\t\"▆\",\n\t\t\t\"▅\",\n\t\t\t\"▄\",\n\t\t\t\"▃\"\n\t\t]\n\t},\n\t\"growHorizontal\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▏\",\n\t\t\t\"▎\",\n\t\t\t\"▍\",\n\t\t\t\"▌\",\n\t\t\t\"▋\",\n\t\t\t\"▊\",\n\t\t\t\"▉\",\n\t\t\t\"▊\",\n\t\t\t\"▋\",\n\t\t\t\"▌\",\n\t\t\t\"▍\",\n\t\t\t\"▎\"\n\t\t]\n\t},\n\t\"balloon\": {\n\t\t\"interval\": 140,\n\t\t\"frames\": [\n\t\t\t\" \",\n\t\t\t\".\",\n\t\t\t\"o\",\n\t\t\t\"O\",\n\t\t\t\"@\",\n\t\t\t\"*\",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"balloon2\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\".\",\n\t\t\t\"o\",\n\t\t\t\"O\",\n\t\t\t\"°\",\n\t\t\t\"O\",\n\t\t\t\"o\",\n\t\t\t\".\"\n\t\t]\n\t},\n\t\"noise\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"▓\",\n\t\t\t\"▒\",\n\t\t\t\"░\"\n\t\t]\n\t},\n\t\"bounce\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠄\",\n\t\t\t\"⠂\"\n\t\t]\n\t},\n\t\"boxBounce\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▖\",\n\t\t\t\"▘\",\n\t\t\t\"▝\",\n\t\t\t\"▗\"\n\t\t]\n\t},\n\t\"boxBounce2\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"▌\",\n\t\t\t\"▀\",\n\t\t\t\"▐\",\n\t\t\t\"▄\"\n\t\t]\n\t},\n\t\"triangle\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"◢\",\n\t\t\t\"◣\",\n\t\t\t\"◤\",\n\t\t\t\"◥\"\n\t\t]\n\t},\n\t\"binary\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"010010\",\n \"001100\",\n \"100101\",\n \"111010\",\n \"111101\",\n \"010111\",\n\t\t\t\"101011\",\n\t\t\t\"111000\",\n\t\t\t\"110011\",\n\t\t\t\"110101\"\n\t\t]\n\t},\n\t\"arc\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"◜\",\n\t\t\t\"◠\",\n\t\t\t\"◝\",\n\t\t\t\"◞\",\n\t\t\t\"◡\",\n\t\t\t\"◟\"\n\t\t]\n\t},\n\t\"circle\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"◡\",\n\t\t\t\"⊙\",\n\t\t\t\"◠\"\n\t\t]\n\t},\n\t\"squareCorners\": {\n\t\t\"interval\": 180,\n\t\t\"frames\": [\n\t\t\t\"◰\",\n\t\t\t\"◳\",\n\t\t\t\"◲\",\n\t\t\t\"◱\"\n\t\t]\n\t},\n\t\"circleQuarters\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"◴\",\n\t\t\t\"◷\",\n\t\t\t\"◶\",\n\t\t\t\"◵\"\n\t\t]\n\t},\n\t\"circleHalves\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"◐\",\n\t\t\t\"◓\",\n\t\t\t\"◑\",\n\t\t\t\"◒\"\n\t\t]\n\t},\n\t\"squish\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"╫\",\n\t\t\t\"╪\"\n\t\t]\n\t},\n\t\"toggle\": {\n\t\t\"interval\": 250,\n\t\t\"frames\": [\n\t\t\t\"⊶\",\n\t\t\t\"⊷\"\n\t\t]\n\t},\n\t\"toggle2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"▫\",\n\t\t\t\"▪\"\n\t\t]\n\t},\n\t\"toggle3\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"□\",\n\t\t\t\"■\"\n\t\t]\n\t},\n\t\"toggle4\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"■\",\n\t\t\t\"□\",\n\t\t\t\"▪\",\n\t\t\t\"▫\"\n\t\t]\n\t},\n\t\"toggle5\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"▮\",\n\t\t\t\"▯\"\n\t\t]\n\t},\n\t\"toggle6\": {\n\t\t\"interval\": 300,\n\t\t\"frames\": [\n\t\t\t\"ဝ\",\n\t\t\t\"၀\"\n\t\t]\n\t},\n\t\"toggle7\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⦾\",\n\t\t\t\"⦿\"\n\t\t]\n\t},\n\t\"toggle8\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"◍\",\n\t\t\t\"◌\"\n\t\t]\n\t},\n\t\"toggle9\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"◉\",\n\t\t\t\"◎\"\n\t\t]\n\t},\n\t\"toggle10\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"㊂\",\n\t\t\t\"㊀\",\n\t\t\t\"㊁\"\n\t\t]\n\t},\n\t\"toggle11\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"⧇\",\n\t\t\t\"⧆\"\n\t\t]\n\t},\n\t\"toggle12\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"☗\",\n\t\t\t\"☖\"\n\t\t]\n\t},\n\t\"toggle13\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"=\",\n\t\t\t\"*\",\n\t\t\t\"-\"\n\t\t]\n\t},\n\t\"arrow\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"←\",\n\t\t\t\"↖\",\n\t\t\t\"↑\",\n\t\t\t\"↗\",\n\t\t\t\"→\",\n\t\t\t\"↘\",\n\t\t\t\"↓\",\n\t\t\t\"↙\"\n\t\t]\n\t},\n\t\"arrow2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⬆️ \",\n\t\t\t\"↗️ \",\n\t\t\t\"➡️ \",\n\t\t\t\"↘️ \",\n\t\t\t\"⬇️ \",\n\t\t\t\"↙️ \",\n\t\t\t\"⬅️ \",\n\t\t\t\"↖️ \"\n\t\t]\n\t},\n\t\"arrow3\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▹▹▹▹▹\",\n\t\t\t\"▸▹▹▹▹\",\n\t\t\t\"▹▸▹▹▹\",\n\t\t\t\"▹▹▸▹▹\",\n\t\t\t\"▹▹▹▸▹\",\n\t\t\t\"▹▹▹▹▸\"\n\t\t]\n\t},\n\t\"bouncingBar\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"[ ]\",\n\t\t\t\"[= ]\",\n\t\t\t\"[== ]\",\n\t\t\t\"[=== ]\",\n\t\t\t\"[====]\",\n\t\t\t\"[ ===]\",\n\t\t\t\"[ ==]\",\n\t\t\t\"[ =]\",\n\t\t\t\"[ ]\",\n\t\t\t\"[ =]\",\n\t\t\t\"[ ==]\",\n\t\t\t\"[ ===]\",\n\t\t\t\"[====]\",\n\t\t\t\"[=== ]\",\n\t\t\t\"[== ]\",\n\t\t\t\"[= ]\"\n\t\t]\n\t},\n\t\"bouncingBall\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ●)\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"(● )\"\n\t\t]\n\t},\n\t\"smiley\": {\n\t\t\"interval\": 200,\n\t\t\"frames\": [\n\t\t\t\"😄 \",\n\t\t\t\"😝 \"\n\t\t]\n\t},\n\t\"monkey\": {\n\t\t\"interval\": 300,\n\t\t\"frames\": [\n\t\t\t\"🙈 \",\n\t\t\t\"🙈 \",\n\t\t\t\"🙉 \",\n\t\t\t\"🙊 \"\n\t\t]\n\t},\n\t\"hearts\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"💛 \",\n\t\t\t\"💙 \",\n\t\t\t\"💜 \",\n\t\t\t\"💚 \",\n\t\t\t\"❤️ \"\n\t\t]\n\t},\n\t\"clock\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🕛 \",\n\t\t\t\"🕐 \",\n\t\t\t\"🕑 \",\n\t\t\t\"🕒 \",\n\t\t\t\"🕓 \",\n\t\t\t\"🕔 \",\n\t\t\t\"🕕 \",\n\t\t\t\"🕖 \",\n\t\t\t\"🕗 \",\n\t\t\t\"🕘 \",\n\t\t\t\"🕙 \",\n\t\t\t\"🕚 \"\n\t\t]\n\t},\n\t\"earth\": {\n\t\t\"interval\": 180,\n\t\t\"frames\": [\n\t\t\t\"🌍 \",\n\t\t\t\"🌎 \",\n\t\t\t\"🌏 \"\n\t\t]\n\t},\n\t\"material\": {\n\t\t\"interval\": 17,\n\t\t\"frames\": [\n\t\t\t\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███████▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████████▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███████████▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████████▁▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁▁██████████████▁▁▁▁\",\n\t\t\t\"▁▁▁██████████████▁▁▁\",\n\t\t\t\"▁▁▁▁█████████████▁▁▁\",\n\t\t\t\"▁▁▁▁██████████████▁▁\",\n\t\t\t\"▁▁▁▁██████████████▁▁\",\n\t\t\t\"▁▁▁▁▁██████████████▁\",\n\t\t\t\"▁▁▁▁▁██████████████▁\",\n\t\t\t\"▁▁▁▁▁██████████████▁\",\n\t\t\t\"▁▁▁▁▁▁██████████████\",\n\t\t\t\"▁▁▁▁▁▁██████████████\",\n\t\t\t\"▁▁▁▁▁▁▁█████████████\",\n\t\t\t\"▁▁▁▁▁▁▁█████████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁████████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁████████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁███████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁███████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁██████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁██████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n\t\t\t\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███████████▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"████████████▁▁▁▁▁▁▁▁\",\n\t\t\t\"████████████▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁▁▁█████████████▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁████████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁████████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁███████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁█████████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\"\n\t\t]\n\t},\n\t\"moon\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"🌑 \",\n\t\t\t\"🌒 \",\n\t\t\t\"🌓 \",\n\t\t\t\"🌔 \",\n\t\t\t\"🌕 \",\n\t\t\t\"🌖 \",\n\t\t\t\"🌗 \",\n\t\t\t\"🌘 \"\n\t\t]\n\t},\n\t\"runner\": {\n\t\t\"interval\": 140,\n\t\t\"frames\": [\n\t\t\t\"🚶 \",\n\t\t\t\"🏃 \"\n\t\t]\n\t},\n\t\"pong\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"▐⠂ ▌\",\n\t\t\t\"▐⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂▌\",\n\t\t\t\"▐ ⠠▌\",\n\t\t\t\"▐ ⡀▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐⠠ ▌\"\n\t\t]\n\t},\n\t\"shark\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▐|\\\\____________▌\",\n\t\t\t\"▐_|\\\\___________▌\",\n\t\t\t\"▐__|\\\\__________▌\",\n\t\t\t\"▐___|\\\\_________▌\",\n\t\t\t\"▐____|\\\\________▌\",\n\t\t\t\"▐_____|\\\\_______▌\",\n\t\t\t\"▐______|\\\\______▌\",\n\t\t\t\"▐_______|\\\\_____▌\",\n\t\t\t\"▐________|\\\\____▌\",\n\t\t\t\"▐_________|\\\\___▌\",\n\t\t\t\"▐__________|\\\\__▌\",\n\t\t\t\"▐___________|\\\\_▌\",\n\t\t\t\"▐____________|\\\\▌\",\n\t\t\t\"▐____________/|▌\",\n\t\t\t\"▐___________/|_▌\",\n\t\t\t\"▐__________/|__▌\",\n\t\t\t\"▐_________/|___▌\",\n\t\t\t\"▐________/|____▌\",\n\t\t\t\"▐_______/|_____▌\",\n\t\t\t\"▐______/|______▌\",\n\t\t\t\"▐_____/|_______▌\",\n\t\t\t\"▐____/|________▌\",\n\t\t\t\"▐___/|_________▌\",\n\t\t\t\"▐__/|__________▌\",\n\t\t\t\"▐_/|___________▌\",\n\t\t\t\"▐/|____________▌\"\n\t\t]\n\t},\n\t\"dqpb\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"d\",\n\t\t\t\"q\",\n\t\t\t\"p\",\n\t\t\t\"b\"\n\t\t]\n\t},\n\t\"weather\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"☀️ \",\n\t\t\t\"☀️ \",\n\t\t\t\"☀️ \",\n\t\t\t\"🌤 \",\n\t\t\t\"⛅️ \",\n\t\t\t\"🌥 \",\n\t\t\t\"☁️ \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"⛈ \",\n\t\t\t\"🌨 \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"☁️ \",\n\t\t\t\"🌥 \",\n\t\t\t\"⛅️ \",\n\t\t\t\"🌤 \",\n\t\t\t\"☀️ \",\n\t\t\t\"☀️ \"\n\t\t]\n\t},\n\t\"christmas\": {\n\t\t\"interval\": 400,\n\t\t\"frames\": [\n\t\t\t\"🌲\",\n\t\t\t\"🎄\"\n\t\t]\n\t},\n\t\"grenade\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"، \",\n\t\t\t\"′ \",\n\t\t\t\" ´ \",\n\t\t\t\" ‾ \",\n\t\t\t\" ⸌\",\n\t\t\t\" ⸊\",\n\t\t\t\" |\",\n\t\t\t\" ⁎\",\n\t\t\t\" ⁕\",\n\t\t\t\" ෴ \",\n\t\t\t\" ⁓\",\n\t\t\t\" \",\n\t\t\t\" \",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"point\": {\n\t\t\"interval\": 125,\n\t\t\"frames\": [\n\t\t\t\"∙∙∙\",\n\t\t\t\"●∙∙\",\n\t\t\t\"∙●∙\",\n\t\t\t\"∙∙●\",\n\t\t\t\"∙∙∙\"\n\t\t]\n\t},\n\t\"layer\": {\n\t\t\"interval\": 150,\n\t\t\"frames\": [\n\t\t\t\"-\",\n\t\t\t\"=\",\n\t\t\t\"≡\"\n\t\t]\n\t},\n\t\"betaWave\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"ρββββββ\",\n\t\t\t\"βρβββββ\",\n\t\t\t\"ββρββββ\",\n\t\t\t\"βββρβββ\",\n\t\t\t\"ββββρββ\",\n\t\t\t\"βββββρβ\",\n\t\t\t\"ββββββρ\"\n\t\t]\n\t},\n\t\"fingerDance\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"🤘 \",\n\t\t\t\"🤟 \",\n\t\t\t\"🖖 \",\n\t\t\t\"✋ \",\n\t\t\t\"🤚 \",\n\t\t\t\"👆 \"\n\t\t]\n\t},\n\t\"fistBump\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"🤜\\u3000\\u3000\\u3000\\u3000🤛 \",\n\t\t\t\"🤜\\u3000\\u3000\\u3000\\u3000🤛 \",\n\t\t\t\"🤜\\u3000\\u3000\\u3000\\u3000🤛 \",\n\t\t\t\"\\u3000🤜\\u3000\\u3000🤛\\u3000 \",\n\t\t\t\"\\u3000\\u3000🤜🤛\\u3000\\u3000 \",\n\t\t\t\"\\u3000🤜✨🤛\\u3000\\u3000 \",\n\t\t\t\"🤜\\u3000✨\\u3000🤛\\u3000 \"\n\t\t]\n\t},\n\t\"soccerHeader\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\" 🧑⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \"\n\t\t]\n\t},\n\t\"mindblown\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"😐 \",\n\t\t\t\"😐 \",\n\t\t\t\"😮 \",\n\t\t\t\"😮 \",\n\t\t\t\"😦 \",\n\t\t\t\"😦 \",\n\t\t\t\"😧 \",\n\t\t\t\"😧 \",\n\t\t\t\"🤯 \",\n\t\t\t\"💥 \",\n\t\t\t\"✨ \",\n\t\t\t\"\\u3000 \",\n\t\t\t\"\\u3000 \",\n\t\t\t\"\\u3000 \"\n\t\t]\n\t},\n\t\"speaker\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"🔈 \",\n\t\t\t\"🔉 \",\n\t\t\t\"🔊 \",\n\t\t\t\"🔉 \"\n\t\t]\n\t},\n\t\"orangePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🔸 \",\n\t\t\t\"🔶 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🔶 \"\n\t\t]\n\t},\n\t\"bluePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🔹 \",\n\t\t\t\"🔷 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔷 \"\n\t\t]\n\t},\n\t\"orangeBluePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🔸 \",\n\t\t\t\"🔶 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🔶 \",\n\t\t\t\"🔹 \",\n\t\t\t\"🔷 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔷 \"\n\t\t]\n\t},\n\t\"timeTravel\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🕛 \",\n\t\t\t\"🕚 \",\n\t\t\t\"🕙 \",\n\t\t\t\"🕘 \",\n\t\t\t\"🕗 \",\n\t\t\t\"🕖 \",\n\t\t\t\"🕕 \",\n\t\t\t\"🕔 \",\n\t\t\t\"🕓 \",\n\t\t\t\"🕒 \",\n\t\t\t\"🕑 \",\n\t\t\t\"🕐 \"\n\t\t]\n\t},\n\t\"aesthetic\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"▰▱▱▱▱▱▱\",\n\t\t\t\"▰▰▱▱▱▱▱\",\n\t\t\t\"▰▰▰▱▱▱▱\",\n\t\t\t\"▰▰▰▰▱▱▱\",\n\t\t\t\"▰▰▰▰▰▱▱\",\n\t\t\t\"▰▰▰▰▰▰▱\",\n\t\t\t\"▰▰▰▰▰▰▰\",\n\t\t\t\"▰▱▱▱▱▱▱\"\n\t\t]\n\t},\n\t\"dwarfFortress\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\" ██████£££ \",\n\t\t\t\"☺██████£££ \",\n\t\t\t\"☺██████£££ \",\n\t\t\t\"☺▓█████£££ \",\n\t\t\t\"☺▓█████£££ \",\n\t\t\t\"☺▒█████£££ \",\n\t\t\t\"☺▒█████£££ \",\n\t\t\t\"☺░█████£££ \",\n\t\t\t\"☺░█████£££ \",\n\t\t\t\"☺ █████£££ \",\n\t\t\t\" ☺█████£££ \",\n\t\t\t\" ☺█████£££ \",\n\t\t\t\" ☺▓████£££ \",\n\t\t\t\" ☺▓████£££ \",\n\t\t\t\" ☺▒████£££ \",\n\t\t\t\" ☺▒████£££ \",\n\t\t\t\" ☺░████£££ \",\n\t\t\t\" ☺░████£££ \",\n\t\t\t\" ☺ ████£££ \",\n\t\t\t\" ☺████£££ \",\n\t\t\t\" ☺████£££ \",\n\t\t\t\" ☺▓███£££ \",\n\t\t\t\" ☺▓███£££ \",\n\t\t\t\" ☺▒███£££ \",\n\t\t\t\" ☺▒███£££ \",\n\t\t\t\" ☺░███£££ \",\n\t\t\t\" ☺░███£££ \",\n\t\t\t\" ☺ ███£££ \",\n\t\t\t\" ☺███£££ \",\n\t\t\t\" ☺███£££ \",\n\t\t\t\" ☺▓██£££ \",\n\t\t\t\" ☺▓██£££ \",\n\t\t\t\" ☺▒██£££ \",\n\t\t\t\" ☺▒██£££ \",\n\t\t\t\" ☺░██£££ \",\n\t\t\t\" ☺░██£££ \",\n\t\t\t\" ☺ ██£££ \",\n\t\t\t\" ☺██£££ \",\n\t\t\t\" ☺██£££ \",\n\t\t\t\" ☺▓█£££ \",\n\t\t\t\" ☺▓█£££ \",\n\t\t\t\" ☺▒█£££ \",\n\t\t\t\" ☺▒█£££ \",\n\t\t\t\" ☺░█£££ \",\n\t\t\t\" ☺░█£££ \",\n\t\t\t\" ☺ █£££ \",\n\t\t\t\" ☺█£££ \",\n\t\t\t\" ☺█£££ \",\n\t\t\t\" ☺▓£££ \",\n\t\t\t\" ☺▓£££ \",\n\t\t\t\" ☺▒£££ \",\n\t\t\t\" ☺▒£££ \",\n\t\t\t\" ☺░£££ \",\n\t\t\t\" ☺░£££ \",\n\t\t\t\" ☺ £££ \",\n\t\t\t\" ☺£££ \",\n\t\t\t\" ☺£££ \",\n\t\t\t\" ☺▓££ \",\n\t\t\t\" ☺▓££ \",\n\t\t\t\" ☺▒££ \",\n\t\t\t\" ☺▒££ \",\n\t\t\t\" ☺░££ \",\n\t\t\t\" ☺░££ \",\n\t\t\t\" ☺ ££ \",\n\t\t\t\" ☺££ \",\n\t\t\t\" ☺££ \",\n\t\t\t\" ☺▓£ \",\n\t\t\t\" ☺▓£ \",\n\t\t\t\" ☺▒£ \",\n\t\t\t\" ☺▒£ \",\n\t\t\t\" ☺░£ \",\n\t\t\t\" ☺░£ \",\n\t\t\t\" ☺ £ \",\n\t\t\t\" ☺£ \",\n\t\t\t\" ☺£ \",\n\t\t\t\" ☺▓ \",\n\t\t\t\" ☺▓ \",\n\t\t\t\" ☺▒ \",\n\t\t\t\" ☺▒ \",\n\t\t\t\" ☺░ \",\n\t\t\t\" ☺░ \",\n\t\t\t\" ☺ \",\n\t\t\t\" ☺ &\",\n\t\t\t\" ☺ ☼&\",\n\t\t\t\" ☺ ☼ &\",\n\t\t\t\" ☺☼ &\",\n\t\t\t\" ☺☼ & \",\n\t\t\t\" ‼ & \",\n\t\t\t\" ☺ & \",\n\t\t\t\" ‼ & \",\n\t\t\t\" ☺ & \",\n\t\t\t\" ‼ & \",\n\t\t\t\" ☺ & \",\n\t\t\t\"‼ & \",\n\t\t\t\" & \",\n\t\t\t\" & \",\n\t\t\t\" & ░ \",\n\t\t\t\" & ▒ \",\n\t\t\t\" & ▓ \",\n\t\t\t\" & £ \",\n\t\t\t\" & ░£ \",\n\t\t\t\" & ▒£ \",\n\t\t\t\" & ▓£ \",\n\t\t\t\" & ££ \",\n\t\t\t\" & ░££ \",\n\t\t\t\" & ▒££ \",\n\t\t\t\"& ▓££ \",\n\t\t\t\"& £££ \",\n\t\t\t\" ░£££ \",\n\t\t\t\" ▒£££ \",\n\t\t\t\" ▓£££ \",\n\t\t\t\" █£££ \",\n\t\t\t\" ░█£££ \",\n\t\t\t\" ▒█£££ \",\n\t\t\t\" ▓█£££ \",\n\t\t\t\" ██£££ \",\n\t\t\t\" ░██£££ \",\n\t\t\t\" ▒██£££ \",\n\t\t\t\" ▓██£££ \",\n\t\t\t\" ███£££ \",\n\t\t\t\" ░███£££ \",\n\t\t\t\" ▒███£££ \",\n\t\t\t\" ▓███£££ \",\n\t\t\t\" ████£££ \",\n\t\t\t\" ░████£££ \",\n\t\t\t\" ▒████£££ \",\n\t\t\t\" ▓████£££ \",\n\t\t\t\" █████£££ \",\n\t\t\t\" ░█████£££ \",\n\t\t\t\" ▒█████£££ \",\n\t\t\t\" ▓█████£££ \",\n\t\t\t\" ██████£££ \",\n\t\t\t\" ██████£££ \"\n\t\t]\n\t}\n}\n","'use strict';\n\nconst spinners = Object.assign({}, require('./spinners.json')); // eslint-disable-line import/extensions\n\nconst spinnersList = Object.keys(spinners);\n\nObject.defineProperty(spinners, 'random', {\n\tget() {\n\t\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\t\tconst spinnerName = spinnersList[randomIndex];\n\t\treturn spinners[spinnerName];\n\t}\n});\n\nmodule.exports = spinners;\n","#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport { readFileSync } from \"fs\";\nimport { fileURLToPath } from \"url\";\nimport { dirname, join } from \"path\";\nimport { gen } from \"./commands/gen.js\";\nimport { migrate, up, down, status } from \"./commands/migrate.js\";\nimport { markApplied } from \"./commands/mark-applied.js\";\nimport { init } from \"./commands/init.js\";\nimport { types } from \"./commands/types.js\";\nimport { testConnection } from \"./commands/test-connection.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst packageJson = JSON.parse(\n readFileSync(join(__dirname, \"../package.json\"), \"utf-8\")\n);\n\nconst program = new Command();\n\nprogram\n .name(\"nexusql\")\n .description(\n \"Database migration toolkit for PostgreSQL with DBML schema support\"\n )\n .version(packageJson.version);\n\nprogram\n .command(\"init\")\n .description(\"Initialize nexusql configuration\")\n .option(\"-f, --force\", \"Overwrite existing config\")\n .action(async (options) => {\n try {\n await init(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"gen\")\n .description(\"Generate migration SQL from DBML schema\")\n .option(\"-o, --output <file>\", \"Write SQL to file instead of stdout\")\n .option(\"-v, --verbose\", \"Show verbose output\")\n .action(async (options) => {\n try {\n await gen(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"migrate\")\n .description(\"Interactive migration: generate, create file, apply\")\n .option(\"-n, --name <name>\", \"Migration name\")\n .option(\"-a, --apply\", \"Apply migration after creating\")\n .option(\"-y, --yes\", \"Skip confirmation prompts\")\n .action(async (options) => {\n try {\n await migrate(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"up\")\n .description(\"Apply all pending migrations\")\n .option(\"--dry-run\", \"Preview migrations without applying\")\n .action(async (options) => {\n try {\n await up(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"down\")\n .description(\"Rollback applied migrations\")\n .option(\"-s, --steps <number>\", \"Number of migrations to rollback\", (v) =>\n parseInt(v)\n )\n .option(\"--to <version>\", \"Rollback to specific version\")\n .option(\"--dry-run\", \"Preview rollback without applying\")\n .action(async (options) => {\n try {\n await down(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"status\")\n .description(\"Show migration status\")\n .action(async () => {\n try {\n await status();\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"mark-applied <version>\")\n .description(\"Mark a migration as applied without running it\")\n .action(async (version) => {\n try {\n await markApplied(version);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"types\")\n .description(\"Generate TypeScript definitions from DBML\")\n .option(\n \"-o, --output <file>\",\n \"Output file path (default: src/types/schema.d.ts)\"\n )\n .action(async (options) => {\n try {\n await types(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"test-connection\")\n .description(\"Test database connection\")\n .action(async () => {\n try {\n await testConnection();\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram.parse();\n","import { readFileSync, writeFileSync } from \"fs\";\nimport { resolve } from \"path\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { Database } from \"../lib/database.js\";\nimport { dbmlToSql } from \"../lib/dbml.js\";\nimport { runMigra, filterSchemaMigrations } from \"../lib/migra.js\";\nimport { loadConfig, getDatabaseUrl } from \"../lib/config.js\";\nimport { ensureMigraOrExit } from \"../utils/check-migra.js\";\n\nexport interface GenOptions {\n output?: string;\n verbose?: boolean;\n}\n\n/**\n * Generate migration SQL by diffing current DB against DBML schema.\n */\nexport async function gen(options: GenOptions = {}): Promise<string> {\n ensureMigraOrExit();\n\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n\n const spinner = ora();\n\n // Read DBML schema\n spinner.start(\"Reading DBML schema...\");\n const schemaPath = resolve(config.dbmlFile);\n let dbmlContent: string;\n try {\n dbmlContent = readFileSync(schemaPath, \"utf-8\");\n spinner.succeed(\"Read DBML schema\");\n } catch {\n spinner.fail(`Failed to read schema: ${schemaPath}`);\n throw new Error(`Schema file not found: ${schemaPath}`);\n }\n\n // Convert DBML to SQL\n spinner.start(\"Converting DBML to SQL...\");\n const { sql: targetSql } = dbmlToSql(dbmlContent);\n spinner.succeed(\"Converted DBML to SQL\");\n\n // Create temp database\n const tempDbName = `nexusql_temp_${Date.now()}`;\n spinner.start(`Creating temp database: ${tempDbName}`);\n try {\n await db.createDatabase(tempDbName);\n spinner.succeed(`Created temp database: ${tempDbName}`);\n } catch (error) {\n spinner.fail(\"Failed to create temp database\");\n throw error;\n }\n\n const tempDb = db.withDatabase(tempDbName);\n let migrationSql = \"\";\n\n try {\n // Install extensions\n spinner.start(\"Installing extensions...\");\n await tempDb.installExtensions(config.extensions);\n\n // Verify vector type is available\n if (config.extensions.includes(\"vector\")) {\n const vectorCheck = await tempDb.query(\n \"SELECT typname FROM pg_type WHERE typname = 'vector'\"\n );\n if (vectorCheck.rows.length === 0) {\n spinner.fail(\"Vector extension installed but vector type not found!\");\n throw new Error(\n \"pgvector extension was installed but the 'vector' type is not available. \" +\n \"This usually means pgvector is not properly installed on your PostgreSQL server.\"\n );\n }\n }\n spinner.succeed(\"Installed db extensions\");\n\n // Load schema into temp database\n spinner.start(\"Loading schema into temp database...\");\n await tempDb.exec(targetSql);\n spinner.succeed(\"Loaded schema into temp database\");\n\n // Debug: List tables\n if (options.verbose) {\n const tables = await tempDb.listTables();\n console.log(chalk.dim(`\\nTables in temp database: ${tables.join(\", \")}`));\n }\n\n // Run migra to generate diff\n spinner.start(\"Generating migration diff...\");\n // Use config schemas\n const targetDbSchemas = config.targetDbSchemas;\n\n if (targetDbSchemas?.length) {\n console.log(\n chalk.dim(`\\nRestricting to schemas: ${targetDbSchemas.join(\", \")}`)\n );\n }\n\n const migraResult = runMigra(\n db.getConnectionUrl(),\n tempDb.getConnectionUrl(),\n { unsafe: true, schemas: targetDbSchemas }\n );\n\n migrationSql = filterSchemaMigrations(migraResult.sql);\n\n if (migraResult.hasChanges) {\n spinner.succeed(\"Generated migration diff\");\n } else {\n spinner.info(\"No schema changes detected\");\n }\n\n // Get comment changes\n spinner.start(\"Checking comment changes...\");\n // Get comment changes\n spinner.start(\"Checking comment changes...\");\n const commentSql = await getCommentChanges(db, tempDb, targetDbSchemas);\n if (commentSql) {\n migrationSql = migrationSql\n ? `${migrationSql}\\n\\n-- Comment changes\\n${commentSql}`\n : `-- Comment changes\\n${commentSql}`;\n }\n spinner.succeed(\"Checked comment changes\");\n } catch (error) {\n spinner.fail(`Failed to generate migration diff: ${error}`);\n throw error;\n } finally {\n // Cleanup temp database\n spinner.start(\"Cleaning up temp database...\");\n try {\n await db.dropDatabase(tempDbName);\n spinner.succeed(\"Cleaned up temp database\");\n } catch (error) {\n spinner.warn(`Failed to cleanup temp database: ${error}`);\n }\n }\n\n // Output result\n const finalSql = migrationSql || \"-- No changes detected\";\n\n if (options.output) {\n writeFileSync(options.output, finalSql, \"utf-8\");\n console.log(chalk.green(`\\nMigration SQL written to: ${options.output}`));\n } else {\n console.log(chalk.cyan(\"\\n=== Migration SQL ===\\n\"));\n console.log(finalSql);\n }\n\n return finalSql;\n}\n\n/**\n * Get comment changes between two databases.\n * migra doesn't support COMMENT ON statements.\n */\nasync function getCommentChanges(\n currentDb: Database,\n targetDb: Database,\n schemas?: string[]\n): Promise<string> {\n const schemaFilter =\n schemas && schemas.length > 0\n ? `AND c.table_schema IN (${schemas.map((s) => `'${s}'`).join(\", \")})`\n : \"\";\n\n const commentQuery = `\n SELECT\n format('COMMENT ON COLUMN %I.%I IS %L;',\n c.table_name,\n c.column_name,\n pgd.description\n ) as comment_sql,\n c.table_name,\n c.column_name,\n pgd.description\n FROM information_schema.columns c\n JOIN pg_catalog.pg_class pc ON pc.relname = c.table_name\n JOIN pg_catalog.pg_namespace pn ON pn.oid = pc.relnamespace AND pn.nspname = c.table_schema\n LEFT JOIN pg_catalog.pg_description pgd ON pgd.objoid = pc.oid AND pgd.objsubid = c.ordinal_position\n WHERE c.table_name != 'schema_migrations'\n ${schemaFilter}\n ORDER BY c.table_name, c.ordinal_position;\n `;\n\n const [currentComments, targetComments] = await Promise.all([\n currentDb.query(commentQuery),\n targetDb.query(commentQuery),\n ]);\n\n const currentMap = new Map<string, string | null>();\n const targetMap = new Map<\n string,\n { sql: string; description: string | null }\n >();\n\n for (const row of currentComments.rows) {\n const key = `${row.table_name}.${row.column_name}`;\n currentMap.set(key, row.description as string | null);\n }\n\n for (const row of targetComments.rows) {\n const key = `${row.table_name}.${row.column_name}`;\n targetMap.set(key, {\n sql: row.comment_sql as string,\n description: row.description as string | null,\n });\n }\n\n const commentDiffs: string[] = [];\n\n for (const [key, target] of targetMap) {\n const current = currentMap.get(key);\n if (current !== target.description && target.sql) {\n commentDiffs.push(target.sql);\n }\n }\n\n return commentDiffs.join(\"\\n\");\n}\n","import process from 'node:process';\nimport chalk from 'chalk';\nimport cliCursor from 'cli-cursor';\nimport cliSpinners from 'cli-spinners';\nimport logSymbols from 'log-symbols';\nimport stripAnsi from 'strip-ansi';\nimport stringWidth from 'string-width';\nimport isInteractive from 'is-interactive';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport stdinDiscarder from 'stdin-discarder';\n\nclass Ora {\n\t#linesToClear = 0;\n\t#isDiscardingStdin = false;\n\t#lineCount = 0;\n\t#frameIndex = -1;\n\t#lastSpinnerFrameTime = 0;\n\t#options;\n\t#spinner;\n\t#stream;\n\t#id;\n\t#initialInterval;\n\t#isEnabled;\n\t#isSilent;\n\t#indent;\n\t#text;\n\t#prefixText;\n\t#suffixText;\n\tcolor;\n\n\tconstructor(options) {\n\t\tif (typeof options === 'string') {\n\t\t\toptions = {\n\t\t\t\ttext: options,\n\t\t\t};\n\t\t}\n\n\t\tthis.#options = {\n\t\t\tcolor: 'cyan',\n\t\t\tstream: process.stderr,\n\t\t\tdiscardStdin: true,\n\t\t\thideCursor: true,\n\t\t\t...options,\n\t\t};\n\n\t\t// Public\n\t\tthis.color = this.#options.color;\n\n\t\t// It's important that these use the public setters.\n\t\tthis.spinner = this.#options.spinner;\n\n\t\tthis.#initialInterval = this.#options.interval;\n\t\tthis.#stream = this.#options.stream;\n\t\tthis.#isEnabled = typeof this.#options.isEnabled === 'boolean' ? this.#options.isEnabled : isInteractive({stream: this.#stream});\n\t\tthis.#isSilent = typeof this.#options.isSilent === 'boolean' ? this.#options.isSilent : false;\n\n\t\t// Set *after* `this.#stream`.\n\t\t// It's important that these use the public setters.\n\t\tthis.text = this.#options.text;\n\t\tthis.prefixText = this.#options.prefixText;\n\t\tthis.suffixText = this.#options.suffixText;\n\t\tthis.indent = this.#options.indent;\n\n\t\tif (process.env.NODE_ENV === 'test') {\n\t\t\tthis._stream = this.#stream;\n\t\t\tthis._isEnabled = this.#isEnabled;\n\n\t\t\tObject.defineProperty(this, '_linesToClear', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#linesToClear;\n\t\t\t\t},\n\t\t\t\tset(newValue) {\n\t\t\t\t\tthis.#linesToClear = newValue;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_frameIndex', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#frameIndex;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_lineCount', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#lineCount;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tget indent() {\n\t\treturn this.#indent;\n\t}\n\n\tset indent(indent = 0) {\n\t\tif (!(indent >= 0 && Number.isInteger(indent))) {\n\t\t\tthrow new Error('The `indent` option must be an integer from 0 and up');\n\t\t}\n\n\t\tthis.#indent = indent;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget interval() {\n\t\treturn this.#initialInterval ?? this.#spinner.interval ?? 100;\n\t}\n\n\tget spinner() {\n\t\treturn this.#spinner;\n\t}\n\n\tset spinner(spinner) {\n\t\tthis.#frameIndex = -1;\n\t\tthis.#initialInterval = undefined;\n\n\t\tif (typeof spinner === 'object') {\n\t\t\tif (spinner.frames === undefined) {\n\t\t\t\tthrow new Error('The given spinner must have a `frames` property');\n\t\t\t}\n\n\t\t\tthis.#spinner = spinner;\n\t\t} else if (!isUnicodeSupported()) {\n\t\t\tthis.#spinner = cliSpinners.line;\n\t\t} else if (spinner === undefined) {\n\t\t\t// Set default spinner\n\t\t\tthis.#spinner = cliSpinners.dots;\n\t\t} else if (spinner !== 'default' && cliSpinners[spinner]) {\n\t\t\tthis.#spinner = cliSpinners[spinner];\n\t\t} else {\n\t\t\tthrow new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);\n\t\t}\n\t}\n\n\tget text() {\n\t\treturn this.#text;\n\t}\n\n\tset text(value = '') {\n\t\tthis.#text = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget prefixText() {\n\t\treturn this.#prefixText;\n\t}\n\n\tset prefixText(value = '') {\n\t\tthis.#prefixText = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget suffixText() {\n\t\treturn this.#suffixText;\n\t}\n\n\tset suffixText(value = '') {\n\t\tthis.#suffixText = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget isSpinning() {\n\t\treturn this.#id !== undefined;\n\t}\n\n\t#getFullPrefixText(prefixText = this.#prefixText, postfix = ' ') {\n\t\tif (typeof prefixText === 'string' && prefixText !== '') {\n\t\t\treturn prefixText + postfix;\n\t\t}\n\n\t\tif (typeof prefixText === 'function') {\n\t\t\treturn prefixText() + postfix;\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#getFullSuffixText(suffixText = this.#suffixText, prefix = ' ') {\n\t\tif (typeof suffixText === 'string' && suffixText !== '') {\n\t\t\treturn prefix + suffixText;\n\t\t}\n\n\t\tif (typeof suffixText === 'function') {\n\t\t\treturn prefix + suffixText();\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#updateLineCount() {\n\t\tconst columns = this.#stream.columns ?? 80;\n\t\tconst fullPrefixText = this.#getFullPrefixText(this.#prefixText, '-');\n\t\tconst fullSuffixText = this.#getFullSuffixText(this.#suffixText, '-');\n\t\tconst fullText = ' '.repeat(this.#indent) + fullPrefixText + '--' + this.#text + '--' + fullSuffixText;\n\n\t\tthis.#lineCount = 0;\n\t\tfor (const line of stripAnsi(fullText).split('\\n')) {\n\t\t\tthis.#lineCount += Math.max(1, Math.ceil(stringWidth(line, {countAnsiEscapeCodes: true}) / columns));\n\t\t}\n\t}\n\n\tget isEnabled() {\n\t\treturn this.#isEnabled && !this.#isSilent;\n\t}\n\n\tset isEnabled(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isEnabled` option must be a boolean');\n\t\t}\n\n\t\tthis.#isEnabled = value;\n\t}\n\n\tget isSilent() {\n\t\treturn this.#isSilent;\n\t}\n\n\tset isSilent(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isSilent` option must be a boolean');\n\t\t}\n\n\t\tthis.#isSilent = value;\n\t}\n\n\tframe() {\n\t\t// Ensure we only update the spinner frame at the wanted interval,\n\t\t// even if the render method is called more often.\n\t\tconst now = Date.now();\n\t\tif (this.#frameIndex === -1 || now - this.#lastSpinnerFrameTime >= this.interval) {\n\t\t\tthis.#frameIndex = ++this.#frameIndex % this.#spinner.frames.length;\n\t\t\tthis.#lastSpinnerFrameTime = now;\n\t\t}\n\n\t\tconst {frames} = this.#spinner;\n\t\tlet frame = frames[this.#frameIndex];\n\n\t\tif (this.color) {\n\t\t\tframe = chalk[this.color](frame);\n\t\t}\n\n\t\tconst fullPrefixText = (typeof this.#prefixText === 'string' && this.#prefixText !== '') ? this.#prefixText + ' ' : '';\n\t\tconst fullText = typeof this.text === 'string' ? ' ' + this.text : '';\n\t\tconst fullSuffixText = (typeof this.#suffixText === 'string' && this.#suffixText !== '') ? ' ' + this.#suffixText : '';\n\n\t\treturn fullPrefixText + frame + fullText + fullSuffixText;\n\t}\n\n\tclear() {\n\t\tif (!this.#isEnabled || !this.#stream.isTTY) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.#stream.cursorTo(0);\n\n\t\tfor (let index = 0; index < this.#linesToClear; index++) {\n\t\t\tif (index > 0) {\n\t\t\t\tthis.#stream.moveCursor(0, -1);\n\t\t\t}\n\n\t\t\tthis.#stream.clearLine(1);\n\t\t}\n\n\t\tif (this.#indent || this.lastIndent !== this.#indent) {\n\t\t\tthis.#stream.cursorTo(this.#indent);\n\t\t}\n\n\t\tthis.lastIndent = this.#indent;\n\t\tthis.#linesToClear = 0;\n\n\t\treturn this;\n\t}\n\n\trender() {\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.clear();\n\t\tthis.#stream.write(this.frame());\n\t\tthis.#linesToClear = this.#lineCount;\n\n\t\treturn this;\n\t}\n\n\tstart(text) {\n\t\tif (text) {\n\t\t\tthis.text = text;\n\t\t}\n\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this.#isEnabled) {\n\t\t\tif (this.text) {\n\t\t\t\tthis.#stream.write(`- ${this.text}\\n`);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.isSpinning) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.hide(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY) {\n\t\t\tthis.#isDiscardingStdin = true;\n\t\t\tstdinDiscarder.start();\n\t\t}\n\n\t\tthis.render();\n\t\tthis.#id = setInterval(this.render.bind(this), this.interval);\n\n\t\treturn this;\n\t}\n\n\tstop() {\n\t\tif (!this.#isEnabled) {\n\t\t\treturn this;\n\t\t}\n\n\t\tclearInterval(this.#id);\n\t\tthis.#id = undefined;\n\t\tthis.#frameIndex = 0;\n\t\tthis.clear();\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.show(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY && this.#isDiscardingStdin) {\n\t\t\tstdinDiscarder.stop();\n\t\t\tthis.#isDiscardingStdin = false;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsucceed(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.success, text});\n\t}\n\n\tfail(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.error, text});\n\t}\n\n\twarn(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.warning, text});\n\t}\n\n\tinfo(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.info, text});\n\t}\n\n\tstopAndPersist(options = {}) {\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst prefixText = options.prefixText ?? this.#prefixText;\n\t\tconst fullPrefixText = this.#getFullPrefixText(prefixText, ' ');\n\n\t\tconst symbolText = options.symbol ?? ' ';\n\n\t\tconst text = options.text ?? this.text;\n\t\tconst separatorText = symbolText ? ' ' : '';\n\t\tconst fullText = (typeof text === 'string') ? separatorText + text : '';\n\n\t\tconst suffixText = options.suffixText ?? this.#suffixText;\n\t\tconst fullSuffixText = this.#getFullSuffixText(suffixText, ' ');\n\n\t\tconst textToWrite = fullPrefixText + symbolText + fullText + fullSuffixText + '\\n';\n\n\t\tthis.stop();\n\t\tthis.#stream.write(textToWrite);\n\n\t\treturn this;\n\t}\n}\n\nexport default function ora(options) {\n\treturn new Ora(options);\n}\n\nexport async function oraPromise(action, options) {\n\tconst actionIsFunction = typeof action === 'function';\n\tconst actionIsPromise = typeof action.then === 'function';\n\n\tif (!actionIsFunction && !actionIsPromise) {\n\t\tthrow new TypeError('Parameter `action` must be a Function or a Promise');\n\t}\n\n\tconst {successText, failText} = typeof options === 'object'\n\t\t? options\n\t\t: {successText: undefined, failText: undefined};\n\n\tconst spinner = ora(options).start();\n\n\ttry {\n\t\tconst promise = actionIsFunction ? action(spinner) : action;\n\t\tconst result = await promise;\n\n\t\tspinner.succeed(\n\t\t\tsuccessText === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (typeof successText === 'string' ? successText : successText(result)),\n\t\t);\n\n\t\treturn result;\n\t} catch (error) {\n\t\tspinner.fail(\n\t\t\tfailText === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (typeof failText === 'string' ? failText : failText(error)),\n\t\t);\n\n\t\tthrow error;\n\t}\n}\n\nexport {default as spinners} from 'cli-spinners';\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","import process from 'node:process';\nimport restoreCursor from 'restore-cursor';\n\nlet isHidden = false;\n\nconst cliCursor = {};\n\ncliCursor.show = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\tisHidden = false;\n\twritableStream.write('\\u001B[?25h');\n};\n\ncliCursor.hide = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\trestoreCursor();\n\tisHidden = true;\n\twritableStream.write('\\u001B[?25l');\n};\n\ncliCursor.toggle = (force, writableStream) => {\n\tif (force !== undefined) {\n\t\tisHidden = force;\n\t}\n\n\tif (isHidden) {\n\t\tcliCursor.show(writableStream);\n\t} else {\n\t\tcliCursor.hide(writableStream);\n\t}\n};\n\nexport default cliCursor;\n","import process from 'node:process';\nimport onetime from 'onetime';\nimport {onExit} from 'signal-exit';\n\nconst terminal = process.stderr.isTTY\n\t? process.stderr\n\t: (process.stdout.isTTY ? process.stdout : undefined);\n\nconst restoreCursor = terminal ? onetime(() => {\n\tonExit(() => {\n\t\tterminal.write('\\u001B[?25h');\n\t}, {alwaysLast: true});\n}) : () => {};\n\nexport default restoreCursor;\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable\n\t\t&& toDescriptor.enumerable === fromDescriptor.enumerable\n\t\t&& toDescriptor.configurable === fromDescriptor.configurable\n\t\t&& (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tconst {writable, enumerable, configurable} = toStringDescriptor; // We destructue to avoid a potential `get` descriptor.\n\tObject.defineProperty(to, 'toString', {value: newToString, writable, enumerable, configurable});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFunction from 'mimic-function';\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = undefined;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFunction(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nonetime.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\nexport default onetime;\n","/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import chalk from 'chalk';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nconst main = {\n\tinfo: chalk.blue('ℹ'),\n\tsuccess: chalk.green('✔'),\n\twarning: chalk.yellow('⚠'),\n\terror: chalk.red('✖'),\n};\n\nconst fallback = {\n\tinfo: chalk.blue('i'),\n\tsuccess: chalk.green('√'),\n\twarning: chalk.yellow('‼'),\n\terror: chalk.red('×'),\n};\n\nconst logSymbols = isUnicodeSupported() ? main : fallback;\n\nexport default logSymbols;\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n\tconst osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2630 && x <= 0x2637\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x >= 0x268A && x <= 0x268F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E5\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x >= 0x16FF0 && x <= 0x16FF6\n\t\t|| x >= 0x17000 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D1E\n\t\t|| x >= 0x18D80 && x <= 0x18DF2\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x >= 0x1D300 && x <= 0x1D356\n\t\t|| x >= 0x1D360 && x <= 0x1D376\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D8\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA8A\n\t\t|| x >= 0x1FA8E && x <= 0x1FAC6\n\t\t|| x === 0x1FAC8\n\t\t|| x >= 0x1FACD && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAEA\n\t\t|| x >= 0x1FAEF && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction getCategory(x) {\n\tif (isAmbiguous(x)) return 'ambiguous';\n\n\tif (isFullWidth(x)) return 'fullwidth';\n\n\tif (\n\t\tx === 0x20A9\n\t\t|| x >= 0xFF61 && x <= 0xFFBE\n\t\t|| x >= 0xFFC2 && x <= 0xFFC7\n\t\t|| x >= 0xFFCA && x <= 0xFFCF\n\t\t|| x >= 0xFFD2 && x <= 0xFFD7\n\t\t|| x >= 0xFFDA && x <= 0xFFDC\n\t\t|| x >= 0xFFE8 && x <= 0xFFEE\n\t) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (\n\t\tx >= 0x20 && x <= 0x7E\n\t\t|| x === 0xA2\n\t\t|| x === 0xA3\n\t\t|| x === 0xA5\n\t\t|| x === 0xA6\n\t\t|| x === 0xAC\n\t\t|| x === 0xAF\n\t\t|| x >= 0x27E6 && x <= 0x27ED\n\t\t|| x === 0x2985\n\t\t|| x === 0x2986\n\t) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(x)) return 'wide';\n\n\treturn 'neutral';\n}\n\nexport {isAmbiguous, isFullWidth, isWide, getCategory};\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point\nexport {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';\n","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E-\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED8\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC2\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF]|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","export default function isInteractive({stream = process.stdout} = {}) {\n\treturn Boolean(\n\t\tstream && stream.isTTY &&\n\t\tprocess.env.TERM !== 'dumb' &&\n\t\t!('CI' in process.env)\n\t);\n}\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tconst {env} = process;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (process.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import process from 'node:process';\n\nconst ASCII_ETX_CODE = 0x03; // Ctrl+C emits this code\n\nclass StdinDiscarder {\n\t#activeCount = 0;\n\n\tstart() {\n\t\tthis.#activeCount++;\n\n\t\tif (this.#activeCount === 1) {\n\t\t\tthis.#realStart();\n\t\t}\n\t}\n\n\tstop() {\n\t\tif (this.#activeCount <= 0) {\n\t\t\tthrow new Error('`stop` called more times than `start`');\n\t\t}\n\n\t\tthis.#activeCount--;\n\n\t\tif (this.#activeCount === 0) {\n\t\t\tthis.#realStop();\n\t\t}\n\t}\n\n\t#realStart() {\n\t\t// No known way to make it work reliably on Windows.\n\t\tif (process.platform === 'win32' || !process.stdin.isTTY) {\n\t\t\treturn;\n\t\t}\n\n\t\tprocess.stdin.setRawMode(true);\n\t\tprocess.stdin.on('data', this.#handleInput);\n\t\tprocess.stdin.resume();\n\t}\n\n\t#realStop() {\n\t\tif (!process.stdin.isTTY) {\n\t\t\treturn;\n\t\t}\n\n\t\tprocess.stdin.off('data', this.#handleInput);\n\t\tprocess.stdin.pause();\n\t\tprocess.stdin.setRawMode(false);\n\t}\n\n\t#handleInput(chunk) {\n\t\t// Allow Ctrl+C to gracefully exit.\n\t\tif (chunk[0] === ASCII_ETX_CODE) {\n\t\t\tprocess.emit('SIGINT');\n\t\t}\n\t}\n}\n\nconst stdinDiscarder = new StdinDiscarder();\n\nexport default stdinDiscarder;\n","import pg from \"pg\";\nimport { parseAndEncodeDbUrl, buildDbUrl, type DbUrlParts } from \"./db-url.js\";\n\nconst { Client } = pg;\n\nexport interface QueryResult {\n rows: Record<string, unknown>[];\n rowCount: number;\n}\n\nexport class Database {\n private connectionString: string;\n private dbParts: DbUrlParts;\n\n constructor(connectionString: string) {\n this.dbParts = parseAndEncodeDbUrl(connectionString);\n this.connectionString = this.dbParts.url;\n }\n\n /**\n * Execute a query and return results.\n */\n async query(sql: string): Promise<QueryResult> {\n const client = new Client({ connectionString: this.connectionString });\n try {\n await client.connect();\n const result = await client.query(sql);\n return {\n rows: result.rows,\n rowCount: result.rowCount ?? 0,\n };\n } finally {\n await client.end();\n }\n }\n\n /**\n * Execute a parameterized query and return results.\n */\n async queryParams(sql: string, params: unknown[]): Promise<QueryResult> {\n const client = new Client({ connectionString: this.connectionString });\n try {\n await client.connect();\n const result = await client.query(sql, params);\n return {\n rows: result.rows,\n rowCount: result.rowCount ?? 0,\n };\n } finally {\n await client.end();\n }\n }\n\n /**\n * Execute a parameterized query without returning results.\n */\n async execParams(sql: string, params: unknown[]): Promise<void> {\n const client = new Client({ connectionString: this.connectionString });\n try {\n await client.connect();\n await client.query(sql, params);\n } finally {\n await client.end();\n }\n }\n\n /**\n * Execute a query without returning results (for DDL/DML).\n */\n async exec(sql: string): Promise<void> {\n const client = new Client({ connectionString: this.connectionString });\n try {\n await client.connect();\n await client.query(sql);\n } finally {\n await client.end();\n }\n }\n\n /**\n * Execute operations within a transaction.\n * Automatically commits on success, rolls back on error.\n */\n async withTransaction<T>(fn: (client: pg.Client) => Promise<T>): Promise<T> {\n const client = new Client({ connectionString: this.connectionString });\n try {\n await client.connect();\n await client.query(\"BEGIN\");\n const result = await fn(client);\n await client.query(\"COMMIT\");\n return result;\n } catch (error) {\n await client.query(\"ROLLBACK\");\n throw error;\n } finally {\n await client.end();\n }\n }\n\n /**\n * Create a new database.\n */\n async createDatabase(name: string): Promise<void> {\n await this.exec(`CREATE DATABASE \"${name}\";`);\n }\n\n /**\n * Drop a database if it exists.\n */\n async dropDatabase(name: string): Promise<void> {\n // First, terminate all connections to the database\n await this.exec(`\n SELECT pg_terminate_backend(pg_stat_activity.pid)\n FROM pg_stat_activity\n WHERE pg_stat_activity.datname = '${name}'\n AND pid <> pg_backend_pid();\n `);\n // Now drop the database\n await this.exec(`DROP DATABASE IF EXISTS \"${name}\";`);\n }\n\n /**\n * Create a Database instance connected to a different database.\n */\n withDatabase(name: string): Database {\n const newUrl = buildDbUrl(this.dbParts, name);\n return new Database(newUrl);\n }\n\n /**\n * Get connection URL for external tools (like migra).\n */\n getConnectionUrl(): string {\n return this.connectionString;\n }\n\n /**\n * Get parsed database URL parts.\n */\n getParts(): DbUrlParts {\n return this.dbParts;\n }\n\n /**\n * Install PostgreSQL extensions.\n */\n async installExtensions(extensions: string[]): Promise<void> {\n for (const ext of extensions) {\n try {\n await this.exec(`CREATE EXTENSION IF NOT EXISTS \"${ext}\";`);\n\n // Verify extension was actually created\n const result = await this.queryParams(\n `SELECT EXISTS(SELECT 1 FROM pg_extension WHERE extname = $1) as exists`,\n [ext]\n );\n\n if (!result.rows[0]?.exists) {\n throw new Error(`Extension \"${ext}\" was not installed`);\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(\n `Failed to install extension \"${ext}\": ${message}\\n` +\n `Make sure the extension is installed on your PostgreSQL server.\\n` +\n `For pgvector: https://github.com/pgvector/pgvector#installation`\n );\n }\n }\n }\n\n /**\n * Get column information for a table.\n */\n async getTableColumns(\n tableName: string\n ): Promise<{ column_name: string; ordinal_position: number }[]> {\n const result = await this.query(`\n SELECT column_name, ordinal_position\n FROM information_schema.columns\n WHERE table_name = '${tableName}'\n ORDER BY ordinal_position;\n `);\n return result.rows as { column_name: string; ordinal_position: number }[];\n }\n\n /**\n * List all tables in the public schema.\n */\n async listTables(): Promise<string[]> {\n const result = await this.query(`\n SELECT tablename FROM pg_tables WHERE schemaname = 'public';\n `);\n return result.rows.map((row) => row.tablename as string);\n }\n}\n","export interface DbUrlParts {\n url: string;\n protocol: string;\n user: string;\n password: string;\n host: string;\n port: string;\n database: string;\n params: string;\n}\n\n/**\n * Parse a PostgreSQL connection URL and encode special characters in password.\n * Handles URLs like: postgres://user:password@host:port/database?params\n * Supports both raw passwords with special characters and already-encoded passwords.\n */\nexport function parseAndEncodeDbUrl(rawUrl: string): DbUrlParts {\n // Extract protocol\n const protocolMatch = rawUrl.match(/^(postgres(?:ql)?):\\/\\//);\n if (!protocolMatch) {\n throw new Error(\n 'Invalid DATABASE_URL format. Expected: postgres://user:password@host:port/database'\n );\n }\n\n const protocol = protocolMatch[1];\n const rest = rawUrl.slice(protocolMatch[0].length);\n\n // Find the last @ symbol (separates credentials from host)\n const lastAtIndex = rest.lastIndexOf('@');\n if (lastAtIndex === -1) {\n throw new Error(\n 'Invalid DATABASE_URL format. Expected: postgres://user:password@host:port/database'\n );\n }\n\n const credentials = rest.slice(0, lastAtIndex);\n const hostPart = rest.slice(lastAtIndex + 1);\n\n // Parse credentials (user:password)\n const colonIndex = credentials.indexOf(':');\n if (colonIndex === -1) {\n throw new Error(\n 'Invalid DATABASE_URL format. Expected: postgres://user:password@host:port/database'\n );\n }\n\n let user = credentials.slice(0, colonIndex);\n let password = credentials.slice(colonIndex + 1);\n\n // Parse host part (host:port/database?params)\n const hostMatch = hostPart.match(/^([^:]+):(\\d+)\\/([^?]+)(\\?.*)?$/);\n if (!hostMatch) {\n throw new Error(\n 'Invalid DATABASE_URL format. Expected: postgres://user:password@host:port/database'\n );\n }\n\n const [, host, port, database, params = ''] = hostMatch;\n\n // Check if credentials are already encoded by testing for % followed by hex digits\n const isEncoded = (str: string) => /%[0-9A-Fa-f]{2}/.test(str);\n\n // Only encode if not already encoded (avoid double-encoding)\n if (!isEncoded(user)) {\n user = encodeURIComponent(user);\n }\n if (!isEncoded(password)) {\n password = encodeURIComponent(password);\n }\n\n return {\n url: `${protocol}://${user}:${password}@${host}:${port}/${database}${params}`,\n protocol,\n user,\n password,\n host,\n port,\n database,\n params,\n };\n}\n\n/**\n * Build a connection URL with a different database name.\n */\nexport function buildDbUrl(parts: DbUrlParts, database: string): string {\n return `${parts.protocol}://${parts.user}:${parts.password}@${parts.host}:${parts.port}/${database}${parts.params}`;\n}\n","import { exporter } from \"@dbml/core\";\n\nexport interface DbmlResult {\n sql: string;\n}\n\n/**\n * Convert DBML schema to PostgreSQL SQL.\n */\nexport function dbmlToSql(dbmlContent: string): DbmlResult {\n const sql = exporter.export(dbmlContent, \"postgres\");\n return { sql };\n}\n","import { execFileSync } from \"child_process\";\n\nexport interface MigraResult {\n sql: string;\n hasChanges: boolean;\n}\n\n/**\n * Run migra to generate schema diff between two databases.\n *\n * Exit codes:\n * - 0: No differences\n * - 2: Differences found (SQL output on stdout)\n * - 1: Error\n */\nexport function runMigra(\n fromUrl: string,\n toUrl: string,\n options: { unsafe?: boolean; schemas?: string[] } = {}\n): MigraResult {\n const args = [fromUrl, toUrl];\n if (options.unsafe) {\n args.push(\"--unsafe\");\n }\n if (options.schemas?.length) {\n for (const schema of options.schemas) {\n args.push(\"--schema\", schema);\n }\n }\n\n try {\n const output = execFileSync(\"migra\", args, {\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n // Exit code 0 = no changes\n return { sql: output || \"\", hasChanges: false };\n } catch (error) {\n const err = error as { status?: number; stdout?: string; stderr?: string };\n\n if (err.status === 2 && err.stdout) {\n // Exit code 2 = changes found\n return { sql: err.stdout, hasChanges: true };\n }\n\n if (err.status === 1) {\n throw new Error(`migra error: ${err.stderr || \"Unknown error\"}`);\n }\n\n // Other exit codes - might still have output\n return { sql: err.stdout || \"\", hasChanges: Boolean(err.stdout) };\n }\n}\n\n/**\n * Filter out schema_migrations table from migration SQL.\n */\nexport function filterSchemaMigrations(sql: string): string {\n return sql\n .split(\"\\n\")\n .filter((line) => !line.includes(\"schema_migrations\"))\n .join(\"\\n\")\n .trim();\n}\n","import { existsSync } from \"fs\";\nimport { join } from \"path\";\nimport { pathToFileURL } from \"url\";\nimport { config as loadDotenv } from \"dotenv\";\n\nexport interface NexusqlConfig {\n dbmlFile: string;\n /** @deprecated Use dbmlFile instead */\n schema?: string;\n migrations: string;\n extensions: string[];\n databaseUrl?: string;\n targetDbSchemas?: string[]; // Restrict to specific PostgreSQL schemas (e.g., ['public', 'app'])\n}\n\nconst DEFAULT_CONFIG: NexusqlConfig = {\n dbmlFile: \"./schema.dbml\",\n migrations: \"./db/migrations\",\n extensions: [\"uuid-ossp\"],\n targetDbSchemas: [\"public\"],\n};\n\n/**\n * Load configuration from nexusql.config.js or defaults.\n */\nexport async function loadConfig(\n cwd: string = process.cwd()\n): Promise<NexusqlConfig> {\n // Load .env file\n loadDotenv();\n\n const configPath = join(cwd, \"nexusql.config.js\");\n let userConfig: Partial<NexusqlConfig> = {};\n\n if (existsSync(configPath)) {\n try {\n const configUrl = pathToFileURL(configPath).href;\n const module = await import(configUrl);\n userConfig = module.default || module;\n } catch {\n // Ignore config load errors, use defaults\n }\n }\n\n // Handle backward compatibility\n const finalConfig = {\n ...DEFAULT_CONFIG,\n ...userConfig,\n databaseUrl: process.env.DATABASE_URL || userConfig.databaseUrl,\n };\n\n // If user provided schema but not dbmlFile, use schema\n if (userConfig.schema && !userConfig.dbmlFile) {\n console.warn(\n \"Warning: 'schema' config option is deprecated. Use 'dbmlFile' instead.\"\n );\n finalConfig.dbmlFile = userConfig.schema;\n }\n\n return finalConfig;\n}\n\n/**\n * Get database URL from config or environment.\n */\nexport function getDatabaseUrl(config: NexusqlConfig): string {\n const url = config.databaseUrl || process.env.DATABASE_URL;\n if (!url) {\n throw new Error(\n \"DATABASE_URL not set. Set it in .env or nexusql.config.js\"\n );\n }\n return url;\n}\n\n/**\n * Generate default config file content.\n */\nexport function generateConfigTemplate(): string {\n return `/** @type {import('nexusql').NexusqlConfig} */\nmodule.exports = {\n // Path to your DBML schema file\n dbmlFile: './schema.dbml',\n\n // Directory for migration files\n migrations: './db/migrations',\n\n // PostgreSQL extensions to install in temp database\n extensions: ['uuid-ossp'],\n\n // Restrict to specific PostgreSQL schemas (optional, default: ['public'])\n // targetDbSchemas: ['public'],\n};\n`;\n}\n","import { execSync } from \"child_process\";\nimport chalk from \"chalk\";\n\n/**\n * Check if migra is installed and available in the PATH.\n */\nexport function checkMigra(): boolean {\n try {\n // We redirect output to ignore standard output/error\n execSync(\"migra --help\", { stdio: \"ignore\" });\n return true;\n } catch (error) {\n return false;\n }\n}\n\n/**\n * Verify migra is installed, print error and exit if not.\n */\nexport function ensureMigraOrExit(): void {\n if (!checkMigra()) {\n console.error(chalk.red(\"\\nError: 'migra' is not installed or not found in PATH.\"));\n console.error(chalk.yellow(\"\\nPlease install it using pip:\"));\n console.error(chalk.cyan(\" pip install migra\"));\n console.error(chalk.dim(\"\\nDocumentation: https://github.com/djrobstep/migra\\n\"));\n process.exit(1);\n }\n}\n","import { mkdirSync, existsSync } from \"fs\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport { gen } from \"./gen.js\";\nimport { Database } from \"../lib/database.js\";\nimport { MigrationRunner } from \"../lib/runner.js\";\nimport { createMigrationFile } from \"../lib/migrations.js\";\nimport { loadConfig, getDatabaseUrl } from \"../lib/config.js\";\nimport { question, confirm, closePrompts } from \"../utils/prompts.js\";\nimport { ensureMigraOrExit } from \"../utils/check-migra.js\";\n\nexport interface MigrateOptions {\n name?: string;\n apply?: boolean;\n yes?: boolean;\n}\n\n/**\n * Interactive migration workflow.\n */\nexport async function migrate(options: MigrateOptions = {}): Promise<void> {\n ensureMigraOrExit();\n\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n const runner = new MigrationRunner(db, config.migrations);\n\n console.log(chalk.bold(\"\\nInteractive Database Migration\\n\"));\n console.log(\"This will:\");\n console.log(\" 1. Generate migration diff from DBML\");\n console.log(\" 2. Create a new migration file\");\n console.log(\" 3. Optionally apply the migration\\n\");\n\n try {\n // Step 1: Generate diff\n console.log(chalk.cyan(\"Step 1: Generating migration diff...\\n\"));\n const migrationSql = await gen({ verbose: false });\n\n const noChanges =\n !migrationSql || migrationSql === \"-- No changes detected\";\n\n if (noChanges) {\n console.log(chalk.yellow(\"\\nNo schema changes detected.\\n\"));\n\n if (!options.yes) {\n const proceed = await confirm(\n \"Do you still want to create an empty migration?\"\n );\n if (!proceed) {\n console.log(chalk.red(\"\\nMigration cancelled.\"));\n return;\n }\n }\n }\n\n // Step 2: Get migration name\n console.log(chalk.cyan(\"\\n--- Step 2: Create Migration File ---\\n\"));\n\n let migrationName = options.name;\n if (!migrationName) {\n migrationName = await question(\n 'Enter migration name (e.g., \"add_users_table\"): '\n );\n }\n\n if (!migrationName || migrationName.trim() === \"\") {\n console.log(chalk.red(\"\\nMigration name cannot be empty. Exiting...\"));\n return;\n }\n\n const sanitizedName = migrationName.trim().replace(/\\s+/g, \"_\");\n console.log(chalk.green(`\\nUsing migration name: ${sanitizedName}`));\n\n // Confirm before creating\n if (!options.yes) {\n const proceed = await confirm(\"\\nCreate this migration?\");\n if (!proceed) {\n console.log(chalk.red(\"\\nMigration cancelled.\"));\n return;\n }\n }\n\n // Create migrations directory if needed\n if (!existsSync(config.migrations)) {\n mkdirSync(config.migrations, { recursive: true });\n }\n\n // Create migration file\n const spinner = ora(\"Creating migration file...\").start();\n const filepath = createMigrationFile(\n config.migrations,\n sanitizedName,\n noChanges ? \"\" : migrationSql\n );\n spinner.succeed(`Created migration file: ${filepath}`);\n\n // Step 3: Apply migration\n console.log(chalk.cyan(\"\\n--- Step 3: Apply Migration ---\\n\"));\n\n let shouldApply = options.apply;\n if (shouldApply === undefined && !options.yes) {\n shouldApply = await confirm(\"Apply this migration now?\");\n }\n\n if (shouldApply) {\n const applySpinner = ora(\"Applying migration...\").start();\n try {\n const applied = await runner.migrateUp();\n if (applied.length > 0) {\n applySpinner.succeed(\n `Applied ${applied.length} migration(s) successfully`\n );\n } else {\n applySpinner.info(\"No pending migrations to apply\");\n }\n } catch (error) {\n applySpinner.fail(\"Failed to apply migration\");\n throw error;\n }\n } else {\n console.log(chalk.dim(\"\\nMigration created but not applied.\"));\n console.log(chalk.dim(`Run \"nexusql up\" to apply pending migrations.`));\n }\n\n console.log(chalk.green(`\\nMigration file: ${filepath}\\n`));\n } finally {\n closePrompts();\n }\n}\n\n/**\n * Apply all pending migrations.\n */\nexport async function up(options: { dryRun?: boolean } = {}): Promise<void> {\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n const runner = new MigrationRunner(db, config.migrations);\n\n const spinner = ora(\"Checking migrations...\").start();\n\n try {\n const pending = await runner.getPendingMigrations();\n\n if (pending.length === 0) {\n spinner.info(\"No pending migrations\");\n return;\n }\n\n if (options.dryRun) {\n spinner.info(`found ${pending.length} pending migration(s):`);\n for (const m of pending) {\n console.log(chalk.cyan(` ○ ${m.name}`));\n }\n return;\n }\n\n spinner.text = \"Applying migrations...\";\n for (const migration of pending) {\n await runner.applyMigration(migration);\n console.log(chalk.green(` ✓ ${migration.name}`));\n }\n spinner.succeed(`Applied ${pending.length} migration(s)`);\n } catch (error) {\n spinner.fail(\"Migration failed\");\n throw error;\n }\n}\n\n/**\n * Rollback applied migrations.\n */\nexport async function down(\n options: { steps?: number; to?: string; dryRun?: boolean } = {}\n): Promise<void> {\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n const runner = new MigrationRunner(db, config.migrations);\n\n const spinner = ora(\"Checking migrations...\").start();\n\n try {\n // Optimization: status() reads all files. A more efficient way to get ordered applied migrations is needed if history is huge.\n // For now, sorting 'applied' from status() works.\n const { applied } = await runner.status();\n const sortedApplied = applied.sort((a, b) =>\n b.version.localeCompare(a.version)\n ); // Newest first\n\n if (sortedApplied.length === 0) {\n spinner.info(\"No applied migrations to rollback\");\n return;\n }\n\n let toRollback: typeof applied = [];\n\n if (options.to) {\n const targetIndex = sortedApplied.findIndex(\n (m) => m.version === options.to\n );\n if (targetIndex === -1) {\n // If options.to is \"rollback to version X\", we want to rollback everything > X.\n // Let's assume options.to is the target version we want to KEEP.\n // So we rollback everything where version > options.to\n toRollback = sortedApplied.filter((m) => m.version > options.to!);\n if (toRollback.length === 0) {\n spinner.info(\n `Version ${options.to} is already the latest applied or doesn't exist in future history.`\n );\n return;\n }\n } else {\n // Rollback migrations newer than X.\n toRollback = sortedApplied.filter((m) => m.version > options.to!);\n }\n } else {\n const steps = options.steps ?? 1;\n toRollback = sortedApplied.slice(0, steps);\n }\n\n if (toRollback.length === 0) {\n spinner.info(\"No migrations to rollback\");\n return;\n }\n\n if (options.dryRun) {\n spinner.info(`Would rollback ${toRollback.length} migration(s):`);\n for (const m of toRollback) {\n console.log(chalk.yellow(` ○ ${m.name}`));\n }\n return;\n }\n\n spinner.text = \"Rolling back migrations...\";\n for (const migration of toRollback) {\n await runner.rollbackMigration(migration);\n console.log(chalk.yellow(` reverted ${migration.name}`));\n }\n spinner.succeed(`Rolled back ${toRollback.length} migration(s)`);\n } catch (error) {\n spinner.fail(\"Rollback failed\");\n throw error;\n }\n}\n\n/**\n * Show migration status.\n */\nexport async function status(): Promise<void> {\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n const runner = new MigrationRunner(db, config.migrations);\n\n const spinner = ora(\"Checking migration status...\").start();\n const { applied, pending } = await runner.status();\n spinner.stop();\n\n console.log(chalk.bold(\"\\nMigration Status\\n\"));\n\n if (applied.length > 0) {\n console.log(chalk.green(\"Applied:\"));\n for (const m of applied) {\n console.log(chalk.green(` ✓ ${m.name}`));\n }\n }\n\n if (pending.length > 0) {\n console.log(chalk.yellow(\"\\nPending:\"));\n for (const m of pending) {\n console.log(chalk.yellow(` ○ ${m.name}`));\n }\n }\n\n if (applied.length === 0 && pending.length === 0) {\n console.log(chalk.dim(\"No migrations found.\"));\n }\n\n console.log();\n}\n","import { readdirSync, statSync, readFileSync, writeFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { generateReverseSql } from \"./reverse.js\";\n\nexport interface MigrationFile {\n name: string;\n path: string;\n version: string;\n mtime: number;\n}\n\n/**\n * List all migration files in a directory.\n */\nexport function listMigrations(migrationsDir: string): MigrationFile[] {\n try {\n const files = readdirSync(migrationsDir);\n return files\n .filter((f) => f.endsWith(\".sql\"))\n .map((f) => {\n const path = join(migrationsDir, f);\n const match = f.match(/^(\\d+)/);\n return {\n name: f,\n path,\n version: match ? match[1] : f,\n mtime: statSync(path).mtime.getTime(),\n };\n })\n .sort((a, b) => a.version.localeCompare(b.version));\n } catch {\n return [];\n }\n}\n\n/**\n * Get the most recently created migration file.\n */\nexport function getMostRecentMigration(\n migrationsDir: string\n): MigrationFile | null {\n const migrations = listMigrations(migrationsDir);\n if (migrations.length === 0) return null;\n\n return migrations.reduce((most, current) =>\n current.mtime > most.mtime ? current : most\n );\n}\n\n/**\n * Generate a new migration filename with timestamp.\n */\nexport function generateMigrationFilename(name: string): string {\n const timestamp = new Date().toISOString().replace(/[-:T]/g, \"\").slice(0, 14);\n const sanitized = name.replace(/\\s+/g, \"_\").toLowerCase();\n return `${timestamp}_${sanitized}.sql`;\n}\n\n/**\n * Create a new migration file with dbmate format.\n */\nexport function createMigrationFile(\n migrationsDir: string,\n name: string,\n upSql: string = \"\",\n downSql: string = \"\"\n): string {\n const filename = generateMigrationFilename(name);\n const filepath = join(migrationsDir, filename);\n\n // Auto-generate down SQL if not provided and up SQL exists\n if (!downSql && upSql) {\n downSql = generateReverseSql(upSql);\n }\n\n const content = `-- migrate:up\n${upSql}\n\n-- migrate:down\n${downSql}\n`;\n\n writeFileSync(filepath, content, \"utf-8\");\n return filepath;\n}\n\n/**\n * Update an existing migration file with SQL.\n */\nexport function updateMigrationFile(filepath: string, upSql: string): void {\n const content = readFileSync(filepath, \"utf-8\");\n const updated = content.replace(\n /-- migrate:up\\n/,\n `-- migrate:up\\n${upSql}\\n\\n`\n );\n writeFileSync(filepath, updated, \"utf-8\");\n}\n\n/**\n * Parse a migration file into up and down sections.\n */\nexport function parseMigrationFile(filepath: string): {\n up: string;\n down: string;\n} {\n const content = readFileSync(filepath, \"utf-8\");\n const upMatch = content.match(\n /-- migrate:up\\n([\\s\\S]*?)(?=-- migrate:down|$)/\n );\n const downMatch = content.match(/-- migrate:down\\n([\\s\\S]*?)$/);\n\n return {\n up: upMatch ? upMatch[1].trim() : \"\",\n down: downMatch ? downMatch[1].trim() : \"\",\n };\n}\n","/**\n * Generate reverse SQL for simple DDL statements.\n * LIMITATION: Only supports basic CREATE/DROP TABLE/INDEX and ADD/DROP COLUMN.\n * Complex changes (ALTER COLUMN type, constraints) need manual intervention.\n */\nexport function generateReverseSql(upSql: string): string {\n if (!upSql) return \"\";\n\n const downStatements: string[] = [];\n const lines = upSql\n .split(\";\")\n .map((l) => l.trim())\n .filter((l) => l);\n\n for (const line of lines) {\n // CREATE TABLE x -> DROP TABLE x\n const createTableMatch = line.match(\n /CREATE\\s+TABLE\\s+(?:IF\\s+NOT\\s+EXISTS\\s+)?([^\\s(]+)/i\n );\n if (createTableMatch) {\n const tableName = createTableMatch[1];\n downStatements.push(`DROP TABLE ${tableName};`);\n continue;\n }\n\n // DROP TABLE x -> Manual\n const dropTableMatch = line.match(\n /DROP\\s+TABLE\\s+(?:IF\\s+EXISTS\\s+)?([^\\s;]+)/i\n );\n if (dropTableMatch) {\n const tableName = dropTableMatch[1];\n downStatements.push(`-- Manual: Recreate table ${tableName}`);\n continue;\n }\n\n // ALTER TABLE x ADD COLUMN y -> ALTER TABLE x DROP COLUMN y\n const addColumnMatch = line.match(\n /ALTER\\s+TABLE\\s+([^\\s]+)\\s+ADD\\s+(?:COLUMN\\s+)?([^\\s;]+)/i\n );\n if (addColumnMatch) {\n const [, tableName, colName] = addColumnMatch;\n downStatements.push(`ALTER TABLE ${tableName} DROP COLUMN ${colName};`);\n continue;\n }\n\n // ALTER TABLE x DROP COLUMN y -> Manual\n const dropColumnMatch = line.match(\n /ALTER\\s+TABLE\\s+([^\\s]+)\\s+DROP\\s+(?:COLUMN\\s+)?([^\\s;]+)/i\n );\n if (dropColumnMatch) {\n const [, tableName, colName] = dropColumnMatch;\n downStatements.push(\n `-- Manual: Add column ${colName} back to table ${tableName}`\n );\n continue;\n }\n\n // CREATE INDEX x -> DROP INDEX x\n const createIndexMatch = line.match(\n /CREATE\\s+(?:UNIQUE\\s+)?INDEX\\s+(?:IF\\s+NOT\\s+EXISTS\\s+)?([^\\s]+)\\s+ON/i\n );\n if (createIndexMatch) {\n const indexName = createIndexMatch[1];\n downStatements.push(`DROP INDEX ${indexName};`);\n continue;\n }\n\n // DROP INDEX x -> Manual\n const dropIndexMatch = line.match(\n /DROP\\s+INDEX\\s+(?:IF\\s+EXISTS\\s+)?([^\\s;]+)/i\n );\n if (dropIndexMatch) {\n const indexName = dropIndexMatch[1];\n downStatements.push(`-- Manual: Recreate index ${indexName}`);\n continue;\n }\n\n // Fallback\n downStatements.push(`-- Manual: Revert ${line.substring(0, 50)}...`);\n }\n\n // Reverse the order of down statements\n return downStatements.reverse().join(\"\\n\");\n}\n","import { Database } from \"./database.js\";\nimport {\n listMigrations,\n parseMigrationFile,\n type MigrationFile,\n} from \"./migrations.js\";\n\nconst SCHEMA_MIGRATIONS_TABLE = \"schema_migrations\";\n\n/**\n * Migration runner - replaces dbmate functionality.\n */\nexport class MigrationRunner {\n private db: Database;\n private migrationsDir: string;\n\n constructor(db: Database, migrationsDir: string) {\n this.db = db;\n this.migrationsDir = migrationsDir;\n }\n\n /**\n * Ensure schema_migrations table exists.\n */\n async ensureTable(): Promise<void> {\n await this.db.exec(`\n CREATE TABLE IF NOT EXISTS ${SCHEMA_MIGRATIONS_TABLE} (\n version VARCHAR(255) PRIMARY KEY\n );\n `);\n }\n\n /**\n * Get list of applied migration versions.\n */\n async getAppliedVersions(): Promise<Set<string>> {\n await this.ensureTable();\n const result = await this.db.query(\n `SELECT version FROM ${SCHEMA_MIGRATIONS_TABLE};`\n );\n return new Set(result.rows.map((row) => row.version as string));\n }\n\n /**\n * Mark a migration as applied.\n */\n async markApplied(version: string, client?: any): Promise<void> {\n await this.ensureTable();\n const sql = `\n INSERT INTO ${SCHEMA_MIGRATIONS_TABLE} (version)\n VALUES ($1)\n ON CONFLICT DO NOTHING;\n `;\n\n if (client) {\n await client.query(sql, [version]);\n } else {\n await this.db.execParams(sql, [version]);\n }\n }\n\n /**\n * Mark a migration as not applied (for rollback).\n */\n async markUnapplied(version: string, client?: any): Promise<void> {\n const sql = `\n DELETE FROM ${SCHEMA_MIGRATIONS_TABLE}\n WHERE version = $1;\n `;\n\n if (client) {\n await client.query(sql, [version]);\n } else {\n await this.db.execParams(sql, [version]);\n }\n }\n\n /**\n * Get pending migrations (not yet applied).\n */\n async getPendingMigrations(): Promise<MigrationFile[]> {\n const all = listMigrations(this.migrationsDir);\n const applied = await this.getAppliedVersions();\n return all.filter((m) => !applied.has(m.version));\n }\n\n /**\n * Apply a single migration.\n */\n async applyMigration(migration: MigrationFile): Promise<void> {\n const { up } = parseMigrationFile(migration.path);\n\n await this.db.withTransaction(async (client) => {\n if (up) {\n await client.query(up);\n }\n await this.markApplied(migration.version, client);\n });\n }\n\n /**\n * Roll back a single migration.\n */\n async rollbackMigration(migration: MigrationFile): Promise<void> {\n const { down } = parseMigrationFile(migration.path);\n\n await this.db.withTransaction(async (client) => {\n if (down) {\n await client.query(down);\n }\n await this.markUnapplied(migration.version, client);\n });\n }\n\n /**\n * Apply all pending migrations.\n */\n async migrateUp(): Promise<MigrationFile[]> {\n const pending = await this.getPendingMigrations();\n for (const migration of pending) {\n await this.applyMigration(migration);\n }\n return pending;\n }\n\n /**\n * Get migration status.\n */\n async status(): Promise<{\n applied: MigrationFile[];\n pending: MigrationFile[];\n }> {\n const all = listMigrations(this.migrationsDir);\n const appliedVersions = await this.getAppliedVersions();\n\n return {\n applied: all.filter((m) => appliedVersions.has(m.version)),\n pending: all.filter((m) => !appliedVersions.has(m.version)),\n };\n }\n}\n","import * as readline from \"readline\";\n\nlet rl: readline.Interface | null = null;\n\n/**\n * Get or create readline interface.\n */\nfunction getReadline(): readline.Interface {\n if (!rl) {\n rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n terminal: process.stdin.isTTY ?? false,\n });\n\n // Handle close event to reset rl\n rl.on(\"close\", () => {\n rl = null;\n });\n }\n return rl;\n}\n\n/**\n * Close readline interface.\n */\nexport function closePrompts(): void {\n if (rl) {\n rl.close();\n rl = null;\n }\n}\n\n/**\n * Ask user a question and return their answer.\n */\nexport function question(query: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const readline = getReadline();\n\n // Handle the case where readline closes unexpectedly\n const closeHandler = () => {\n reject(new Error(\"Readline closed unexpectedly\"));\n };\n readline.once(\"close\", closeHandler);\n\n readline.question(query, (answer) => {\n readline.removeListener(\"close\", closeHandler);\n resolve(answer);\n });\n });\n}\n\n/**\n * Ask a yes/no question.\n */\nexport async function confirm(query: string): Promise<boolean> {\n const answer = await question(`${query} (yes/no): `);\n return answer.toLowerCase() === \"yes\" || answer.toLowerCase() === \"y\";\n}\n","import chalk from 'chalk';\nimport ora from 'ora';\nimport { Database } from '../lib/database.js';\nimport { MigrationRunner } from '../lib/runner.js';\nimport { loadConfig, getDatabaseUrl } from '../lib/config.js';\n\n/**\n * Mark a migration as applied without running it.\n */\nexport async function markApplied(version: string): Promise<void> {\n if (!version) {\n console.error(chalk.red('Error: Migration version is required'));\n console.log(chalk.dim('\\nUsage: nexusql mark-applied <version>'));\n console.log(chalk.dim('Example: nexusql mark-applied 20251209153535'));\n process.exit(1);\n }\n\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n const runner = new MigrationRunner(db, config.migrations);\n\n const spinner = ora(`Marking migration ${version} as applied...`).start();\n\n try {\n await runner.markApplied(version);\n spinner.succeed(`Migration ${version} marked as applied`);\n } catch (error) {\n spinner.fail('Failed to mark migration as applied');\n throw error;\n }\n}\n","import { writeFileSync, existsSync, mkdirSync } from 'fs';\nimport { join } from 'path';\nimport chalk from 'chalk';\nimport { generateConfigTemplate } from '../lib/config.js';\n\nexport interface InitOptions {\n force?: boolean;\n}\n\n/**\n * Initialize nexusql configuration.\n */\nexport async function init(options: InitOptions = {}): Promise<void> {\n const cwd = process.cwd();\n\n // Create config file\n const configPath = join(cwd, 'nexusql.config.js');\n\n if (existsSync(configPath) && !options.force) {\n console.log(chalk.yellow('nexusql.config.js already exists.'));\n console.log(chalk.dim('Use --force to overwrite.'));\n return;\n }\n\n writeFileSync(configPath, generateConfigTemplate(), 'utf-8');\n console.log(chalk.green('Created nexusql.config.js'));\n\n // Create migrations directory\n const migrationsDir = join(cwd, 'db', 'migrations');\n if (!existsSync(migrationsDir)) {\n mkdirSync(migrationsDir, { recursive: true });\n console.log(chalk.green('Created db/migrations/'));\n }\n\n // Create .env.example if it doesn't exist\n const envExamplePath = join(cwd, '.env.example');\n if (!existsSync(envExamplePath)) {\n writeFileSync(\n envExamplePath,\n 'DATABASE_URL=postgres://user:password@localhost:5432/database\\n',\n 'utf-8'\n );\n console.log(chalk.green('Created .env.example'));\n }\n\n console.log(chalk.bold('\\nNext steps:'));\n console.log(' 1. Copy .env.example to .env and set your DATABASE_URL');\n console.log(' 2. Create your schema.dbml file');\n console.log(' 3. Run \"nexusql gen\" to generate migration SQL');\n console.log(' 4. Run \"nexusql migrate\" to create and apply migrations\\n');\n}\n","import { readFileSync, writeFileSync } from \"fs\";\nimport { resolve } from \"path\";\nimport ora from \"ora\";\nimport { loadConfig } from \"../lib/config.js\";\nimport { generateTypes } from \"../lib/types-generator.js\";\n\nexport interface TypesOptions {\n output?: string;\n}\n\nexport async function types(options: TypesOptions = {}): Promise<void> {\n const config = await loadConfig();\n const spinner = ora(\"Generating TypeScript definitions...\").start();\n\n try {\n const schemaPath = resolve(config.dbmlFile);\n const dbmlContent = readFileSync(schemaPath, \"utf-8\");\n\n const tsContent = generateTypes(dbmlContent);\n\n // Determine output path: CLI flag > config > default\n const outputPath = options.output || \"src/types/schema.d.ts\";\n\n // Ensure directory exists? writeFileSync handles it if recursive? No.\n // But let's assume user provides valid path or we just write to current.\n\n writeFileSync(resolve(outputPath), tsContent, \"utf-8\");\n\n spinner.succeed(`Generated types at: ${outputPath}`);\n } catch (error) {\n spinner.fail(\"Failed to generate types\");\n throw error;\n }\n}\n","import { Parser } from '@dbml/core';\n\nexport interface GenerateTypesOptions {\n output?: string;\n}\n\nconst TYPE_MAP: Record<string, string> = {\n // Numbers\n int: 'number',\n integer: 'number',\n smallint: 'number',\n bigint: 'number',\n serial: 'number',\n bigserial: 'number',\n decimal: 'number',\n numeric: 'number',\n real: 'number',\n float: 'number',\n double: 'number',\n 'double precision': 'number',\n\n // Strings\n varchar: 'string',\n char: 'string',\n character: 'string',\n text: 'string',\n uuid: 'string',\n \n // Boolean\n bool: 'boolean',\n boolean: 'boolean',\n\n // Dates\n date: 'Date',\n datetime: 'Date',\n timestamp: 'Date',\n timestamptz: 'Date',\n time: 'string',\n timetz: 'string',\n interval: 'string',\n\n // JSON\n json: 'any',\n jsonb: 'any',\n \n // Others\n inet: 'string',\n cidr: 'string',\n macaddr: 'string',\n};\n\nfunction mapType(dbmlType: string): string {\n const normalized = dbmlType.toLowerCase().split('(')[0].trim();\n return TYPE_MAP[normalized] || 'any';\n}\n\nfunction toPascalCase(str: string): string {\n return str\n .replace(/(?:^|[-_])(\\w)/g, (_, c) => c.toUpperCase())\n .replace(/[-_]/g, '');\n}\n\nexport function generateTypes(dbmlContent: string): string {\n const database = new Parser().parse(dbmlContent, 'dbml');\n \n // @ts-ignore - The types for @dbml/core might be incomplete or I'm accessing internal structure\n const tables = database.schemas.flatMap(s => s.tables);\n // @ts-ignore\n const enums = database.schemas.flatMap(s => s.enums);\n\n let output = `/**\n * This file was generated by nexusql.\n * Do not modify this file manually.\n */\n\n`;\n\n // Generate Enums\n for (const enm of enums) {\n output += `export enum ${toPascalCase(enm.name)} {\n`;\n for (const value of enm.values) {\n output += ` ${value.name} = '${value.name}',\n`;\n }\n output += `}\n\n`;\n }\n\n // Generate Tables\n for (const table of tables) {\n const interfaceName = toPascalCase(table.name);\n output += `export interface ${interfaceName} {\n`;\n\n for (const field of table.fields) {\n const isOptional = !field.not_null || field.increment; // Auto-increment fields are optional on insert, but mandatory on select... \n // For a general \"Row\" interface, nullable fields are null | type.\n // Let's stick to the \"Select\" shape: if it can be null, it is type | null.\n \n const tsType = mapType(field.type.type_name);\n const nullableSuffix = field.not_null ? '' : ' | null';\n \n output += ` ${field.name}: ${tsType}${nullableSuffix};\n`;\n }\n\n output += `}\n\n`;\n }\n\n return output;\n}\n","import chalk from 'chalk';\nimport { loadConfig, getDatabaseUrl } from '../lib/config.js';\nimport { Database } from '../lib/database.js';\nimport { parseAndEncodeDbUrl } from '../lib/db-url.js';\n\n/**\n * Test database connection.\n */\nexport async function testConnection(): Promise<void> {\n console.log(chalk.bold('Testing database connection...\\n'));\n\n try {\n // Load config and get DATABASE_URL\n const config = await loadConfig();\n const rawUrl = getDatabaseUrl(config);\n\n // Parse and display connection details\n const parsed = parseAndEncodeDbUrl(rawUrl);\n console.log(chalk.cyan('Connection details:'));\n console.log(chalk.dim(' Protocol:'), parsed.protocol);\n console.log(chalk.dim(' User:'), parsed.user);\n console.log(chalk.dim(' Host:'), parsed.host);\n console.log(chalk.dim(' Port:'), parsed.port);\n console.log(chalk.dim(' Database:'), parsed.database);\n console.log(chalk.dim(' Password:'), '***' + decodeURIComponent(parsed.password).slice(-4));\n console.log();\n\n // Attempt to connect\n const db = new Database(rawUrl);\n const result = await db.query('SELECT current_user, current_database(), version()');\n\n console.log(chalk.green('✓ Connection successful!\\n'));\n console.log(chalk.cyan('Server info:'));\n console.log(chalk.dim(' Current user:'), result.rows[0].current_user);\n console.log(chalk.dim(' Current database:'), result.rows[0].current_database);\n console.log(chalk.dim(' PostgreSQL version:'), (result.rows[0].version as string).split(',')[0]);\n } catch (error) {\n console.log(chalk.red('✗ Connection failed!\\n'));\n console.error(chalk.red('Error:'), (error as Error).message);\n\n // Provide helpful hints\n console.log(chalk.yellow('\\nTroubleshooting tips:'));\n console.log(' • Check DATABASE_URL in your .env file');\n console.log(' • Ensure special characters in password are NOT URL-encoded');\n console.log(' • Verify the database server is running');\n console.log(' • Check host, port, username, and database name');\n\n process.exit(1);\n }\n}\n"],"mappings":"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CT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,QAAU;AAAA,QACT,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,UAAY;AAAA,QACX,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAQ;AAAA,QACP,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AA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A,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAQ;AAAA,QACP,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,QAAU;AAAA,QACT,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAQ;AAAA,QACP,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UAC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AAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACr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","names":["readFileSync","join","process","process","styles","chalk","styles","process","process","onetime","process","process","process","process","process","isUnicodeSupported","env","process","import_cli_spinners","process","isUnicodeSupported","cliSpinners","existsSync","readFileSync","writeFileSync","join","join","join","writeFileSync","readFileSync","up","down","resolve","readline","existsSync","writeFileSync","existsSync","mkdirSync","join","join","existsSync","writeFileSync","mkdirSync","readFileSync","writeFileSync","resolve","resolve","readFileSync","writeFileSync","readFileSync","join"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/spinners.json","../node_modules/.pnpm/cli-spinners@2.9.2/node_modules/cli-spinners/index.js","../src/cli.ts","../src/commands/gen.ts","../node_modules/.pnpm/ora@8.2.0/node_modules/ora/index.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/utilities.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js","../node_modules/.pnpm/cli-cursor@5.0.0/node_modules/cli-cursor/index.js","../node_modules/.pnpm/restore-cursor@5.1.0/node_modules/restore-cursor/index.js","../node_modules/.pnpm/mimic-function@5.0.1/node_modules/mimic-function/index.js","../node_modules/.pnpm/onetime@7.0.0/node_modules/onetime/index.js","../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/src/signals.ts","../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/src/index.ts","../node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../node_modules/.pnpm/log-symbols@6.0.0/node_modules/log-symbols/index.js","../node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js","../node_modules/.pnpm/strip-ansi@7.1.2/node_modules/strip-ansi/index.js","../node_modules/.pnpm/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js","../node_modules/.pnpm/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js","../node_modules/.pnpm/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs","../node_modules/.pnpm/string-width@7.2.0/node_modules/string-width/index.js","../node_modules/.pnpm/is-interactive@2.0.0/node_modules/is-interactive/index.js","../node_modules/.pnpm/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js","../node_modules/.pnpm/stdin-discarder@0.2.2/node_modules/stdin-discarder/index.js","../src/lib/database.ts","../src/lib/db-url.ts","../src/lib/dbml.ts","../src/lib/migra.ts","../src/lib/config.ts","../src/utils/check-migra.ts","../src/commands/migrate.ts","../src/lib/migrations.ts","../src/lib/reverse.ts","../src/lib/runner.ts","../src/utils/prompts.ts","../src/commands/mark-applied.ts","../src/commands/init.ts","../src/commands/types.ts","../src/lib/types-generator.ts","../src/commands/test-connection.ts"],"sourcesContent":["{\n\t\"dots\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠹\",\n\t\t\t\"⠸\",\n\t\t\t\"⠼\",\n\t\t\t\"⠴\",\n\t\t\t\"⠦\",\n\t\t\t\"⠧\",\n\t\t\t\"⠇\",\n\t\t\t\"⠏\"\n\t\t]\n\t},\n\t\"dots2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⣾\",\n\t\t\t\"⣽\",\n\t\t\t\"⣻\",\n\t\t\t\"⢿\",\n\t\t\t\"⡿\",\n\t\t\t\"⣟\",\n\t\t\t\"⣯\",\n\t\t\t\"⣷\"\n\t\t]\n\t},\n\t\"dots3\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠞\",\n\t\t\t\"⠖\",\n\t\t\t\"⠦\",\n\t\t\t\"⠴\",\n\t\t\t\"⠲\",\n\t\t\t\"⠳\",\n\t\t\t\"⠓\"\n\t\t]\n\t},\n\t\"dots4\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠄\",\n\t\t\t\"⠆\",\n\t\t\t\"⠇\",\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠸\",\n\t\t\t\"⠰\",\n\t\t\t\"⠠\",\n\t\t\t\"⠰\",\n\t\t\t\"⠸\",\n\t\t\t\"⠙\",\n\t\t\t\"⠋\",\n\t\t\t\"⠇\",\n\t\t\t\"⠆\"\n\t\t]\n\t},\n\t\"dots5\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠋\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠲\",\n\t\t\t\"⠴\",\n\t\t\t\"⠦\",\n\t\t\t\"⠖\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠋\"\n\t\t]\n\t},\n\t\"dots6\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠉\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠲\",\n\t\t\t\"⠴\",\n\t\t\t\"⠤\",\n\t\t\t\"⠄\",\n\t\t\t\"⠄\",\n\t\t\t\"⠤\",\n\t\t\t\"⠴\",\n\t\t\t\"⠲\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠚\",\n\t\t\t\"⠙\",\n\t\t\t\"⠉\",\n\t\t\t\"⠁\"\n\t\t]\n\t},\n\t\"dots7\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠈\",\n\t\t\t\"⠉\",\n\t\t\t\"⠋\",\n\t\t\t\"⠓\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠖\",\n\t\t\t\"⠦\",\n\t\t\t\"⠤\",\n\t\t\t\"⠠\",\n\t\t\t\"⠠\",\n\t\t\t\"⠤\",\n\t\t\t\"⠦\",\n\t\t\t\"⠖\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠋\",\n\t\t\t\"⠉\",\n\t\t\t\"⠈\"\n\t\t]\n\t},\n\t\"dots8\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠁\",\n\t\t\t\"⠉\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠒\",\n\t\t\t\"⠂\",\n\t\t\t\"⠂\",\n\t\t\t\"⠒\",\n\t\t\t\"⠲\",\n\t\t\t\"⠴\",\n\t\t\t\"⠤\",\n\t\t\t\"⠄\",\n\t\t\t\"⠄\",\n\t\t\t\"⠤\",\n\t\t\t\"⠠\",\n\t\t\t\"⠠\",\n\t\t\t\"⠤\",\n\t\t\t\"⠦\",\n\t\t\t\"⠖\",\n\t\t\t\"⠒\",\n\t\t\t\"⠐\",\n\t\t\t\"⠐\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠋\",\n\t\t\t\"⠉\",\n\t\t\t\"⠈\",\n\t\t\t\"⠈\"\n\t\t]\n\t},\n\t\"dots9\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⢹\",\n\t\t\t\"⢺\",\n\t\t\t\"⢼\",\n\t\t\t\"⣸\",\n\t\t\t\"⣇\",\n\t\t\t\"⡧\",\n\t\t\t\"⡗\",\n\t\t\t\"⡏\"\n\t\t]\n\t},\n\t\"dots10\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⢄\",\n\t\t\t\"⢂\",\n\t\t\t\"⢁\",\n\t\t\t\"⡁\",\n\t\t\t\"⡈\",\n\t\t\t\"⡐\",\n\t\t\t\"⡠\"\n\t\t]\n\t},\n\t\"dots11\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠄\",\n\t\t\t\"⡀\",\n\t\t\t\"⢀\",\n\t\t\t\"⠠\",\n\t\t\t\"⠐\",\n\t\t\t\"⠈\"\n\t\t]\n\t},\n\t\"dots12\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⢀⠀\",\n\t\t\t\"⡀⠀\",\n\t\t\t\"⠄⠀\",\n\t\t\t\"⢂⠀\",\n\t\t\t\"⡂⠀\",\n\t\t\t\"⠅⠀\",\n\t\t\t\"⢃⠀\",\n\t\t\t\"⡃⠀\",\n\t\t\t\"⠍⠀\",\n\t\t\t\"⢋⠀\",\n\t\t\t\"⡋⠀\",\n\t\t\t\"⠍⠁\",\n\t\t\t\"⢋⠁\",\n\t\t\t\"⡋⠁\",\n\t\t\t\"⠍⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠩\",\n\t\t\t\"⠈⢙\",\n\t\t\t\"⠈⡙\",\n\t\t\t\"⢈⠩\",\n\t\t\t\"⡀⢙\",\n\t\t\t\"⠄⡙\",\n\t\t\t\"⢂⠩\",\n\t\t\t\"⡂⢘\",\n\t\t\t\"⠅⡘\",\n\t\t\t\"⢃⠨\",\n\t\t\t\"⡃⢐\",\n\t\t\t\"⠍⡐\",\n\t\t\t\"⢋⠠\",\n\t\t\t\"⡋⢀\",\n\t\t\t\"⠍⡁\",\n\t\t\t\"⢋⠁\",\n\t\t\t\"⡋⠁\",\n\t\t\t\"⠍⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠋⠉\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠙\",\n\t\t\t\"⠉⠩\",\n\t\t\t\"⠈⢙\",\n\t\t\t\"⠈⡙\",\n\t\t\t\"⠈⠩\",\n\t\t\t\"⠀⢙\",\n\t\t\t\"⠀⡙\",\n\t\t\t\"⠀⠩\",\n\t\t\t\"⠀⢘\",\n\t\t\t\"⠀⡘\",\n\t\t\t\"⠀⠨\",\n\t\t\t\"⠀⢐\",\n\t\t\t\"⠀⡐\",\n\t\t\t\"⠀⠠\",\n\t\t\t\"⠀⢀\",\n\t\t\t\"⠀⡀\"\n\t\t]\n\t},\n\t\"dots13\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⣼\",\n\t\t\t\"⣹\",\n\t\t\t\"⢻\",\n\t\t\t\"⠿\",\n\t\t\t\"⡟\",\n\t\t\t\"⣏\",\n\t\t\t\"⣧\",\n\t\t\t\"⣶\"\n\t\t]\n\t},\n\t\"dots8Bit\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠀\",\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠃\",\n\t\t\t\"⠄\",\n\t\t\t\"⠅\",\n\t\t\t\"⠆\",\n\t\t\t\"⠇\",\n\t\t\t\"⡀\",\n\t\t\t\"⡁\",\n\t\t\t\"⡂\",\n\t\t\t\"⡃\",\n\t\t\t\"⡄\",\n\t\t\t\"⡅\",\n\t\t\t\"⡆\",\n\t\t\t\"⡇\",\n\t\t\t\"⠈\",\n\t\t\t\"⠉\",\n\t\t\t\"⠊\",\n\t\t\t\"⠋\",\n\t\t\t\"⠌\",\n\t\t\t\"⠍\",\n\t\t\t\"⠎\",\n\t\t\t\"⠏\",\n\t\t\t\"⡈\",\n\t\t\t\"⡉\",\n\t\t\t\"⡊\",\n\t\t\t\"⡋\",\n\t\t\t\"⡌\",\n\t\t\t\"⡍\",\n\t\t\t\"⡎\",\n\t\t\t\"⡏\",\n\t\t\t\"⠐\",\n\t\t\t\"⠑\",\n\t\t\t\"⠒\",\n\t\t\t\"⠓\",\n\t\t\t\"⠔\",\n\t\t\t\"⠕\",\n\t\t\t\"⠖\",\n\t\t\t\"⠗\",\n\t\t\t\"⡐\",\n\t\t\t\"⡑\",\n\t\t\t\"⡒\",\n\t\t\t\"⡓\",\n\t\t\t\"⡔\",\n\t\t\t\"⡕\",\n\t\t\t\"⡖\",\n\t\t\t\"⡗\",\n\t\t\t\"⠘\",\n\t\t\t\"⠙\",\n\t\t\t\"⠚\",\n\t\t\t\"⠛\",\n\t\t\t\"⠜\",\n\t\t\t\"⠝\",\n\t\t\t\"⠞\",\n\t\t\t\"⠟\",\n\t\t\t\"⡘\",\n\t\t\t\"⡙\",\n\t\t\t\"⡚\",\n\t\t\t\"⡛\",\n\t\t\t\"⡜\",\n\t\t\t\"⡝\",\n\t\t\t\"⡞\",\n\t\t\t\"⡟\",\n\t\t\t\"⠠\",\n\t\t\t\"⠡\",\n\t\t\t\"⠢\",\n\t\t\t\"⠣\",\n\t\t\t\"⠤\",\n\t\t\t\"⠥\",\n\t\t\t\"⠦\",\n\t\t\t\"⠧\",\n\t\t\t\"⡠\",\n\t\t\t\"⡡\",\n\t\t\t\"⡢\",\n\t\t\t\"⡣\",\n\t\t\t\"⡤\",\n\t\t\t\"⡥\",\n\t\t\t\"⡦\",\n\t\t\t\"⡧\",\n\t\t\t\"⠨\",\n\t\t\t\"⠩\",\n\t\t\t\"⠪\",\n\t\t\t\"⠫\",\n\t\t\t\"⠬\",\n\t\t\t\"⠭\",\n\t\t\t\"⠮\",\n\t\t\t\"⠯\",\n\t\t\t\"⡨\",\n\t\t\t\"⡩\",\n\t\t\t\"⡪\",\n\t\t\t\"⡫\",\n\t\t\t\"⡬\",\n\t\t\t\"⡭\",\n\t\t\t\"⡮\",\n\t\t\t\"⡯\",\n\t\t\t\"⠰\",\n\t\t\t\"⠱\",\n\t\t\t\"⠲\",\n\t\t\t\"⠳\",\n\t\t\t\"⠴\",\n\t\t\t\"⠵\",\n\t\t\t\"⠶\",\n\t\t\t\"⠷\",\n\t\t\t\"⡰\",\n\t\t\t\"⡱\",\n\t\t\t\"⡲\",\n\t\t\t\"⡳\",\n\t\t\t\"⡴\",\n\t\t\t\"⡵\",\n\t\t\t\"⡶\",\n\t\t\t\"⡷\",\n\t\t\t\"⠸\",\n\t\t\t\"⠹\",\n\t\t\t\"⠺\",\n\t\t\t\"⠻\",\n\t\t\t\"⠼\",\n\t\t\t\"⠽\",\n\t\t\t\"⠾\",\n\t\t\t\"⠿\",\n\t\t\t\"⡸\",\n\t\t\t\"⡹\",\n\t\t\t\"⡺\",\n\t\t\t\"⡻\",\n\t\t\t\"⡼\",\n\t\t\t\"⡽\",\n\t\t\t\"⡾\",\n\t\t\t\"⡿\",\n\t\t\t\"⢀\",\n\t\t\t\"⢁\",\n\t\t\t\"⢂\",\n\t\t\t\"⢃\",\n\t\t\t\"⢄\",\n\t\t\t\"⢅\",\n\t\t\t\"⢆\",\n\t\t\t\"⢇\",\n\t\t\t\"⣀\",\n\t\t\t\"⣁\",\n\t\t\t\"⣂\",\n\t\t\t\"⣃\",\n\t\t\t\"⣄\",\n\t\t\t\"⣅\",\n\t\t\t\"⣆\",\n\t\t\t\"⣇\",\n\t\t\t\"⢈\",\n\t\t\t\"⢉\",\n\t\t\t\"⢊\",\n\t\t\t\"⢋\",\n\t\t\t\"⢌\",\n\t\t\t\"⢍\",\n\t\t\t\"⢎\",\n\t\t\t\"⢏\",\n\t\t\t\"⣈\",\n\t\t\t\"⣉\",\n\t\t\t\"⣊\",\n\t\t\t\"⣋\",\n\t\t\t\"⣌\",\n\t\t\t\"⣍\",\n\t\t\t\"⣎\",\n\t\t\t\"⣏\",\n\t\t\t\"⢐\",\n\t\t\t\"⢑\",\n\t\t\t\"⢒\",\n\t\t\t\"⢓\",\n\t\t\t\"⢔\",\n\t\t\t\"⢕\",\n\t\t\t\"⢖\",\n\t\t\t\"⢗\",\n\t\t\t\"⣐\",\n\t\t\t\"⣑\",\n\t\t\t\"⣒\",\n\t\t\t\"⣓\",\n\t\t\t\"⣔\",\n\t\t\t\"⣕\",\n\t\t\t\"⣖\",\n\t\t\t\"⣗\",\n\t\t\t\"⢘\",\n\t\t\t\"⢙\",\n\t\t\t\"⢚\",\n\t\t\t\"⢛\",\n\t\t\t\"⢜\",\n\t\t\t\"⢝\",\n\t\t\t\"⢞\",\n\t\t\t\"⢟\",\n\t\t\t\"⣘\",\n\t\t\t\"⣙\",\n\t\t\t\"⣚\",\n\t\t\t\"⣛\",\n\t\t\t\"⣜\",\n\t\t\t\"⣝\",\n\t\t\t\"⣞\",\n\t\t\t\"⣟\",\n\t\t\t\"⢠\",\n\t\t\t\"⢡\",\n\t\t\t\"⢢\",\n\t\t\t\"⢣\",\n\t\t\t\"⢤\",\n\t\t\t\"⢥\",\n\t\t\t\"⢦\",\n\t\t\t\"⢧\",\n\t\t\t\"⣠\",\n\t\t\t\"⣡\",\n\t\t\t\"⣢\",\n\t\t\t\"⣣\",\n\t\t\t\"⣤\",\n\t\t\t\"⣥\",\n\t\t\t\"⣦\",\n\t\t\t\"⣧\",\n\t\t\t\"⢨\",\n\t\t\t\"⢩\",\n\t\t\t\"⢪\",\n\t\t\t\"⢫\",\n\t\t\t\"⢬\",\n\t\t\t\"⢭\",\n\t\t\t\"⢮\",\n\t\t\t\"⢯\",\n\t\t\t\"⣨\",\n\t\t\t\"⣩\",\n\t\t\t\"⣪\",\n\t\t\t\"⣫\",\n\t\t\t\"⣬\",\n\t\t\t\"⣭\",\n\t\t\t\"⣮\",\n\t\t\t\"⣯\",\n\t\t\t\"⢰\",\n\t\t\t\"⢱\",\n\t\t\t\"⢲\",\n\t\t\t\"⢳\",\n\t\t\t\"⢴\",\n\t\t\t\"⢵\",\n\t\t\t\"⢶\",\n\t\t\t\"⢷\",\n\t\t\t\"⣰\",\n\t\t\t\"⣱\",\n\t\t\t\"⣲\",\n\t\t\t\"⣳\",\n\t\t\t\"⣴\",\n\t\t\t\"⣵\",\n\t\t\t\"⣶\",\n\t\t\t\"⣷\",\n\t\t\t\"⢸\",\n\t\t\t\"⢹\",\n\t\t\t\"⢺\",\n\t\t\t\"⢻\",\n\t\t\t\"⢼\",\n\t\t\t\"⢽\",\n\t\t\t\"⢾\",\n\t\t\t\"⢿\",\n\t\t\t\"⣸\",\n\t\t\t\"⣹\",\n\t\t\t\"⣺\",\n\t\t\t\"⣻\",\n\t\t\t\"⣼\",\n\t\t\t\"⣽\",\n\t\t\t\"⣾\",\n\t\t\t\"⣿\"\n\t\t]\n\t},\n\t\"sand\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠄\",\n\t\t\t\"⡀\",\n\t\t\t\"⡈\",\n\t\t\t\"⡐\",\n\t\t\t\"⡠\",\n\t\t\t\"⣀\",\n\t\t\t\"⣁\",\n\t\t\t\"⣂\",\n\t\t\t\"⣄\",\n\t\t\t\"⣌\",\n\t\t\t\"⣔\",\n\t\t\t\"⣤\",\n\t\t\t\"⣥\",\n\t\t\t\"⣦\",\n\t\t\t\"⣮\",\n\t\t\t\"⣶\",\n\t\t\t\"⣷\",\n\t\t\t\"⣿\",\n\t\t\t\"⡿\",\n\t\t\t\"⠿\",\n\t\t\t\"⢟\",\n\t\t\t\"⠟\",\n\t\t\t\"⡛\",\n\t\t\t\"⠛\",\n\t\t\t\"⠫\",\n\t\t\t\"⢋\",\n\t\t\t\"⠋\",\n\t\t\t\"⠍\",\n\t\t\t\"⡉\",\n\t\t\t\"⠉\",\n\t\t\t\"⠑\",\n\t\t\t\"⠡\",\n\t\t\t\"⢁\"\n\t\t]\n\t},\n\t\"line\": {\n\t\t\"interval\": 130,\n\t\t\"frames\": [\n\t\t\t\"-\",\n\t\t\t\"\\\\\",\n\t\t\t\"|\",\n\t\t\t\"/\"\n\t\t]\n\t},\n\t\"line2\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"⠂\",\n\t\t\t\"-\",\n\t\t\t\"–\",\n\t\t\t\"—\",\n\t\t\t\"–\",\n\t\t\t\"-\"\n\t\t]\n\t},\n\t\"pipe\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"┤\",\n\t\t\t\"┘\",\n\t\t\t\"┴\",\n\t\t\t\"└\",\n\t\t\t\"├\",\n\t\t\t\"┌\",\n\t\t\t\"┬\",\n\t\t\t\"┐\"\n\t\t]\n\t},\n\t\"simpleDots\": {\n\t\t\"interval\": 400,\n\t\t\"frames\": [\n\t\t\t\". \",\n\t\t\t\".. \",\n\t\t\t\"...\",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"simpleDotsScrolling\": {\n\t\t\"interval\": 200,\n\t\t\"frames\": [\n\t\t\t\". \",\n\t\t\t\".. \",\n\t\t\t\"...\",\n\t\t\t\" ..\",\n\t\t\t\" .\",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"star\": {\n\t\t\"interval\": 70,\n\t\t\"frames\": [\n\t\t\t\"✶\",\n\t\t\t\"✸\",\n\t\t\t\"✹\",\n\t\t\t\"✺\",\n\t\t\t\"✹\",\n\t\t\t\"✷\"\n\t\t]\n\t},\n\t\"star2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"+\",\n\t\t\t\"x\",\n\t\t\t\"*\"\n\t\t]\n\t},\n\t\"flip\": {\n\t\t\"interval\": 70,\n\t\t\"frames\": [\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"-\",\n\t\t\t\"`\",\n\t\t\t\"`\",\n\t\t\t\"'\",\n\t\t\t\"´\",\n\t\t\t\"-\",\n\t\t\t\"_\",\n\t\t\t\"_\",\n\t\t\t\"_\"\n\t\t]\n\t},\n\t\"hamburger\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"☱\",\n\t\t\t\"☲\",\n\t\t\t\"☴\"\n\t\t]\n\t},\n\t\"growVertical\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▁\",\n\t\t\t\"▃\",\n\t\t\t\"▄\",\n\t\t\t\"▅\",\n\t\t\t\"▆\",\n\t\t\t\"▇\",\n\t\t\t\"▆\",\n\t\t\t\"▅\",\n\t\t\t\"▄\",\n\t\t\t\"▃\"\n\t\t]\n\t},\n\t\"growHorizontal\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▏\",\n\t\t\t\"▎\",\n\t\t\t\"▍\",\n\t\t\t\"▌\",\n\t\t\t\"▋\",\n\t\t\t\"▊\",\n\t\t\t\"▉\",\n\t\t\t\"▊\",\n\t\t\t\"▋\",\n\t\t\t\"▌\",\n\t\t\t\"▍\",\n\t\t\t\"▎\"\n\t\t]\n\t},\n\t\"balloon\": {\n\t\t\"interval\": 140,\n\t\t\"frames\": [\n\t\t\t\" \",\n\t\t\t\".\",\n\t\t\t\"o\",\n\t\t\t\"O\",\n\t\t\t\"@\",\n\t\t\t\"*\",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"balloon2\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\".\",\n\t\t\t\"o\",\n\t\t\t\"O\",\n\t\t\t\"°\",\n\t\t\t\"O\",\n\t\t\t\"o\",\n\t\t\t\".\"\n\t\t]\n\t},\n\t\"noise\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"▓\",\n\t\t\t\"▒\",\n\t\t\t\"░\"\n\t\t]\n\t},\n\t\"bounce\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"⠁\",\n\t\t\t\"⠂\",\n\t\t\t\"⠄\",\n\t\t\t\"⠂\"\n\t\t]\n\t},\n\t\"boxBounce\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▖\",\n\t\t\t\"▘\",\n\t\t\t\"▝\",\n\t\t\t\"▗\"\n\t\t]\n\t},\n\t\"boxBounce2\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"▌\",\n\t\t\t\"▀\",\n\t\t\t\"▐\",\n\t\t\t\"▄\"\n\t\t]\n\t},\n\t\"triangle\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"◢\",\n\t\t\t\"◣\",\n\t\t\t\"◤\",\n\t\t\t\"◥\"\n\t\t]\n\t},\n\t\"binary\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"010010\",\n \"001100\",\n \"100101\",\n \"111010\",\n \"111101\",\n \"010111\",\n\t\t\t\"101011\",\n\t\t\t\"111000\",\n\t\t\t\"110011\",\n\t\t\t\"110101\"\n\t\t]\n\t},\n\t\"arc\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"◜\",\n\t\t\t\"◠\",\n\t\t\t\"◝\",\n\t\t\t\"◞\",\n\t\t\t\"◡\",\n\t\t\t\"◟\"\n\t\t]\n\t},\n\t\"circle\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"◡\",\n\t\t\t\"⊙\",\n\t\t\t\"◠\"\n\t\t]\n\t},\n\t\"squareCorners\": {\n\t\t\"interval\": 180,\n\t\t\"frames\": [\n\t\t\t\"◰\",\n\t\t\t\"◳\",\n\t\t\t\"◲\",\n\t\t\t\"◱\"\n\t\t]\n\t},\n\t\"circleQuarters\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"◴\",\n\t\t\t\"◷\",\n\t\t\t\"◶\",\n\t\t\t\"◵\"\n\t\t]\n\t},\n\t\"circleHalves\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"◐\",\n\t\t\t\"◓\",\n\t\t\t\"◑\",\n\t\t\t\"◒\"\n\t\t]\n\t},\n\t\"squish\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"╫\",\n\t\t\t\"╪\"\n\t\t]\n\t},\n\t\"toggle\": {\n\t\t\"interval\": 250,\n\t\t\"frames\": [\n\t\t\t\"⊶\",\n\t\t\t\"⊷\"\n\t\t]\n\t},\n\t\"toggle2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"▫\",\n\t\t\t\"▪\"\n\t\t]\n\t},\n\t\"toggle3\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"□\",\n\t\t\t\"■\"\n\t\t]\n\t},\n\t\"toggle4\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"■\",\n\t\t\t\"□\",\n\t\t\t\"▪\",\n\t\t\t\"▫\"\n\t\t]\n\t},\n\t\"toggle5\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"▮\",\n\t\t\t\"▯\"\n\t\t]\n\t},\n\t\"toggle6\": {\n\t\t\"interval\": 300,\n\t\t\"frames\": [\n\t\t\t\"ဝ\",\n\t\t\t\"၀\"\n\t\t]\n\t},\n\t\"toggle7\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⦾\",\n\t\t\t\"⦿\"\n\t\t]\n\t},\n\t\"toggle8\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"◍\",\n\t\t\t\"◌\"\n\t\t]\n\t},\n\t\"toggle9\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"◉\",\n\t\t\t\"◎\"\n\t\t]\n\t},\n\t\"toggle10\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"㊂\",\n\t\t\t\"㊀\",\n\t\t\t\"㊁\"\n\t\t]\n\t},\n\t\"toggle11\": {\n\t\t\"interval\": 50,\n\t\t\"frames\": [\n\t\t\t\"⧇\",\n\t\t\t\"⧆\"\n\t\t]\n\t},\n\t\"toggle12\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"☗\",\n\t\t\t\"☖\"\n\t\t]\n\t},\n\t\"toggle13\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"=\",\n\t\t\t\"*\",\n\t\t\t\"-\"\n\t\t]\n\t},\n\t\"arrow\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"←\",\n\t\t\t\"↖\",\n\t\t\t\"↑\",\n\t\t\t\"↗\",\n\t\t\t\"→\",\n\t\t\t\"↘\",\n\t\t\t\"↓\",\n\t\t\t\"↙\"\n\t\t]\n\t},\n\t\"arrow2\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"⬆️ \",\n\t\t\t\"↗️ \",\n\t\t\t\"➡️ \",\n\t\t\t\"↘️ \",\n\t\t\t\"⬇️ \",\n\t\t\t\"↙️ \",\n\t\t\t\"⬅️ \",\n\t\t\t\"↖️ \"\n\t\t]\n\t},\n\t\"arrow3\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▹▹▹▹▹\",\n\t\t\t\"▸▹▹▹▹\",\n\t\t\t\"▹▸▹▹▹\",\n\t\t\t\"▹▹▸▹▹\",\n\t\t\t\"▹▹▹▸▹\",\n\t\t\t\"▹▹▹▹▸\"\n\t\t]\n\t},\n\t\"bouncingBar\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"[ ]\",\n\t\t\t\"[= ]\",\n\t\t\t\"[== ]\",\n\t\t\t\"[=== ]\",\n\t\t\t\"[====]\",\n\t\t\t\"[ ===]\",\n\t\t\t\"[ ==]\",\n\t\t\t\"[ =]\",\n\t\t\t\"[ ]\",\n\t\t\t\"[ =]\",\n\t\t\t\"[ ==]\",\n\t\t\t\"[ ===]\",\n\t\t\t\"[====]\",\n\t\t\t\"[=== ]\",\n\t\t\t\"[== ]\",\n\t\t\t\"[= ]\"\n\t\t]\n\t},\n\t\"bouncingBall\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ●)\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"( ● )\",\n\t\t\t\"(● )\"\n\t\t]\n\t},\n\t\"smiley\": {\n\t\t\"interval\": 200,\n\t\t\"frames\": [\n\t\t\t\"😄 \",\n\t\t\t\"😝 \"\n\t\t]\n\t},\n\t\"monkey\": {\n\t\t\"interval\": 300,\n\t\t\"frames\": [\n\t\t\t\"🙈 \",\n\t\t\t\"🙈 \",\n\t\t\t\"🙉 \",\n\t\t\t\"🙊 \"\n\t\t]\n\t},\n\t\"hearts\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"💛 \",\n\t\t\t\"💙 \",\n\t\t\t\"💜 \",\n\t\t\t\"💚 \",\n\t\t\t\"❤️ \"\n\t\t]\n\t},\n\t\"clock\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🕛 \",\n\t\t\t\"🕐 \",\n\t\t\t\"🕑 \",\n\t\t\t\"🕒 \",\n\t\t\t\"🕓 \",\n\t\t\t\"🕔 \",\n\t\t\t\"🕕 \",\n\t\t\t\"🕖 \",\n\t\t\t\"🕗 \",\n\t\t\t\"🕘 \",\n\t\t\t\"🕙 \",\n\t\t\t\"🕚 \"\n\t\t]\n\t},\n\t\"earth\": {\n\t\t\"interval\": 180,\n\t\t\"frames\": [\n\t\t\t\"🌍 \",\n\t\t\t\"🌎 \",\n\t\t\t\"🌏 \"\n\t\t]\n\t},\n\t\"material\": {\n\t\t\"interval\": 17,\n\t\t\"frames\": [\n\t\t\t\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███████▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████████▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███████████▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████████▁▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁▁██████████████▁▁▁▁\",\n\t\t\t\"▁▁▁██████████████▁▁▁\",\n\t\t\t\"▁▁▁▁█████████████▁▁▁\",\n\t\t\t\"▁▁▁▁██████████████▁▁\",\n\t\t\t\"▁▁▁▁██████████████▁▁\",\n\t\t\t\"▁▁▁▁▁██████████████▁\",\n\t\t\t\"▁▁▁▁▁██████████████▁\",\n\t\t\t\"▁▁▁▁▁██████████████▁\",\n\t\t\t\"▁▁▁▁▁▁██████████████\",\n\t\t\t\"▁▁▁▁▁▁██████████████\",\n\t\t\t\"▁▁▁▁▁▁▁█████████████\",\n\t\t\t\"▁▁▁▁▁▁▁█████████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁████████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁████████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁███████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁███████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁██████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁██████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁████████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n\t\t\t\"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"██████▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"████████▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"█████████▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"███████████▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"████████████▁▁▁▁▁▁▁▁\",\n\t\t\t\"████████████▁▁▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"██████████████▁▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁██████████████▁▁▁▁▁\",\n\t\t\t\"▁▁▁█████████████▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁████████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁████████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁███████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁█████████▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁█████████▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁█████████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁████████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁███████▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁███████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\",\n\t\t\t\"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\"\n\t\t]\n\t},\n\t\"moon\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"🌑 \",\n\t\t\t\"🌒 \",\n\t\t\t\"🌓 \",\n\t\t\t\"🌔 \",\n\t\t\t\"🌕 \",\n\t\t\t\"🌖 \",\n\t\t\t\"🌗 \",\n\t\t\t\"🌘 \"\n\t\t]\n\t},\n\t\"runner\": {\n\t\t\"interval\": 140,\n\t\t\"frames\": [\n\t\t\t\"🚶 \",\n\t\t\t\"🏃 \"\n\t\t]\n\t},\n\t\"pong\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"▐⠂ ▌\",\n\t\t\t\"▐⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂▌\",\n\t\t\t\"▐ ⠠▌\",\n\t\t\t\"▐ ⡀▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠈ ▌\",\n\t\t\t\"▐ ⠂ ▌\",\n\t\t\t\"▐ ⠠ ▌\",\n\t\t\t\"▐ ⡀ ▌\",\n\t\t\t\"▐⠠ ▌\"\n\t\t]\n\t},\n\t\"shark\": {\n\t\t\"interval\": 120,\n\t\t\"frames\": [\n\t\t\t\"▐|\\\\____________▌\",\n\t\t\t\"▐_|\\\\___________▌\",\n\t\t\t\"▐__|\\\\__________▌\",\n\t\t\t\"▐___|\\\\_________▌\",\n\t\t\t\"▐____|\\\\________▌\",\n\t\t\t\"▐_____|\\\\_______▌\",\n\t\t\t\"▐______|\\\\______▌\",\n\t\t\t\"▐_______|\\\\_____▌\",\n\t\t\t\"▐________|\\\\____▌\",\n\t\t\t\"▐_________|\\\\___▌\",\n\t\t\t\"▐__________|\\\\__▌\",\n\t\t\t\"▐___________|\\\\_▌\",\n\t\t\t\"▐____________|\\\\▌\",\n\t\t\t\"▐____________/|▌\",\n\t\t\t\"▐___________/|_▌\",\n\t\t\t\"▐__________/|__▌\",\n\t\t\t\"▐_________/|___▌\",\n\t\t\t\"▐________/|____▌\",\n\t\t\t\"▐_______/|_____▌\",\n\t\t\t\"▐______/|______▌\",\n\t\t\t\"▐_____/|_______▌\",\n\t\t\t\"▐____/|________▌\",\n\t\t\t\"▐___/|_________▌\",\n\t\t\t\"▐__/|__________▌\",\n\t\t\t\"▐_/|___________▌\",\n\t\t\t\"▐/|____________▌\"\n\t\t]\n\t},\n\t\"dqpb\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"d\",\n\t\t\t\"q\",\n\t\t\t\"p\",\n\t\t\t\"b\"\n\t\t]\n\t},\n\t\"weather\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"☀️ \",\n\t\t\t\"☀️ \",\n\t\t\t\"☀️ \",\n\t\t\t\"🌤 \",\n\t\t\t\"⛅️ \",\n\t\t\t\"🌥 \",\n\t\t\t\"☁️ \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"⛈ \",\n\t\t\t\"🌨 \",\n\t\t\t\"🌧 \",\n\t\t\t\"🌨 \",\n\t\t\t\"☁️ \",\n\t\t\t\"🌥 \",\n\t\t\t\"⛅️ \",\n\t\t\t\"🌤 \",\n\t\t\t\"☀️ \",\n\t\t\t\"☀️ \"\n\t\t]\n\t},\n\t\"christmas\": {\n\t\t\"interval\": 400,\n\t\t\"frames\": [\n\t\t\t\"🌲\",\n\t\t\t\"🎄\"\n\t\t]\n\t},\n\t\"grenade\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"، \",\n\t\t\t\"′ \",\n\t\t\t\" ´ \",\n\t\t\t\" ‾ \",\n\t\t\t\" ⸌\",\n\t\t\t\" ⸊\",\n\t\t\t\" |\",\n\t\t\t\" ⁎\",\n\t\t\t\" ⁕\",\n\t\t\t\" ෴ \",\n\t\t\t\" ⁓\",\n\t\t\t\" \",\n\t\t\t\" \",\n\t\t\t\" \"\n\t\t]\n\t},\n\t\"point\": {\n\t\t\"interval\": 125,\n\t\t\"frames\": [\n\t\t\t\"∙∙∙\",\n\t\t\t\"●∙∙\",\n\t\t\t\"∙●∙\",\n\t\t\t\"∙∙●\",\n\t\t\t\"∙∙∙\"\n\t\t]\n\t},\n\t\"layer\": {\n\t\t\"interval\": 150,\n\t\t\"frames\": [\n\t\t\t\"-\",\n\t\t\t\"=\",\n\t\t\t\"≡\"\n\t\t]\n\t},\n\t\"betaWave\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"ρββββββ\",\n\t\t\t\"βρβββββ\",\n\t\t\t\"ββρββββ\",\n\t\t\t\"βββρβββ\",\n\t\t\t\"ββββρββ\",\n\t\t\t\"βββββρβ\",\n\t\t\t\"ββββββρ\"\n\t\t]\n\t},\n\t\"fingerDance\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"🤘 \",\n\t\t\t\"🤟 \",\n\t\t\t\"🖖 \",\n\t\t\t\"✋ \",\n\t\t\t\"🤚 \",\n\t\t\t\"👆 \"\n\t\t]\n\t},\n\t\"fistBump\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"🤜\\u3000\\u3000\\u3000\\u3000🤛 \",\n\t\t\t\"🤜\\u3000\\u3000\\u3000\\u3000🤛 \",\n\t\t\t\"🤜\\u3000\\u3000\\u3000\\u3000🤛 \",\n\t\t\t\"\\u3000🤜\\u3000\\u3000🤛\\u3000 \",\n\t\t\t\"\\u3000\\u3000🤜🤛\\u3000\\u3000 \",\n\t\t\t\"\\u3000🤜✨🤛\\u3000\\u3000 \",\n\t\t\t\"🤜\\u3000✨\\u3000🤛\\u3000 \"\n\t\t]\n\t},\n\t\"soccerHeader\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\" 🧑⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \",\n\t\t\t\"🧑 ⚽️ 🧑 \"\n\t\t]\n\t},\n\t\"mindblown\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"😐 \",\n\t\t\t\"😐 \",\n\t\t\t\"😮 \",\n\t\t\t\"😮 \",\n\t\t\t\"😦 \",\n\t\t\t\"😦 \",\n\t\t\t\"😧 \",\n\t\t\t\"😧 \",\n\t\t\t\"🤯 \",\n\t\t\t\"💥 \",\n\t\t\t\"✨ \",\n\t\t\t\"\\u3000 \",\n\t\t\t\"\\u3000 \",\n\t\t\t\"\\u3000 \"\n\t\t]\n\t},\n\t\"speaker\": {\n\t\t\"interval\": 160,\n\t\t\"frames\": [\n\t\t\t\"🔈 \",\n\t\t\t\"🔉 \",\n\t\t\t\"🔊 \",\n\t\t\t\"🔉 \"\n\t\t]\n\t},\n\t\"orangePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🔸 \",\n\t\t\t\"🔶 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🔶 \"\n\t\t]\n\t},\n\t\"bluePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🔹 \",\n\t\t\t\"🔷 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔷 \"\n\t\t]\n\t},\n\t\"orangeBluePulse\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🔸 \",\n\t\t\t\"🔶 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🟠 \",\n\t\t\t\"🔶 \",\n\t\t\t\"🔹 \",\n\t\t\t\"🔷 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔵 \",\n\t\t\t\"🔷 \"\n\t\t]\n\t},\n\t\"timeTravel\": {\n\t\t\"interval\": 100,\n\t\t\"frames\": [\n\t\t\t\"🕛 \",\n\t\t\t\"🕚 \",\n\t\t\t\"🕙 \",\n\t\t\t\"🕘 \",\n\t\t\t\"🕗 \",\n\t\t\t\"🕖 \",\n\t\t\t\"🕕 \",\n\t\t\t\"🕔 \",\n\t\t\t\"🕓 \",\n\t\t\t\"🕒 \",\n\t\t\t\"🕑 \",\n\t\t\t\"🕐 \"\n\t\t]\n\t},\n\t\"aesthetic\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\"▰▱▱▱▱▱▱\",\n\t\t\t\"▰▰▱▱▱▱▱\",\n\t\t\t\"▰▰▰▱▱▱▱\",\n\t\t\t\"▰▰▰▰▱▱▱\",\n\t\t\t\"▰▰▰▰▰▱▱\",\n\t\t\t\"▰▰▰▰▰▰▱\",\n\t\t\t\"▰▰▰▰▰▰▰\",\n\t\t\t\"▰▱▱▱▱▱▱\"\n\t\t]\n\t},\n\t\"dwarfFortress\": {\n\t\t\"interval\": 80,\n\t\t\"frames\": [\n\t\t\t\" ██████£££ \",\n\t\t\t\"☺██████£££ \",\n\t\t\t\"☺██████£££ \",\n\t\t\t\"☺▓█████£££ \",\n\t\t\t\"☺▓█████£££ \",\n\t\t\t\"☺▒█████£££ \",\n\t\t\t\"☺▒█████£££ \",\n\t\t\t\"☺░█████£££ \",\n\t\t\t\"☺░█████£££ \",\n\t\t\t\"☺ █████£££ \",\n\t\t\t\" ☺█████£££ \",\n\t\t\t\" ☺█████£££ \",\n\t\t\t\" ☺▓████£££ \",\n\t\t\t\" ☺▓████£££ \",\n\t\t\t\" ☺▒████£££ \",\n\t\t\t\" ☺▒████£££ \",\n\t\t\t\" ☺░████£££ \",\n\t\t\t\" ☺░████£££ \",\n\t\t\t\" ☺ ████£££ \",\n\t\t\t\" ☺████£££ \",\n\t\t\t\" ☺████£££ \",\n\t\t\t\" ☺▓███£££ \",\n\t\t\t\" ☺▓███£££ \",\n\t\t\t\" ☺▒███£££ \",\n\t\t\t\" ☺▒███£££ \",\n\t\t\t\" ☺░███£££ \",\n\t\t\t\" ☺░███£££ \",\n\t\t\t\" ☺ ███£££ \",\n\t\t\t\" ☺███£££ \",\n\t\t\t\" ☺███£££ \",\n\t\t\t\" ☺▓██£££ \",\n\t\t\t\" ☺▓██£££ \",\n\t\t\t\" ☺▒██£££ \",\n\t\t\t\" ☺▒██£££ \",\n\t\t\t\" ☺░██£££ \",\n\t\t\t\" ☺░██£££ \",\n\t\t\t\" ☺ ██£££ \",\n\t\t\t\" ☺██£££ \",\n\t\t\t\" ☺██£££ \",\n\t\t\t\" ☺▓█£££ \",\n\t\t\t\" ☺▓█£££ \",\n\t\t\t\" ☺▒█£££ \",\n\t\t\t\" ☺▒█£££ \",\n\t\t\t\" ☺░█£££ \",\n\t\t\t\" ☺░█£££ \",\n\t\t\t\" ☺ █£££ \",\n\t\t\t\" ☺█£££ \",\n\t\t\t\" ☺█£££ \",\n\t\t\t\" ☺▓£££ \",\n\t\t\t\" ☺▓£££ \",\n\t\t\t\" ☺▒£££ \",\n\t\t\t\" ☺▒£££ \",\n\t\t\t\" ☺░£££ \",\n\t\t\t\" ☺░£££ \",\n\t\t\t\" ☺ £££ \",\n\t\t\t\" ☺£££ \",\n\t\t\t\" ☺£££ \",\n\t\t\t\" ☺▓££ \",\n\t\t\t\" ☺▓££ \",\n\t\t\t\" ☺▒££ \",\n\t\t\t\" ☺▒££ \",\n\t\t\t\" ☺░££ \",\n\t\t\t\" ☺░££ \",\n\t\t\t\" ☺ ££ \",\n\t\t\t\" ☺££ \",\n\t\t\t\" ☺££ \",\n\t\t\t\" ☺▓£ \",\n\t\t\t\" ☺▓£ \",\n\t\t\t\" ☺▒£ \",\n\t\t\t\" ☺▒£ \",\n\t\t\t\" ☺░£ \",\n\t\t\t\" ☺░£ \",\n\t\t\t\" ☺ £ \",\n\t\t\t\" ☺£ \",\n\t\t\t\" ☺£ \",\n\t\t\t\" ☺▓ \",\n\t\t\t\" ☺▓ \",\n\t\t\t\" ☺▒ \",\n\t\t\t\" ☺▒ \",\n\t\t\t\" ☺░ \",\n\t\t\t\" ☺░ \",\n\t\t\t\" ☺ \",\n\t\t\t\" ☺ &\",\n\t\t\t\" ☺ ☼&\",\n\t\t\t\" ☺ ☼ &\",\n\t\t\t\" ☺☼ &\",\n\t\t\t\" ☺☼ & \",\n\t\t\t\" ‼ & \",\n\t\t\t\" ☺ & \",\n\t\t\t\" ‼ & \",\n\t\t\t\" ☺ & \",\n\t\t\t\" ‼ & \",\n\t\t\t\" ☺ & \",\n\t\t\t\"‼ & \",\n\t\t\t\" & \",\n\t\t\t\" & \",\n\t\t\t\" & ░ \",\n\t\t\t\" & ▒ \",\n\t\t\t\" & ▓ \",\n\t\t\t\" & £ \",\n\t\t\t\" & ░£ \",\n\t\t\t\" & ▒£ \",\n\t\t\t\" & ▓£ \",\n\t\t\t\" & ££ \",\n\t\t\t\" & ░££ \",\n\t\t\t\" & ▒££ \",\n\t\t\t\"& ▓££ \",\n\t\t\t\"& £££ \",\n\t\t\t\" ░£££ \",\n\t\t\t\" ▒£££ \",\n\t\t\t\" ▓£££ \",\n\t\t\t\" █£££ \",\n\t\t\t\" ░█£££ \",\n\t\t\t\" ▒█£££ \",\n\t\t\t\" ▓█£££ \",\n\t\t\t\" ██£££ \",\n\t\t\t\" ░██£££ \",\n\t\t\t\" ▒██£££ \",\n\t\t\t\" ▓██£££ \",\n\t\t\t\" ███£££ \",\n\t\t\t\" ░███£££ \",\n\t\t\t\" ▒███£££ \",\n\t\t\t\" ▓███£££ \",\n\t\t\t\" ████£££ \",\n\t\t\t\" ░████£££ \",\n\t\t\t\" ▒████£££ \",\n\t\t\t\" ▓████£££ \",\n\t\t\t\" █████£££ \",\n\t\t\t\" ░█████£££ \",\n\t\t\t\" ▒█████£££ \",\n\t\t\t\" ▓█████£££ \",\n\t\t\t\" ██████£££ \",\n\t\t\t\" ██████£££ \"\n\t\t]\n\t}\n}\n","'use strict';\n\nconst spinners = Object.assign({}, require('./spinners.json')); // eslint-disable-line import/extensions\n\nconst spinnersList = Object.keys(spinners);\n\nObject.defineProperty(spinners, 'random', {\n\tget() {\n\t\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\t\tconst spinnerName = spinnersList[randomIndex];\n\t\treturn spinners[spinnerName];\n\t}\n});\n\nmodule.exports = spinners;\n","#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport { readFileSync } from \"fs\";\nimport { fileURLToPath } from \"url\";\nimport { dirname, join } from \"path\";\nimport { gen } from \"./commands/gen.js\";\nimport { migrate, up, down, status } from \"./commands/migrate.js\";\nimport { markApplied } from \"./commands/mark-applied.js\";\nimport { init } from \"./commands/init.js\";\nimport { types } from \"./commands/types.js\";\nimport { testConnection } from \"./commands/test-connection.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst packageJson = JSON.parse(\n readFileSync(join(__dirname, \"../package.json\"), \"utf-8\")\n);\n\nconst program = new Command();\n\nprogram\n .name(\"nexusql\")\n .description(\n \"Database migration toolkit for PostgreSQL with DBML schema support\"\n )\n .version(packageJson.version);\n\nprogram\n .command(\"init\")\n .description(\"Initialize nexusql configuration\")\n .option(\"-f, --force\", \"Overwrite existing config\")\n .action(async (options) => {\n try {\n await init(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"gen\")\n .description(\"Generate migration SQL from DBML schema\")\n .option(\"-o, --output <file>\", \"Write SQL to file instead of stdout\")\n .option(\"-v, --verbose\", \"Show verbose output\")\n .action(async (options) => {\n try {\n await gen(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"migrate\")\n .description(\"Interactive migration: generate, create file, apply\")\n .option(\"-n, --name <name>\", \"Migration name\")\n .option(\"-a, --apply\", \"Apply migration after creating\")\n .option(\"-y, --yes\", \"Skip confirmation prompts\")\n .action(async (options) => {\n try {\n await migrate(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"up\")\n .description(\"Apply all pending migrations\")\n .option(\"--dry-run\", \"Preview migrations without applying\")\n .action(async (options) => {\n try {\n await up(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"down\")\n .description(\"Rollback applied migrations\")\n .option(\"-s, --steps <number>\", \"Number of migrations to rollback\", (v) =>\n parseInt(v)\n )\n .option(\"--to <version>\", \"Rollback to specific version\")\n .option(\"--dry-run\", \"Preview rollback without applying\")\n .action(async (options) => {\n try {\n await down(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"status\")\n .description(\"Show migration status\")\n .action(async () => {\n try {\n await status();\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"mark-applied <version>\")\n .description(\"Mark a migration as applied without running it\")\n .action(async (version) => {\n try {\n await markApplied(version);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"types\")\n .description(\"Generate TypeScript definitions from DBML\")\n .option(\n \"-o, --output <file>\",\n \"Output file path (default: src/types/schema.d.ts)\"\n )\n .action(async (options) => {\n try {\n await types(options);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram\n .command(\"test-connection\")\n .description(\"Test database connection\")\n .action(async () => {\n try {\n await testConnection();\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n });\n\nprogram.parse();\n","import { readFileSync, writeFileSync } from \"fs\";\nimport { resolve } from \"path\";\nimport ora from \"ora\";\nimport chalk from \"chalk\";\nimport { Database } from \"../lib/database.js\";\nimport { dbmlToSql } from \"../lib/dbml.js\";\nimport { runMigra, filterSchemaMigrations } from \"../lib/migra.js\";\nimport { loadConfig, getDatabaseUrl } from \"../lib/config.js\";\nimport { ensureMigraOrExit } from \"../utils/check-migra.js\";\n\nexport interface GenOptions {\n output?: string;\n verbose?: boolean;\n}\n\n/**\n * Generate migration SQL by diffing current DB against DBML schema.\n */\nexport async function gen(options: GenOptions = {}): Promise<string> {\n ensureMigraOrExit();\n\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n\n const spinner = ora();\n\n // Read DBML schema\n spinner.start(\"Reading DBML schema...\");\n const schemaPath = resolve(config.dbmlFile);\n let dbmlContent: string;\n try {\n dbmlContent = readFileSync(schemaPath, \"utf-8\");\n spinner.succeed(\"Read DBML schema\");\n } catch {\n spinner.fail(`Failed to read schema: ${schemaPath}`);\n throw new Error(`Schema file not found: ${schemaPath}`);\n }\n\n // Convert DBML to SQL\n spinner.start(\"Converting DBML to SQL...\");\n const { sql: targetSql } = dbmlToSql(dbmlContent);\n spinner.succeed(\"Converted DBML to SQL\");\n\n // Create temp database\n const tempDbName = `nexusql_temp_${Date.now()}`;\n spinner.start(`Creating temp database: ${tempDbName}`);\n try {\n await db.createDatabase(tempDbName);\n spinner.succeed(`Created temp database: ${tempDbName}`);\n } catch (error) {\n spinner.fail(\"Failed to create temp database\");\n throw error;\n }\n\n const tempDb = db.withDatabase(tempDbName);\n let migrationSql = \"\";\n\n try {\n // Install extensions\n spinner.start(\"Installing extensions...\");\n await tempDb.installExtensions(config.extensions);\n\n // Verify vector type is available\n if (config.extensions.includes(\"vector\")) {\n const vectorCheck = await tempDb.query(\n \"SELECT typname FROM pg_type WHERE typname = 'vector'\"\n );\n if (vectorCheck.rows.length === 0) {\n spinner.fail(\"Vector extension installed but vector type not found!\");\n throw new Error(\n \"pgvector extension was installed but the 'vector' type is not available. \" +\n \"This usually means pgvector is not properly installed on your PostgreSQL server.\"\n );\n }\n }\n spinner.succeed(\"Installed db extensions\");\n\n // Load schema into temp database\n spinner.start(\"Loading schema into temp database...\");\n\n // Debug: Show SQL with vector types\n if (targetSql.toLowerCase().includes(\"vector\")) {\n const vectorLines = targetSql.split(\"\\n\").filter(line =>\n line.toLowerCase().includes(\"vector\")\n );\n console.log(\"\\n[DEBUG] SQL lines with 'vector':\");\n vectorLines.forEach(line => console.log(\" \", line.trim()));\n console.log(\"\");\n }\n\n await tempDb.exec(targetSql);\n spinner.succeed(\"Loaded schema into temp database\");\n\n // Debug: List tables\n if (options.verbose) {\n const tables = await tempDb.listTables();\n console.log(chalk.dim(`\\nTables in temp database: ${tables.join(\", \")}`));\n }\n\n // Run migra to generate diff\n spinner.start(\"Generating migration diff...\");\n // Use config schemas\n const targetDbSchemas = config.targetDbSchemas;\n\n if (targetDbSchemas?.length) {\n console.log(\n chalk.dim(`\\nRestricting to schemas: ${targetDbSchemas.join(\", \")}`)\n );\n }\n\n const migraResult = runMigra(\n db.getConnectionUrl(),\n tempDb.getConnectionUrl(),\n { unsafe: true, schemas: targetDbSchemas }\n );\n\n migrationSql = filterSchemaMigrations(migraResult.sql);\n\n if (migraResult.hasChanges) {\n spinner.succeed(\"Generated migration diff\");\n } else {\n spinner.info(\"No schema changes detected\");\n }\n\n // Get comment changes\n spinner.start(\"Checking comment changes...\");\n // Get comment changes\n spinner.start(\"Checking comment changes...\");\n const commentSql = await getCommentChanges(db, tempDb, targetDbSchemas);\n if (commentSql) {\n migrationSql = migrationSql\n ? `${migrationSql}\\n\\n-- Comment changes\\n${commentSql}`\n : `-- Comment changes\\n${commentSql}`;\n }\n spinner.succeed(\"Checked comment changes\");\n } catch (error) {\n spinner.fail(`Failed to generate migration diff: ${error}`);\n throw error;\n } finally {\n // Cleanup temp database\n spinner.start(\"Cleaning up temp database...\");\n try {\n await db.dropDatabase(tempDbName);\n spinner.succeed(\"Cleaned up temp database\");\n } catch (error) {\n spinner.warn(`Failed to cleanup temp database: ${error}`);\n }\n }\n\n // Output result\n const finalSql = migrationSql || \"-- No changes detected\";\n\n if (options.output) {\n writeFileSync(options.output, finalSql, \"utf-8\");\n console.log(chalk.green(`\\nMigration SQL written to: ${options.output}`));\n } else {\n console.log(chalk.cyan(\"\\n=== Migration SQL ===\\n\"));\n console.log(finalSql);\n }\n\n return finalSql;\n}\n\n/**\n * Get comment changes between two databases.\n * migra doesn't support COMMENT ON statements.\n */\nasync function getCommentChanges(\n currentDb: Database,\n targetDb: Database,\n schemas?: string[]\n): Promise<string> {\n const schemaFilter =\n schemas && schemas.length > 0\n ? `AND c.table_schema IN (${schemas.map((s) => `'${s}'`).join(\", \")})`\n : \"\";\n\n const commentQuery = `\n SELECT\n format('COMMENT ON COLUMN %I.%I IS %L;',\n c.table_name,\n c.column_name,\n pgd.description\n ) as comment_sql,\n c.table_name,\n c.column_name,\n pgd.description\n FROM information_schema.columns c\n JOIN pg_catalog.pg_class pc ON pc.relname = c.table_name\n JOIN pg_catalog.pg_namespace pn ON pn.oid = pc.relnamespace AND pn.nspname = c.table_schema\n LEFT JOIN pg_catalog.pg_description pgd ON pgd.objoid = pc.oid AND pgd.objsubid = c.ordinal_position\n WHERE c.table_name != 'schema_migrations'\n ${schemaFilter}\n ORDER BY c.table_name, c.ordinal_position;\n `;\n\n const [currentComments, targetComments] = await Promise.all([\n currentDb.query(commentQuery),\n targetDb.query(commentQuery),\n ]);\n\n const currentMap = new Map<string, string | null>();\n const targetMap = new Map<\n string,\n { sql: string; description: string | null }\n >();\n\n for (const row of currentComments.rows) {\n const key = `${row.table_name}.${row.column_name}`;\n currentMap.set(key, row.description as string | null);\n }\n\n for (const row of targetComments.rows) {\n const key = `${row.table_name}.${row.column_name}`;\n targetMap.set(key, {\n sql: row.comment_sql as string,\n description: row.description as string | null,\n });\n }\n\n const commentDiffs: string[] = [];\n\n for (const [key, target] of targetMap) {\n const current = currentMap.get(key);\n if (current !== target.description && target.sql) {\n commentDiffs.push(target.sql);\n }\n }\n\n return commentDiffs.join(\"\\n\");\n}\n","import process from 'node:process';\nimport chalk from 'chalk';\nimport cliCursor from 'cli-cursor';\nimport cliSpinners from 'cli-spinners';\nimport logSymbols from 'log-symbols';\nimport stripAnsi from 'strip-ansi';\nimport stringWidth from 'string-width';\nimport isInteractive from 'is-interactive';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport stdinDiscarder from 'stdin-discarder';\n\nclass Ora {\n\t#linesToClear = 0;\n\t#isDiscardingStdin = false;\n\t#lineCount = 0;\n\t#frameIndex = -1;\n\t#lastSpinnerFrameTime = 0;\n\t#options;\n\t#spinner;\n\t#stream;\n\t#id;\n\t#initialInterval;\n\t#isEnabled;\n\t#isSilent;\n\t#indent;\n\t#text;\n\t#prefixText;\n\t#suffixText;\n\tcolor;\n\n\tconstructor(options) {\n\t\tif (typeof options === 'string') {\n\t\t\toptions = {\n\t\t\t\ttext: options,\n\t\t\t};\n\t\t}\n\n\t\tthis.#options = {\n\t\t\tcolor: 'cyan',\n\t\t\tstream: process.stderr,\n\t\t\tdiscardStdin: true,\n\t\t\thideCursor: true,\n\t\t\t...options,\n\t\t};\n\n\t\t// Public\n\t\tthis.color = this.#options.color;\n\n\t\t// It's important that these use the public setters.\n\t\tthis.spinner = this.#options.spinner;\n\n\t\tthis.#initialInterval = this.#options.interval;\n\t\tthis.#stream = this.#options.stream;\n\t\tthis.#isEnabled = typeof this.#options.isEnabled === 'boolean' ? this.#options.isEnabled : isInteractive({stream: this.#stream});\n\t\tthis.#isSilent = typeof this.#options.isSilent === 'boolean' ? this.#options.isSilent : false;\n\n\t\t// Set *after* `this.#stream`.\n\t\t// It's important that these use the public setters.\n\t\tthis.text = this.#options.text;\n\t\tthis.prefixText = this.#options.prefixText;\n\t\tthis.suffixText = this.#options.suffixText;\n\t\tthis.indent = this.#options.indent;\n\n\t\tif (process.env.NODE_ENV === 'test') {\n\t\t\tthis._stream = this.#stream;\n\t\t\tthis._isEnabled = this.#isEnabled;\n\n\t\t\tObject.defineProperty(this, '_linesToClear', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#linesToClear;\n\t\t\t\t},\n\t\t\t\tset(newValue) {\n\t\t\t\t\tthis.#linesToClear = newValue;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_frameIndex', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#frameIndex;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tObject.defineProperty(this, '_lineCount', {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#lineCount;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tget indent() {\n\t\treturn this.#indent;\n\t}\n\n\tset indent(indent = 0) {\n\t\tif (!(indent >= 0 && Number.isInteger(indent))) {\n\t\t\tthrow new Error('The `indent` option must be an integer from 0 and up');\n\t\t}\n\n\t\tthis.#indent = indent;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget interval() {\n\t\treturn this.#initialInterval ?? this.#spinner.interval ?? 100;\n\t}\n\n\tget spinner() {\n\t\treturn this.#spinner;\n\t}\n\n\tset spinner(spinner) {\n\t\tthis.#frameIndex = -1;\n\t\tthis.#initialInterval = undefined;\n\n\t\tif (typeof spinner === 'object') {\n\t\t\tif (spinner.frames === undefined) {\n\t\t\t\tthrow new Error('The given spinner must have a `frames` property');\n\t\t\t}\n\n\t\t\tthis.#spinner = spinner;\n\t\t} else if (!isUnicodeSupported()) {\n\t\t\tthis.#spinner = cliSpinners.line;\n\t\t} else if (spinner === undefined) {\n\t\t\t// Set default spinner\n\t\t\tthis.#spinner = cliSpinners.dots;\n\t\t} else if (spinner !== 'default' && cliSpinners[spinner]) {\n\t\t\tthis.#spinner = cliSpinners[spinner];\n\t\t} else {\n\t\t\tthrow new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);\n\t\t}\n\t}\n\n\tget text() {\n\t\treturn this.#text;\n\t}\n\n\tset text(value = '') {\n\t\tthis.#text = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget prefixText() {\n\t\treturn this.#prefixText;\n\t}\n\n\tset prefixText(value = '') {\n\t\tthis.#prefixText = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget suffixText() {\n\t\treturn this.#suffixText;\n\t}\n\n\tset suffixText(value = '') {\n\t\tthis.#suffixText = value;\n\t\tthis.#updateLineCount();\n\t}\n\n\tget isSpinning() {\n\t\treturn this.#id !== undefined;\n\t}\n\n\t#getFullPrefixText(prefixText = this.#prefixText, postfix = ' ') {\n\t\tif (typeof prefixText === 'string' && prefixText !== '') {\n\t\t\treturn prefixText + postfix;\n\t\t}\n\n\t\tif (typeof prefixText === 'function') {\n\t\t\treturn prefixText() + postfix;\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#getFullSuffixText(suffixText = this.#suffixText, prefix = ' ') {\n\t\tif (typeof suffixText === 'string' && suffixText !== '') {\n\t\t\treturn prefix + suffixText;\n\t\t}\n\n\t\tif (typeof suffixText === 'function') {\n\t\t\treturn prefix + suffixText();\n\t\t}\n\n\t\treturn '';\n\t}\n\n\t#updateLineCount() {\n\t\tconst columns = this.#stream.columns ?? 80;\n\t\tconst fullPrefixText = this.#getFullPrefixText(this.#prefixText, '-');\n\t\tconst fullSuffixText = this.#getFullSuffixText(this.#suffixText, '-');\n\t\tconst fullText = ' '.repeat(this.#indent) + fullPrefixText + '--' + this.#text + '--' + fullSuffixText;\n\n\t\tthis.#lineCount = 0;\n\t\tfor (const line of stripAnsi(fullText).split('\\n')) {\n\t\t\tthis.#lineCount += Math.max(1, Math.ceil(stringWidth(line, {countAnsiEscapeCodes: true}) / columns));\n\t\t}\n\t}\n\n\tget isEnabled() {\n\t\treturn this.#isEnabled && !this.#isSilent;\n\t}\n\n\tset isEnabled(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isEnabled` option must be a boolean');\n\t\t}\n\n\t\tthis.#isEnabled = value;\n\t}\n\n\tget isSilent() {\n\t\treturn this.#isSilent;\n\t}\n\n\tset isSilent(value) {\n\t\tif (typeof value !== 'boolean') {\n\t\t\tthrow new TypeError('The `isSilent` option must be a boolean');\n\t\t}\n\n\t\tthis.#isSilent = value;\n\t}\n\n\tframe() {\n\t\t// Ensure we only update the spinner frame at the wanted interval,\n\t\t// even if the render method is called more often.\n\t\tconst now = Date.now();\n\t\tif (this.#frameIndex === -1 || now - this.#lastSpinnerFrameTime >= this.interval) {\n\t\t\tthis.#frameIndex = ++this.#frameIndex % this.#spinner.frames.length;\n\t\t\tthis.#lastSpinnerFrameTime = now;\n\t\t}\n\n\t\tconst {frames} = this.#spinner;\n\t\tlet frame = frames[this.#frameIndex];\n\n\t\tif (this.color) {\n\t\t\tframe = chalk[this.color](frame);\n\t\t}\n\n\t\tconst fullPrefixText = (typeof this.#prefixText === 'string' && this.#prefixText !== '') ? this.#prefixText + ' ' : '';\n\t\tconst fullText = typeof this.text === 'string' ? ' ' + this.text : '';\n\t\tconst fullSuffixText = (typeof this.#suffixText === 'string' && this.#suffixText !== '') ? ' ' + this.#suffixText : '';\n\n\t\treturn fullPrefixText + frame + fullText + fullSuffixText;\n\t}\n\n\tclear() {\n\t\tif (!this.#isEnabled || !this.#stream.isTTY) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.#stream.cursorTo(0);\n\n\t\tfor (let index = 0; index < this.#linesToClear; index++) {\n\t\t\tif (index > 0) {\n\t\t\t\tthis.#stream.moveCursor(0, -1);\n\t\t\t}\n\n\t\t\tthis.#stream.clearLine(1);\n\t\t}\n\n\t\tif (this.#indent || this.lastIndent !== this.#indent) {\n\t\t\tthis.#stream.cursorTo(this.#indent);\n\t\t}\n\n\t\tthis.lastIndent = this.#indent;\n\t\tthis.#linesToClear = 0;\n\n\t\treturn this;\n\t}\n\n\trender() {\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.clear();\n\t\tthis.#stream.write(this.frame());\n\t\tthis.#linesToClear = this.#lineCount;\n\n\t\treturn this;\n\t}\n\n\tstart(text) {\n\t\tif (text) {\n\t\t\tthis.text = text;\n\t\t}\n\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this.#isEnabled) {\n\t\t\tif (this.text) {\n\t\t\t\tthis.#stream.write(`- ${this.text}\\n`);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.isSpinning) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.hide(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY) {\n\t\t\tthis.#isDiscardingStdin = true;\n\t\t\tstdinDiscarder.start();\n\t\t}\n\n\t\tthis.render();\n\t\tthis.#id = setInterval(this.render.bind(this), this.interval);\n\n\t\treturn this;\n\t}\n\n\tstop() {\n\t\tif (!this.#isEnabled) {\n\t\t\treturn this;\n\t\t}\n\n\t\tclearInterval(this.#id);\n\t\tthis.#id = undefined;\n\t\tthis.#frameIndex = 0;\n\t\tthis.clear();\n\t\tif (this.#options.hideCursor) {\n\t\t\tcliCursor.show(this.#stream);\n\t\t}\n\n\t\tif (this.#options.discardStdin && process.stdin.isTTY && this.#isDiscardingStdin) {\n\t\t\tstdinDiscarder.stop();\n\t\t\tthis.#isDiscardingStdin = false;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tsucceed(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.success, text});\n\t}\n\n\tfail(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.error, text});\n\t}\n\n\twarn(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.warning, text});\n\t}\n\n\tinfo(text) {\n\t\treturn this.stopAndPersist({symbol: logSymbols.info, text});\n\t}\n\n\tstopAndPersist(options = {}) {\n\t\tif (this.#isSilent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst prefixText = options.prefixText ?? this.#prefixText;\n\t\tconst fullPrefixText = this.#getFullPrefixText(prefixText, ' ');\n\n\t\tconst symbolText = options.symbol ?? ' ';\n\n\t\tconst text = options.text ?? this.text;\n\t\tconst separatorText = symbolText ? ' ' : '';\n\t\tconst fullText = (typeof text === 'string') ? separatorText + text : '';\n\n\t\tconst suffixText = options.suffixText ?? this.#suffixText;\n\t\tconst fullSuffixText = this.#getFullSuffixText(suffixText, ' ');\n\n\t\tconst textToWrite = fullPrefixText + symbolText + fullText + fullSuffixText + '\\n';\n\n\t\tthis.stop();\n\t\tthis.#stream.write(textToWrite);\n\n\t\treturn this;\n\t}\n}\n\nexport default function ora(options) {\n\treturn new Ora(options);\n}\n\nexport async function oraPromise(action, options) {\n\tconst actionIsFunction = typeof action === 'function';\n\tconst actionIsPromise = typeof action.then === 'function';\n\n\tif (!actionIsFunction && !actionIsPromise) {\n\t\tthrow new TypeError('Parameter `action` must be a Function or a Promise');\n\t}\n\n\tconst {successText, failText} = typeof options === 'object'\n\t\t? options\n\t\t: {successText: undefined, failText: undefined};\n\n\tconst spinner = ora(options).start();\n\n\ttry {\n\t\tconst promise = actionIsFunction ? action(spinner) : action;\n\t\tconst result = await promise;\n\n\t\tspinner.succeed(\n\t\t\tsuccessText === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (typeof successText === 'string' ? successText : successText(result)),\n\t\t);\n\n\t\treturn result;\n\t} catch (error) {\n\t\tspinner.fail(\n\t\t\tfailText === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (typeof failText === 'string' ? failText : failText(error)),\n\t\t);\n\n\t\tthrow error;\n\t}\n}\n\nexport {default as spinners} from 'cli-spinners';\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","import process from 'node:process';\nimport restoreCursor from 'restore-cursor';\n\nlet isHidden = false;\n\nconst cliCursor = {};\n\ncliCursor.show = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\tisHidden = false;\n\twritableStream.write('\\u001B[?25h');\n};\n\ncliCursor.hide = (writableStream = process.stderr) => {\n\tif (!writableStream.isTTY) {\n\t\treturn;\n\t}\n\n\trestoreCursor();\n\tisHidden = true;\n\twritableStream.write('\\u001B[?25l');\n};\n\ncliCursor.toggle = (force, writableStream) => {\n\tif (force !== undefined) {\n\t\tisHidden = force;\n\t}\n\n\tif (isHidden) {\n\t\tcliCursor.show(writableStream);\n\t} else {\n\t\tcliCursor.hide(writableStream);\n\t}\n};\n\nexport default cliCursor;\n","import process from 'node:process';\nimport onetime from 'onetime';\nimport {onExit} from 'signal-exit';\n\nconst terminal = process.stderr.isTTY\n\t? process.stderr\n\t: (process.stdout.isTTY ? process.stdout : undefined);\n\nconst restoreCursor = terminal ? onetime(() => {\n\tonExit(() => {\n\t\tterminal.write('\\u001B[?25h');\n\t}, {alwaysLast: true});\n}) : () => {};\n\nexport default restoreCursor;\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable\n\t\t&& toDescriptor.enumerable === fromDescriptor.enumerable\n\t\t&& toDescriptor.configurable === fromDescriptor.configurable\n\t\t&& (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tconst {writable, enumerable, configurable} = toStringDescriptor; // We destructue to avoid a potential `get` descriptor.\n\tObject.defineProperty(to, 'toString', {value: newToString, writable, enumerable, configurable});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFunction from 'mimic-function';\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = undefined;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFunction(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nonetime.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\nexport default onetime;\n","/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import chalk from 'chalk';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nconst main = {\n\tinfo: chalk.blue('ℹ'),\n\tsuccess: chalk.green('✔'),\n\twarning: chalk.yellow('⚠'),\n\terror: chalk.red('✖'),\n};\n\nconst fallback = {\n\tinfo: chalk.blue('i'),\n\tsuccess: chalk.green('√'),\n\twarning: chalk.yellow('‼'),\n\terror: chalk.red('×'),\n};\n\nconst logSymbols = isUnicodeSupported() ? main : fallback;\n\nexport default logSymbols;\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n\tconst osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2630 && x <= 0x2637\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x >= 0x268A && x <= 0x268F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E5\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x >= 0x16FF0 && x <= 0x16FF6\n\t\t|| x >= 0x17000 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D1E\n\t\t|| x >= 0x18D80 && x <= 0x18DF2\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x >= 0x1D300 && x <= 0x1D356\n\t\t|| x >= 0x1D360 && x <= 0x1D376\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D8\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA8A\n\t\t|| x >= 0x1FA8E && x <= 0x1FAC6\n\t\t|| x === 0x1FAC8\n\t\t|| x >= 0x1FACD && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAEA\n\t\t|| x >= 0x1FAEF && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction getCategory(x) {\n\tif (isAmbiguous(x)) return 'ambiguous';\n\n\tif (isFullWidth(x)) return 'fullwidth';\n\n\tif (\n\t\tx === 0x20A9\n\t\t|| x >= 0xFF61 && x <= 0xFFBE\n\t\t|| x >= 0xFFC2 && x <= 0xFFC7\n\t\t|| x >= 0xFFCA && x <= 0xFFCF\n\t\t|| x >= 0xFFD2 && x <= 0xFFD7\n\t\t|| x >= 0xFFDA && x <= 0xFFDC\n\t\t|| x >= 0xFFE8 && x <= 0xFFEE\n\t) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (\n\t\tx >= 0x20 && x <= 0x7E\n\t\t|| x === 0xA2\n\t\t|| x === 0xA3\n\t\t|| x === 0xA5\n\t\t|| x === 0xA6\n\t\t|| x === 0xAC\n\t\t|| x === 0xAF\n\t\t|| x >= 0x27E6 && x <= 0x27ED\n\t\t|| x === 0x2985\n\t\t|| x === 0x2986\n\t) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(x)) return 'wide';\n\n\treturn 'neutral';\n}\n\nexport {isAmbiguous, isFullWidth, isWide, getCategory};\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point\nexport {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';\n","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E-\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED8\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC2\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF]|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","export default function isInteractive({stream = process.stdout} = {}) {\n\treturn Boolean(\n\t\tstream && stream.isTTY &&\n\t\tprocess.env.TERM !== 'dumb' &&\n\t\t!('CI' in process.env)\n\t);\n}\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tconst {env} = process;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (process.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import process from 'node:process';\n\nconst ASCII_ETX_CODE = 0x03; // Ctrl+C emits this code\n\nclass StdinDiscarder {\n\t#activeCount = 0;\n\n\tstart() {\n\t\tthis.#activeCount++;\n\n\t\tif (this.#activeCount === 1) {\n\t\t\tthis.#realStart();\n\t\t}\n\t}\n\n\tstop() {\n\t\tif (this.#activeCount <= 0) {\n\t\t\tthrow new Error('`stop` called more times than `start`');\n\t\t}\n\n\t\tthis.#activeCount--;\n\n\t\tif (this.#activeCount === 0) {\n\t\t\tthis.#realStop();\n\t\t}\n\t}\n\n\t#realStart() {\n\t\t// No known way to make it work reliably on Windows.\n\t\tif (process.platform === 'win32' || !process.stdin.isTTY) {\n\t\t\treturn;\n\t\t}\n\n\t\tprocess.stdin.setRawMode(true);\n\t\tprocess.stdin.on('data', this.#handleInput);\n\t\tprocess.stdin.resume();\n\t}\n\n\t#realStop() {\n\t\tif (!process.stdin.isTTY) {\n\t\t\treturn;\n\t\t}\n\n\t\tprocess.stdin.off('data', this.#handleInput);\n\t\tprocess.stdin.pause();\n\t\tprocess.stdin.setRawMode(false);\n\t}\n\n\t#handleInput(chunk) {\n\t\t// Allow Ctrl+C to gracefully exit.\n\t\tif (chunk[0] === ASCII_ETX_CODE) {\n\t\t\tprocess.emit('SIGINT');\n\t\t}\n\t}\n}\n\nconst stdinDiscarder = new StdinDiscarder();\n\nexport default stdinDiscarder;\n","import pg from \"pg\";\nimport { parseAndEncodeDbUrl, buildDbUrl, type DbUrlParts } from \"./db-url.js\";\n\nconst { Client } = pg;\n\nexport interface QueryResult {\n rows: Record<string, unknown>[];\n rowCount: number;\n}\n\nexport class Database {\n private connectionString: string;\n private dbParts: DbUrlParts;\n\n constructor(connectionString: string) {\n this.dbParts = parseAndEncodeDbUrl(connectionString);\n this.connectionString = this.dbParts.url;\n }\n\n /**\n * Execute a query and return results.\n */\n async query(sql: string): Promise<QueryResult> {\n const client = new Client({ connectionString: this.connectionString });\n try {\n await client.connect();\n const result = await client.query(sql);\n return {\n rows: result.rows,\n rowCount: result.rowCount ?? 0,\n };\n } finally {\n await client.end();\n }\n }\n\n /**\n * Execute a parameterized query and return results.\n */\n async queryParams(sql: string, params: unknown[]): Promise<QueryResult> {\n const client = new Client({ connectionString: this.connectionString });\n try {\n await client.connect();\n const result = await client.query(sql, params);\n return {\n rows: result.rows,\n rowCount: result.rowCount ?? 0,\n };\n } finally {\n await client.end();\n }\n }\n\n /**\n * Execute a parameterized query without returning results.\n */\n async execParams(sql: string, params: unknown[]): Promise<void> {\n const client = new Client({ connectionString: this.connectionString });\n try {\n await client.connect();\n await client.query(sql, params);\n } finally {\n await client.end();\n }\n }\n\n /**\n * Execute a query without returning results (for DDL/DML).\n */\n async exec(sql: string): Promise<void> {\n const client = new Client({ connectionString: this.connectionString });\n try {\n await client.connect();\n await client.query(sql);\n } finally {\n await client.end();\n }\n }\n\n /**\n * Execute operations within a transaction.\n * Automatically commits on success, rolls back on error.\n */\n async withTransaction<T>(fn: (client: pg.Client) => Promise<T>): Promise<T> {\n const client = new Client({ connectionString: this.connectionString });\n try {\n await client.connect();\n await client.query(\"BEGIN\");\n const result = await fn(client);\n await client.query(\"COMMIT\");\n return result;\n } catch (error) {\n await client.query(\"ROLLBACK\");\n throw error;\n } finally {\n await client.end();\n }\n }\n\n /**\n * Create a new database.\n */\n async createDatabase(name: string): Promise<void> {\n await this.exec(`CREATE DATABASE \"${name}\";`);\n }\n\n /**\n * Drop a database if it exists.\n */\n async dropDatabase(name: string): Promise<void> {\n // First, terminate all connections to the database\n await this.exec(`\n SELECT pg_terminate_backend(pg_stat_activity.pid)\n FROM pg_stat_activity\n WHERE pg_stat_activity.datname = '${name}'\n AND pid <> pg_backend_pid();\n `);\n // Now drop the database\n await this.exec(`DROP DATABASE IF EXISTS \"${name}\";`);\n }\n\n /**\n * Create a Database instance connected to a different database.\n */\n withDatabase(name: string): Database {\n const newUrl = buildDbUrl(this.dbParts, name);\n return new Database(newUrl);\n }\n\n /**\n * Get connection URL for external tools (like migra).\n */\n getConnectionUrl(): string {\n return this.connectionString;\n }\n\n /**\n * Get parsed database URL parts.\n */\n getParts(): DbUrlParts {\n return this.dbParts;\n }\n\n /**\n * Install PostgreSQL extensions.\n */\n async installExtensions(extensions: string[]): Promise<void> {\n for (const ext of extensions) {\n try {\n // Extension names should NOT be quoted\n await this.exec(`CREATE EXTENSION IF NOT EXISTS ${ext};`);\n\n // Verify extension was actually created\n const result = await this.queryParams(\n `SELECT EXISTS(SELECT 1 FROM pg_extension WHERE extname = $1) as exists`,\n [ext]\n );\n\n if (!result.rows[0]?.exists) {\n throw new Error(`Extension \"${ext}\" was not installed`);\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(\n `Failed to install extension \"${ext}\": ${message}\\n` +\n `Make sure the extension is installed on your PostgreSQL server.\\n` +\n `For pgvector: https://github.com/pgvector/pgvector#installation`\n );\n }\n }\n }\n\n /**\n * Get column information for a table.\n */\n async getTableColumns(\n tableName: string\n ): Promise<{ column_name: string; ordinal_position: number }[]> {\n const result = await this.query(`\n SELECT column_name, ordinal_position\n FROM information_schema.columns\n WHERE table_name = '${tableName}'\n ORDER BY ordinal_position;\n `);\n return result.rows as { column_name: string; ordinal_position: number }[];\n }\n\n /**\n * List all tables in the public schema.\n */\n async listTables(): Promise<string[]> {\n const result = await this.query(`\n SELECT tablename FROM pg_tables WHERE schemaname = 'public';\n `);\n return result.rows.map((row) => row.tablename as string);\n }\n}\n","export interface DbUrlParts {\n url: string;\n protocol: string;\n user: string;\n password: string;\n host: string;\n port: string;\n database: string;\n params: string;\n}\n\n/**\n * Parse a PostgreSQL connection URL and encode special characters in password.\n * Handles URLs like: postgres://user:password@host:port/database?params\n * Supports both raw passwords with special characters and already-encoded passwords.\n */\nexport function parseAndEncodeDbUrl(rawUrl: string): DbUrlParts {\n // Extract protocol\n const protocolMatch = rawUrl.match(/^(postgres(?:ql)?):\\/\\//);\n if (!protocolMatch) {\n throw new Error(\n 'Invalid DATABASE_URL format. Expected: postgres://user:password@host:port/database'\n );\n }\n\n const protocol = protocolMatch[1];\n const rest = rawUrl.slice(protocolMatch[0].length);\n\n // Find the last @ symbol (separates credentials from host)\n const lastAtIndex = rest.lastIndexOf('@');\n if (lastAtIndex === -1) {\n throw new Error(\n 'Invalid DATABASE_URL format. Expected: postgres://user:password@host:port/database'\n );\n }\n\n const credentials = rest.slice(0, lastAtIndex);\n const hostPart = rest.slice(lastAtIndex + 1);\n\n // Parse credentials (user:password)\n const colonIndex = credentials.indexOf(':');\n if (colonIndex === -1) {\n throw new Error(\n 'Invalid DATABASE_URL format. Expected: postgres://user:password@host:port/database'\n );\n }\n\n let user = credentials.slice(0, colonIndex);\n let password = credentials.slice(colonIndex + 1);\n\n // Parse host part (host:port/database?params)\n const hostMatch = hostPart.match(/^([^:]+):(\\d+)\\/([^?]+)(\\?.*)?$/);\n if (!hostMatch) {\n throw new Error(\n 'Invalid DATABASE_URL format. Expected: postgres://user:password@host:port/database'\n );\n }\n\n const [, host, port, database, params = ''] = hostMatch;\n\n // Check if credentials are already encoded by testing for % followed by hex digits\n const isEncoded = (str: string) => /%[0-9A-Fa-f]{2}/.test(str);\n\n // Only encode if not already encoded (avoid double-encoding)\n if (!isEncoded(user)) {\n user = encodeURIComponent(user);\n }\n if (!isEncoded(password)) {\n password = encodeURIComponent(password);\n }\n\n return {\n url: `${protocol}://${user}:${password}@${host}:${port}/${database}${params}`,\n protocol,\n user,\n password,\n host,\n port,\n database,\n params,\n };\n}\n\n/**\n * Build a connection URL with a different database name.\n */\nexport function buildDbUrl(parts: DbUrlParts, database: string): string {\n return `${parts.protocol}://${parts.user}:${parts.password}@${parts.host}:${parts.port}/${database}${parts.params}`;\n}\n","import { exporter } from \"@dbml/core\";\n\nexport interface DbmlResult {\n sql: string;\n}\n\n/**\n * Convert DBML schema to PostgreSQL SQL.\n */\nexport function dbmlToSql(dbmlContent: string): DbmlResult {\n const sql = exporter.export(dbmlContent, \"postgres\");\n return { sql };\n}\n","import { execFileSync } from \"child_process\";\n\nexport interface MigraResult {\n sql: string;\n hasChanges: boolean;\n}\n\n/**\n * Run migra to generate schema diff between two databases.\n *\n * Exit codes:\n * - 0: No differences\n * - 2: Differences found (SQL output on stdout)\n * - 1: Error\n */\nexport function runMigra(\n fromUrl: string,\n toUrl: string,\n options: { unsafe?: boolean; schemas?: string[] } = {}\n): MigraResult {\n const args = [fromUrl, toUrl];\n if (options.unsafe) {\n args.push(\"--unsafe\");\n }\n if (options.schemas?.length) {\n for (const schema of options.schemas) {\n args.push(\"--schema\", schema);\n }\n }\n\n try {\n const output = execFileSync(\"migra\", args, {\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n // Exit code 0 = no changes\n return { sql: output || \"\", hasChanges: false };\n } catch (error) {\n const err = error as { status?: number; stdout?: string; stderr?: string };\n\n if (err.status === 2 && err.stdout) {\n // Exit code 2 = changes found\n return { sql: err.stdout, hasChanges: true };\n }\n\n if (err.status === 1) {\n throw new Error(`migra error: ${err.stderr || \"Unknown error\"}`);\n }\n\n // Other exit codes - might still have output\n return { sql: err.stdout || \"\", hasChanges: Boolean(err.stdout) };\n }\n}\n\n/**\n * Filter out schema_migrations table from migration SQL.\n */\nexport function filterSchemaMigrations(sql: string): string {\n return sql\n .split(\"\\n\")\n .filter((line) => !line.includes(\"schema_migrations\"))\n .join(\"\\n\")\n .trim();\n}\n","import { existsSync } from \"fs\";\nimport { join } from \"path\";\nimport { pathToFileURL } from \"url\";\nimport { config as loadDotenv } from \"dotenv\";\n\nexport interface NexusqlConfig {\n dbmlFile: string;\n /** @deprecated Use dbmlFile instead */\n schema?: string;\n migrations: string;\n extensions: string[];\n databaseUrl?: string;\n targetDbSchemas?: string[]; // Restrict to specific PostgreSQL schemas (e.g., ['public', 'app'])\n}\n\nconst DEFAULT_CONFIG: NexusqlConfig = {\n dbmlFile: \"./schema.dbml\",\n migrations: \"./db/migrations\",\n extensions: [\"uuid-ossp\"],\n targetDbSchemas: [\"public\"],\n};\n\n/**\n * Load configuration from nexusql.config.js or defaults.\n */\nexport async function loadConfig(\n cwd: string = process.cwd()\n): Promise<NexusqlConfig> {\n // Load .env file\n loadDotenv();\n\n const configPath = join(cwd, \"nexusql.config.js\");\n let userConfig: Partial<NexusqlConfig> = {};\n\n if (existsSync(configPath)) {\n try {\n const configUrl = pathToFileURL(configPath).href;\n const module = await import(configUrl);\n userConfig = module.default || module;\n } catch {\n // Ignore config load errors, use defaults\n }\n }\n\n // Handle backward compatibility\n const finalConfig = {\n ...DEFAULT_CONFIG,\n ...userConfig,\n databaseUrl: process.env.DATABASE_URL || userConfig.databaseUrl,\n };\n\n // If user provided schema but not dbmlFile, use schema\n if (userConfig.schema && !userConfig.dbmlFile) {\n console.warn(\n \"Warning: 'schema' config option is deprecated. Use 'dbmlFile' instead.\"\n );\n finalConfig.dbmlFile = userConfig.schema;\n }\n\n return finalConfig;\n}\n\n/**\n * Get database URL from config or environment.\n */\nexport function getDatabaseUrl(config: NexusqlConfig): string {\n const url = config.databaseUrl || process.env.DATABASE_URL;\n if (!url) {\n throw new Error(\n \"DATABASE_URL not set. Set it in .env or nexusql.config.js\"\n );\n }\n return url;\n}\n\n/**\n * Generate default config file content.\n */\nexport function generateConfigTemplate(): string {\n return `/** @type {import('nexusql').NexusqlConfig} */\nmodule.exports = {\n // Path to your DBML schema file\n dbmlFile: './schema.dbml',\n\n // Directory for migration files\n migrations: './db/migrations',\n\n // PostgreSQL extensions to install in temp database\n extensions: ['uuid-ossp'],\n\n // Restrict to specific PostgreSQL schemas (optional, default: ['public'])\n // targetDbSchemas: ['public'],\n};\n`;\n}\n","import { execSync } from \"child_process\";\nimport chalk from \"chalk\";\n\n/**\n * Check if migra is installed and available in the PATH.\n */\nexport function checkMigra(): boolean {\n try {\n // We redirect output to ignore standard output/error\n execSync(\"migra --help\", { stdio: \"ignore\" });\n return true;\n } catch (error) {\n return false;\n }\n}\n\n/**\n * Verify migra is installed, print error and exit if not.\n */\nexport function ensureMigraOrExit(): void {\n if (!checkMigra()) {\n console.error(chalk.red(\"\\nError: 'migra' is not installed or not found in PATH.\"));\n console.error(chalk.yellow(\"\\nPlease install it using pip:\"));\n console.error(chalk.cyan(\" pip install migra\"));\n console.error(chalk.dim(\"\\nDocumentation: https://github.com/djrobstep/migra\\n\"));\n process.exit(1);\n }\n}\n","import { mkdirSync, existsSync } from \"fs\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport { gen } from \"./gen.js\";\nimport { Database } from \"../lib/database.js\";\nimport { MigrationRunner } from \"../lib/runner.js\";\nimport { createMigrationFile } from \"../lib/migrations.js\";\nimport { loadConfig, getDatabaseUrl } from \"../lib/config.js\";\nimport { question, confirm, closePrompts } from \"../utils/prompts.js\";\nimport { ensureMigraOrExit } from \"../utils/check-migra.js\";\n\nexport interface MigrateOptions {\n name?: string;\n apply?: boolean;\n yes?: boolean;\n}\n\n/**\n * Interactive migration workflow.\n */\nexport async function migrate(options: MigrateOptions = {}): Promise<void> {\n ensureMigraOrExit();\n\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n const runner = new MigrationRunner(db, config.migrations);\n\n console.log(chalk.bold(\"\\nInteractive Database Migration\\n\"));\n console.log(\"This will:\");\n console.log(\" 1. Generate migration diff from DBML\");\n console.log(\" 2. Create a new migration file\");\n console.log(\" 3. Optionally apply the migration\\n\");\n\n try {\n // Step 1: Generate diff\n console.log(chalk.cyan(\"Step 1: Generating migration diff...\\n\"));\n const migrationSql = await gen({ verbose: false });\n\n const noChanges =\n !migrationSql || migrationSql === \"-- No changes detected\";\n\n if (noChanges) {\n console.log(chalk.yellow(\"\\nNo schema changes detected.\\n\"));\n\n if (!options.yes) {\n const proceed = await confirm(\n \"Do you still want to create an empty migration?\"\n );\n if (!proceed) {\n console.log(chalk.red(\"\\nMigration cancelled.\"));\n return;\n }\n }\n }\n\n // Step 2: Get migration name\n console.log(chalk.cyan(\"\\n--- Step 2: Create Migration File ---\\n\"));\n\n let migrationName = options.name;\n if (!migrationName) {\n migrationName = await question(\n 'Enter migration name (e.g., \"add_users_table\"): '\n );\n }\n\n if (!migrationName || migrationName.trim() === \"\") {\n console.log(chalk.red(\"\\nMigration name cannot be empty. Exiting...\"));\n return;\n }\n\n const sanitizedName = migrationName.trim().replace(/\\s+/g, \"_\");\n console.log(chalk.green(`\\nUsing migration name: ${sanitizedName}`));\n\n // Confirm before creating\n if (!options.yes) {\n const proceed = await confirm(\"\\nCreate this migration?\");\n if (!proceed) {\n console.log(chalk.red(\"\\nMigration cancelled.\"));\n return;\n }\n }\n\n // Create migrations directory if needed\n if (!existsSync(config.migrations)) {\n mkdirSync(config.migrations, { recursive: true });\n }\n\n // Create migration file\n const spinner = ora(\"Creating migration file...\").start();\n const filepath = createMigrationFile(\n config.migrations,\n sanitizedName,\n noChanges ? \"\" : migrationSql\n );\n spinner.succeed(`Created migration file: ${filepath}`);\n\n // Step 3: Apply migration\n console.log(chalk.cyan(\"\\n--- Step 3: Apply Migration ---\\n\"));\n\n let shouldApply = options.apply;\n if (shouldApply === undefined && !options.yes) {\n shouldApply = await confirm(\"Apply this migration now?\");\n }\n\n if (shouldApply) {\n const applySpinner = ora(\"Applying migration...\").start();\n try {\n const applied = await runner.migrateUp();\n if (applied.length > 0) {\n applySpinner.succeed(\n `Applied ${applied.length} migration(s) successfully`\n );\n } else {\n applySpinner.info(\"No pending migrations to apply\");\n }\n } catch (error) {\n applySpinner.fail(\"Failed to apply migration\");\n throw error;\n }\n } else {\n console.log(chalk.dim(\"\\nMigration created but not applied.\"));\n console.log(chalk.dim(`Run \"nexusql up\" to apply pending migrations.`));\n }\n\n console.log(chalk.green(`\\nMigration file: ${filepath}\\n`));\n } finally {\n closePrompts();\n }\n}\n\n/**\n * Apply all pending migrations.\n */\nexport async function up(options: { dryRun?: boolean } = {}): Promise<void> {\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n const runner = new MigrationRunner(db, config.migrations);\n\n const spinner = ora(\"Checking migrations...\").start();\n\n try {\n const pending = await runner.getPendingMigrations();\n\n if (pending.length === 0) {\n spinner.info(\"No pending migrations\");\n return;\n }\n\n if (options.dryRun) {\n spinner.info(`found ${pending.length} pending migration(s):`);\n for (const m of pending) {\n console.log(chalk.cyan(` ○ ${m.name}`));\n }\n return;\n }\n\n spinner.text = \"Applying migrations...\";\n for (const migration of pending) {\n await runner.applyMigration(migration);\n console.log(chalk.green(` ✓ ${migration.name}`));\n }\n spinner.succeed(`Applied ${pending.length} migration(s)`);\n } catch (error) {\n spinner.fail(\"Migration failed\");\n throw error;\n }\n}\n\n/**\n * Rollback applied migrations.\n */\nexport async function down(\n options: { steps?: number; to?: string; dryRun?: boolean } = {}\n): Promise<void> {\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n const runner = new MigrationRunner(db, config.migrations);\n\n const spinner = ora(\"Checking migrations...\").start();\n\n try {\n // Optimization: status() reads all files. A more efficient way to get ordered applied migrations is needed if history is huge.\n // For now, sorting 'applied' from status() works.\n const { applied } = await runner.status();\n const sortedApplied = applied.sort((a, b) =>\n b.version.localeCompare(a.version)\n ); // Newest first\n\n if (sortedApplied.length === 0) {\n spinner.info(\"No applied migrations to rollback\");\n return;\n }\n\n let toRollback: typeof applied = [];\n\n if (options.to) {\n const targetIndex = sortedApplied.findIndex(\n (m) => m.version === options.to\n );\n if (targetIndex === -1) {\n // If options.to is \"rollback to version X\", we want to rollback everything > X.\n // Let's assume options.to is the target version we want to KEEP.\n // So we rollback everything where version > options.to\n toRollback = sortedApplied.filter((m) => m.version > options.to!);\n if (toRollback.length === 0) {\n spinner.info(\n `Version ${options.to} is already the latest applied or doesn't exist in future history.`\n );\n return;\n }\n } else {\n // Rollback migrations newer than X.\n toRollback = sortedApplied.filter((m) => m.version > options.to!);\n }\n } else {\n const steps = options.steps ?? 1;\n toRollback = sortedApplied.slice(0, steps);\n }\n\n if (toRollback.length === 0) {\n spinner.info(\"No migrations to rollback\");\n return;\n }\n\n if (options.dryRun) {\n spinner.info(`Would rollback ${toRollback.length} migration(s):`);\n for (const m of toRollback) {\n console.log(chalk.yellow(` ○ ${m.name}`));\n }\n return;\n }\n\n spinner.text = \"Rolling back migrations...\";\n for (const migration of toRollback) {\n await runner.rollbackMigration(migration);\n console.log(chalk.yellow(` reverted ${migration.name}`));\n }\n spinner.succeed(`Rolled back ${toRollback.length} migration(s)`);\n } catch (error) {\n spinner.fail(\"Rollback failed\");\n throw error;\n }\n}\n\n/**\n * Show migration status.\n */\nexport async function status(): Promise<void> {\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n const runner = new MigrationRunner(db, config.migrations);\n\n const spinner = ora(\"Checking migration status...\").start();\n const { applied, pending } = await runner.status();\n spinner.stop();\n\n console.log(chalk.bold(\"\\nMigration Status\\n\"));\n\n if (applied.length > 0) {\n console.log(chalk.green(\"Applied:\"));\n for (const m of applied) {\n console.log(chalk.green(` ✓ ${m.name}`));\n }\n }\n\n if (pending.length > 0) {\n console.log(chalk.yellow(\"\\nPending:\"));\n for (const m of pending) {\n console.log(chalk.yellow(` ○ ${m.name}`));\n }\n }\n\n if (applied.length === 0 && pending.length === 0) {\n console.log(chalk.dim(\"No migrations found.\"));\n }\n\n console.log();\n}\n","import { readdirSync, statSync, readFileSync, writeFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { generateReverseSql } from \"./reverse.js\";\n\nexport interface MigrationFile {\n name: string;\n path: string;\n version: string;\n mtime: number;\n}\n\n/**\n * List all migration files in a directory.\n */\nexport function listMigrations(migrationsDir: string): MigrationFile[] {\n try {\n const files = readdirSync(migrationsDir);\n return files\n .filter((f) => f.endsWith(\".sql\"))\n .map((f) => {\n const path = join(migrationsDir, f);\n const match = f.match(/^(\\d+)/);\n return {\n name: f,\n path,\n version: match ? match[1] : f,\n mtime: statSync(path).mtime.getTime(),\n };\n })\n .sort((a, b) => a.version.localeCompare(b.version));\n } catch {\n return [];\n }\n}\n\n/**\n * Get the most recently created migration file.\n */\nexport function getMostRecentMigration(\n migrationsDir: string\n): MigrationFile | null {\n const migrations = listMigrations(migrationsDir);\n if (migrations.length === 0) return null;\n\n return migrations.reduce((most, current) =>\n current.mtime > most.mtime ? current : most\n );\n}\n\n/**\n * Generate a new migration filename with timestamp.\n */\nexport function generateMigrationFilename(name: string): string {\n const timestamp = new Date().toISOString().replace(/[-:T]/g, \"\").slice(0, 14);\n const sanitized = name.replace(/\\s+/g, \"_\").toLowerCase();\n return `${timestamp}_${sanitized}.sql`;\n}\n\n/**\n * Create a new migration file with dbmate format.\n */\nexport function createMigrationFile(\n migrationsDir: string,\n name: string,\n upSql: string = \"\",\n downSql: string = \"\"\n): string {\n const filename = generateMigrationFilename(name);\n const filepath = join(migrationsDir, filename);\n\n // Auto-generate down SQL if not provided and up SQL exists\n if (!downSql && upSql) {\n downSql = generateReverseSql(upSql);\n }\n\n const content = `-- migrate:up\n${upSql}\n\n-- migrate:down\n${downSql}\n`;\n\n writeFileSync(filepath, content, \"utf-8\");\n return filepath;\n}\n\n/**\n * Update an existing migration file with SQL.\n */\nexport function updateMigrationFile(filepath: string, upSql: string): void {\n const content = readFileSync(filepath, \"utf-8\");\n const updated = content.replace(\n /-- migrate:up\\n/,\n `-- migrate:up\\n${upSql}\\n\\n`\n );\n writeFileSync(filepath, updated, \"utf-8\");\n}\n\n/**\n * Parse a migration file into up and down sections.\n */\nexport function parseMigrationFile(filepath: string): {\n up: string;\n down: string;\n} {\n const content = readFileSync(filepath, \"utf-8\");\n const upMatch = content.match(\n /-- migrate:up\\n([\\s\\S]*?)(?=-- migrate:down|$)/\n );\n const downMatch = content.match(/-- migrate:down\\n([\\s\\S]*?)$/);\n\n return {\n up: upMatch ? upMatch[1].trim() : \"\",\n down: downMatch ? downMatch[1].trim() : \"\",\n };\n}\n","/**\n * Generate reverse SQL for simple DDL statements.\n * LIMITATION: Only supports basic CREATE/DROP TABLE/INDEX and ADD/DROP COLUMN.\n * Complex changes (ALTER COLUMN type, constraints) need manual intervention.\n */\nexport function generateReverseSql(upSql: string): string {\n if (!upSql) return \"\";\n\n const downStatements: string[] = [];\n const lines = upSql\n .split(\";\")\n .map((l) => l.trim())\n .filter((l) => l);\n\n for (const line of lines) {\n // CREATE TABLE x -> DROP TABLE x\n const createTableMatch = line.match(\n /CREATE\\s+TABLE\\s+(?:IF\\s+NOT\\s+EXISTS\\s+)?([^\\s(]+)/i\n );\n if (createTableMatch) {\n const tableName = createTableMatch[1];\n downStatements.push(`DROP TABLE ${tableName};`);\n continue;\n }\n\n // DROP TABLE x -> Manual\n const dropTableMatch = line.match(\n /DROP\\s+TABLE\\s+(?:IF\\s+EXISTS\\s+)?([^\\s;]+)/i\n );\n if (dropTableMatch) {\n const tableName = dropTableMatch[1];\n downStatements.push(`-- Manual: Recreate table ${tableName}`);\n continue;\n }\n\n // ALTER TABLE x ADD COLUMN y -> ALTER TABLE x DROP COLUMN y\n const addColumnMatch = line.match(\n /ALTER\\s+TABLE\\s+([^\\s]+)\\s+ADD\\s+(?:COLUMN\\s+)?([^\\s;]+)/i\n );\n if (addColumnMatch) {\n const [, tableName, colName] = addColumnMatch;\n downStatements.push(`ALTER TABLE ${tableName} DROP COLUMN ${colName};`);\n continue;\n }\n\n // ALTER TABLE x DROP COLUMN y -> Manual\n const dropColumnMatch = line.match(\n /ALTER\\s+TABLE\\s+([^\\s]+)\\s+DROP\\s+(?:COLUMN\\s+)?([^\\s;]+)/i\n );\n if (dropColumnMatch) {\n const [, tableName, colName] = dropColumnMatch;\n downStatements.push(\n `-- Manual: Add column ${colName} back to table ${tableName}`\n );\n continue;\n }\n\n // CREATE INDEX x -> DROP INDEX x\n const createIndexMatch = line.match(\n /CREATE\\s+(?:UNIQUE\\s+)?INDEX\\s+(?:IF\\s+NOT\\s+EXISTS\\s+)?([^\\s]+)\\s+ON/i\n );\n if (createIndexMatch) {\n const indexName = createIndexMatch[1];\n downStatements.push(`DROP INDEX ${indexName};`);\n continue;\n }\n\n // DROP INDEX x -> Manual\n const dropIndexMatch = line.match(\n /DROP\\s+INDEX\\s+(?:IF\\s+EXISTS\\s+)?([^\\s;]+)/i\n );\n if (dropIndexMatch) {\n const indexName = dropIndexMatch[1];\n downStatements.push(`-- Manual: Recreate index ${indexName}`);\n continue;\n }\n\n // Fallback\n downStatements.push(`-- Manual: Revert ${line.substring(0, 50)}...`);\n }\n\n // Reverse the order of down statements\n return downStatements.reverse().join(\"\\n\");\n}\n","import { Database } from \"./database.js\";\nimport {\n listMigrations,\n parseMigrationFile,\n type MigrationFile,\n} from \"./migrations.js\";\n\nconst SCHEMA_MIGRATIONS_TABLE = \"schema_migrations\";\n\n/**\n * Migration runner - replaces dbmate functionality.\n */\nexport class MigrationRunner {\n private db: Database;\n private migrationsDir: string;\n\n constructor(db: Database, migrationsDir: string) {\n this.db = db;\n this.migrationsDir = migrationsDir;\n }\n\n /**\n * Ensure schema_migrations table exists.\n */\n async ensureTable(): Promise<void> {\n await this.db.exec(`\n CREATE TABLE IF NOT EXISTS ${SCHEMA_MIGRATIONS_TABLE} (\n version VARCHAR(255) PRIMARY KEY\n );\n `);\n }\n\n /**\n * Get list of applied migration versions.\n */\n async getAppliedVersions(): Promise<Set<string>> {\n await this.ensureTable();\n const result = await this.db.query(\n `SELECT version FROM ${SCHEMA_MIGRATIONS_TABLE};`\n );\n return new Set(result.rows.map((row) => row.version as string));\n }\n\n /**\n * Mark a migration as applied.\n */\n async markApplied(version: string, client?: any): Promise<void> {\n await this.ensureTable();\n const sql = `\n INSERT INTO ${SCHEMA_MIGRATIONS_TABLE} (version)\n VALUES ($1)\n ON CONFLICT DO NOTHING;\n `;\n\n if (client) {\n await client.query(sql, [version]);\n } else {\n await this.db.execParams(sql, [version]);\n }\n }\n\n /**\n * Mark a migration as not applied (for rollback).\n */\n async markUnapplied(version: string, client?: any): Promise<void> {\n const sql = `\n DELETE FROM ${SCHEMA_MIGRATIONS_TABLE}\n WHERE version = $1;\n `;\n\n if (client) {\n await client.query(sql, [version]);\n } else {\n await this.db.execParams(sql, [version]);\n }\n }\n\n /**\n * Get pending migrations (not yet applied).\n */\n async getPendingMigrations(): Promise<MigrationFile[]> {\n const all = listMigrations(this.migrationsDir);\n const applied = await this.getAppliedVersions();\n return all.filter((m) => !applied.has(m.version));\n }\n\n /**\n * Apply a single migration.\n */\n async applyMigration(migration: MigrationFile): Promise<void> {\n const { up } = parseMigrationFile(migration.path);\n\n await this.db.withTransaction(async (client) => {\n if (up) {\n await client.query(up);\n }\n await this.markApplied(migration.version, client);\n });\n }\n\n /**\n * Roll back a single migration.\n */\n async rollbackMigration(migration: MigrationFile): Promise<void> {\n const { down } = parseMigrationFile(migration.path);\n\n await this.db.withTransaction(async (client) => {\n if (down) {\n await client.query(down);\n }\n await this.markUnapplied(migration.version, client);\n });\n }\n\n /**\n * Apply all pending migrations.\n */\n async migrateUp(): Promise<MigrationFile[]> {\n const pending = await this.getPendingMigrations();\n for (const migration of pending) {\n await this.applyMigration(migration);\n }\n return pending;\n }\n\n /**\n * Get migration status.\n */\n async status(): Promise<{\n applied: MigrationFile[];\n pending: MigrationFile[];\n }> {\n const all = listMigrations(this.migrationsDir);\n const appliedVersions = await this.getAppliedVersions();\n\n return {\n applied: all.filter((m) => appliedVersions.has(m.version)),\n pending: all.filter((m) => !appliedVersions.has(m.version)),\n };\n }\n}\n","import * as readline from \"readline\";\n\nlet rl: readline.Interface | null = null;\n\n/**\n * Get or create readline interface.\n */\nfunction getReadline(): readline.Interface {\n if (!rl) {\n rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n terminal: process.stdin.isTTY ?? false,\n });\n\n // Handle close event to reset rl\n rl.on(\"close\", () => {\n rl = null;\n });\n }\n return rl;\n}\n\n/**\n * Close readline interface.\n */\nexport function closePrompts(): void {\n if (rl) {\n rl.close();\n rl = null;\n }\n}\n\n/**\n * Ask user a question and return their answer.\n */\nexport function question(query: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const readline = getReadline();\n\n // Handle the case where readline closes unexpectedly\n const closeHandler = () => {\n reject(new Error(\"Readline closed unexpectedly\"));\n };\n readline.once(\"close\", closeHandler);\n\n readline.question(query, (answer) => {\n readline.removeListener(\"close\", closeHandler);\n resolve(answer);\n });\n });\n}\n\n/**\n * Ask a yes/no question.\n */\nexport async function confirm(query: string): Promise<boolean> {\n const answer = await question(`${query} (yes/no): `);\n return answer.toLowerCase() === \"yes\" || answer.toLowerCase() === \"y\";\n}\n","import chalk from 'chalk';\nimport ora from 'ora';\nimport { Database } from '../lib/database.js';\nimport { MigrationRunner } from '../lib/runner.js';\nimport { loadConfig, getDatabaseUrl } from '../lib/config.js';\n\n/**\n * Mark a migration as applied without running it.\n */\nexport async function markApplied(version: string): Promise<void> {\n if (!version) {\n console.error(chalk.red('Error: Migration version is required'));\n console.log(chalk.dim('\\nUsage: nexusql mark-applied <version>'));\n console.log(chalk.dim('Example: nexusql mark-applied 20251209153535'));\n process.exit(1);\n }\n\n const config = await loadConfig();\n const databaseUrl = getDatabaseUrl(config);\n const db = new Database(databaseUrl);\n const runner = new MigrationRunner(db, config.migrations);\n\n const spinner = ora(`Marking migration ${version} as applied...`).start();\n\n try {\n await runner.markApplied(version);\n spinner.succeed(`Migration ${version} marked as applied`);\n } catch (error) {\n spinner.fail('Failed to mark migration as applied');\n throw error;\n }\n}\n","import { writeFileSync, existsSync, mkdirSync } from 'fs';\nimport { join } from 'path';\nimport chalk from 'chalk';\nimport { generateConfigTemplate } from '../lib/config.js';\n\nexport interface InitOptions {\n force?: boolean;\n}\n\n/**\n * Initialize nexusql configuration.\n */\nexport async function init(options: InitOptions = {}): Promise<void> {\n const cwd = process.cwd();\n\n // Create config file\n const configPath = join(cwd, 'nexusql.config.js');\n\n if (existsSync(configPath) && !options.force) {\n console.log(chalk.yellow('nexusql.config.js already exists.'));\n console.log(chalk.dim('Use --force to overwrite.'));\n return;\n }\n\n writeFileSync(configPath, generateConfigTemplate(), 'utf-8');\n console.log(chalk.green('Created nexusql.config.js'));\n\n // Create migrations directory\n const migrationsDir = join(cwd, 'db', 'migrations');\n if (!existsSync(migrationsDir)) {\n mkdirSync(migrationsDir, { recursive: true });\n console.log(chalk.green('Created db/migrations/'));\n }\n\n // Create .env.example if it doesn't exist\n const envExamplePath = join(cwd, '.env.example');\n if (!existsSync(envExamplePath)) {\n writeFileSync(\n envExamplePath,\n 'DATABASE_URL=postgres://user:password@localhost:5432/database\\n',\n 'utf-8'\n );\n console.log(chalk.green('Created .env.example'));\n }\n\n console.log(chalk.bold('\\nNext steps:'));\n console.log(' 1. Copy .env.example to .env and set your DATABASE_URL');\n console.log(' 2. Create your schema.dbml file');\n console.log(' 3. Run \"nexusql gen\" to generate migration SQL');\n console.log(' 4. Run \"nexusql migrate\" to create and apply migrations\\n');\n}\n","import { readFileSync, writeFileSync } from \"fs\";\nimport { resolve } from \"path\";\nimport ora from \"ora\";\nimport { loadConfig } from \"../lib/config.js\";\nimport { generateTypes } from \"../lib/types-generator.js\";\n\nexport interface TypesOptions {\n output?: string;\n}\n\nexport async function types(options: TypesOptions = {}): Promise<void> {\n const config = await loadConfig();\n const spinner = ora(\"Generating TypeScript definitions...\").start();\n\n try {\n const schemaPath = resolve(config.dbmlFile);\n const dbmlContent = readFileSync(schemaPath, \"utf-8\");\n\n const tsContent = generateTypes(dbmlContent);\n\n // Determine output path: CLI flag > config > default\n const outputPath = options.output || \"src/types/schema.d.ts\";\n\n // Ensure directory exists? writeFileSync handles it if recursive? No.\n // But let's assume user provides valid path or we just write to current.\n\n writeFileSync(resolve(outputPath), tsContent, \"utf-8\");\n\n spinner.succeed(`Generated types at: ${outputPath}`);\n } catch (error) {\n spinner.fail(\"Failed to generate types\");\n throw error;\n }\n}\n","import { Parser } from '@dbml/core';\n\nexport interface GenerateTypesOptions {\n output?: string;\n}\n\nconst TYPE_MAP: Record<string, string> = {\n // Numbers\n int: 'number',\n integer: 'number',\n smallint: 'number',\n bigint: 'number',\n serial: 'number',\n bigserial: 'number',\n decimal: 'number',\n numeric: 'number',\n real: 'number',\n float: 'number',\n double: 'number',\n 'double precision': 'number',\n\n // Strings\n varchar: 'string',\n char: 'string',\n character: 'string',\n text: 'string',\n uuid: 'string',\n \n // Boolean\n bool: 'boolean',\n boolean: 'boolean',\n\n // Dates\n date: 'Date',\n datetime: 'Date',\n timestamp: 'Date',\n timestamptz: 'Date',\n time: 'string',\n timetz: 'string',\n interval: 'string',\n\n // JSON\n json: 'any',\n jsonb: 'any',\n \n // Others\n inet: 'string',\n cidr: 'string',\n macaddr: 'string',\n};\n\nfunction mapType(dbmlType: string): string {\n const normalized = dbmlType.toLowerCase().split('(')[0].trim();\n return TYPE_MAP[normalized] || 'any';\n}\n\nfunction toPascalCase(str: string): string {\n return str\n .replace(/(?:^|[-_])(\\w)/g, (_, c) => c.toUpperCase())\n .replace(/[-_]/g, '');\n}\n\nexport function generateTypes(dbmlContent: string): string {\n const database = new Parser().parse(dbmlContent, 'dbml');\n \n // @ts-ignore - The types for @dbml/core might be incomplete or I'm accessing internal structure\n const tables = database.schemas.flatMap(s => s.tables);\n // @ts-ignore\n const enums = database.schemas.flatMap(s => s.enums);\n\n let output = `/**\n * This file was generated by nexusql.\n * Do not modify this file manually.\n */\n\n`;\n\n // Generate Enums\n for (const enm of enums) {\n output += `export enum ${toPascalCase(enm.name)} {\n`;\n for (const value of enm.values) {\n output += ` ${value.name} = '${value.name}',\n`;\n }\n output += `}\n\n`;\n }\n\n // Generate Tables\n for (const table of tables) {\n const interfaceName = toPascalCase(table.name);\n output += `export interface ${interfaceName} {\n`;\n\n for (const field of table.fields) {\n const isOptional = !field.not_null || field.increment; // Auto-increment fields are optional on insert, but mandatory on select... \n // For a general \"Row\" interface, nullable fields are null | type.\n // Let's stick to the \"Select\" shape: if it can be null, it is type | null.\n \n const tsType = mapType(field.type.type_name);\n const nullableSuffix = field.not_null ? '' : ' | null';\n \n output += ` ${field.name}: ${tsType}${nullableSuffix};\n`;\n }\n\n output += `}\n\n`;\n }\n\n return output;\n}\n","import chalk from 'chalk';\nimport { loadConfig, getDatabaseUrl } from '../lib/config.js';\nimport { Database } from '../lib/database.js';\nimport { parseAndEncodeDbUrl } from '../lib/db-url.js';\n\n/**\n * Test database connection.\n */\nexport async function testConnection(): Promise<void> {\n console.log(chalk.bold('Testing database connection...\\n'));\n\n try {\n // Load config and get DATABASE_URL\n const config = await loadConfig();\n const rawUrl = getDatabaseUrl(config);\n\n // Parse and display connection details\n const parsed = parseAndEncodeDbUrl(rawUrl);\n console.log(chalk.cyan('Connection details:'));\n console.log(chalk.dim(' Protocol:'), parsed.protocol);\n console.log(chalk.dim(' User:'), parsed.user);\n console.log(chalk.dim(' Host:'), parsed.host);\n console.log(chalk.dim(' Port:'), parsed.port);\n console.log(chalk.dim(' Database:'), parsed.database);\n console.log(chalk.dim(' Password:'), '***' + decodeURIComponent(parsed.password).slice(-4));\n console.log();\n\n // Attempt to connect\n const db = new Database(rawUrl);\n const result = await db.query('SELECT current_user, current_database(), version()');\n\n console.log(chalk.green('✓ Connection successful!\\n'));\n console.log(chalk.cyan('Server info:'));\n console.log(chalk.dim(' Current user:'), result.rows[0].current_user);\n console.log(chalk.dim(' Current database:'), result.rows[0].current_database);\n console.log(chalk.dim(' PostgreSQL version:'), (result.rows[0].version as string).split(',')[0]);\n } catch (error) {\n console.log(chalk.red('✗ Connection failed!\\n'));\n console.error(chalk.red('Error:'), (error as Error).message);\n\n // Provide helpful hints\n console.log(chalk.yellow('\\nTroubleshooting tips:'));\n console.log(' • Check DATABASE_URL in your .env file');\n console.log(' • Ensure special characters in password are NOT URL-encoded');\n console.log(' • Verify the database server is running');\n console.log(' • Check host, port, username, and database name');\n\n process.exit(1);\n }\n}\n"],"mappings":"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CT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,QAAU;AAAA,QACT,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,UAAY;AAAA,QACX,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAQ;AAAA,QACP,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AA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A,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAQ;AAAA,QACP,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,QAAU;AAAA,QACT,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,MACA,MAAQ;AAAA,QACP,UAAY;AAAA,QACZ,QAAU;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UAC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AAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACr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","names":["readFileSync","join","process","process","styles","chalk","styles","process","process","onetime","process","process","process","process","process","isUnicodeSupported","env","process","import_cli_spinners","process","isUnicodeSupported","cliSpinners","existsSync","readFileSync","writeFileSync","join","join","join","writeFileSync","readFileSync","up","down","resolve","readline","existsSync","writeFileSync","existsSync","mkdirSync","join","join","existsSync","writeFileSync","mkdirSync","readFileSync","writeFileSync","resolve","resolve","readFileSync","writeFileSync","readFileSync","join"]}
|