permaweb-deploy 3.4.6 → 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.
- package/README.md +174 -511
- package/dist/chunks/chalk-BP_cCc9v.js +49 -0
- package/dist/chunks/chalk-BP_cCc9v.js.map +1 -0
- package/dist/chunks/{display-y6lAuqxZ.js → display-CZV6KUcG.js} +2 -2
- package/dist/chunks/{display-y6lAuqxZ.js.map → display-CZV6KUcG.js.map} +1 -1
- package/dist/chunks/upload-workflow-f3hExxtV.js +620 -0
- package/dist/chunks/upload-workflow-f3hExxtV.js.map +1 -0
- package/dist/chunks/{uploader-CC-qBdlV.js → uploader-Bz9jraY2.js} +15 -17
- package/dist/chunks/uploader-Bz9jraY2.js.map +1 -0
- package/dist/commands/deploy.js +72 -98
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/hyperbeam-uploaders.js +48 -0
- package/dist/commands/hyperbeam-uploaders.js.map +1 -0
- package/dist/commands/upload.js +11 -12
- package/dist/commands/upload.js.map +1 -1
- package/dist/constants/flags.js +66 -97
- package/dist/constants/flags.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/prompts/names.js +13 -0
- package/dist/prompts/names.js.map +1 -0
- package/dist/src/commands/deploy.d.ts +1 -1
- package/dist/src/commands/deploy.d.ts.map +1 -1
- package/dist/src/commands/hyperbeam-uploaders.d.ts +14 -0
- package/dist/src/commands/hyperbeam-uploaders.d.ts.map +1 -0
- package/dist/src/commands/upload.d.ts +1 -1
- package/dist/src/commands/upload.d.ts.map +1 -1
- package/dist/src/constants/flags.d.ts +271 -100
- package/dist/src/constants/flags.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/prompts/names.d.ts +2 -0
- package/dist/src/prompts/names.d.ts.map +1 -0
- package/dist/src/types/index.d.ts +0 -29
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/utils/__tests__/hyperbeam-uploaders-cli.test.d.ts +2 -0
- package/dist/src/utils/__tests__/hyperbeam-uploaders-cli.test.d.ts.map +1 -0
- package/dist/src/utils/__tests__/names.test.d.ts +2 -0
- package/dist/src/utils/__tests__/names.test.d.ts.map +1 -0
- package/dist/src/utils/__tests__/permawebos-bundlers.test.d.ts +2 -0
- package/dist/src/utils/__tests__/permawebos-bundlers.test.d.ts.map +1 -0
- package/dist/src/utils/config-resolver.d.ts +29 -11
- package/dist/src/utils/config-resolver.d.ts.map +1 -1
- package/dist/src/utils/constants.d.ts +0 -2
- package/dist/src/utils/constants.d.ts.map +1 -1
- package/dist/src/utils/hyperbeam-uploader.d.ts +8 -1
- package/dist/src/utils/hyperbeam-uploader.d.ts.map +1 -1
- package/dist/src/utils/hyperbeam-uploaders-cli.d.ts +7 -0
- package/dist/src/utils/hyperbeam-uploaders-cli.d.ts.map +1 -0
- package/dist/src/utils/legacy-bundler-uploader.d.ts +29 -0
- package/dist/src/utils/legacy-bundler-uploader.d.ts.map +1 -0
- package/dist/src/utils/names.d.ts +46 -0
- package/dist/src/utils/names.d.ts.map +1 -0
- package/dist/src/utils/permawebos-bundlers.d.ts +28 -0
- package/dist/src/utils/permawebos-bundlers.d.ts.map +1 -0
- package/dist/src/utils/signer.d.ts +4 -6
- package/dist/src/utils/signer.d.ts.map +1 -1
- package/dist/src/utils/uploader.d.ts +5 -7
- package/dist/src/utils/uploader.d.ts.map +1 -1
- package/dist/src/utils/validators.d.ts +13 -20
- package/dist/src/utils/validators.d.ts.map +1 -1
- package/dist/src/workflows/upload-workflow.d.ts +3 -4
- package/dist/src/workflows/upload-workflow.d.ts.map +1 -1
- package/dist/tests/mocks/{turbo-handlers.d.ts → legacy-handlers.d.ts} +12 -27
- package/dist/tests/mocks/legacy-handlers.d.ts.map +1 -0
- package/dist/tests/setup.d.ts +2 -2
- package/dist/tests/setup.d.ts.map +1 -1
- package/dist/tests/types/payment-service.d.ts +2 -2
- package/dist/tests/types/payment-service.d.ts.map +1 -1
- package/dist/tests/types/upload-service.d.ts +1 -1
- package/dist/tests/types/upload-service.d.ts.map +1 -1
- package/dist/utils/config-resolver.js +4 -1
- package/dist/utils/config-resolver.js.map +1 -1
- package/dist/utils/constants.js +1 -3
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/hyperbeam-uploaders-cli.js +32 -0
- package/dist/utils/hyperbeam-uploaders-cli.js.map +1 -0
- package/dist/utils/names.js +157 -0
- package/dist/utils/names.js.map +1 -0
- package/dist/utils/permawebos-bundlers.js +120 -0
- package/dist/utils/permawebos-bundlers.js.map +1 -0
- package/dist/utils/signer.js +3 -2
- package/dist/utils/signer.js.map +1 -1
- package/dist/utils/uploader.js +1 -1
- package/dist/utils/validators.js +3 -39
- package/dist/utils/validators.js.map +1 -1
- package/dist/workflows/upload-workflow.js +5 -6
- package/dist/workflows/upload-workflow.js.map +1 -1
- package/package.json +6 -6
- package/dist/chunks/upload-workflow-CfCTs0EW.js +0 -1113
- package/dist/chunks/upload-workflow-CfCTs0EW.js.map +0 -1
- package/dist/chunks/uploader-CC-qBdlV.js.map +0 -1
- package/dist/prompts/arns.js +0 -89
- package/dist/prompts/arns.js.map +0 -1
- package/dist/src/prompts/arns.d.ts +0 -13
- package/dist/src/prompts/arns.d.ts.map +0 -1
- package/dist/tests/mocks/turbo-handlers.d.ts.map +0 -1
|
@@ -92,7 +92,7 @@ export interface paths {
|
|
|
92
92
|
query?: never;
|
|
93
93
|
header?: never;
|
|
94
94
|
path: {
|
|
95
|
-
type: "
|
|
95
|
+
type: "solana" | "arweave" | "ethereum";
|
|
96
96
|
amount: number;
|
|
97
97
|
};
|
|
98
98
|
cookie?: never;
|
|
@@ -133,7 +133,7 @@ export interface paths {
|
|
|
133
133
|
query?: never;
|
|
134
134
|
header?: never;
|
|
135
135
|
path: {
|
|
136
|
-
token: "arweave" | "
|
|
136
|
+
token: "arweave" | "solana";
|
|
137
137
|
};
|
|
138
138
|
cookie?: never;
|
|
139
139
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-service.d.ts","sourceRoot":"","sources":["../../../tests/types/payment-service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"payment-service.d.ts","sourceRoot":"","sources":["../../../tests/types/payment-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-service.d.ts","sourceRoot":"","sources":["../../../tests/types/upload-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,KAAK;IAClB,KAAK,EAAE;QACH,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,0CAA0C;QAC1C,IAAI,EAAE;YACF,UAAU,EAAE;gBACR,KAAK,CAAC,EAAE,KAAK,CAAC;gBACd,MAAM,CAAC,EAAE,KAAK,CAAC;gBACf,IAAI,CAAC,EAAE,KAAK,CAAC;gBACb,MAAM,CAAC,EAAE,KAAK,CAAC;aAClB,CAAC;YACF,sCAAsC;YACtC,WAAW,EAAE;gBACT,OAAO,EAAE;oBACL,0BAA0B,EAAE,MAAM,CAAC;iBACtC,CAAC;aACL,CAAC;YACF,SAAS,EAAE;gBACP,oEAAoE;gBACpE,GAAG,EAAE;oBACD,OAAO,EAAE;wBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;qBAC3B,CAAC;oBACF,OAAO,EAAE;wBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC;qBAC7D,CAAC;iBACL,CAAC;gBACF,0CAA0C;gBAC1C,GAAG,EAAE;oBACD,OAAO,EAAE;wBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;qBAC3B,CAAC;oBACF,OAAO,CAAC,EAAE,KAAK,CAAC;iBACnB,CAAC;gBACF,wCAAwC;gBACxC,GAAG,EAAE;oBACD,OAAO,EAAE;wBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;qBAC3B,CAAC;oBACF,OAAO,CAAC,EAAE,KAAK,CAAC;iBACnB,CAAC;aACL,CAAC;SACL,CAAC;QACF,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,aAAa,EAAE;QACX,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,+DAA+D;QAC/D,IAAI,EAAE;YACF,UAAU,EAAE;gBACR,KAAK,CAAC,EAAE,KAAK,CAAC;gBACd,MAAM,CAAC,EAAE,KAAK,CAAC;gBACf,IAAI,EAAE;oBACF,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"upload-service.d.ts","sourceRoot":"","sources":["../../../tests/types/upload-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
function isDefaultResolver(value) {
|
|
2
|
+
return typeof value === "function";
|
|
3
|
+
}
|
|
1
4
|
async function resolveConfig(flagConfigs, parsedFlags, options = {}) {
|
|
2
5
|
const { interactive, shouldBeInteractive } = options;
|
|
3
6
|
const isInteractive = interactive ?? (shouldBeInteractive ? shouldBeInteractive(parsedFlags) : false);
|
|
@@ -14,7 +17,7 @@ async function resolveConfig(flagConfigs, parsedFlags, options = {}) {
|
|
|
14
17
|
continue;
|
|
15
18
|
}
|
|
16
19
|
const defaultValue = config.flag.default;
|
|
17
|
-
if (
|
|
20
|
+
if (isDefaultResolver(defaultValue)) {
|
|
18
21
|
resolved[key] = await defaultValue({});
|
|
19
22
|
} else if (defaultValue === void 0) {
|
|
20
23
|
resolved[key] = flagValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-resolver.js","sources":["../../src/utils/config-resolver.ts"],"sourcesContent":["/**\n * Configuration for a single flag with its associated prompt\n */\nexport type FlagConfig<T =
|
|
1
|
+
{"version":3,"file":"config-resolver.js","sources":["../../src/utils/config-resolver.ts"],"sourcesContent":["import type { FlagInput } from '@oclif/core/lib/interfaces'\n\n/**\n * Configuration for a single flag with its associated prompt\n */\ntype DefaultResolver = (context: Record<string, unknown>) => unknown | Promise<unknown>\n\ntype CommandFlag = {\n default?: unknown | DefaultResolver\n}\n\ntype AnyFlagConfig = {\n flag: CommandFlag\n prompt?: () => Promise<unknown>\n transform?: (value: never) => unknown\n triggersInteractive?: boolean\n}\n\nfunction isDefaultResolver(value: unknown): value is DefaultResolver {\n return typeof value === 'function'\n}\n\nexport type FlagConfig<T = unknown, F extends CommandFlag = CommandFlag> = {\n /** The oclif flag definition */\n flag: F\n /** Optional prompt function to get the value interactively */\n prompt?: () => Promise<T>\n /** Transform function to apply to the resolved value */\n transform?: (value: T) => T\n /** Whether this flag triggers interactive mode when missing */\n triggersInteractive?: boolean\n}\n\n/**\n * Map of flag configurations\n */\nexport type FlagConfigMap = Record<string, AnyFlagConfig>\n\n/**\n * Extract the resolved config type from a FlagConfigMap\n * Infers the actual type (string, number, boolean) and optionality from each FlagConfig\n */\nexport type ResolvedConfig<T extends FlagConfigMap> = {\n [K in keyof T]: T[K] extends FlagConfig<infer U, CommandFlag> ? U : unknown\n}\n\n/**\n * Options for resolveConfig\n */\nexport interface ResolveConfigOptions {\n /** Whether to run in interactive mode */\n interactive?: boolean\n /** Custom logic to determine if interactive mode should be enabled */\n shouldBeInteractive?: (parsedFlags: Record<string, unknown>) => boolean\n}\n\n/**\n * Resolves configuration by combining parsed CLI flags with interactive prompts\n *\n * @param flagConfigs - Map of flag names to their configurations\n * @param parsedFlags - Parsed flags from this.parse()\n * @param options - Resolution options\n * @returns Fully resolved configuration object\n *\n * @example\n * ```typescript\n * const config = await resolveConfig(\n * {\n * name: {\n * flag: globalFlags.name,\n * prompt: promptName,\n * triggersInteractive: true,\n * },\n * wallet: {\n * flag: globalFlags.wallet,\n * prompt: async () => (await getWalletConfig()).wallet,\n * },\n * },\n * flags,\n * {\n * shouldBeInteractive: (flags) => !flags.name,\n * }\n * )\n * ```\n */\nexport async function resolveConfig<T extends FlagConfigMap>(\n flagConfigs: T,\n parsedFlags: Record<string, unknown>,\n options: ResolveConfigOptions = {},\n): Promise<ResolvedConfig<T>> {\n const { interactive, shouldBeInteractive } = options\n\n // Determine if we should run in interactive mode\n const isInteractive =\n interactive ?? (shouldBeInteractive ? shouldBeInteractive(parsedFlags) : false)\n\n const resolved: Record<string, unknown> = {}\n\n for (const [key, config] of Object.entries(flagConfigs)) {\n const flagValue = parsedFlags[key]\n\n // If value exists from flags, use it\n if (flagValue !== undefined && flagValue !== null && flagValue !== '') {\n resolved[key] = config.transform ? config.transform(flagValue as never) : flagValue\n continue\n }\n\n // If interactive mode and prompt exists, use prompt\n if (isInteractive && config.prompt) {\n const promptValue = await config.prompt()\n resolved[key] = config.transform ? config.transform(promptValue as never) : promptValue\n continue\n }\n\n // Otherwise use the flag's default value (if any)\n const defaultValue = config.flag.default\n if (isDefaultResolver(defaultValue)) {\n resolved[key] = await defaultValue({})\n } else if (defaultValue === undefined) {\n resolved[key] = flagValue // May be undefined\n } else {\n resolved[key] = defaultValue\n }\n }\n\n return resolved as ResolvedConfig<T>\n}\n\n/**\n * Helper to create a flag configuration with proper type inference\n *\n * @param config - Flag configuration to preserve.\n * @returns The same flag configuration with inferred value and flag types.\n */\nexport function createFlagConfig<T, F extends CommandFlag = CommandFlag>(\n config: FlagConfig<T, F>,\n): FlagConfig<T, F> {\n return config\n}\n\n/**\n * Helper to extract just the flags from a FlagConfigMap for use in command static flags\n *\n * @param flagConfigs - Map of flag names to flag configurations.\n * @returns Map of flag names to oclif flag definitions.\n */\nexport function extractFlags<T extends FlagConfigMap>(\n flagConfigs: T,\n): FlagInput<Record<string, unknown>> {\n const flags: Record<string, unknown> = {}\n for (const [key, config] of Object.entries(flagConfigs)) {\n flags[key] = config.flag\n }\n\n return flags as FlagInput<Record<string, unknown>>\n}\n"],"names":[],"mappings":"AAkBA,SAAS,kBAAkB,KAAA,EAA0C;AACnE,EAAA,OAAO,OAAO,KAAA,KAAU,UAAA;AAC1B;AAiEA,eAAsB,aAAA,CACpB,WAAA,EACA,WAAA,EACA,OAAA,GAAgC,EAAC,EACL;AAC5B,EAAA,MAAM,EAAE,WAAA,EAAa,mBAAA,EAAoB,GAAI,OAAA;AAG7C,EAAA,MAAM,aAAA,GACJ,WAAA,KAAgB,mBAAA,GAAsB,mBAAA,CAAoB,WAAW,CAAA,GAAI,KAAA,CAAA;AAE3E,EAAA,MAAM,WAAoC,EAAC;AAE3C,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,EAAG;AACvD,IAAA,MAAM,SAAA,GAAY,YAAY,GAAG,CAAA;AAGjC,IAAA,IAAI,SAAA,KAAc,MAAA,IAAa,SAAA,KAAc,IAAA,IAAQ,cAAc,EAAA,EAAI;AACrE,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,MAAA,CAAO,YAAY,MAAA,CAAO,SAAA,CAAU,SAAkB,CAAA,GAAI,SAAA;AAC1E,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,aAAA,IAAiB,OAAO,MAAA,EAAQ;AAClC,MAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,MAAA,EAAO;AACxC,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,MAAA,CAAO,YAAY,MAAA,CAAO,SAAA,CAAU,WAAoB,CAAA,GAAI,WAAA;AAC5E,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,YAAA,GAAe,OAAO,IAAA,CAAK,OAAA;AACjC,IAAA,IAAI,iBAAA,CAAkB,YAAY,CAAA,EAAG;AACnC,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,MAAM,YAAA,CAAa,EAAE,CAAA;AAAA,IACvC,CAAA,MAAA,IAAW,iBAAiB,MAAA,EAAW;AACrC,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,SAAA;AAAA,IAClB,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,YAAA;AAAA,IAClB;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT;AAQO,SAAS,iBACd,MAAA,EACkB;AAClB,EAAA,OAAO,MAAA;AACT;AAQO,SAAS,aACd,WAAA,EACoC;AACpC,EAAA,MAAM,QAAiC,EAAC;AACxC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,EAAG;AACvD,IAAA,KAAA,CAAM,GAAG,IAAI,MAAA,CAAO,IAAA;AAAA,EACtB;AAEA,EAAA,OAAO,KAAA;AACT;;;;"}
|
package/dist/utils/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../src/utils/constants.ts"],"sourcesContent":["export const ARWEAVE_TX_ID_REGEX = /^[\\w-]{43}$/\n
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../src/utils/constants.ts"],"sourcesContent":["export const ARWEAVE_TX_ID_REGEX = /^[\\w-]{43}$/\n"],"names":[],"mappings":"AAAO,MAAM,mBAAA,GAAsB;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { c as chalk } from '../chunks/chalk-BP_cCc9v.js';
|
|
2
|
+
import { f as formatDisplayRows } from '../chunks/display-CZV6KUcG.js';
|
|
3
|
+
import { fetchActivePermawebOSBundlers } from './permawebos-bundlers.js';
|
|
4
|
+
|
|
5
|
+
async function formatActiveHyperbeamUploaders(options = {}) {
|
|
6
|
+
const uploaders = await fetchActivePermawebOSBundlers(options);
|
|
7
|
+
return formatHyperbeamUploaders(uploaders, options.json);
|
|
8
|
+
}
|
|
9
|
+
function formatHyperbeamUploaders(uploaders, json = false) {
|
|
10
|
+
if (json) {
|
|
11
|
+
return JSON.stringify({ uploaders }, null, 2);
|
|
12
|
+
}
|
|
13
|
+
if (uploaders.length === 0) {
|
|
14
|
+
return chalk.yellow("No active HyperBEAM uploaders found.");
|
|
15
|
+
}
|
|
16
|
+
const sections = uploaders.map((uploader, index) => {
|
|
17
|
+
const rows = [
|
|
18
|
+
[`Uploader ${index + 1}`, chalk.cyan(uploader.url)],
|
|
19
|
+
["Ring", chalk.yellow(uploader.ring)],
|
|
20
|
+
["Address", chalk.gray(uploader.address)],
|
|
21
|
+
["Owner", chalk.gray(uploader.owner)]
|
|
22
|
+
];
|
|
23
|
+
if (uploader.stake) {
|
|
24
|
+
rows.push(["Stake", chalk.blue(uploader.stake)]);
|
|
25
|
+
}
|
|
26
|
+
return formatDisplayRows(rows);
|
|
27
|
+
});
|
|
28
|
+
return [chalk.bold(chalk.cyan("Active HyperBEAM uploaders")), "", ...sections].join("\n\n");
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { formatActiveHyperbeamUploaders, formatHyperbeamUploaders };
|
|
32
|
+
//# sourceMappingURL=hyperbeam-uploaders-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperbeam-uploaders-cli.js","sources":["../../src/utils/hyperbeam-uploaders-cli.ts"],"sourcesContent":["import { chalk } from './chalk.js'\nimport { type DisplayRow, formatDisplayRows } from './display.js'\nimport {\n type ActivePermawebOSBundler,\n fetchActivePermawebOSBundlers,\n type FetchActivePermawebOSBundlersOptions,\n} from './permawebos-bundlers.js'\n\nexport interface FormatHyperbeamUploadersOptions extends FetchActivePermawebOSBundlersOptions {\n json?: boolean\n}\n\nexport async function formatActiveHyperbeamUploaders(\n options: FormatHyperbeamUploadersOptions = {},\n): Promise<string> {\n const uploaders = await fetchActivePermawebOSBundlers(options)\n return formatHyperbeamUploaders(uploaders, options.json)\n}\n\nexport function formatHyperbeamUploaders(\n uploaders: ActivePermawebOSBundler[],\n json = false,\n): string {\n if (json) {\n return JSON.stringify({ uploaders }, null, 2)\n }\n\n if (uploaders.length === 0) {\n return chalk.yellow('No active HyperBEAM uploaders found.')\n }\n\n const sections = uploaders.map((uploader, index) => {\n const rows: DisplayRow[] = [\n [`Uploader ${index + 1}`, chalk.cyan(uploader.url)],\n ['Ring', chalk.yellow(uploader.ring)],\n ['Address', chalk.gray(uploader.address)],\n ['Owner', chalk.gray(uploader.owner)],\n ]\n\n if (uploader.stake) {\n rows.push(['Stake', chalk.blue(uploader.stake)])\n }\n\n return formatDisplayRows(rows)\n })\n\n return [chalk.bold(chalk.cyan('Active HyperBEAM uploaders')), '', ...sections].join('\\n\\n')\n}\n"],"names":[],"mappings":";;;;AAYA,eAAsB,8BAAA,CACpB,OAAA,GAA2C,EAAC,EAC3B;AACjB,EAAA,MAAM,SAAA,GAAY,MAAM,6BAAA,CAA8B,OAAO,CAAA;AAC7D,EAAA,OAAO,wBAAA,CAAyB,SAAA,EAAW,OAAA,CAAQ,IAAI,CAAA;AACzD;AAEO,SAAS,wBAAA,CACd,SAAA,EACA,IAAA,GAAO,KAAA,EACC;AACR,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,OAAO,KAAK,SAAA,CAAU,EAAE,SAAA,EAAU,EAAG,MAAM,CAAC,CAAA;AAAA,EAC9C;AAEA,EAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,IAAA,OAAO,KAAA,CAAM,OAAO,sCAAsC,CAAA;AAAA,EAC5D;AAEA,EAAA,MAAM,QAAA,GAAW,SAAA,CAAU,GAAA,CAAI,CAAC,UAAU,KAAA,KAAU;AAClD,IAAA,MAAM,IAAA,GAAqB;AAAA,MACzB,CAAC,YAAY,KAAA,GAAQ,CAAC,IAAI,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,GAAG,CAAC,CAAA;AAAA,MAClD,CAAC,MAAA,EAAQ,KAAA,CAAM,MAAA,CAAO,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,MACpC,CAAC,SAAA,EAAW,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,OAAO,CAAC,CAAA;AAAA,MACxC,CAAC,OAAA,EAAS,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC;AAAA,KACtC;AAEA,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,IAAA,CAAK,IAAA,CAAK,CAAC,OAAA,EAAS,KAAA,CAAM,KAAK,QAAA,CAAS,KAAK,CAAC,CAAC,CAAA;AAAA,IACjD;AAEA,IAAA,OAAO,kBAAkB,IAAI,CAAA;AAAA,EAC/B,CAAC,CAAA;AAED,EAAA,OAAO,CAAC,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,4BAA4B,CAAC,CAAA,EAAG,EAAA,EAAI,GAAG,QAAQ,CAAA,CAAE,KAAK,MAAM,CAAA;AAC5F;;;;"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { PHASE2_NAMESPACE, ReferenceClient } from '@permaweb/references';
|
|
3
|
+
import Arweave from 'arweave';
|
|
4
|
+
|
|
5
|
+
const require$1 = createRequire(import.meta.url);
|
|
6
|
+
const { ArweaveSigner, DataItem, createData } = require$1("@dha-team/arbundles");
|
|
7
|
+
const DEFAULT_NAMES_BUNDLER = "https://up.arweave.net";
|
|
8
|
+
function toBase64Url(value) {
|
|
9
|
+
if (typeof value === "string") {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
return Buffer.from(value).toString("base64url");
|
|
13
|
+
}
|
|
14
|
+
function namesBundlerTxUrl(bundler = DEFAULT_NAMES_BUNDLER) {
|
|
15
|
+
const normalized = bundler.replace(/\/+$/, "");
|
|
16
|
+
return normalized.endsWith("/tx") ? normalized : `${normalized}/tx`;
|
|
17
|
+
}
|
|
18
|
+
function responsePreview(body) {
|
|
19
|
+
const preview = body.replaceAll(/\s+/g, " ").trim();
|
|
20
|
+
if (!preview) {
|
|
21
|
+
return void 0;
|
|
22
|
+
}
|
|
23
|
+
return preview.slice(0, 300);
|
|
24
|
+
}
|
|
25
|
+
function omitSetDeviceTag(tags) {
|
|
26
|
+
const isSet = tags.some((tag) => tag.name === "reference-id");
|
|
27
|
+
if (!isSet) {
|
|
28
|
+
return tags;
|
|
29
|
+
}
|
|
30
|
+
return tags.filter((tag) => !(tag.name === "device" && tag.value === "reference@1.0"));
|
|
31
|
+
}
|
|
32
|
+
function createNamesJwkSigner(sigType, deployKey) {
|
|
33
|
+
if (sigType !== "arweave") {
|
|
34
|
+
throw new Error("Names updates currently require --sig-type arweave");
|
|
35
|
+
}
|
|
36
|
+
const jwk = JSON.parse(Buffer.from(deployKey, "base64").toString("utf8"));
|
|
37
|
+
const arweave = Arweave.init({ host: "arweave.net", port: 443, protocol: "https" });
|
|
38
|
+
const signer = new ArweaveSigner(jwk);
|
|
39
|
+
return {
|
|
40
|
+
async address() {
|
|
41
|
+
return arweave.wallets.jwkToAddress(jwk);
|
|
42
|
+
},
|
|
43
|
+
async send({ data, tags }, opts = {}) {
|
|
44
|
+
const payload = Buffer.from(data && data.length > 0 ? data : " ");
|
|
45
|
+
const item = createData(payload, signer, { tags: omitSetDeviceTag(tags ?? []) });
|
|
46
|
+
await item.sign(signer);
|
|
47
|
+
const raw = Buffer.from(item.getRaw());
|
|
48
|
+
const localId = item.id || toBase64Url(new DataItem(raw).id);
|
|
49
|
+
const fetchImpl = opts.fetch ?? fetch;
|
|
50
|
+
const response = await fetchImpl(namesBundlerTxUrl(opts.bundler), {
|
|
51
|
+
body: raw,
|
|
52
|
+
headers: {
|
|
53
|
+
"content-length": String(raw.length),
|
|
54
|
+
"content-type": "application/octet-stream"
|
|
55
|
+
},
|
|
56
|
+
method: "POST"
|
|
57
|
+
});
|
|
58
|
+
const body = await response.text();
|
|
59
|
+
if (!response.ok) {
|
|
60
|
+
const preview = responsePreview(body);
|
|
61
|
+
throw new Error(
|
|
62
|
+
`Reference update bundler upload failed with HTTP ${response.status}${preview ? `: ${preview}` : ""}`
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
let id;
|
|
66
|
+
if (body) {
|
|
67
|
+
try {
|
|
68
|
+
const parsed = JSON.parse(body);
|
|
69
|
+
id = typeof parsed.id === "string" ? parsed.id : void 0;
|
|
70
|
+
} catch {
|
|
71
|
+
id = void 0;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return { id: id ?? localId };
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
async function resolveNamesReferenceId(args) {
|
|
79
|
+
if (args.referenceId) {
|
|
80
|
+
return { name: args.name, referenceId: args.referenceId };
|
|
81
|
+
}
|
|
82
|
+
if (!args.name) {
|
|
83
|
+
throw new Error("Names update requires --name or --reference-id");
|
|
84
|
+
}
|
|
85
|
+
const signerAddress = await args.signer.address();
|
|
86
|
+
const references = await args.client.findReferences(signerAddress);
|
|
87
|
+
const reference = references.find((item) => item.name === args.name);
|
|
88
|
+
if (!reference) {
|
|
89
|
+
throw new Error(
|
|
90
|
+
`Name [${args.name}] is not controlled by signer in namespace ${args.namespace}`
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
return { name: args.name, referenceId: reference.referenceId };
|
|
94
|
+
}
|
|
95
|
+
function createNamesContext(config) {
|
|
96
|
+
const namespace = config.namespace ?? PHASE2_NAMESPACE;
|
|
97
|
+
const signer = createNamesJwkSigner(config.sigType, config.deployKey);
|
|
98
|
+
const client = new ReferenceClient({
|
|
99
|
+
gateway: config.gateway,
|
|
100
|
+
graphql: config.graphql,
|
|
101
|
+
namespace,
|
|
102
|
+
signer
|
|
103
|
+
});
|
|
104
|
+
return { client, namespace, signer };
|
|
105
|
+
}
|
|
106
|
+
async function validateNamesTarget(args) {
|
|
107
|
+
const target = await resolveNamesReferenceId({
|
|
108
|
+
client: args.client,
|
|
109
|
+
name: args.name,
|
|
110
|
+
namespace: args.namespace,
|
|
111
|
+
referenceId: args.referenceId,
|
|
112
|
+
signer: args.signer
|
|
113
|
+
});
|
|
114
|
+
const reference = await args.client.getReference(target.referenceId);
|
|
115
|
+
if (!reference) {
|
|
116
|
+
throw new Error(`reference not found: ${target.referenceId}`);
|
|
117
|
+
}
|
|
118
|
+
const signerAddress = await args.signer.address();
|
|
119
|
+
if (reference.authority !== signerAddress) {
|
|
120
|
+
throw new Error(`signer is not reference authority for ${target.referenceId}`);
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
name: target.name,
|
|
124
|
+
namespace: args.namespace,
|
|
125
|
+
referenceId: target.referenceId
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
async function preflightNamesUpdate(config) {
|
|
129
|
+
const { client, namespace, signer } = createNamesContext(config);
|
|
130
|
+
return validateNamesTarget({
|
|
131
|
+
client,
|
|
132
|
+
name: config.name,
|
|
133
|
+
namespace,
|
|
134
|
+
referenceId: config.referenceId,
|
|
135
|
+
signer
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
async function publishNamesUpdate(config) {
|
|
139
|
+
const { client, namespace, signer } = createNamesContext(config);
|
|
140
|
+
const target = await resolveNamesReferenceId({
|
|
141
|
+
client,
|
|
142
|
+
name: config.name,
|
|
143
|
+
namespace,
|
|
144
|
+
referenceId: config.referenceId,
|
|
145
|
+
signer
|
|
146
|
+
});
|
|
147
|
+
const { id: updateId } = await client.updateReference(target.referenceId, { value: config.value });
|
|
148
|
+
return {
|
|
149
|
+
name: target.name,
|
|
150
|
+
namespace,
|
|
151
|
+
referenceId: target.referenceId,
|
|
152
|
+
updateId
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export { createNamesJwkSigner, preflightNamesUpdate, publishNamesUpdate, resolveNamesReferenceId, validateNamesTarget };
|
|
157
|
+
//# sourceMappingURL=names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"names.js","sources":["../../src/utils/names.ts"],"sourcesContent":["import { createRequire } from 'node:module'\n\nimport { PHASE2_NAMESPACE, ReferenceClient, type Signer } from '@permaweb/references'\nimport Arweave from 'arweave'\n\nimport type { SignerType } from '../types/index.js'\n\nconst require = createRequire(import.meta.url)\nconst { ArweaveSigner, DataItem, createData } = require('@dha-team/arbundles') as {\n ArweaveSigner: new (jwk: Record<string, unknown>) => unknown\n DataItem: new (raw: Buffer) => { id: string | Uint8Array }\n createData: (\n data: Buffer,\n signer: unknown,\n opts?: { tags?: Array<{ name: string; value: string }> },\n ) => {\n getRaw: () => Uint8Array\n id?: string\n sign: (signer: unknown) => Promise<void>\n }\n}\n\nconst DEFAULT_NAMES_BUNDLER = 'https://up.arweave.net'\n\nexport interface NamesPublishConfig {\n deployKey: string\n gateway: string\n graphql?: string\n name?: string\n namespace?: string\n referenceId?: string\n sigType: SignerType\n value: string\n}\n\ntype NamesClientConfig = Omit<NamesPublishConfig, 'value'>\n\nexport interface NamesReferenceTarget {\n name?: string\n namespace: string\n referenceId: string\n}\n\nexport interface NamesPublishResult {\n name?: string\n namespace: string\n referenceId: string\n updateId: string\n}\n\nfunction toBase64Url(value: string | Uint8Array): string {\n if (typeof value === 'string') {\n return value\n }\n\n return Buffer.from(value).toString('base64url')\n}\n\nfunction namesBundlerTxUrl(bundler = DEFAULT_NAMES_BUNDLER): string {\n const normalized = bundler.replace(/\\/+$/, '')\n return normalized.endsWith('/tx') ? normalized : `${normalized}/tx`\n}\n\nfunction responsePreview(body: string): string | undefined {\n const preview = body.replaceAll(/\\s+/g, ' ').trim()\n if (!preview) {\n return undefined\n }\n\n return preview.slice(0, 300)\n}\n\nfunction omitSetDeviceTag(tags: Array<{ name: string; value: string }>): Array<{\n name: string\n value: string\n}> {\n const isSet = tags.some((tag) => tag.name === 'reference-id')\n if (!isSet) {\n return tags\n }\n\n return tags.filter((tag) => !(tag.name === 'device' && tag.value === 'reference@1.0'))\n}\n\nexport function createNamesJwkSigner(sigType: SignerType, deployKey: string): Signer {\n if (sigType !== 'arweave') {\n throw new Error('Names updates currently require --sig-type arweave')\n }\n\n const jwk = JSON.parse(Buffer.from(deployKey, 'base64').toString('utf8'))\n const arweave = Arweave.init({ host: 'arweave.net', port: 443, protocol: 'https' })\n const signer = new ArweaveSigner(jwk)\n\n return {\n async address() {\n return arweave.wallets.jwkToAddress(jwk)\n },\n async send({ data, tags }, opts = {}) {\n const payload = Buffer.from(data && data.length > 0 ? data : ' ')\n const item = createData(payload, signer, { tags: omitSetDeviceTag(tags ?? []) })\n await item.sign(signer)\n\n const raw = Buffer.from(item.getRaw())\n const localId = item.id || toBase64Url(new DataItem(raw).id)\n const fetchImpl = opts.fetch ?? fetch\n const response = await fetchImpl(namesBundlerTxUrl(opts.bundler), {\n body: raw,\n headers: {\n 'content-length': String(raw.length),\n 'content-type': 'application/octet-stream',\n },\n method: 'POST',\n })\n const body = await response.text()\n\n if (!response.ok) {\n const preview = responsePreview(body)\n throw new Error(\n `Reference update bundler upload failed with HTTP ${response.status}${preview ? `: ${preview}` : ''}`,\n )\n }\n\n let id: string | undefined\n if (body) {\n try {\n const parsed = JSON.parse(body) as { id?: unknown }\n id = typeof parsed.id === 'string' ? parsed.id : undefined\n } catch {\n id = undefined\n }\n }\n\n return { id: id ?? localId }\n },\n }\n}\n\nexport async function resolveNamesReferenceId(args: {\n client: ReferenceClient\n name?: string\n namespace: string\n referenceId?: string\n signer: Signer\n}): Promise<{ name?: string; referenceId: string }> {\n if (args.referenceId) {\n return { name: args.name, referenceId: args.referenceId }\n }\n\n if (!args.name) {\n throw new Error('Names update requires --name or --reference-id')\n }\n\n const signerAddress = await args.signer.address()\n const references = await args.client.findReferences(signerAddress)\n const reference = references.find((item) => item.name === args.name)\n\n if (!reference) {\n throw new Error(\n `Name [${args.name}] is not controlled by signer in namespace ${args.namespace}`,\n )\n }\n\n return { name: args.name, referenceId: reference.referenceId }\n}\n\nfunction createNamesContext(config: NamesClientConfig): {\n client: ReferenceClient\n namespace: string\n signer: Signer\n} {\n const namespace = config.namespace ?? PHASE2_NAMESPACE\n const signer = createNamesJwkSigner(config.sigType, config.deployKey)\n const client = new ReferenceClient({\n gateway: config.gateway,\n graphql: config.graphql,\n namespace,\n signer,\n })\n\n return { client, namespace, signer }\n}\n\nexport async function validateNamesTarget(args: {\n client: ReferenceClient\n name?: string\n namespace: string\n referenceId?: string\n signer: Signer\n}): Promise<NamesReferenceTarget> {\n const target = await resolveNamesReferenceId({\n client: args.client,\n name: args.name,\n namespace: args.namespace,\n referenceId: args.referenceId,\n signer: args.signer,\n })\n\n const reference = await args.client.getReference(target.referenceId)\n if (!reference) {\n throw new Error(`reference not found: ${target.referenceId}`)\n }\n\n const signerAddress = await args.signer.address()\n if (reference.authority !== signerAddress) {\n throw new Error(`signer is not reference authority for ${target.referenceId}`)\n }\n\n return {\n name: target.name,\n namespace: args.namespace,\n referenceId: target.referenceId,\n }\n}\n\nexport async function preflightNamesUpdate(\n config: NamesClientConfig,\n): Promise<NamesReferenceTarget> {\n const { client, namespace, signer } = createNamesContext(config)\n return validateNamesTarget({\n client,\n name: config.name,\n namespace,\n referenceId: config.referenceId,\n signer,\n })\n}\n\nexport async function publishNamesUpdate(config: NamesPublishConfig): Promise<NamesPublishResult> {\n const { client, namespace, signer } = createNamesContext(config)\n const target = await resolveNamesReferenceId({\n client,\n name: config.name,\n namespace,\n referenceId: config.referenceId,\n signer,\n })\n const { id: updateId } = await client.updateReference(target.referenceId, { value: config.value })\n\n return {\n name: target.name,\n namespace,\n referenceId: target.referenceId,\n updateId,\n }\n}\n"],"names":["require"],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
const DEFAULT_PERMAWEBOS_BUNDLER_GATEWAY = "https://push-9.forward.computer";
|
|
2
|
+
const DEFAULT_PERMAWEBOS_BUNDLER_STAKING_PROCESS = "Xv7dvev8_dJVwW7k_VGGdHpRqWpgSCgK4vzJmnBkg5M";
|
|
3
|
+
const EXCLUDED_PERMAWEBOS_BUNDLER_URLS = /* @__PURE__ */ new Set(["https://dev-1.forward.computer"]);
|
|
4
|
+
async function fetchActivePermawebOSBundlers(options = {}) {
|
|
5
|
+
const fetchImpl = options.fetch ?? fetch;
|
|
6
|
+
const [active, registered] = await Promise.all([
|
|
7
|
+
fetchPermawebOSBundlerStateMap("active", options, fetchImpl),
|
|
8
|
+
fetchPermawebOSBundlerStateMap("registered", options, fetchImpl)
|
|
9
|
+
]);
|
|
10
|
+
return Object.entries(active).flatMap(([owner, record]) => {
|
|
11
|
+
if (isAoMetadataKey(owner) || !isRecord(record)) return [];
|
|
12
|
+
const activeRecord = record;
|
|
13
|
+
const ring = normalizeScalar(activeRecord.ring);
|
|
14
|
+
if (!ring || options.ring && ring !== options.ring) return [];
|
|
15
|
+
const address = getBundlerAddress(activeRecord);
|
|
16
|
+
if (!address) return [];
|
|
17
|
+
const registeredRecord = isRecord(registered[address]) ? registered[address] : void 0;
|
|
18
|
+
const url = normalizeBundlerUrl(normalizeScalar(registeredRecord?.location));
|
|
19
|
+
if (!url || isExcludedBundlerUrl(url)) return [];
|
|
20
|
+
return [
|
|
21
|
+
{
|
|
22
|
+
address,
|
|
23
|
+
owner,
|
|
24
|
+
registeredAt: normalizeTimestamp(registeredRecord?.registered_at),
|
|
25
|
+
ring,
|
|
26
|
+
stake: normalizeScalar(activeRecord.stake) || void 0,
|
|
27
|
+
stakedAt: normalizeTimestamp(activeRecord.staked_at),
|
|
28
|
+
url
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
}).sort((a, b) => a.ring.localeCompare(b.ring) || a.url.localeCompare(b.url));
|
|
32
|
+
}
|
|
33
|
+
async function fetchPermawebOSBundlerStateMap(path, options, fetchImpl) {
|
|
34
|
+
const value = await fetchPermawebOSBundlerStateValue(path, options, fetchImpl);
|
|
35
|
+
return isRecord(value) ? stripAoMetadata(value) : {};
|
|
36
|
+
}
|
|
37
|
+
async function fetchPermawebOSBundlerStateValue(path, options, fetchImpl) {
|
|
38
|
+
const response = await fetchImpl(permawebOSBundlerComputeUrl(path, options), {
|
|
39
|
+
headers: {
|
|
40
|
+
accept: "text/plain, application/json, */*",
|
|
41
|
+
"accept-bundle": "true"
|
|
42
|
+
},
|
|
43
|
+
method: "GET"
|
|
44
|
+
});
|
|
45
|
+
const text = await response.text();
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
throw new Error(`PermawebOS Bundler state fetch failed with HTTP ${response.status}: ${path}`);
|
|
48
|
+
}
|
|
49
|
+
if (normalizeNotFound(text)) return null;
|
|
50
|
+
const parsed = parseJson(text);
|
|
51
|
+
if (parsed === null) return text.trim();
|
|
52
|
+
if (!isRecord(parsed)) return parsed;
|
|
53
|
+
if (parsed.body === "not_found" || parsed.status === 404) return null;
|
|
54
|
+
if (Object.hasOwn(parsed, "body")) {
|
|
55
|
+
const { body } = parsed;
|
|
56
|
+
if (body === "not_found") return null;
|
|
57
|
+
if (typeof body === "string") {
|
|
58
|
+
return parseJson(body) ?? body;
|
|
59
|
+
}
|
|
60
|
+
return body;
|
|
61
|
+
}
|
|
62
|
+
return stripAoMetadata(parsed);
|
|
63
|
+
}
|
|
64
|
+
function permawebOSBundlerComputeUrl(path, options) {
|
|
65
|
+
const gateway = (options.gateway ?? DEFAULT_PERMAWEBOS_BUNDLER_GATEWAY).replace(/\/+$/, "");
|
|
66
|
+
const processId = options.processId ?? DEFAULT_PERMAWEBOS_BUNDLER_STAKING_PROCESS;
|
|
67
|
+
return `${gateway}/${processId}/compute/${path}?require-codec=application/json&accept-bundle=true`;
|
|
68
|
+
}
|
|
69
|
+
function getBundlerAddress(record) {
|
|
70
|
+
return normalizeScalar(record.lapee_address ?? record.lapeeAddress ?? record["lapee-address"]);
|
|
71
|
+
}
|
|
72
|
+
function normalizeBundlerUrl(value) {
|
|
73
|
+
if (!/^https?:\/\//i.test(value)) return "";
|
|
74
|
+
return value.replace(/\/+$/, "");
|
|
75
|
+
}
|
|
76
|
+
function isExcludedBundlerUrl(url) {
|
|
77
|
+
return EXCLUDED_PERMAWEBOS_BUNDLER_URLS.has(url.toLowerCase());
|
|
78
|
+
}
|
|
79
|
+
function normalizeScalar(value) {
|
|
80
|
+
if (value === null || value === void 0) return "";
|
|
81
|
+
if (typeof value === "string") return value.trim();
|
|
82
|
+
if (typeof value === "number" || typeof value === "boolean") return String(value);
|
|
83
|
+
return "";
|
|
84
|
+
}
|
|
85
|
+
function normalizeTimestamp(value) {
|
|
86
|
+
const timestamp = Number(value);
|
|
87
|
+
return Number.isFinite(timestamp) && timestamp > 0 ? timestamp : void 0;
|
|
88
|
+
}
|
|
89
|
+
function stripAoMetadata(value) {
|
|
90
|
+
const stripped = {};
|
|
91
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
92
|
+
if (!isAoMetadataKey(key)) stripped[key] = entry;
|
|
93
|
+
}
|
|
94
|
+
return stripped;
|
|
95
|
+
}
|
|
96
|
+
function isAoMetadataKey(key) {
|
|
97
|
+
return ["ao-result", "ao-types", "commitments", "status"].includes(key) || key.endsWith("+link");
|
|
98
|
+
}
|
|
99
|
+
function isRecord(value) {
|
|
100
|
+
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
101
|
+
}
|
|
102
|
+
function parseJson(text) {
|
|
103
|
+
const trimmed = text.trim();
|
|
104
|
+
if (!trimmed || !trimmed.startsWith("{") && !trimmed.startsWith("[")) return null;
|
|
105
|
+
try {
|
|
106
|
+
return JSON.parse(trimmed);
|
|
107
|
+
} catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function normalizeNotFound(text) {
|
|
112
|
+
const trimmed = text.trim();
|
|
113
|
+
if (!trimmed || trimmed === "not_found") return true;
|
|
114
|
+
if (trimmed.includes("<title>404 - Page not found.</title>")) return true;
|
|
115
|
+
const parsed = parseJson(trimmed);
|
|
116
|
+
return isRecord(parsed) && (parsed.status === 404 || parsed.body === "not_found");
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export { DEFAULT_PERMAWEBOS_BUNDLER_GATEWAY, DEFAULT_PERMAWEBOS_BUNDLER_STAKING_PROCESS, fetchActivePermawebOSBundlers };
|
|
120
|
+
//# sourceMappingURL=permawebos-bundlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permawebos-bundlers.js","sources":["../../src/utils/permawebos-bundlers.ts"],"sourcesContent":["export const DEFAULT_PERMAWEBOS_BUNDLER_GATEWAY = 'https://push-9.forward.computer'\nexport const DEFAULT_PERMAWEBOS_BUNDLER_STAKING_PROCESS =\n 'Xv7dvev8_dJVwW7k_VGGdHpRqWpgSCgK4vzJmnBkg5M'\nconst EXCLUDED_PERMAWEBOS_BUNDLER_URLS = new Set(['https://dev-1.forward.computer'])\n\nexport interface ActivePermawebOSBundler {\n address: string\n owner: string\n registeredAt?: number\n ring: string\n stake?: string\n stakedAt?: number\n url: string\n}\n\nexport interface FetchActivePermawebOSBundlersOptions {\n fetch?: FetchLike\n gateway?: string\n processId?: string\n ring?: string\n}\n\ntype FetchLike = (\n url: string,\n init?: { headers?: Record<string, string>; method?: string },\n) => Promise<{\n ok: boolean\n status: number\n text: () => Promise<string>\n}>\n\ntype ActiveRecord = {\n 'lapee-address'?: unknown\n lapee_address?: unknown\n lapeeAddress?: unknown\n ring?: unknown\n stake?: unknown\n staked_at?: unknown\n}\n\ntype RegisteredRecord = {\n location?: unknown\n owner?: unknown\n registered_at?: unknown\n}\n\nexport async function fetchActivePermawebOSBundlers(\n options: FetchActivePermawebOSBundlersOptions = {},\n): Promise<ActivePermawebOSBundler[]> {\n const fetchImpl = options.fetch ?? fetch\n const [active, registered] = await Promise.all([\n fetchPermawebOSBundlerStateMap('active', options, fetchImpl),\n fetchPermawebOSBundlerStateMap('registered', options, fetchImpl),\n ])\n\n return Object.entries(active)\n .flatMap(([owner, record]) => {\n if (isAoMetadataKey(owner) || !isRecord(record)) return []\n\n const activeRecord = record as ActiveRecord\n const ring = normalizeScalar(activeRecord.ring)\n if (!ring || (options.ring && ring !== options.ring)) return []\n\n const address = getBundlerAddress(activeRecord)\n if (!address) return []\n\n const registeredRecord = isRecord(registered[address])\n ? (registered[address] as RegisteredRecord)\n : undefined\n const url = normalizeBundlerUrl(normalizeScalar(registeredRecord?.location))\n if (!url || isExcludedBundlerUrl(url)) return []\n\n return [\n {\n address,\n owner,\n registeredAt: normalizeTimestamp(registeredRecord?.registered_at),\n ring,\n stake: normalizeScalar(activeRecord.stake) || undefined,\n stakedAt: normalizeTimestamp(activeRecord.staked_at),\n url,\n },\n ]\n })\n .sort((a, b) => a.ring.localeCompare(b.ring) || a.url.localeCompare(b.url))\n}\n\nasync function fetchPermawebOSBundlerStateMap(\n path: string,\n options: FetchActivePermawebOSBundlersOptions,\n fetchImpl: FetchLike,\n): Promise<Record<string, unknown>> {\n const value = await fetchPermawebOSBundlerStateValue(path, options, fetchImpl)\n return isRecord(value) ? stripAoMetadata(value) : {}\n}\n\nasync function fetchPermawebOSBundlerStateValue(\n path: string,\n options: FetchActivePermawebOSBundlersOptions,\n fetchImpl: FetchLike,\n): Promise<unknown> {\n const response = await fetchImpl(permawebOSBundlerComputeUrl(path, options), {\n headers: {\n accept: 'text/plain, application/json, */*',\n 'accept-bundle': 'true',\n },\n method: 'GET',\n })\n const text = await response.text()\n\n if (!response.ok) {\n throw new Error(`PermawebOS Bundler state fetch failed with HTTP ${response.status}: ${path}`)\n }\n\n if (normalizeNotFound(text)) return null\n\n const parsed = parseJson(text)\n if (parsed === null) return text.trim()\n if (!isRecord(parsed)) return parsed\n\n if (parsed.body === 'not_found' || parsed.status === 404) return null\n if (Object.hasOwn(parsed, 'body')) {\n const { body } = parsed\n if (body === 'not_found') return null\n if (typeof body === 'string') {\n return parseJson(body) ?? body\n }\n\n return body\n }\n\n return stripAoMetadata(parsed)\n}\n\nfunction permawebOSBundlerComputeUrl(\n path: string,\n options: FetchActivePermawebOSBundlersOptions,\n): string {\n const gateway = (options.gateway ?? DEFAULT_PERMAWEBOS_BUNDLER_GATEWAY).replace(/\\/+$/, '')\n const processId = options.processId ?? DEFAULT_PERMAWEBOS_BUNDLER_STAKING_PROCESS\n return `${gateway}/${processId}/compute/${path}?require-codec=application/json&accept-bundle=true`\n}\n\nfunction getBundlerAddress(record: ActiveRecord): string {\n return normalizeScalar(record.lapee_address ?? record.lapeeAddress ?? record['lapee-address'])\n}\n\nfunction normalizeBundlerUrl(value: string): string {\n if (!/^https?:\\/\\//i.test(value)) return ''\n return value.replace(/\\/+$/, '')\n}\n\nfunction isExcludedBundlerUrl(url: string): boolean {\n return EXCLUDED_PERMAWEBOS_BUNDLER_URLS.has(url.toLowerCase())\n}\n\nfunction normalizeScalar(value: unknown): string {\n if (value === null || value === undefined) return ''\n if (typeof value === 'string') return value.trim()\n if (typeof value === 'number' || typeof value === 'boolean') return String(value)\n return ''\n}\n\nfunction normalizeTimestamp(value: unknown): number | undefined {\n const timestamp = Number(value)\n return Number.isFinite(timestamp) && timestamp > 0 ? timestamp : undefined\n}\n\nfunction stripAoMetadata(value: Record<string, unknown>): Record<string, unknown> {\n const stripped: Record<string, unknown> = {}\n for (const [key, entry] of Object.entries(value)) {\n if (!isAoMetadataKey(key)) stripped[key] = entry\n }\n\n return stripped\n}\n\nfunction isAoMetadataKey(key: string): boolean {\n return ['ao-result', 'ao-types', 'commitments', 'status'].includes(key) || key.endsWith('+link')\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === 'object' && !Array.isArray(value))\n}\n\nfunction parseJson(text: string): unknown | null {\n const trimmed = text.trim()\n if (!trimmed || (!trimmed.startsWith('{') && !trimmed.startsWith('['))) return null\n\n try {\n return JSON.parse(trimmed)\n } catch {\n return null\n }\n}\n\nfunction normalizeNotFound(text: string): boolean {\n const trimmed = text.trim()\n if (!trimmed || trimmed === 'not_found') return true\n if (trimmed.includes('<title>404 - Page not found.</title>')) return true\n\n const parsed = parseJson(trimmed)\n return isRecord(parsed) && (parsed.status === 404 || parsed.body === 'not_found')\n}\n"],"names":[],"mappings":"AAAO,MAAM,kCAAA,GAAqC;AAC3C,MAAM,0CAAA,GACX;AACF,MAAM,gCAAA,mBAAmC,IAAI,GAAA,CAAI,CAAC,gCAAgC,CAAC,CAAA;AA2CnF,eAAsB,6BAAA,CACpB,OAAA,GAAgD,EAAC,EACb;AACpC,EAAA,MAAM,SAAA,GAAY,QAAQ,KAAA,IAAS,KAAA;AACnC,EAAA,MAAM,CAAC,MAAA,EAAQ,UAAU,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,IAC7C,8BAAA,CAA+B,QAAA,EAAU,OAAA,EAAS,SAAS,CAAA;AAAA,IAC3D,8BAAA,CAA+B,YAAA,EAAc,OAAA,EAAS,SAAS;AAAA,GAChE,CAAA;AAED,EAAA,OAAO,MAAA,CAAO,QAAQ,MAAM,CAAA,CACzB,QAAQ,CAAC,CAAC,KAAA,EAAO,MAAM,CAAA,KAAM;AAC5B,IAAA,IAAI,eAAA,CAAgB,KAAK,CAAA,IAAK,CAAC,SAAS,MAAM,CAAA,SAAU,EAAC;AAEzD,IAAA,MAAM,YAAA,GAAe,MAAA;AACrB,IAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,YAAA,CAAa,IAAI,CAAA;AAC9C,IAAA,IAAI,CAAC,QAAS,OAAA,CAAQ,IAAA,IAAQ,SAAS,OAAA,CAAQ,IAAA,SAAc,EAAC;AAE9D,IAAA,MAAM,OAAA,GAAU,kBAAkB,YAAY,CAAA;AAC9C,IAAA,IAAI,CAAC,OAAA,EAAS,OAAO,EAAC;AAEtB,IAAA,MAAM,gBAAA,GAAmB,SAAS,UAAA,CAAW,OAAO,CAAC,CAAA,GAChD,UAAA,CAAW,OAAO,CAAA,GACnB,MAAA;AACJ,IAAA,MAAM,GAAA,GAAM,mBAAA,CAAoB,eAAA,CAAgB,gBAAA,EAAkB,QAAQ,CAAC,CAAA;AAC3E,IAAA,IAAI,CAAC,GAAA,IAAO,oBAAA,CAAqB,GAAG,CAAA,SAAU,EAAC;AAE/C,IAAA,OAAO;AAAA,MACL;AAAA,QACE,OAAA;AAAA,QACA,KAAA;AAAA,QACA,YAAA,EAAc,kBAAA,CAAmB,gBAAA,EAAkB,aAAa,CAAA;AAAA,QAChE,IAAA;AAAA,QACA,KAAA,EAAO,eAAA,CAAgB,YAAA,CAAa,KAAK,CAAA,IAAK,MAAA;AAAA,QAC9C,QAAA,EAAU,kBAAA,CAAmB,YAAA,CAAa,SAAS,CAAA;AAAA,QACnD;AAAA;AACF,KACF;AAAA,EACF,CAAC,CAAA,CACA,IAAA,CAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,IAAA,CAAK,aAAA,CAAc,CAAA,CAAE,IAAI,CAAA,IAAK,CAAA,CAAE,IAAI,aAAA,CAAc,CAAA,CAAE,GAAG,CAAC,CAAA;AAC9E;AAEA,eAAe,8BAAA,CACb,IAAA,EACA,OAAA,EACA,SAAA,EACkC;AAClC,EAAA,MAAM,KAAA,GAAQ,MAAM,gCAAA,CAAiC,IAAA,EAAM,SAAS,SAAS,CAAA;AAC7E,EAAA,OAAO,SAAS,KAAK,CAAA,GAAI,eAAA,CAAgB,KAAK,IAAI,EAAC;AACrD;AAEA,eAAe,gCAAA,CACb,IAAA,EACA,OAAA,EACA,SAAA,EACkB;AAClB,EAAA,MAAM,WAAW,MAAM,SAAA,CAAU,2BAAA,CAA4B,IAAA,EAAM,OAAO,CAAA,EAAG;AAAA,IAC3E,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,mCAAA;AAAA,MACR,eAAA,EAAiB;AAAA,KACnB;AAAA,IACA,MAAA,EAAQ;AAAA,GACT,CAAA;AACD,EAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gDAAA,EAAmD,SAAS,MAAM,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAA;AAAA,EAC/F;AAEA,EAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,EAAG,OAAO,IAAA;AAEpC,EAAA,MAAM,MAAA,GAAS,UAAU,IAAI,CAAA;AAC7B,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,OAAO,IAAA,CAAK,IAAA,EAAK;AACtC,EAAA,IAAI,CAAC,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,MAAA;AAE9B,EAAA,IAAI,OAAO,IAAA,KAAS,WAAA,IAAe,MAAA,CAAO,MAAA,KAAW,KAAK,OAAO,IAAA;AACjE,EAAA,IAAI,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,MAAM,CAAA,EAAG;AACjC,IAAA,MAAM,EAAE,MAAK,GAAI,MAAA;AACjB,IAAA,IAAI,IAAA,KAAS,aAAa,OAAO,IAAA;AACjC,IAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,MAAA,OAAO,SAAA,CAAU,IAAI,CAAA,IAAK,IAAA;AAAA,IAC5B;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,gBAAgB,MAAM,CAAA;AAC/B;AAEA,SAAS,2BAAA,CACP,MACA,OAAA,EACQ;AACR,EAAA,MAAM,WAAW,OAAA,CAAQ,OAAA,IAAW,kCAAA,EAAoC,OAAA,CAAQ,QAAQ,EAAE,CAAA;AAC1F,EAAA,MAAM,SAAA,GAAY,QAAQ,SAAA,IAAa,0CAAA;AACvC,EAAA,OAAO,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,SAAS,YAAY,IAAI,CAAA,kDAAA,CAAA;AAChD;AAEA,SAAS,kBAAkB,MAAA,EAA8B;AACvD,EAAA,OAAO,gBAAgB,MAAA,CAAO,aAAA,IAAiB,OAAO,YAAA,IAAgB,MAAA,CAAO,eAAe,CAAC,CAAA;AAC/F;AAEA,SAAS,oBAAoB,KAAA,EAAuB;AAClD,EAAA,IAAI,CAAC,eAAA,CAAgB,IAAA,CAAK,KAAK,GAAG,OAAO,EAAA;AACzC,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AACjC;AAEA,SAAS,qBAAqB,GAAA,EAAsB;AAClD,EAAA,OAAO,gCAAA,CAAiC,GAAA,CAAI,GAAA,CAAI,WAAA,EAAa,CAAA;AAC/D;AAEA,SAAS,gBAAgB,KAAA,EAAwB;AAC/C,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,EAAA;AAClD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,MAAM,IAAA,EAAK;AACjD,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,OAAO,UAAU,SAAA,EAAW,OAAO,OAAO,KAAK,CAAA;AAChF,EAAA,OAAO,EAAA;AACT;AAEA,SAAS,mBAAmB,KAAA,EAAoC;AAC9D,EAAA,MAAM,SAAA,GAAY,OAAO,KAAK,CAAA;AAC9B,EAAA,OAAO,OAAO,QAAA,CAAS,SAAS,CAAA,IAAK,SAAA,GAAY,IAAI,SAAA,GAAY,MAAA;AACnE;AAEA,SAAS,gBAAgB,KAAA,EAAyD;AAChF,EAAA,MAAM,WAAoC,EAAC;AAC3C,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AAChD,IAAA,IAAI,CAAC,eAAA,CAAgB,GAAG,CAAA,EAAG,QAAA,CAAS,GAAG,CAAA,GAAI,KAAA;AAAA,EAC7C;AAEA,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,gBAAgB,GAAA,EAAsB;AAC7C,EAAA,OAAO,CAAC,WAAA,EAAa,UAAA,EAAY,aAAA,EAAe,QAAQ,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA,IAAK,GAAA,CAAI,QAAA,CAAS,OAAO,CAAA;AACjG;AAEA,SAAS,SAAS,KAAA,EAAkD;AAClE,EAAA,OAAO,OAAA,CAAQ,SAAS,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAC,CAAA;AAC5E;AAEA,SAAS,UAAU,IAAA,EAA8B;AAC/C,EAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,EAAA,IAAI,CAAC,OAAA,IAAY,CAAC,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,IAAK,CAAC,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,EAAI,OAAO,IAAA;AAE/E,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,MAAM,OAAO,CAAA;AAAA,EAC3B,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAEA,SAAS,kBAAkB,IAAA,EAAuB;AAChD,EAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,EAAA,IAAI,CAAC,OAAA,IAAW,OAAA,KAAY,WAAA,EAAa,OAAO,IAAA;AAChD,EAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,sCAAsC,CAAA,EAAG,OAAO,IAAA;AAErE,EAAA,MAAM,MAAA,GAAS,UAAU,OAAO,CAAA;AAChC,EAAA,OAAO,SAAS,MAAM,CAAA,KAAM,OAAO,MAAA,KAAW,GAAA,IAAO,OAAO,IAAA,KAAS,WAAA,CAAA;AACvE;;;;"}
|
package/dist/utils/signer.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { EthereumSigner } from '@ardrive/turbo-sdk';
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
3
2
|
|
|
3
|
+
const require$1 = createRequire(import.meta.url);
|
|
4
|
+
const { ArweaveSigner, EthereumSigner } = require$1("@dha-team/arbundles");
|
|
4
5
|
function createSigner(sigType, deployKey) {
|
|
5
6
|
switch (sigType) {
|
|
6
7
|
case "ethereum": {
|
package/dist/utils/signer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.js","sources":["../../src/utils/signer.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"signer.js","sources":["../../src/utils/signer.ts"],"sourcesContent":["import { createRequire } from 'node:module'\n\nimport type { SignerType } from '../types/index.js'\n\nconst require = createRequire(import.meta.url)\nconst { ArweaveSigner, EthereumSigner } = require('@dha-team/arbundles') as {\n ArweaveSigner: new (jwk: Record<string, unknown>) => unknown\n EthereumSigner: new (privateKey: string) => unknown\n}\n\nexport function createSigner(sigType: SignerType, deployKey: string) {\n switch (sigType) {\n case 'ethereum': {\n return {\n signer: new EthereumSigner(deployKey),\n token: 'ethereum' as const,\n }\n }\n\n case 'polygon': {\n return {\n signer: new EthereumSigner(deployKey),\n token: 'pol' as const,\n }\n }\n\n case 'arweave': {\n const jwk = JSON.parse(Buffer.from(deployKey, 'base64').toString('utf8'))\n return {\n signer: new ArweaveSigner(jwk),\n token: 'arweave' as const,\n }\n }\n\n case 'kyve': {\n return {\n signer: new EthereumSigner(deployKey),\n token: 'kyve' as const,\n }\n }\n\n default: {\n throw new Error(\n `Invalid sig-type provided: ${sigType}. Allowed values are 'arweave', 'ethereum', 'polygon', or 'kyve'.`,\n )\n }\n }\n}\n"],"names":["require"],"mappings":";;AAIA,MAAMA,SAAA,GAAU,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AAC7C,MAAM,EAAE,aAAA,EAAe,cAAA,EAAe,GAAIA,UAAQ,qBAAqB,CAAA;AAKhE,SAAS,YAAA,CAAa,SAAqB,SAAA,EAAmB;AACnE,EAAA,QAAQ,OAAA;AAAS,IACf,KAAK,UAAA,EAAY;AACf,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,IAAI,cAAA,CAAe,SAAS,CAAA;AAAA,QACpC,KAAA,EAAO;AAAA,OACT;AAAA,IACF;AAAA,IAEA,KAAK,SAAA,EAAW;AACd,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,IAAI,cAAA,CAAe,SAAS,CAAA;AAAA,QACpC,KAAA,EAAO;AAAA,OACT;AAAA,IACF;AAAA,IAEA,KAAK,SAAA,EAAW;AACd,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,WAAW,QAAQ,CAAA,CAAE,QAAA,CAAS,MAAM,CAAC,CAAA;AACxE,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,IAAI,aAAA,CAAc,GAAG,CAAA;AAAA,QAC7B,KAAA,EAAO;AAAA,OACT;AAAA,IACF;AAAA,IAEA,KAAK,MAAA,EAAQ;AACX,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,IAAI,cAAA,CAAe,SAAS,CAAA;AAAA,QACpC,KAAA,EAAO;AAAA,OACT;AAAA,IACF;AAAA,IAEA,SAAS;AACP,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,8BAA8B,OAAO,CAAA,iEAAA;AAAA,OACvC;AAAA,IACF;AAAA;AAEJ;;;;"}
|
package/dist/utils/uploader.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'node:path';
|
|
2
2
|
import 'node:stream';
|
|
3
3
|
import 'mime-types';
|
|
4
|
-
export { u as uploadFile, a as uploadFolder } from '../chunks/uploader-
|
|
4
|
+
export { u as uploadFile, a as uploadFolder } from '../chunks/uploader-Bz9jraY2.js';
|
|
5
5
|
//# sourceMappingURL=uploader.js.map
|
package/dist/utils/validators.js
CHANGED
|
@@ -1,33 +1,6 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
-
import { ARIO_MAINNET_PROCESS_ID, ARIO_TESTNET_PROCESS_ID } from '@ar.io/sdk';
|
|
3
|
-
import { TTL_MIN, TTL_MAX, ARWEAVE_TX_ID_REGEX } from './constants.js';
|
|
4
2
|
import { expandPath } from './path.js';
|
|
5
3
|
|
|
6
|
-
function validateTtl(value) {
|
|
7
|
-
const num = Number.parseInt(value, 10);
|
|
8
|
-
if (Number.isNaN(num)) {
|
|
9
|
-
return "TTL must be a valid number";
|
|
10
|
-
}
|
|
11
|
-
if (num < TTL_MIN || num > TTL_MAX) {
|
|
12
|
-
return `TTL must be between ${TTL_MIN} and ${TTL_MAX} seconds`;
|
|
13
|
-
}
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
function validateUndername(value) {
|
|
17
|
-
if (value.length === 0) {
|
|
18
|
-
return "Undername must not be empty";
|
|
19
|
-
}
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
function validateArioProcess(value) {
|
|
23
|
-
if (value === "mainnet" || value === "testnet") {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
if (!ARWEAVE_TX_ID_REGEX.test(value)) {
|
|
27
|
-
return 'ARIO process must be a valid Arweave transaction ID, "mainnet", or "testnet"';
|
|
28
|
-
}
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
4
|
function validateFileExists(value) {
|
|
32
5
|
const filePath = expandPath(value);
|
|
33
6
|
if (!fs.existsSync(filePath)) {
|
|
@@ -42,21 +15,12 @@ function validateFolderExists(value) {
|
|
|
42
15
|
}
|
|
43
16
|
return true;
|
|
44
17
|
}
|
|
45
|
-
function
|
|
46
|
-
if (value === "mainnet") {
|
|
47
|
-
return ARIO_MAINNET_PROCESS_ID;
|
|
48
|
-
}
|
|
49
|
-
if (value === "testnet") {
|
|
50
|
-
return ARIO_TESTNET_PROCESS_ID;
|
|
51
|
-
}
|
|
52
|
-
return value;
|
|
53
|
-
}
|
|
54
|
-
function validateArnsName(value) {
|
|
18
|
+
function validateName(value) {
|
|
55
19
|
if (value.length === 0) {
|
|
56
|
-
return "
|
|
20
|
+
return "Namespace name is required";
|
|
57
21
|
}
|
|
58
22
|
return true;
|
|
59
23
|
}
|
|
60
24
|
|
|
61
|
-
export {
|
|
25
|
+
export { validateFileExists, validateFolderExists, validateName };
|
|
62
26
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sources":["../../src/utils/validators.ts"],"sourcesContent":["import fs from 'node:fs'\n\nimport {
|
|
1
|
+
{"version":3,"file":"validators.js","sources":["../../src/utils/validators.ts"],"sourcesContent":["import fs from 'node:fs'\n\nimport { expandPath } from './path.js'\n\n/**\n * Validate file path exists.\n *\n * @param value - File path to validate.\n * @returns Validation error message, or true when the file exists.\n */\nexport function validateFileExists(value: string): string | true {\n const filePath = expandPath(value)\n if (!fs.existsSync(filePath)) {\n return `File ${value} does not exist`\n }\n\n return true\n}\n\n/**\n * Validate folder path exists.\n *\n * @param value - Folder path to validate.\n * @returns Validation error message, or true when the folder exists.\n */\nexport function validateFolderExists(value: string): string | true {\n const folderPath = expandPath(value)\n if (!fs.existsSync(folderPath)) {\n return `Folder ${value} does not exist`\n }\n\n return true\n}\n\n/**\n * Validate namespace name is not empty.\n *\n * @param value - Name to validate.\n * @returns Validation error message, or true when the name is present.\n */\nexport function validateName(value: string): string | true {\n if (value.length === 0) {\n return 'Namespace name is required'\n }\n\n return true\n}\n"],"names":[],"mappings":";;;AAUO,SAAS,mBAAmB,KAAA,EAA8B;AAC/D,EAAA,MAAM,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,EAAA,IAAI,CAAC,EAAA,CAAG,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC5B,IAAA,OAAO,QAAQ,KAAK,CAAA,eAAA,CAAA;AAAA,EACtB;AAEA,EAAA,OAAO,IAAA;AACT;AAQO,SAAS,qBAAqB,KAAA,EAA8B;AACjE,EAAA,MAAM,UAAA,GAAa,WAAW,KAAK,CAAA;AACnC,EAAA,IAAI,CAAC,EAAA,CAAG,UAAA,CAAW,UAAU,CAAA,EAAG;AAC9B,IAAA,OAAO,UAAU,KAAK,CAAA,eAAA,CAAA;AAAA,EACxB;AAEA,EAAA,OAAO,IAAA;AACT;AAQO,SAAS,aAAa,KAAA,EAA8B;AACzD,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,OAAO,4BAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA;AACT;;;;"}
|