permaweb-deploy 2.5.0 → 3.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 +311 -83
- package/bin/dev.js +5 -0
- package/bin/run.js +5 -0
- package/dist/commands/deploy.js +227 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/constants/flags.js +190 -0
- package/dist/constants/flags.js.map +1 -0
- package/dist/index.js +2 -299
- package/dist/index.js.map +1 -0
- package/dist/prompts/arns.js +89 -0
- package/dist/prompts/arns.js.map +1 -0
- package/dist/prompts/deployment.js +27 -0
- package/dist/prompts/deployment.js.map +1 -0
- package/dist/prompts/wallet.js +51 -0
- package/dist/prompts/wallet.js.map +1 -0
- package/dist/src/commands/deploy.d.ts +9 -0
- package/dist/src/commands/deploy.d.ts.map +1 -0
- package/dist/src/constants/flags.d.ts +84 -0
- package/dist/src/constants/flags.d.ts.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/prompts/arns.d.ts +13 -0
- package/dist/src/prompts/arns.d.ts.map +1 -0
- package/dist/src/prompts/deployment.d.ts +6 -0
- package/dist/src/prompts/deployment.d.ts.map +1 -0
- package/dist/src/prompts/wallet.d.ts +11 -0
- package/dist/src/prompts/wallet.d.ts.map +1 -0
- package/dist/src/types/index.d.ts +31 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/utils/__tests__/constants.test.d.ts +2 -0
- package/dist/src/utils/__tests__/constants.test.d.ts.map +1 -0
- package/dist/src/utils/config-resolver.d.ts +72 -0
- package/dist/src/utils/config-resolver.d.ts.map +1 -0
- package/dist/src/utils/constants.d.ts +4 -0
- package/dist/src/utils/constants.d.ts.map +1 -0
- package/dist/src/utils/path.d.ts +5 -0
- package/dist/src/utils/path.d.ts.map +1 -0
- package/dist/src/utils/signer.d.ts +17 -0
- package/dist/src/utils/signer.d.ts.map +1 -0
- package/dist/src/utils/uploader.d.ts +8 -0
- package/dist/src/utils/uploader.d.ts.map +1 -0
- package/dist/src/utils/validators.d.ts +29 -0
- package/dist/src/utils/validators.d.ts.map +1 -0
- package/dist/tests/constants.d.ts +11 -0
- package/dist/tests/constants.d.ts.map +1 -0
- package/dist/tests/e2e/deploy-command.test.d.ts +2 -0
- package/dist/tests/e2e/deploy-command.test.d.ts.map +1 -0
- package/dist/tests/global-setup.d.ts +6 -0
- package/dist/tests/global-setup.d.ts.map +1 -0
- package/dist/tests/mocks/turbo-handlers.d.ts +105 -0
- package/dist/tests/mocks/turbo-handlers.d.ts.map +1 -0
- package/dist/tests/setup.d.ts +11 -0
- package/dist/tests/setup.d.ts.map +1 -0
- package/dist/tests/types/payment-service.d.ts +218 -0
- package/dist/tests/types/payment-service.d.ts.map +1 -0
- package/dist/tests/types/upload-service.d.ts +168 -0
- package/dist/tests/types/upload-service.d.ts.map +1 -0
- package/dist/tests/unit/validators.test.d.ts +2 -0
- package/dist/tests/unit/validators.test.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config-resolver.js +39 -0
- package/dist/utils/config-resolver.js.map +1 -0
- package/dist/utils/constants.js +6 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/path.js +15 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/signer.js +40 -0
- package/dist/utils/signer.js.map +1 -0
- package/dist/utils/uploader.js +78 -0
- package/dist/utils/uploader.js.map +1 -0
- package/dist/utils/validators.js +62 -0
- package/dist/utils/validators.js.map +1 -0
- package/package.json +107 -37
- package/.babelrc +0 -3
- package/.editorconfig +0 -4
- package/.eslintrc.js +0 -35
- package/dist/turbo/index.js +0 -234
- package/src/index.js +0 -287
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface WalletConfig {
|
|
2
|
+
method: 'env' | 'file' | 'string';
|
|
3
|
+
privateKey?: string;
|
|
4
|
+
wallet?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function promptWalletMethod(): Promise<string>;
|
|
7
|
+
export declare function promptWalletFile(): Promise<string>;
|
|
8
|
+
export declare function promptPrivateKey(): Promise<string>;
|
|
9
|
+
export declare function promptSignerType(): Promise<string>;
|
|
10
|
+
export declare function getWalletConfig(): Promise<WalletConfig>;
|
|
11
|
+
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/prompts/wallet.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAA;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAS1D;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAMxD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAKxD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAWxD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAY7D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Flag } from '@oclif/core/lib/interfaces';
|
|
2
|
+
export type SignerType = 'arweave' | 'ethereum' | 'kyve' | 'polygon';
|
|
3
|
+
export interface DeployOptions {
|
|
4
|
+
'ario-process': string;
|
|
5
|
+
'arns-name': string;
|
|
6
|
+
'deploy-file': string;
|
|
7
|
+
'deploy-folder': string;
|
|
8
|
+
'private-key': string;
|
|
9
|
+
'sig-type': SignerType;
|
|
10
|
+
'ttl-seconds': string;
|
|
11
|
+
undername: string;
|
|
12
|
+
wallet: string;
|
|
13
|
+
}
|
|
14
|
+
export type DeployFlags = Partial<Record<keyof DeployOptions, Flag<string>>>;
|
|
15
|
+
export interface UploadResult {
|
|
16
|
+
id: string;
|
|
17
|
+
manifest?: {
|
|
18
|
+
paths: Record<string, {
|
|
19
|
+
id: string;
|
|
20
|
+
}>;
|
|
21
|
+
};
|
|
22
|
+
manifestResponse?: {
|
|
23
|
+
id: string;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface ArnsRecord {
|
|
27
|
+
processId: string;
|
|
28
|
+
type: string;
|
|
29
|
+
undernames?: string[];
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AAEtD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAA;AAEpE,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,UAAU,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAE5E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KACtC,CAAA;IACD,gBAAgB,CAAC,EAAE;QACjB,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;CACF;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.test.d.ts","sourceRoot":"","sources":["../../../../src/utils/__tests__/constants.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for a single flag with its associated prompt
|
|
3
|
+
*/
|
|
4
|
+
export type FlagConfig<T = any, F = any> = {
|
|
5
|
+
/** The oclif flag definition */
|
|
6
|
+
flag: F;
|
|
7
|
+
/** Optional prompt function to get the value interactively */
|
|
8
|
+
prompt?: () => Promise<T>;
|
|
9
|
+
/** Transform function to apply to the resolved value */
|
|
10
|
+
transform?: (value: T) => T;
|
|
11
|
+
/** Whether this flag triggers interactive mode when missing */
|
|
12
|
+
triggersInteractive?: boolean;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Map of flag configurations
|
|
16
|
+
*/
|
|
17
|
+
export type FlagConfigMap = Record<string, FlagConfig<any, any>>;
|
|
18
|
+
/**
|
|
19
|
+
* Extract the resolved config type from a FlagConfigMap
|
|
20
|
+
* Infers the actual type (string, number, boolean) and optionality from each FlagConfig
|
|
21
|
+
*/
|
|
22
|
+
export type ResolvedConfig<T extends FlagConfigMap> = {
|
|
23
|
+
[K in keyof T]: T[K] extends FlagConfig<infer U, any> ? U : any;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Options for resolveConfig
|
|
27
|
+
*/
|
|
28
|
+
export interface ResolveConfigOptions {
|
|
29
|
+
/** Whether to run in interactive mode */
|
|
30
|
+
interactive?: boolean;
|
|
31
|
+
/** Custom logic to determine if interactive mode should be enabled */
|
|
32
|
+
shouldBeInteractive?: (parsedFlags: Record<string, any>) => boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolves configuration by combining parsed CLI flags with interactive prompts
|
|
36
|
+
*
|
|
37
|
+
* @param flagConfigs - Map of flag names to their configurations
|
|
38
|
+
* @param parsedFlags - Parsed flags from this.parse()
|
|
39
|
+
* @param options - Resolution options
|
|
40
|
+
* @returns Fully resolved configuration object
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const config = await resolveConfig(
|
|
45
|
+
* {
|
|
46
|
+
* arnsName: {
|
|
47
|
+
* flag: globalFlags.arnsName,
|
|
48
|
+
* prompt: promptArnsName,
|
|
49
|
+
* triggersInteractive: true,
|
|
50
|
+
* },
|
|
51
|
+
* wallet: {
|
|
52
|
+
* flag: globalFlags.wallet,
|
|
53
|
+
* prompt: async () => (await getWalletConfig()).wallet,
|
|
54
|
+
* },
|
|
55
|
+
* },
|
|
56
|
+
* flags,
|
|
57
|
+
* {
|
|
58
|
+
* shouldBeInteractive: (flags) => !flags['arns-name'],
|
|
59
|
+
* }
|
|
60
|
+
* )
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function resolveConfig<T extends FlagConfigMap>(flagConfigs: T, parsedFlags: Record<string, any>, options?: ResolveConfigOptions): Promise<ResolvedConfig<T>>;
|
|
64
|
+
/**
|
|
65
|
+
* Helper to create a flag configuration with proper type inference
|
|
66
|
+
*/
|
|
67
|
+
export declare function createFlagConfig<T, F = any>(config: FlagConfig<T, F>): FlagConfig<T, F>;
|
|
68
|
+
/**
|
|
69
|
+
* Helper to extract just the flags from a FlagConfigMap for use in command static flags
|
|
70
|
+
*/
|
|
71
|
+
export declare function extractFlags<T extends FlagConfigMap>(flagConfigs: T): Record<string, any>;
|
|
72
|
+
//# sourceMappingURL=config-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-resolver.d.ts","sourceRoot":"","sources":["../../../src/utils/config-resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI;IACzC,gCAAgC;IAChC,IAAI,EAAE,CAAC,CAAA;IACP,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;IACzB,wDAAwD;IACxD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;IAC3B,+DAA+D;IAC/D,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAEhE;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,aAAa,IAAI;KACnD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;CAChE,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,sEAAsE;IACtE,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAA;CACpE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS,aAAa,EACzD,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAqC5B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAEvF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAAE,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAOzF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,QAAgB,CAAA;AAEhD,eAAO,MAAM,OAAO,KAAK,CAAA;AACzB,eAAO,MAAM,OAAO,QAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/utils/path.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUnD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ArweaveSigner } from '@ar.io/sdk';
|
|
2
|
+
import { EthereumSigner } from '@ardrive/turbo-sdk';
|
|
3
|
+
import type { SignerType } from '../types/index.js';
|
|
4
|
+
export declare function createSigner(sigType: SignerType, deployKey: string): {
|
|
5
|
+
signer: EthereumSigner;
|
|
6
|
+
token: "ethereum";
|
|
7
|
+
} | {
|
|
8
|
+
signer: EthereumSigner;
|
|
9
|
+
token: "pol";
|
|
10
|
+
} | {
|
|
11
|
+
signer: ArweaveSigner;
|
|
12
|
+
token: "arweave";
|
|
13
|
+
} | {
|
|
14
|
+
signer: EthereumSigner;
|
|
15
|
+
token: "kyve";
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=signer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/utils/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;EAqClE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { OnDemandFunding, type TurboAuthenticatedClient } from '@ardrive/turbo-sdk';
|
|
2
|
+
export declare function uploadFile(turbo: TurboAuthenticatedClient, filePath: string, options?: {
|
|
3
|
+
fundingMode?: OnDemandFunding;
|
|
4
|
+
}): Promise<string>;
|
|
5
|
+
export declare function uploadFolder(turbo: TurboAuthenticatedClient, folderPath: string, options?: {
|
|
6
|
+
fundingMode?: OnDemandFunding;
|
|
7
|
+
}): Promise<string>;
|
|
8
|
+
//# sourceMappingURL=uploader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../../src/utils/uploader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,KAAK,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAGnF,wBAAsB,UAAU,CAC9B,KAAK,EAAE,wBAAwB,EAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B,GACA,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,wBAAwB,EAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B,GACA,OAAO,CAAC,MAAM,CAAC,CAsDjB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate TTL seconds
|
|
3
|
+
*/
|
|
4
|
+
export declare function validateTtl(value: string): string | true;
|
|
5
|
+
/**
|
|
6
|
+
* Validate undername
|
|
7
|
+
*/
|
|
8
|
+
export declare function validateUndername(value: string): string | true;
|
|
9
|
+
/**
|
|
10
|
+
* Validate ARIO process ID
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateArioProcess(value: string): string | true;
|
|
13
|
+
/**
|
|
14
|
+
* Validate file path exists
|
|
15
|
+
*/
|
|
16
|
+
export declare function validateFileExists(value: string): string | true;
|
|
17
|
+
/**
|
|
18
|
+
* Validate folder path exists
|
|
19
|
+
*/
|
|
20
|
+
export declare function validateFolderExists(value: string): string | true;
|
|
21
|
+
/**
|
|
22
|
+
* Resolve ARIO process from shorthand to actual ID
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveArioProcess(value: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Validate ArNS name is not empty
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateArnsName(value: string): string | true;
|
|
29
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../src/utils/validators.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM7D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Arweave wallet JWK
|
|
3
|
+
* Loaded from fixtures/test_wallet.json
|
|
4
|
+
*/
|
|
5
|
+
export declare const TEST_ARWEAVE_WALLET: any;
|
|
6
|
+
/**
|
|
7
|
+
* Test Ethereum private key
|
|
8
|
+
* This is a deterministic test key - DO NOT use for real transactions
|
|
9
|
+
*/
|
|
10
|
+
export declare const TEST_ETH_PRIVATE_KEY = "0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef";
|
|
11
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../tests/constants.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,eAAO,MAAM,mBAAmB,KAE/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,uEACqC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-command.test.d.ts","sourceRoot":"","sources":["../../../tests/e2e/deploy-command.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-setup.d.ts","sourceRoot":"","sources":["../../tests/global-setup.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,SAa5B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { components as PaymentComponents } from '../types/payment-service.js';
|
|
2
|
+
import type { components as UploadComponents } from '../types/upload-service.js';
|
|
3
|
+
/**
|
|
4
|
+
* Type aliases from generated OpenAPI types
|
|
5
|
+
*/
|
|
6
|
+
type DataItemPost = UploadComponents['schemas']['DataItemPost'];
|
|
7
|
+
type BalanceResponse = PaymentComponents['schemas']['BalanceResponse'];
|
|
8
|
+
type CreditResponse = PaymentComponents['schemas']['CreditResponse'];
|
|
9
|
+
type CreditedPaymentTx = PaymentComponents['schemas']['CreditedPaymentTx'];
|
|
10
|
+
/**
|
|
11
|
+
* Mock data generators for Turbo API responses
|
|
12
|
+
* Based on actual Turbo SDK types and API responses
|
|
13
|
+
*/
|
|
14
|
+
export declare const mockTurboData: {
|
|
15
|
+
balanceResponse: (winc?: string) => BalanceResponse;
|
|
16
|
+
priceResponse: (winc?: string) => CreditResponse;
|
|
17
|
+
topUpResponse: (winc?: string, txId?: string) => CreditedPaymentTx;
|
|
18
|
+
uploadFolderResponse: (manifestId?: string) => {
|
|
19
|
+
fileResponses: {
|
|
20
|
+
dataCaches: string[];
|
|
21
|
+
deadlineHeight: number;
|
|
22
|
+
fastFinalityIndexes: string[];
|
|
23
|
+
id: string;
|
|
24
|
+
owner: string;
|
|
25
|
+
public: string;
|
|
26
|
+
signature: string;
|
|
27
|
+
timestamp: number;
|
|
28
|
+
version: string;
|
|
29
|
+
winc: string;
|
|
30
|
+
}[];
|
|
31
|
+
manifest: {
|
|
32
|
+
index: {
|
|
33
|
+
path: string;
|
|
34
|
+
};
|
|
35
|
+
manifest: string;
|
|
36
|
+
paths: {
|
|
37
|
+
'index.html': {
|
|
38
|
+
id: string;
|
|
39
|
+
};
|
|
40
|
+
'style.css': {
|
|
41
|
+
id: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
version: string;
|
|
45
|
+
};
|
|
46
|
+
manifestResponse: {
|
|
47
|
+
dataCaches: string[];
|
|
48
|
+
deadlineHeight: number;
|
|
49
|
+
fastFinalityIndexes: string[];
|
|
50
|
+
id: string;
|
|
51
|
+
owner: string;
|
|
52
|
+
public: string;
|
|
53
|
+
signature: string;
|
|
54
|
+
timestamp: number;
|
|
55
|
+
version: string;
|
|
56
|
+
winc: string;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
uploadResponse: (id?: string) => DataItemPost;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Default MSW handlers for Turbo Upload Service
|
|
63
|
+
* Based on OpenAPI spec: https://turbo.ardrive.io/api-docs
|
|
64
|
+
*/
|
|
65
|
+
export declare const turboUploadHandlers: import("msw").HttpHandler[];
|
|
66
|
+
/**
|
|
67
|
+
* Default MSW handlers for Turbo Payment Service
|
|
68
|
+
* Based on OpenAPI spec: https://payment.ardrive.io/api-docs
|
|
69
|
+
*/
|
|
70
|
+
export declare const turboPaymentHandlers: import("msw").HttpHandler[];
|
|
71
|
+
/**
|
|
72
|
+
* Default MSW handlers for AO/ArNS Service
|
|
73
|
+
*/
|
|
74
|
+
export declare const aoHandlers: import("msw").HttpHandler[];
|
|
75
|
+
/**
|
|
76
|
+
* All Turbo API handlers combined
|
|
77
|
+
*/
|
|
78
|
+
export declare const turboHandlers: import("msw").HttpHandler[];
|
|
79
|
+
/**
|
|
80
|
+
* Helper to create custom upload response
|
|
81
|
+
* @param txId - The transaction ID to return
|
|
82
|
+
* @returns MSW handler for upload success
|
|
83
|
+
*/
|
|
84
|
+
export declare function mockUploadSuccess(txId: string): import("msw").HttpHandler;
|
|
85
|
+
/**
|
|
86
|
+
* Helper to create upload failure response
|
|
87
|
+
* @param status - HTTP status code
|
|
88
|
+
* @param message - Error message
|
|
89
|
+
* @returns MSW handler for upload failure
|
|
90
|
+
*/
|
|
91
|
+
export declare function mockUploadFailure(status?: number, message?: string): import("msw").HttpHandler;
|
|
92
|
+
/**
|
|
93
|
+
* Helper to create insufficient balance scenario
|
|
94
|
+
* @param winc - Balance amount in winc
|
|
95
|
+
* @returns MSW handler for insufficient balance
|
|
96
|
+
*/
|
|
97
|
+
export declare function mockInsufficientBalance(winc?: string): import("msw").HttpHandler;
|
|
98
|
+
/**
|
|
99
|
+
* Helper to create on-demand funding success
|
|
100
|
+
* @param winc - Amount topped up in winc
|
|
101
|
+
* @returns MSW handler for on-demand funding success
|
|
102
|
+
*/
|
|
103
|
+
export declare function mockOnDemandFundingSuccess(winc?: string): import("msw").HttpHandler;
|
|
104
|
+
export {};
|
|
105
|
+
//# sourceMappingURL=turbo-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turbo-handlers.d.ts","sourceRoot":"","sources":["../../../tests/mocks/turbo-handlers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAClF,OAAO,KAAK,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAEhF;;GAEG;AACH,KAAK,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAA;AAC/D,KAAK,eAAe,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAA;AACtE,KAAK,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAA;AACpE,KAAK,iBAAiB,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAA;AAE1E;;;GAGG;AACH,eAAO,MAAM,aAAa;wCAEmB,eAAe;sCAOrB,cAAc;qDAShD,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAoEkD,YAAY;CAWnF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,6BAgH/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,6BAsChC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,6BA+LtB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,6BAAmE,CAAA;AAE7F;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,6BAI7C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,SAAM,EAAE,OAAO,SAAkB,6BAIxE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,SAAQ,6BAInD;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,SAAkB,6BAIhE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MSW Server for mocking HTTP requests in tests
|
|
3
|
+
* Configured to intercept requests to:
|
|
4
|
+
* - Turbo Upload Service (upload.ardrive.io)
|
|
5
|
+
* - Turbo Payment Service (payment.ardrive.io)
|
|
6
|
+
* - AO Compute Unit (cu.ardrive.io)
|
|
7
|
+
* - AO Message Unit (mu.ao-testnet.xyz)
|
|
8
|
+
* - Arweave GraphQL (arweave.net/graphql)
|
|
9
|
+
*/
|
|
10
|
+
export declare const server: import("msw/lib/node/index.js").SetupServerApi;
|
|
11
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../tests/setup.ts"],"names":[],"mappings":"AAWA;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,gDAAgC,CAAA"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was auto-generated by openapi-typescript.
|
|
3
|
+
* Do not make direct changes to the file.
|
|
4
|
+
*/
|
|
5
|
+
export interface paths {
|
|
6
|
+
"/balance": {
|
|
7
|
+
parameters: {
|
|
8
|
+
query?: never;
|
|
9
|
+
header?: never;
|
|
10
|
+
path?: never;
|
|
11
|
+
cookie?: never;
|
|
12
|
+
};
|
|
13
|
+
/** Get Current Balance of winc */
|
|
14
|
+
get: {
|
|
15
|
+
parameters: {
|
|
16
|
+
query?: {
|
|
17
|
+
address?: string;
|
|
18
|
+
};
|
|
19
|
+
header?: never;
|
|
20
|
+
path?: never;
|
|
21
|
+
cookie?: never;
|
|
22
|
+
};
|
|
23
|
+
requestBody?: never;
|
|
24
|
+
responses: {
|
|
25
|
+
/** @description OK */
|
|
26
|
+
200: {
|
|
27
|
+
headers: {
|
|
28
|
+
[name: string]: unknown;
|
|
29
|
+
};
|
|
30
|
+
content: {
|
|
31
|
+
"application/json": components["schemas"]["BalanceResponse"];
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
put?: never;
|
|
37
|
+
post?: never;
|
|
38
|
+
delete?: never;
|
|
39
|
+
options?: never;
|
|
40
|
+
head?: never;
|
|
41
|
+
patch?: never;
|
|
42
|
+
trace?: never;
|
|
43
|
+
};
|
|
44
|
+
"/price/bytes/{byteCount}": {
|
|
45
|
+
parameters: {
|
|
46
|
+
query?: never;
|
|
47
|
+
header?: never;
|
|
48
|
+
path?: never;
|
|
49
|
+
cookie?: never;
|
|
50
|
+
};
|
|
51
|
+
/** Get Amount of Credits in winc for Byte Count */
|
|
52
|
+
get: {
|
|
53
|
+
parameters: {
|
|
54
|
+
query?: never;
|
|
55
|
+
header?: never;
|
|
56
|
+
path: {
|
|
57
|
+
byteCount: number;
|
|
58
|
+
};
|
|
59
|
+
cookie?: never;
|
|
60
|
+
};
|
|
61
|
+
requestBody?: never;
|
|
62
|
+
responses: {
|
|
63
|
+
/** @description OK */
|
|
64
|
+
200: {
|
|
65
|
+
headers: {
|
|
66
|
+
[name: string]: unknown;
|
|
67
|
+
};
|
|
68
|
+
content: {
|
|
69
|
+
"application/json": components["schemas"]["CreditResponse"];
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
put?: never;
|
|
75
|
+
post?: never;
|
|
76
|
+
delete?: never;
|
|
77
|
+
options?: never;
|
|
78
|
+
head?: never;
|
|
79
|
+
patch?: never;
|
|
80
|
+
trace?: never;
|
|
81
|
+
};
|
|
82
|
+
"/price/{type}/{amount}": {
|
|
83
|
+
parameters: {
|
|
84
|
+
query?: never;
|
|
85
|
+
header?: never;
|
|
86
|
+
path?: never;
|
|
87
|
+
cookie?: never;
|
|
88
|
+
};
|
|
89
|
+
/** Get winc for Payment Type and Amount */
|
|
90
|
+
get: {
|
|
91
|
+
parameters: {
|
|
92
|
+
query?: never;
|
|
93
|
+
header?: never;
|
|
94
|
+
path: {
|
|
95
|
+
type: "ario" | "solana" | "base-eth" | "arweave" | "ethereum";
|
|
96
|
+
amount: number;
|
|
97
|
+
};
|
|
98
|
+
cookie?: never;
|
|
99
|
+
};
|
|
100
|
+
requestBody?: never;
|
|
101
|
+
responses: {
|
|
102
|
+
/** @description OK */
|
|
103
|
+
200: {
|
|
104
|
+
headers: {
|
|
105
|
+
[name: string]: unknown;
|
|
106
|
+
};
|
|
107
|
+
content: {
|
|
108
|
+
"application/json": components["schemas"]["PaymentCreditResponse"];
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
put?: never;
|
|
114
|
+
post?: never;
|
|
115
|
+
delete?: never;
|
|
116
|
+
options?: never;
|
|
117
|
+
head?: never;
|
|
118
|
+
patch?: never;
|
|
119
|
+
trace?: never;
|
|
120
|
+
};
|
|
121
|
+
"/account/balance/{token}": {
|
|
122
|
+
parameters: {
|
|
123
|
+
query?: never;
|
|
124
|
+
header?: never;
|
|
125
|
+
path?: never;
|
|
126
|
+
cookie?: never;
|
|
127
|
+
};
|
|
128
|
+
get?: never;
|
|
129
|
+
put?: never;
|
|
130
|
+
/** Post a pending payment transaction */
|
|
131
|
+
post: {
|
|
132
|
+
parameters: {
|
|
133
|
+
query?: never;
|
|
134
|
+
header?: never;
|
|
135
|
+
path: {
|
|
136
|
+
token: "arweave" | "ario" | "solana" | "base-eth";
|
|
137
|
+
};
|
|
138
|
+
cookie?: never;
|
|
139
|
+
};
|
|
140
|
+
requestBody: {
|
|
141
|
+
content: {
|
|
142
|
+
"application/json": {
|
|
143
|
+
tx_id?: string;
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
responses: {
|
|
148
|
+
/** @description OK */
|
|
149
|
+
200: {
|
|
150
|
+
headers: {
|
|
151
|
+
[name: string]: unknown;
|
|
152
|
+
};
|
|
153
|
+
content: {
|
|
154
|
+
"application/json": {
|
|
155
|
+
message?: string;
|
|
156
|
+
creditedTransaction?: components["schemas"]["CreditedPaymentTx"];
|
|
157
|
+
};
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
delete?: never;
|
|
163
|
+
options?: never;
|
|
164
|
+
head?: never;
|
|
165
|
+
patch?: never;
|
|
166
|
+
trace?: never;
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
export type webhooks = Record<string, never>;
|
|
170
|
+
export interface components {
|
|
171
|
+
schemas: {
|
|
172
|
+
/**
|
|
173
|
+
* @description A big number string representing an amount of credits in winc.
|
|
174
|
+
* @example 332824926
|
|
175
|
+
*/
|
|
176
|
+
Winc: string;
|
|
177
|
+
BalanceResponse: {
|
|
178
|
+
/** @description Total winc if all approvals are revoked */
|
|
179
|
+
controlledWinc?: string;
|
|
180
|
+
/** @description Total winc user can spend */
|
|
181
|
+
winc?: string;
|
|
182
|
+
/** @description Total winc including shared credits */
|
|
183
|
+
effectiveBalance?: string;
|
|
184
|
+
};
|
|
185
|
+
CreditResponse: {
|
|
186
|
+
winc?: components["schemas"]["Winc"];
|
|
187
|
+
adjustments?: Record<string, never>[];
|
|
188
|
+
};
|
|
189
|
+
PaymentCreditResponse: {
|
|
190
|
+
winc?: components["schemas"]["Winc"];
|
|
191
|
+
adjustments?: Record<string, never>[];
|
|
192
|
+
fees?: Record<string, never>[];
|
|
193
|
+
actualPaymentAmount?: number;
|
|
194
|
+
quotedPaymentAmount?: number;
|
|
195
|
+
};
|
|
196
|
+
CreditedPaymentTx: {
|
|
197
|
+
transactionId?: string;
|
|
198
|
+
transactionQuantity?: number;
|
|
199
|
+
winstonCreditAmount?: string;
|
|
200
|
+
winc?: string;
|
|
201
|
+
status?: string;
|
|
202
|
+
id?: string;
|
|
203
|
+
quantity?: string;
|
|
204
|
+
owner?: string;
|
|
205
|
+
target?: string;
|
|
206
|
+
block?: number;
|
|
207
|
+
confirmedBlocks?: number;
|
|
208
|
+
};
|
|
209
|
+
};
|
|
210
|
+
responses: never;
|
|
211
|
+
parameters: never;
|
|
212
|
+
requestBodies: never;
|
|
213
|
+
headers: never;
|
|
214
|
+
pathItems: never;
|
|
215
|
+
}
|
|
216
|
+
export type $defs = Record<string, never>;
|
|
217
|
+
export type operations = Record<string, never>;
|
|
218
|
+
//# sourceMappingURL=payment-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-service.d.ts","sourceRoot":"","sources":["../../../tests/types/payment-service.ts"],"names":[],"mappings":"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"}
|