permaweb-deploy 4.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +174 -511
  2. package/dist/chunks/chalk-BP_cCc9v.js +49 -0
  3. package/dist/chunks/chalk-BP_cCc9v.js.map +1 -0
  4. package/dist/chunks/{display-WYdGiMxZ.js → display-CZV6KUcG.js} +2 -2
  5. package/dist/chunks/{display-WYdGiMxZ.js.map → display-CZV6KUcG.js.map} +1 -1
  6. package/dist/chunks/upload-workflow-f3hExxtV.js +620 -0
  7. package/dist/chunks/upload-workflow-f3hExxtV.js.map +1 -0
  8. package/dist/chunks/{uploader-CC-qBdlV.js → uploader-Bz9jraY2.js} +15 -17
  9. package/dist/chunks/uploader-Bz9jraY2.js.map +1 -0
  10. package/dist/commands/deploy.js +72 -98
  11. package/dist/commands/deploy.js.map +1 -1
  12. package/dist/commands/hyperbeam-uploaders.js +48 -0
  13. package/dist/commands/hyperbeam-uploaders.js.map +1 -0
  14. package/dist/commands/upload.js +11 -12
  15. package/dist/commands/upload.js.map +1 -1
  16. package/dist/constants/flags.js +66 -97
  17. package/dist/constants/flags.js.map +1 -1
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/prompts/names.js +13 -0
  21. package/dist/prompts/names.js.map +1 -0
  22. package/dist/src/commands/deploy.d.ts +1 -1
  23. package/dist/src/commands/deploy.d.ts.map +1 -1
  24. package/dist/src/commands/hyperbeam-uploaders.d.ts +14 -0
  25. package/dist/src/commands/hyperbeam-uploaders.d.ts.map +1 -0
  26. package/dist/src/commands/upload.d.ts +1 -1
  27. package/dist/src/commands/upload.d.ts.map +1 -1
  28. package/dist/src/constants/flags.d.ts +271 -100
  29. package/dist/src/constants/flags.d.ts.map +1 -1
  30. package/dist/src/index.d.ts +2 -0
  31. package/dist/src/index.d.ts.map +1 -1
  32. package/dist/src/prompts/names.d.ts +2 -0
  33. package/dist/src/prompts/names.d.ts.map +1 -0
  34. package/dist/src/types/index.d.ts +0 -29
  35. package/dist/src/types/index.d.ts.map +1 -1
  36. package/dist/src/utils/__tests__/hyperbeam-uploaders-cli.test.d.ts +2 -0
  37. package/dist/src/utils/__tests__/hyperbeam-uploaders-cli.test.d.ts.map +1 -0
  38. package/dist/src/utils/__tests__/names.test.d.ts +2 -0
  39. package/dist/src/utils/__tests__/names.test.d.ts.map +1 -0
  40. package/dist/src/utils/__tests__/permawebos-bundlers.test.d.ts +2 -0
  41. package/dist/src/utils/__tests__/permawebos-bundlers.test.d.ts.map +1 -0
  42. package/dist/src/utils/config-resolver.d.ts +29 -11
  43. package/dist/src/utils/config-resolver.d.ts.map +1 -1
  44. package/dist/src/utils/constants.d.ts +0 -2
  45. package/dist/src/utils/constants.d.ts.map +1 -1
  46. package/dist/src/utils/hyperbeam-uploader.d.ts +7 -0
  47. package/dist/src/utils/hyperbeam-uploader.d.ts.map +1 -1
  48. package/dist/src/utils/hyperbeam-uploaders-cli.d.ts +7 -0
  49. package/dist/src/utils/hyperbeam-uploaders-cli.d.ts.map +1 -0
  50. package/dist/src/utils/legacy-bundler-uploader.d.ts +29 -0
  51. package/dist/src/utils/legacy-bundler-uploader.d.ts.map +1 -0
  52. package/dist/src/utils/names.d.ts +46 -0
  53. package/dist/src/utils/names.d.ts.map +1 -0
  54. package/dist/src/utils/permawebos-bundlers.d.ts +28 -0
  55. package/dist/src/utils/permawebos-bundlers.d.ts.map +1 -0
  56. package/dist/src/utils/signer.d.ts +4 -6
  57. package/dist/src/utils/signer.d.ts.map +1 -1
  58. package/dist/src/utils/uploader.d.ts +5 -7
  59. package/dist/src/utils/uploader.d.ts.map +1 -1
  60. package/dist/src/utils/validators.d.ts +13 -20
  61. package/dist/src/utils/validators.d.ts.map +1 -1
  62. package/dist/src/workflows/upload-workflow.d.ts +3 -4
  63. package/dist/src/workflows/upload-workflow.d.ts.map +1 -1
  64. package/dist/tests/mocks/{turbo-handlers.d.ts → legacy-handlers.d.ts} +12 -27
  65. package/dist/tests/mocks/legacy-handlers.d.ts.map +1 -0
  66. package/dist/tests/setup.d.ts +2 -2
  67. package/dist/tests/setup.d.ts.map +1 -1
  68. package/dist/tests/types/payment-service.d.ts +2 -2
  69. package/dist/tests/types/payment-service.d.ts.map +1 -1
  70. package/dist/tests/types/upload-service.d.ts +1 -1
  71. package/dist/tests/types/upload-service.d.ts.map +1 -1
  72. package/dist/utils/config-resolver.js +4 -1
  73. package/dist/utils/config-resolver.js.map +1 -1
  74. package/dist/utils/constants.js +1 -3
  75. package/dist/utils/constants.js.map +1 -1
  76. package/dist/utils/hyperbeam-uploaders-cli.js +32 -0
  77. package/dist/utils/hyperbeam-uploaders-cli.js.map +1 -0
  78. package/dist/utils/names.js +157 -0
  79. package/dist/utils/names.js.map +1 -0
  80. package/dist/utils/permawebos-bundlers.js +120 -0
  81. package/dist/utils/permawebos-bundlers.js.map +1 -0
  82. package/dist/utils/signer.js +3 -2
  83. package/dist/utils/signer.js.map +1 -1
  84. package/dist/utils/uploader.js +1 -1
  85. package/dist/utils/validators.js +3 -39
  86. package/dist/utils/validators.js.map +1 -1
  87. package/dist/workflows/upload-workflow.js +5 -6
  88. package/dist/workflows/upload-workflow.js.map +1 -1
  89. package/package.json +5 -5
  90. package/dist/chunks/upload-workflow-BnN8mhkm.js +0 -1195
  91. package/dist/chunks/upload-workflow-BnN8mhkm.js.map +0 -1
  92. package/dist/chunks/uploader-CC-qBdlV.js.map +0 -1
  93. package/dist/prompts/arns.js +0 -89
  94. package/dist/prompts/arns.js.map +0 -1
  95. package/dist/src/prompts/arns.d.ts +0 -13
  96. package/dist/src/prompts/arns.d.ts.map +0 -1
  97. package/dist/tests/mocks/turbo-handlers.d.ts.map +0 -1
@@ -0,0 +1,49 @@
1
+ const RESET = "\x1B[0m";
2
+ const WHITE = "\x1B[37m";
3
+ const BG_BLACK = "\x1B[40m";
4
+ const colorCodes = [
5
+ ["bold", "\x1B[1m"],
6
+ ["dim", "\x1B[2m"],
7
+ ["italic", "\x1B[3m"],
8
+ ["underline", "\x1B[4m"],
9
+ ["inverse", "\x1B[7m"],
10
+ ["strikethrough", "\x1B[9m"],
11
+ ["black", "\x1B[30m"],
12
+ ["red", "\x1B[31m"],
13
+ ["green", "\x1B[32m"],
14
+ ["yellow", "\x1B[33m"],
15
+ ["blue", "\x1B[34m"],
16
+ ["magenta", "\x1B[35m"],
17
+ ["cyan", "\x1B[36m"],
18
+ ["white", WHITE],
19
+ ["gray", "\x1B[90m"],
20
+ ["grey", "\x1B[90m"],
21
+ ["blackBright", "\x1B[90m"],
22
+ ["redBright", "\x1B[91m"],
23
+ ["greenBright", "\x1B[92m"],
24
+ ["yellowBright", "\x1B[93m"],
25
+ ["blueBright", "\x1B[94m"],
26
+ ["magentaBright", "\x1B[95m"],
27
+ ["cyanBright", "\x1B[96m"],
28
+ ["whiteBright", "\x1B[97m"],
29
+ ["bgBlack", BG_BLACK],
30
+ ["bgRed", "\x1B[41m"],
31
+ ["bgGreen", "\x1B[42m"],
32
+ ["bgYellow", "\x1B[43m"],
33
+ ["bgBlue", "\x1B[44m"],
34
+ ["bgMagenta", "\x1B[45m"],
35
+ ["bgCyan", "\x1B[46m"],
36
+ ["bgWhite", "\x1B[47m"],
37
+ ["bgBlackBright", "\x1B[100m"]
38
+ ];
39
+ const createColorFunction = (code) => (text) => `${code}${String(text)}${RESET}`;
40
+ const colorFunctions = {};
41
+ for (const [name, code] of colorCodes) {
42
+ colorFunctions[name] = createColorFunction(code);
43
+ }
44
+ const chalk = Object.assign(colorFunctions, {
45
+ highlight: (text) => `${BG_BLACK}${WHITE}${String(text)} ${RESET}`
46
+ });
47
+
48
+ export { chalk as c };
49
+ //# sourceMappingURL=chalk-BP_cCc9v.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chalk-BP_cCc9v.js","sources":["../../src/utils/chalk.ts"],"sourcesContent":["const RESET = '\\u001B[0m'\nconst WHITE = '\\u001B[37m'\nconst BG_BLACK = '\\u001B[40m'\n\nconst colorCodes = [\n ['bold', '\\u001B[1m'],\n ['dim', '\\u001B[2m'],\n ['italic', '\\u001B[3m'],\n ['underline', '\\u001B[4m'],\n ['inverse', '\\u001B[7m'],\n ['strikethrough', '\\u001B[9m'],\n\n ['black', '\\u001B[30m'],\n ['red', '\\u001B[31m'],\n ['green', '\\u001B[32m'],\n ['yellow', '\\u001B[33m'],\n ['blue', '\\u001B[34m'],\n ['magenta', '\\u001B[35m'],\n ['cyan', '\\u001B[36m'],\n ['white', WHITE],\n ['gray', '\\u001B[90m'],\n ['grey', '\\u001B[90m'],\n\n ['blackBright', '\\u001B[90m'],\n ['redBright', '\\u001B[91m'],\n ['greenBright', '\\u001B[92m'],\n ['yellowBright', '\\u001B[93m'],\n ['blueBright', '\\u001B[94m'],\n ['magentaBright', '\\u001B[95m'],\n ['cyanBright', '\\u001B[96m'],\n ['whiteBright', '\\u001B[97m'],\n\n ['bgBlack', BG_BLACK],\n ['bgRed', '\\u001B[41m'],\n ['bgGreen', '\\u001B[42m'],\n ['bgYellow', '\\u001B[43m'],\n ['bgBlue', '\\u001B[44m'],\n ['bgMagenta', '\\u001B[45m'],\n ['bgCyan', '\\u001B[46m'],\n ['bgWhite', '\\u001B[47m'],\n ['bgBlackBright', '\\u001B[100m'],\n] as const\n\ntype ColorName = (typeof colorCodes)[number][0]\ntype ColorFunction = (text: unknown) => string\ntype Chalk = {\n highlight: ColorFunction\n} & Record<ColorName, ColorFunction>\n\nconst createColorFunction =\n (code: string): ColorFunction =>\n (text) =>\n `${code}${String(text)}${RESET}`\n\nconst colorFunctions = {} as Record<ColorName, ColorFunction>\n\nfor (const [name, code] of colorCodes) {\n colorFunctions[name] = createColorFunction(code)\n}\n\nexport const chalk: Chalk = Object.assign(colorFunctions, {\n highlight: (text: unknown) => `${BG_BLACK}${WHITE}${String(text)} ${RESET}`,\n})\n"],"names":[],"mappings":"AAAA,MAAM,KAAA,GAAQ,SAAA;AACd,MAAM,KAAA,GAAQ,UAAA;AACd,MAAM,QAAA,GAAW,UAAA;AAEjB,MAAM,UAAA,GAAa;AAAA,EACjB,CAAC,QAAQ,SAAW,CAAA;AAAA,EACpB,CAAC,OAAO,SAAW,CAAA;AAAA,EACnB,CAAC,UAAU,SAAW,CAAA;AAAA,EACtB,CAAC,aAAa,SAAW,CAAA;AAAA,EACzB,CAAC,WAAW,SAAW,CAAA;AAAA,EACvB,CAAC,iBAAiB,SAAW,CAAA;AAAA,EAE7B,CAAC,SAAS,UAAY,CAAA;AAAA,EACtB,CAAC,OAAO,UAAY,CAAA;AAAA,EACpB,CAAC,SAAS,UAAY,CAAA;AAAA,EACtB,CAAC,UAAU,UAAY,CAAA;AAAA,EACvB,CAAC,QAAQ,UAAY,CAAA;AAAA,EACrB,CAAC,WAAW,UAAY,CAAA;AAAA,EACxB,CAAC,QAAQ,UAAY,CAAA;AAAA,EACrB,CAAC,SAAS,KAAK,CAAA;AAAA,EACf,CAAC,QAAQ,UAAY,CAAA;AAAA,EACrB,CAAC,QAAQ,UAAY,CAAA;AAAA,EAErB,CAAC,eAAe,UAAY,CAAA;AAAA,EAC5B,CAAC,aAAa,UAAY,CAAA;AAAA,EAC1B,CAAC,eAAe,UAAY,CAAA;AAAA,EAC5B,CAAC,gBAAgB,UAAY,CAAA;AAAA,EAC7B,CAAC,cAAc,UAAY,CAAA;AAAA,EAC3B,CAAC,iBAAiB,UAAY,CAAA;AAAA,EAC9B,CAAC,cAAc,UAAY,CAAA;AAAA,EAC3B,CAAC,eAAe,UAAY,CAAA;AAAA,EAE5B,CAAC,WAAW,QAAQ,CAAA;AAAA,EACpB,CAAC,SAAS,UAAY,CAAA;AAAA,EACtB,CAAC,WAAW,UAAY,CAAA;AAAA,EACxB,CAAC,YAAY,UAAY,CAAA;AAAA,EACzB,CAAC,UAAU,UAAY,CAAA;AAAA,EACvB,CAAC,aAAa,UAAY,CAAA;AAAA,EAC1B,CAAC,UAAU,UAAY,CAAA;AAAA,EACvB,CAAC,WAAW,UAAY,CAAA;AAAA,EACxB,CAAC,iBAAiB,WAAa;AACjC,CAAA;AAQA,MAAM,mBAAA,GACJ,CAAC,IAAA,KACD,CAAC,IAAA,KACC,CAAA,EAAG,IAAI,CAAA,EAAG,MAAA,CAAO,IAAI,CAAC,CAAA,EAAG,KAAK,CAAA,CAAA;AAElC,MAAM,iBAAiB,EAAC;AAExB,KAAA,MAAW,CAAC,IAAA,EAAM,IAAI,CAAA,IAAK,UAAA,EAAY;AACrC,EAAA,cAAA,CAAe,IAAI,CAAA,GAAI,mBAAA,CAAoB,IAAI,CAAA;AACjD;AAEO,MAAM,KAAA,GAAe,MAAA,CAAO,MAAA,CAAO,cAAA,EAAgB;AAAA,EACxD,SAAA,EAAW,CAAC,IAAA,KAAkB,CAAA,EAAG,QAAQ,CAAA,EAAG,KAAK,CAAA,EAAG,MAAA,CAAO,IAAI,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA;AAC3E,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- import { c as chalk } from './upload-workflow-BnN8mhkm.js';
1
+ import { c as chalk } from './chalk-BP_cCc9v.js';
2
2
 
3
3
  const AO_BASE_UNITS = 1000000000000n;
4
4
  function formatUploadSize(size) {
@@ -50,4 +50,4 @@ ${formatDisplayRows(rows)}`;
50
50
  }
51
51
 
52
52
  export { formatUploadError as a, formatUploadSize as b, formatUploadCost as c, formatDisplayRows as f };
53
- //# sourceMappingURL=display-WYdGiMxZ.js.map
53
+ //# sourceMappingURL=display-CZV6KUcG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"display-WYdGiMxZ.js","sources":["../../src/utils/display.ts"],"sourcesContent":["import { chalk } from './chalk.js'\nimport type { UploadCost, UploadSize } from './hyperbeam-uploader.js'\n\nconst AO_BASE_UNITS = 1_000_000_000_000n\n\nexport type DisplayRow = [label: string, value: string]\n\nexport function formatUploadSize(size: UploadSize): string {\n return `${(size.signedBytes ?? size.payloadBytes).toLocaleString()} bytes`\n}\n\nexport function formatUploadCost(cost: UploadCost): string {\n if (cost.token !== 'AO') {\n return `${cost.amount.toString()}`\n }\n\n const whole = cost.amount / AO_BASE_UNITS\n const fraction = cost.amount % AO_BASE_UNITS\n const decimal =\n fraction === 0n\n ? whole.toString()\n : `${whole.toString()}.${fraction.toString().padStart(12, '0').replaceAll(/0+$/g, '')}`\n\n return `${decimal} AO`\n}\n\nexport function formatDisplayRows(rows: DisplayRow[]): string {\n return rows.map(([label, value]) => `${label}: ${value}`).join('\\n')\n}\n\nfunction fundingDisplay(section: string): string {\n const fundingLine = section\n .split('\\n')\n .map((line) => line.trim())\n .find((line) => line.startsWith('- '))\n ?.replace(/^- /, '')\n\n if (!fundingLine) {\n return section\n }\n\n return fundingLine\n .replace(/^AO: send funds to /, 'Sending AO to ')\n .replace(/\\. Local ledger:.*$/, '')\n}\n\nexport function formatUploadError(message: string, title = 'Upload failed'): string {\n const rows: DisplayRow[] = []\n const sections = message\n .split(/\\n{2,}/)\n .map((section) => section.trim())\n .filter(Boolean)\n\n for (const [index, section] of sections.entries()) {\n if (index === 0) {\n rows.push(['Error', chalk.red(section)])\n continue\n }\n\n if (section.startsWith('Required upload credit:')) {\n rows.push([\n 'Required upload credit',\n chalk.blue(section.replace(/^Required upload credit:\\s*/, '')),\n ])\n continue\n }\n\n if (section.startsWith('The HyperBEAM node requires AO')) {\n rows.push(['Funding', fundingDisplay(section)])\n continue\n }\n\n rows.push(['Note', section])\n }\n\n return `${chalk.bold(chalk.red(title))}\\n\\n${formatDisplayRows(rows)}`\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"display-CZV6KUcG.js","sources":["../../src/utils/display.ts"],"sourcesContent":["import { chalk } from './chalk.js'\nimport type { UploadCost, UploadSize } from './hyperbeam-uploader.js'\n\nconst AO_BASE_UNITS = 1_000_000_000_000n\n\nexport type DisplayRow = [label: string, value: string]\n\nexport function formatUploadSize(size: UploadSize): string {\n return `${(size.signedBytes ?? size.payloadBytes).toLocaleString()} bytes`\n}\n\nexport function formatUploadCost(cost: UploadCost): string {\n if (cost.token !== 'AO') {\n return `${cost.amount.toString()}`\n }\n\n const whole = cost.amount / AO_BASE_UNITS\n const fraction = cost.amount % AO_BASE_UNITS\n const decimal =\n fraction === 0n\n ? whole.toString()\n : `${whole.toString()}.${fraction.toString().padStart(12, '0').replaceAll(/0+$/g, '')}`\n\n return `${decimal} AO`\n}\n\nexport function formatDisplayRows(rows: DisplayRow[]): string {\n return rows.map(([label, value]) => `${label}: ${value}`).join('\\n')\n}\n\nfunction fundingDisplay(section: string): string {\n const fundingLine = section\n .split('\\n')\n .map((line) => line.trim())\n .find((line) => line.startsWith('- '))\n ?.replace(/^- /, '')\n\n if (!fundingLine) {\n return section\n }\n\n return fundingLine\n .replace(/^AO: send funds to /, 'Sending AO to ')\n .replace(/\\. Local ledger:.*$/, '')\n}\n\nexport function formatUploadError(message: string, title = 'Upload failed'): string {\n const rows: DisplayRow[] = []\n const sections = message\n .split(/\\n{2,}/)\n .map((section) => section.trim())\n .filter(Boolean)\n\n for (const [index, section] of sections.entries()) {\n if (index === 0) {\n rows.push(['Error', chalk.red(section)])\n continue\n }\n\n if (section.startsWith('Required upload credit:')) {\n rows.push([\n 'Required upload credit',\n chalk.blue(section.replace(/^Required upload credit:\\s*/, '')),\n ])\n continue\n }\n\n if (section.startsWith('The HyperBEAM node requires AO')) {\n rows.push(['Funding', fundingDisplay(section)])\n continue\n }\n\n rows.push(['Note', section])\n }\n\n return `${chalk.bold(chalk.red(title))}\\n\\n${formatDisplayRows(rows)}`\n}\n"],"names":[],"mappings":"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"}