@sundaeswap/sprinkles 0.4.0 → 0.6.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/dist/cjs/Sprinkle/__tests__/encryption.test.js +22 -8
- package/dist/cjs/Sprinkle/__tests__/encryption.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/enhancements.test.js +37 -46
- package/dist/cjs/Sprinkle/__tests__/enhancements.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/field-utils.test.js +170 -0
- package/dist/cjs/Sprinkle/__tests__/field-utils.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js +283 -81
- package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/formatting.test.js +97 -0
- package/dist/cjs/Sprinkle/__tests__/formatting.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/show-menu.test.js +97 -7
- package/dist/cjs/Sprinkle/__tests__/show-menu.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/tx-dialog.test.js +30 -0
- package/dist/cjs/Sprinkle/__tests__/tx-dialog.test.js.map +1 -1
- package/dist/cjs/Sprinkle/encryption.js +131 -0
- package/dist/cjs/Sprinkle/encryption.js.map +1 -0
- package/dist/cjs/Sprinkle/index.js +427 -438
- package/dist/cjs/Sprinkle/index.js.map +1 -1
- package/dist/cjs/Sprinkle/menus/array-menu.js +195 -0
- package/dist/cjs/Sprinkle/menus/array-menu.js.map +1 -0
- package/dist/cjs/Sprinkle/menus/field-menu.js +161 -0
- package/dist/cjs/Sprinkle/menus/field-menu.js.map +1 -0
- package/dist/cjs/Sprinkle/menus/index.js +33 -0
- package/dist/cjs/Sprinkle/menus/index.js.map +1 -0
- package/dist/cjs/Sprinkle/menus/object-menu.js +324 -0
- package/dist/cjs/Sprinkle/menus/object-menu.js.map +1 -0
- package/dist/cjs/Sprinkle/prompts.js +459 -0
- package/dist/cjs/Sprinkle/prompts.js.map +1 -0
- package/dist/cjs/Sprinkle/schemas.js +97 -0
- package/dist/cjs/Sprinkle/schemas.js.map +1 -0
- package/dist/cjs/Sprinkle/tx-dialog.js +101 -0
- package/dist/cjs/Sprinkle/tx-dialog.js.map +1 -0
- package/dist/cjs/Sprinkle/type-guards.js +89 -0
- package/dist/cjs/Sprinkle/type-guards.js.map +1 -0
- package/dist/cjs/Sprinkle/types.js +73 -0
- package/dist/cjs/Sprinkle/types.js.map +1 -0
- package/dist/cjs/Sprinkle/utils/field-utils.js +154 -0
- package/dist/cjs/Sprinkle/utils/field-utils.js.map +1 -0
- package/dist/cjs/Sprinkle/utils/formatting.js +126 -0
- package/dist/cjs/Sprinkle/utils/formatting.js.map +1 -0
- package/dist/cjs/Sprinkle/utils/index.js +56 -0
- package/dist/cjs/Sprinkle/utils/index.js.map +1 -0
- package/dist/cjs/Sprinkle/wallet.js +98 -0
- package/dist/cjs/Sprinkle/wallet.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/encryption.test.js +22 -8
- package/dist/esm/Sprinkle/__tests__/encryption.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/enhancements.test.js +37 -46
- package/dist/esm/Sprinkle/__tests__/enhancements.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/field-utils.test.js +168 -0
- package/dist/esm/Sprinkle/__tests__/field-utils.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js +284 -82
- package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/formatting.test.js +95 -0
- package/dist/esm/Sprinkle/__tests__/formatting.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/show-menu.test.js +98 -8
- package/dist/esm/Sprinkle/__tests__/show-menu.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/tx-dialog.test.js +30 -0
- package/dist/esm/Sprinkle/__tests__/tx-dialog.test.js.map +1 -1
- package/dist/esm/Sprinkle/encryption.js +117 -0
- package/dist/esm/Sprinkle/encryption.js.map +1 -0
- package/dist/esm/Sprinkle/index.js +248 -425
- package/dist/esm/Sprinkle/index.js.map +1 -1
- package/dist/esm/Sprinkle/menus/array-menu.js +190 -0
- package/dist/esm/Sprinkle/menus/array-menu.js.map +1 -0
- package/dist/esm/Sprinkle/menus/field-menu.js +155 -0
- package/dist/esm/Sprinkle/menus/field-menu.js.map +1 -0
- package/dist/esm/Sprinkle/menus/index.js +8 -0
- package/dist/esm/Sprinkle/menus/index.js.map +1 -0
- package/dist/esm/Sprinkle/menus/object-menu.js +318 -0
- package/dist/esm/Sprinkle/menus/object-menu.js.map +1 -0
- package/dist/esm/Sprinkle/prompts.js +443 -0
- package/dist/esm/Sprinkle/prompts.js.map +1 -0
- package/dist/esm/Sprinkle/schemas.js +91 -0
- package/dist/esm/Sprinkle/schemas.js.map +1 -0
- package/dist/esm/Sprinkle/tx-dialog.js +90 -0
- package/dist/esm/Sprinkle/tx-dialog.js.map +1 -0
- package/dist/esm/Sprinkle/type-guards.js +66 -0
- package/dist/esm/Sprinkle/type-guards.js.map +1 -0
- package/dist/esm/Sprinkle/types.js +66 -0
- package/dist/esm/Sprinkle/types.js.map +1 -0
- package/dist/esm/Sprinkle/utils/field-utils.js +145 -0
- package/dist/esm/Sprinkle/utils/field-utils.js.map +1 -0
- package/dist/esm/Sprinkle/utils/formatting.js +118 -0
- package/dist/esm/Sprinkle/utils/formatting.js.map +1 -0
- package/dist/esm/Sprinkle/utils/index.js +7 -0
- package/dist/esm/Sprinkle/utils/index.js.map +1 -0
- package/dist/esm/Sprinkle/wallet.js +90 -0
- package/dist/esm/Sprinkle/wallet.js.map +1 -0
- package/dist/types/Sprinkle/encryption.d.ts +43 -0
- package/dist/types/Sprinkle/encryption.d.ts.map +1 -0
- package/dist/types/Sprinkle/index.d.ts +17 -177
- package/dist/types/Sprinkle/index.d.ts.map +1 -1
- package/dist/types/Sprinkle/menus/array-menu.d.ts +31 -0
- package/dist/types/Sprinkle/menus/array-menu.d.ts.map +1 -0
- package/dist/types/Sprinkle/menus/field-menu.d.ts +34 -0
- package/dist/types/Sprinkle/menus/field-menu.d.ts.map +1 -0
- package/dist/types/Sprinkle/menus/index.d.ts +10 -0
- package/dist/types/Sprinkle/menus/index.d.ts.map +1 -0
- package/dist/types/Sprinkle/menus/object-menu.d.ts +34 -0
- package/dist/types/Sprinkle/menus/object-menu.d.ts.map +1 -0
- package/dist/types/Sprinkle/prompts.d.ts +119 -0
- package/dist/types/Sprinkle/prompts.d.ts.map +1 -0
- package/dist/types/Sprinkle/schemas.d.ts +125 -0
- package/dist/types/Sprinkle/schemas.d.ts.map +1 -0
- package/dist/types/Sprinkle/tx-dialog.d.ts +37 -0
- package/dist/types/Sprinkle/tx-dialog.d.ts.map +1 -0
- package/dist/types/Sprinkle/type-guards.d.ts +45 -0
- package/dist/types/Sprinkle/type-guards.d.ts.map +1 -0
- package/dist/types/Sprinkle/types.d.ts +115 -0
- package/dist/types/Sprinkle/types.d.ts.map +1 -0
- package/dist/types/Sprinkle/utils/field-utils.d.ts +47 -0
- package/dist/types/Sprinkle/utils/field-utils.d.ts.map +1 -0
- package/dist/types/Sprinkle/utils/formatting.d.ts +30 -0
- package/dist/types/Sprinkle/utils/formatting.d.ts.map +1 -0
- package/dist/types/Sprinkle/wallet.d.ts +27 -0
- package/dist/types/Sprinkle/wallet.d.ts.map +1 -0
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/Sprinkle/__tests__/encryption.test.ts +23 -8
- package/src/Sprinkle/__tests__/enhancements.test.ts +34 -47
- package/src/Sprinkle/__tests__/field-utils.test.ts +191 -0
- package/src/Sprinkle/__tests__/fill-in-struct.test.ts +301 -86
- package/src/Sprinkle/__tests__/formatting.test.ts +115 -0
- package/src/Sprinkle/__tests__/show-menu.test.ts +102 -8
- package/src/Sprinkle/__tests__/tx-dialog.test.ts +30 -0
- package/src/Sprinkle/encryption.ts +130 -0
- package/src/Sprinkle/index.ts +368 -598
- package/src/Sprinkle/menus/array-menu.ts +191 -0
- package/src/Sprinkle/menus/field-menu.ts +145 -0
- package/src/Sprinkle/menus/index.ts +12 -0
- package/src/Sprinkle/menus/object-menu.ts +336 -0
- package/src/Sprinkle/prompts.ts +551 -0
- package/src/Sprinkle/schemas.ts +111 -0
- package/src/Sprinkle/tx-dialog.ts +100 -0
- package/src/Sprinkle/type-guards.ts +93 -0
- package/src/Sprinkle/types.ts +116 -0
- package/src/Sprinkle/utils/field-utils.ts +158 -0
- package/src/Sprinkle/utils/formatting.ts +127 -0
- package/src/Sprinkle/utils/index.ts +17 -0
- package/src/Sprinkle/wallet.ts +133 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.js","names":["Blockfrost","Blaze","ColdWallet","Core","HotWallet","wordlist","confirmCancellable","UserCancelledError","GetProvider","network","settings","type","projectId","queryModule","Maestro","Error","apiKey","GetWallet","provider","fromMasterkey","Bip32PrivateKeyHex","privateKey","Address","fromBech32","address","GetBlaze","providerSettings","walletSettings","wallet","from","generateWalletFromMnemonic","mnemonic","generateMnemonic","words","split","console","log","i","toString","padStart","padEnd","confirmed","message","default","entropy","mnemonicToEntropy","masterKey","Bip32PrivateKey","fromBip39Entropy","Buffer","hex"],"sources":["../../../src/Sprinkle/wallet.ts"],"sourcesContent":["/**\n * Wallet and provider setup utilities.\n * Functions for creating providers, wallets, and Blaze instances.\n */\n\nimport { Blockfrost, type Provider } from \"@blaze-cardano/query\";\nimport {\n Blaze,\n ColdWallet,\n Core,\n HotWallet,\n type Wallet,\n} from \"@blaze-cardano/sdk\";\nimport { wordlist } from \"@blaze-cardano/core\";\nimport { confirmCancellable } from \"./prompts.js\";\nimport { UserCancelledError, type TExact } from \"./types.js\";\nimport {\n NetworkSchema,\n ProviderSettingsSchema,\n WalletSettingsSchema,\n} from \"./schemas.js\";\n\n/**\n * Creates a blockchain data provider based on settings.\n */\nexport async function GetProvider(\n network: TExact<typeof NetworkSchema>,\n settings: TExact<typeof ProviderSettingsSchema>,\n): Promise<Provider> {\n switch (settings.type) {\n case \"blockfrost\":\n return new Blockfrost({\n network: `cardano-${network}`,\n projectId: settings.projectId,\n });\n case \"maestro\":\n // Dynamic import - Maestro may or may not be exported depending on @blaze-cardano/query version\n const queryModule = (await import(\"@blaze-cardano/query\")) as any;\n if (!queryModule.Maestro) {\n throw new Error(\n \"Maestro is not available in the installed version of @blaze-cardano/query. Please install a version that includes Maestro support.\",\n );\n }\n return new queryModule.Maestro({\n network: network as \"mainnet\" | \"preview\" | \"preprod\",\n apiKey: settings.apiKey,\n });\n default:\n throw new Error(\"Invalid provider type\");\n }\n}\n\n/**\n * Creates a wallet instance based on settings.\n */\nexport async function GetWallet(\n settings: TExact<typeof WalletSettingsSchema>,\n provider: Provider,\n): Promise<Wallet> {\n switch (settings.type) {\n case \"hot\":\n return HotWallet.fromMasterkey(\n Core.Bip32PrivateKeyHex(settings.privateKey),\n provider,\n provider.network,\n );\n case \"cold\":\n return new ColdWallet(\n Core.Address.fromBech32(settings.address),\n provider.network,\n provider,\n );\n default:\n throw new Error(\"Invalid wallet type\");\n }\n}\n\n/**\n * Creates a Blaze instance with provider and wallet.\n */\nexport async function GetBlaze(\n network: TExact<typeof NetworkSchema>,\n providerSettings: TExact<typeof ProviderSettingsSchema>,\n walletSettings: TExact<typeof WalletSettingsSchema>,\n): Promise<Blaze<Provider, Wallet>> {\n const provider = await GetProvider(network, providerSettings);\n const wallet = await GetWallet(walletSettings, provider);\n return Blaze.from(provider, wallet);\n}\n\n/**\n * Generates a new wallet from a BIP39 mnemonic phrase.\n * Displays the 24-word recovery phrase and requires user confirmation.\n * @returns The Bip32PrivateKey hex string for storage\n */\nexport async function generateWalletFromMnemonic(): Promise<string> {\n const mnemonic = Core.generateMnemonic(wordlist, 256); // 24 words\n const words = mnemonic.split(\" \");\n\n console.log(\"\\n=== NEW WALLET GENERATED ===\\n\");\n console.log(\"IMPORTANT: Save these 24 words in a secure location.\");\n console.log(\"This is the ONLY way to recover your wallet.\\n\");\n\n // Display in 4 columns\n for (let i = 0; i < 6; i++) {\n console.log(\n `${(i + 1).toString().padStart(2)}. ${words[i]!.padEnd(12)} ` +\n `${(i + 7).toString().padStart(2)}. ${words[i + 6]!.padEnd(12)} ` +\n `${(i + 13).toString().padStart(2)}. ${words[i + 12]!.padEnd(12)} ` +\n `${(i + 19).toString().padStart(2)}. ${words[i + 18]}`,\n );\n }\n console.log(\"\");\n\n const confirmed = await confirmCancellable({\n message: \"Have you saved your recovery phrase?\",\n default: false,\n });\n\n if (confirmed === null) {\n throw new UserCancelledError(\"Wallet generation cancelled\");\n }\n if (!confirmed) {\n throw new Error(\"Wallet generation cancelled - recovery phrase not saved\");\n }\n\n const entropy = Core.mnemonicToEntropy(mnemonic, wordlist);\n const masterKey = Core.Bip32PrivateKey.fromBip39Entropy(\n Buffer.from(entropy),\n \"\",\n );\n return masterKey.hex();\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encryption utilities for sensitive field handling.
|
|
3
|
+
* Functions for encrypting, decrypting, and masking sensitive data in settings.
|
|
4
|
+
*/
|
|
5
|
+
import type { TSchema } from "@sinclair/typebox";
|
|
6
|
+
import type { IEncryptionOptions } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Recursively collect paths to all sensitive fields in a schema.
|
|
9
|
+
*/
|
|
10
|
+
export declare function collectSensitivePaths(type: TSchema, prefix?: string): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Get a nested value from an object by dot-separated path.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getNestedValue(obj: any, path: string): unknown;
|
|
15
|
+
/**
|
|
16
|
+
* Set a nested value in an object by dot-separated path.
|
|
17
|
+
*/
|
|
18
|
+
export declare function setNestedValue(obj: any, path: string, value: unknown): void;
|
|
19
|
+
/**
|
|
20
|
+
* JSON replacer that converts BigInt to string with 'n' suffix.
|
|
21
|
+
*/
|
|
22
|
+
export declare function bigIntReplacer(_key: string, value: unknown): unknown;
|
|
23
|
+
/**
|
|
24
|
+
* JSON reviver that converts strings with 'n' suffix back to BigInt.
|
|
25
|
+
*/
|
|
26
|
+
export declare function bigIntReviver(_key: string, value: unknown): unknown;
|
|
27
|
+
/**
|
|
28
|
+
* Deep clone an object, preserving BigInt values.
|
|
29
|
+
*/
|
|
30
|
+
export declare function cloneWithBigInt<T>(obj: T): T;
|
|
31
|
+
/**
|
|
32
|
+
* Encrypt all sensitive fields in a settings object.
|
|
33
|
+
*/
|
|
34
|
+
export declare function encryptSensitiveFields<T>(settings: T, type: TSchema, encryption: IEncryptionOptions): T;
|
|
35
|
+
/**
|
|
36
|
+
* Decrypt all sensitive fields in a settings object.
|
|
37
|
+
*/
|
|
38
|
+
export declare function decryptSensitiveFields<T>(settings: T, type: TSchema, encryption: IEncryptionOptions): Promise<T>;
|
|
39
|
+
/**
|
|
40
|
+
* Mask all sensitive fields in a settings object for display.
|
|
41
|
+
*/
|
|
42
|
+
export declare function maskSensitiveFields<T>(settings: T, type: TSchema): T;
|
|
43
|
+
//# sourceMappingURL=encryption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../../../src/Sprinkle/encryption.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,OAAO,EACb,MAAM,GAAE,MAAW,GAClB,MAAM,EAAE,CAkBV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAO3E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAEpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAKnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAE5C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,kBAAkB,GAC7B,CAAC,CAUH;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAUpE"}
|
|
@@ -1,147 +1,16 @@
|
|
|
1
1
|
import { type Provider } from "@blaze-cardano/query";
|
|
2
2
|
import { Blaze, Core, type Wallet } from "@blaze-cardano/sdk";
|
|
3
|
-
import { type
|
|
3
|
+
import { type TSchema } from "@sinclair/typebox";
|
|
4
4
|
export * from "@sinclair/typebox";
|
|
5
|
-
export type TExact
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
export
|
|
14
|
-
name: string;
|
|
15
|
-
description?: string;
|
|
16
|
-
createdAt: string;
|
|
17
|
-
updatedAt: string;
|
|
18
|
-
}
|
|
19
|
-
export interface ICurrentProfile extends IProfileMeta {
|
|
20
|
-
id: string;
|
|
21
|
-
}
|
|
22
|
-
export interface IProfileEntry {
|
|
23
|
-
id: string;
|
|
24
|
-
meta: IProfileMeta;
|
|
25
|
-
}
|
|
26
|
-
export interface TxDialogResult {
|
|
27
|
-
action: "submitted" | "signed" | "cancelled";
|
|
28
|
-
txId?: string;
|
|
29
|
-
tx: Core.Transaction;
|
|
30
|
-
}
|
|
31
|
-
export interface TxDialogOptions {
|
|
32
|
-
beforeSign?: () => Promise<void>;
|
|
33
|
-
}
|
|
34
|
-
export declare const NetworkSchema: TUnion<[TLiteral<"mainnet">, TLiteral<"preview">, TLiteral<"preprod">]>;
|
|
35
|
-
export declare const MultisigScriptModule: import("@sinclair/typebox").TModule<{
|
|
36
|
-
MultisigScript: TUnion<[TObject<{
|
|
37
|
-
Signature: TObject<{
|
|
38
|
-
key_hash: TString;
|
|
39
|
-
}>;
|
|
40
|
-
}>, TObject<{
|
|
41
|
-
AllOf: TObject<{
|
|
42
|
-
scripts: TArray<TRef<"MultisigScript">>;
|
|
43
|
-
}>;
|
|
44
|
-
}>, TObject<{
|
|
45
|
-
AnyOf: TObject<{
|
|
46
|
-
scripts: TArray<TRef<"MultisigScript">>;
|
|
47
|
-
}>;
|
|
48
|
-
}>, TObject<{
|
|
49
|
-
AtLeast: TObject<{
|
|
50
|
-
required: TBigInt;
|
|
51
|
-
scripts: TArray<TRef<"MultisigScript">>;
|
|
52
|
-
}>;
|
|
53
|
-
}>, TObject<{
|
|
54
|
-
Before: TObject<{
|
|
55
|
-
time: TBigInt;
|
|
56
|
-
}>;
|
|
57
|
-
}>, TObject<{
|
|
58
|
-
After: TObject<{
|
|
59
|
-
time: TBigInt;
|
|
60
|
-
}>;
|
|
61
|
-
}>, TObject<{
|
|
62
|
-
Script: TObject<{
|
|
63
|
-
script_hash: TString;
|
|
64
|
-
}>;
|
|
65
|
-
}>]>;
|
|
66
|
-
}, {
|
|
67
|
-
MultisigScript: TUnion<[TObject<{
|
|
68
|
-
Signature: TObject<{
|
|
69
|
-
key_hash: TString;
|
|
70
|
-
}>;
|
|
71
|
-
}>, TObject<{
|
|
72
|
-
AllOf: TObject<{
|
|
73
|
-
scripts: TArray<TRef<"MultisigScript">>;
|
|
74
|
-
}>;
|
|
75
|
-
}>, TObject<{
|
|
76
|
-
AnyOf: TObject<{
|
|
77
|
-
scripts: TArray<TRef<"MultisigScript">>;
|
|
78
|
-
}>;
|
|
79
|
-
}>, TObject<{
|
|
80
|
-
AtLeast: TObject<{
|
|
81
|
-
required: TBigInt;
|
|
82
|
-
scripts: TArray<TRef<"MultisigScript">>;
|
|
83
|
-
}>;
|
|
84
|
-
}>, TObject<{
|
|
85
|
-
Before: TObject<{
|
|
86
|
-
time: TBigInt;
|
|
87
|
-
}>;
|
|
88
|
-
}>, TObject<{
|
|
89
|
-
After: TObject<{
|
|
90
|
-
time: TBigInt;
|
|
91
|
-
}>;
|
|
92
|
-
}>, TObject<{
|
|
93
|
-
Script: TObject<{
|
|
94
|
-
script_hash: TString;
|
|
95
|
-
}>;
|
|
96
|
-
}>]>;
|
|
97
|
-
}>;
|
|
98
|
-
export declare const MultisigScript: TImport<{
|
|
99
|
-
MultisigScript: TUnion<[TObject<{
|
|
100
|
-
Signature: TObject<{
|
|
101
|
-
key_hash: TString;
|
|
102
|
-
}>;
|
|
103
|
-
}>, TObject<{
|
|
104
|
-
AllOf: TObject<{
|
|
105
|
-
scripts: TArray<TRef<"MultisigScript">>;
|
|
106
|
-
}>;
|
|
107
|
-
}>, TObject<{
|
|
108
|
-
AnyOf: TObject<{
|
|
109
|
-
scripts: TArray<TRef<"MultisigScript">>;
|
|
110
|
-
}>;
|
|
111
|
-
}>, TObject<{
|
|
112
|
-
AtLeast: TObject<{
|
|
113
|
-
required: TBigInt;
|
|
114
|
-
scripts: TArray<TRef<"MultisigScript">>;
|
|
115
|
-
}>;
|
|
116
|
-
}>, TObject<{
|
|
117
|
-
Before: TObject<{
|
|
118
|
-
time: TBigInt;
|
|
119
|
-
}>;
|
|
120
|
-
}>, TObject<{
|
|
121
|
-
After: TObject<{
|
|
122
|
-
time: TBigInt;
|
|
123
|
-
}>;
|
|
124
|
-
}>, TObject<{
|
|
125
|
-
Script: TObject<{
|
|
126
|
-
script_hash: TString;
|
|
127
|
-
}>;
|
|
128
|
-
}>]>;
|
|
129
|
-
}, "MultisigScript">;
|
|
130
|
-
export type TMultisigScript = TExact<typeof MultisigScript>;
|
|
131
|
-
export declare const ProviderSettingsSchema: TUnion<[TObject<{
|
|
132
|
-
type: TLiteral<"blockfrost">;
|
|
133
|
-
projectId: TString;
|
|
134
|
-
}>, TObject<{
|
|
135
|
-
type: TLiteral<"maestro">;
|
|
136
|
-
apiKey: TString;
|
|
137
|
-
}>]>;
|
|
138
|
-
export declare const WalletSettingsSchema: TUnion<[TObject<{
|
|
139
|
-
type: TLiteral<"hot">;
|
|
140
|
-
privateKey: TString;
|
|
141
|
-
}>, TObject<{
|
|
142
|
-
type: TLiteral<"cold">;
|
|
143
|
-
address: TString;
|
|
144
|
-
}>]>;
|
|
5
|
+
export type { TExact } from "./types.js";
|
|
6
|
+
export type { IEncryptionOptions, ISprinkleOptions, IProfileMeta, ICurrentProfile, IProfileEntry, TxDialogResult, TxDialogOptions, FieldState, RequiredFieldCount, FieldMenuResult, ObjectMenuResult, ArrayMenuResult, } from "./types.js";
|
|
7
|
+
export { UserCancelledError } from "./types.js";
|
|
8
|
+
import type { TExact, ISprinkleOptions, IProfileMeta, ICurrentProfile, IProfileEntry, TxDialogResult, TxDialogOptions } from "./types.js";
|
|
9
|
+
export { NetworkSchema, MultisigScriptModule, MultisigScript, ProviderSettingsSchema, WalletSettingsSchema, } from "./schemas.js";
|
|
10
|
+
export type { TMultisigScript } from "./schemas.js";
|
|
11
|
+
export { isOptional, isImport, isArray, isBigInt, isLiteral, isObject, isRef, isString, isThis, isTuple, isUnion, isSensitive, isNull, isNullable, unwrapNullable, hasDefault, getDefault, } from "./type-guards.js";
|
|
12
|
+
import { NetworkSchema, ProviderSettingsSchema, WalletSettingsSchema } from "./schemas.js";
|
|
13
|
+
export { GetProvider, GetWallet, GetBlaze } from "./wallet.js";
|
|
145
14
|
export interface IMenuAction<S extends TSchema> {
|
|
146
15
|
title: string;
|
|
147
16
|
action: (sprinkle: Sprinkle<S>) => Promise<Sprinkle<S> | void>;
|
|
@@ -199,52 +68,23 @@ export declare class Sprinkle<S extends TSchema> {
|
|
|
199
68
|
name: string;
|
|
200
69
|
value: T;
|
|
201
70
|
}[];
|
|
202
|
-
}): Promise<T>;
|
|
71
|
+
}): Promise<T | null>;
|
|
203
72
|
static SettingsPath(storagePath: string): string;
|
|
204
73
|
LoadSettings(type: S, storagePath: string): Promise<void>;
|
|
205
74
|
static bigIntReviver(key: string, value: unknown): unknown;
|
|
206
|
-
private static bigIntReplacer;
|
|
207
|
-
private static collectSensitivePaths;
|
|
208
|
-
private static getNestedValue;
|
|
209
|
-
private static setNestedValue;
|
|
210
75
|
private encryptSettings;
|
|
211
76
|
private decryptSettings;
|
|
212
77
|
saveSettings(): void;
|
|
213
78
|
getDisplaySettings(): TExact<S>;
|
|
79
|
+
TxDialog<P extends Provider, W extends Wallet>(blaze: Blaze<P, W>, tx: Core.Transaction, opts?: TxDialogOptions): Promise<TxDialogResult>;
|
|
214
80
|
/**
|
|
215
|
-
*
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
*
|
|
220
|
-
*/
|
|
221
|
-
private countSignatures;
|
|
222
|
-
/**
|
|
223
|
-
* Check if a specific public key has already signed the transaction
|
|
224
|
-
* Compares by vkey (public key bytes)
|
|
225
|
-
*/
|
|
226
|
-
private hasVkeySigned;
|
|
227
|
-
/**
|
|
228
|
-
* Get the list of required signer key hashes from the transaction body
|
|
229
|
-
*/
|
|
230
|
-
private getRequiredSigners;
|
|
231
|
-
/**
|
|
232
|
-
* Compute the transaction body hash for display
|
|
233
|
-
*/
|
|
234
|
-
private getTxBodyHash;
|
|
235
|
-
/**
|
|
236
|
-
* Format a hash for display: first 8 chars + ... + last 8 chars
|
|
237
|
-
*/
|
|
238
|
-
private formatHash;
|
|
239
|
-
/**
|
|
240
|
-
* Merge signatures from source transaction into target transaction.
|
|
241
|
-
* Prevents duplicate signatures by comparing vkey (public key).
|
|
242
|
-
* Returns the count of newly added signatures.
|
|
81
|
+
* Edit an existing struct value using a menu-based interface.
|
|
82
|
+
* This is now unified with FillInStruct - both use the same menu system.
|
|
83
|
+
* @param type - The TypeBox schema
|
|
84
|
+
* @param current - The current value to edit
|
|
85
|
+
* @returns The edited value
|
|
243
86
|
*/
|
|
244
|
-
private mergeSignatures;
|
|
245
|
-
TxDialog<P extends Provider, W extends Wallet>(blaze: Blaze<P, W>, tx: Core.Transaction, opts?: TxDialogOptions): Promise<TxDialogResult>;
|
|
246
87
|
EditStruct<U extends TSchema>(type: U, current: TExact<U>): Promise<TExact<U>>;
|
|
247
|
-
_editStruct<U extends TSchema>(type: U, path: string[], current?: TExact<U>): Promise<TExact<U>>;
|
|
248
88
|
FillInStruct<U extends TSchema>(type: U, def?: TExact<U>): Promise<TExact<U>>;
|
|
249
89
|
_fillInStruct<U extends TSchema>(type: U, path: string[], defs: Record<string, TSchema>, def?: TExact<U>): Promise<TExact<U>>;
|
|
250
90
|
resolveType<T extends TSchema>(type: T, path: string[], defs: Record<string, TSchema>): T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Sprinkle/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Sprinkle/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Array menu module for menu-based struct editing.
|
|
3
|
+
* Shows array items and allows adding/removing/editing.
|
|
4
|
+
*/
|
|
5
|
+
import type { TArray, TSchema } from "@sinclair/typebox";
|
|
6
|
+
import type { ArrayMenuResult } from "../types.js";
|
|
7
|
+
import type { FillFunction } from "./object-menu.js";
|
|
8
|
+
/**
|
|
9
|
+
* Options for the array menu prompt.
|
|
10
|
+
*/
|
|
11
|
+
export interface ArrayMenuOptions {
|
|
12
|
+
/** The array schema */
|
|
13
|
+
type: TArray;
|
|
14
|
+
/** Current path for display */
|
|
15
|
+
path: string[];
|
|
16
|
+
/** Type definitions for resolving refs */
|
|
17
|
+
defs: Record<string, TSchema>;
|
|
18
|
+
/** Existing array values */
|
|
19
|
+
defaults?: unknown[];
|
|
20
|
+
/** Function to fill individual items */
|
|
21
|
+
fillField: FillFunction;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Show a menu-based editor for an array.
|
|
25
|
+
* Allows adding, removing, and editing items.
|
|
26
|
+
*
|
|
27
|
+
* @param options - Array menu options
|
|
28
|
+
* @returns The edited array or back result
|
|
29
|
+
*/
|
|
30
|
+
export declare function promptArray<T>(options: ArrayMenuOptions): Promise<ArrayMenuResult<T>>;
|
|
31
|
+
//# sourceMappingURL=array-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-menu.d.ts","sourceRoot":"","sources":["../../../../src/Sprinkle/menus/array-menu.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,wCAAwC;IACxC,SAAS,EAAE,YAAY,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAuJ7B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field menu module for menu-based struct editing.
|
|
3
|
+
* Handles the sub-menu shown when selecting a field with an existing value.
|
|
4
|
+
*/
|
|
5
|
+
import type { TSchema } from "@sinclair/typebox";
|
|
6
|
+
import type { FieldMenuResult, FieldState } from "../types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Options for the field menu prompt.
|
|
9
|
+
*/
|
|
10
|
+
export interface FieldMenuOptions<T> {
|
|
11
|
+
/** The field name */
|
|
12
|
+
fieldName: string;
|
|
13
|
+
/** The field's schema */
|
|
14
|
+
fieldType: TSchema;
|
|
15
|
+
/** Current state of the field */
|
|
16
|
+
state: FieldState<T>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Show a sub-menu for a field that has a value.
|
|
20
|
+
* Provides options to edit, view, clear, set null, or reset to default.
|
|
21
|
+
*
|
|
22
|
+
* @param options - Field menu options
|
|
23
|
+
* @returns The user's chosen action
|
|
24
|
+
*/
|
|
25
|
+
export declare function promptFieldMenu<T>(options: FieldMenuOptions<T>): Promise<FieldMenuResult<T>>;
|
|
26
|
+
/**
|
|
27
|
+
* Display the full value of a field.
|
|
28
|
+
* Shows formatted JSON and waits for user to press Enter.
|
|
29
|
+
*
|
|
30
|
+
* @param fieldName - The field name
|
|
31
|
+
* @param value - The value to display
|
|
32
|
+
*/
|
|
33
|
+
export declare function displayFullValue(fieldName: string, value: unknown): Promise<void>;
|
|
34
|
+
//# sourceMappingURL=field-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-menu.d.ts","sourceRoot":"","sources":["../../../../src/Sprinkle/menus/field-menu.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK/D;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CA+E7B;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC,CAmBf"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Menu modules for menu-based struct editing.
|
|
3
|
+
*/
|
|
4
|
+
export { promptFieldMenu, displayFullValue } from "./field-menu.js";
|
|
5
|
+
export type { FieldMenuOptions } from "./field-menu.js";
|
|
6
|
+
export { promptObject } from "./object-menu.js";
|
|
7
|
+
export type { ObjectMenuOptions, FillFunction } from "./object-menu.js";
|
|
8
|
+
export { promptArray } from "./array-menu.js";
|
|
9
|
+
export type { ArrayMenuOptions } from "./array-menu.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Sprinkle/menus/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Object menu module for menu-based struct editing.
|
|
3
|
+
* Shows all fields of an object and allows non-linear editing.
|
|
4
|
+
*/
|
|
5
|
+
import type { TObject, TSchema } from "@sinclair/typebox";
|
|
6
|
+
import type { ObjectMenuResult } from "../types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Type for the fill function that handles individual field types.
|
|
9
|
+
*/
|
|
10
|
+
export type FillFunction = <U extends TSchema>(type: U, path: string[], defs: Record<string, TSchema>, def?: unknown) => Promise<unknown>;
|
|
11
|
+
/**
|
|
12
|
+
* Options for the object menu prompt.
|
|
13
|
+
*/
|
|
14
|
+
export interface ObjectMenuOptions {
|
|
15
|
+
/** The object schema */
|
|
16
|
+
type: TObject;
|
|
17
|
+
/** Current path for display */
|
|
18
|
+
path: string[];
|
|
19
|
+
/** Type definitions for resolving refs */
|
|
20
|
+
defs: Record<string, TSchema>;
|
|
21
|
+
/** Default/existing values */
|
|
22
|
+
defaults?: Record<string, unknown>;
|
|
23
|
+
/** Function to fill individual fields */
|
|
24
|
+
fillField: FillFunction;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Show a menu-based editor for an object.
|
|
28
|
+
* Allows non-linear editing of fields with Submit/Cancel.
|
|
29
|
+
*
|
|
30
|
+
* @param options - Object menu options
|
|
31
|
+
* @returns The edited object or cancel result
|
|
32
|
+
*/
|
|
33
|
+
export declare function promptObject<T extends Record<string, unknown>>(options: ObjectMenuOptions): Promise<ObjectMenuResult<T>>;
|
|
34
|
+
//# sourceMappingURL=object-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-menu.d.ts","sourceRoot":"","sources":["../../../../src/Sprinkle/menus/object-menu.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,KAAK,EAAc,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAahE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,OAAO,EAC3C,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,CAAC,EAAE,OAAO,KACV,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,+BAA+B;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,yCAAyC;IACzC,SAAS,EAAE,YAAY,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CA2O9B"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cancellable prompt wrappers with escape key support.
|
|
3
|
+
* Uses @inquirer/core's createPrompt and useKeypress for proper escape handling.
|
|
4
|
+
*/
|
|
5
|
+
import { Separator, type Theme } from "@inquirer/core";
|
|
6
|
+
import type { PartialDeep } from "@inquirer/type";
|
|
7
|
+
declare const selectTheme: {
|
|
8
|
+
icon: {
|
|
9
|
+
cursor: string;
|
|
10
|
+
};
|
|
11
|
+
style: {
|
|
12
|
+
disabled: (text: string) => string;
|
|
13
|
+
description: (text: string) => string;
|
|
14
|
+
helpTip: string;
|
|
15
|
+
};
|
|
16
|
+
helpMode: "always";
|
|
17
|
+
};
|
|
18
|
+
interface SelectChoice<T> {
|
|
19
|
+
name?: string;
|
|
20
|
+
value: T;
|
|
21
|
+
description?: string;
|
|
22
|
+
short?: string;
|
|
23
|
+
disabled?: boolean | string;
|
|
24
|
+
}
|
|
25
|
+
interface SelectConfig<T> {
|
|
26
|
+
message: string;
|
|
27
|
+
choices: ReadonlyArray<SelectChoice<T> | Separator | string>;
|
|
28
|
+
default?: T;
|
|
29
|
+
pageSize?: number;
|
|
30
|
+
loop?: boolean;
|
|
31
|
+
theme?: PartialDeep<Theme<typeof selectTheme>>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Select prompt with escape key support.
|
|
35
|
+
* Returns null if user presses Escape.
|
|
36
|
+
*/
|
|
37
|
+
export declare const selectCancellable: import("@inquirer/type").Prompt<unknown, SelectConfig<unknown>>;
|
|
38
|
+
/**
|
|
39
|
+
* Clears N lines above the cursor.
|
|
40
|
+
* Used after prompts to clean up menu output.
|
|
41
|
+
*/
|
|
42
|
+
export declare function clearLines(count: number): void;
|
|
43
|
+
/**
|
|
44
|
+
* Select prompt that clears its output after completion.
|
|
45
|
+
* Returns the selected value or null if cancelled.
|
|
46
|
+
*/
|
|
47
|
+
export declare function selectWithClear<T>(config: SelectConfig<T>): Promise<T | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Input prompt that clears its output after completion.
|
|
50
|
+
* Returns the input value or null if cancelled.
|
|
51
|
+
*/
|
|
52
|
+
export declare function inputWithClear(config: InputConfig): Promise<string | null>;
|
|
53
|
+
/**
|
|
54
|
+
* Password prompt that clears its output after completion.
|
|
55
|
+
* Returns the password or null if cancelled.
|
|
56
|
+
*/
|
|
57
|
+
export declare function passwordWithClear(config: PasswordConfig): Promise<string | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Confirm prompt that clears its output after completion.
|
|
60
|
+
* Returns true/false or null if cancelled.
|
|
61
|
+
*/
|
|
62
|
+
export declare function confirmWithClear(config: ConfirmConfig): Promise<boolean | null>;
|
|
63
|
+
interface InputConfig {
|
|
64
|
+
message: string;
|
|
65
|
+
default?: string;
|
|
66
|
+
transformer?: (value: string, options: {
|
|
67
|
+
isFinal: boolean;
|
|
68
|
+
}) => string;
|
|
69
|
+
validate?: (value: string) => boolean | string | Promise<boolean | string>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Input prompt with escape key support.
|
|
73
|
+
* Returns null if user presses Escape.
|
|
74
|
+
*/
|
|
75
|
+
export declare const inputCancellable: import("@inquirer/type").Prompt<string | null, InputConfig>;
|
|
76
|
+
interface PasswordConfig {
|
|
77
|
+
message: string;
|
|
78
|
+
mask?: string;
|
|
79
|
+
validate?: (value: string) => boolean | string | Promise<boolean | string>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Password prompt with escape key support.
|
|
83
|
+
* Returns null if user presses Escape.
|
|
84
|
+
*/
|
|
85
|
+
export declare const passwordCancellable: import("@inquirer/type").Prompt<string | null, PasswordConfig>;
|
|
86
|
+
interface ConfirmConfig {
|
|
87
|
+
message: string;
|
|
88
|
+
default?: boolean;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Confirm prompt with escape key support.
|
|
92
|
+
* Returns null if user presses Escape.
|
|
93
|
+
*/
|
|
94
|
+
export declare const confirmCancellable: import("@inquirer/type").Prompt<boolean | null, ConfirmConfig>;
|
|
95
|
+
/**
|
|
96
|
+
* Type-safe wrapper for selectCancellable.
|
|
97
|
+
* Returns the selected value with proper typing, or null if cancelled.
|
|
98
|
+
*/
|
|
99
|
+
export declare function select<T>(config: SelectConfig<T>): Promise<T | null>;
|
|
100
|
+
interface SearchConfig<T> {
|
|
101
|
+
message: string;
|
|
102
|
+
source: (term: string | undefined) => Promise<{
|
|
103
|
+
name: string;
|
|
104
|
+
value: T;
|
|
105
|
+
}[]> | {
|
|
106
|
+
name: string;
|
|
107
|
+
value: T;
|
|
108
|
+
}[];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Search prompt with escape key support.
|
|
112
|
+
* Returns null if user presses Escape.
|
|
113
|
+
*
|
|
114
|
+
* Note: This wraps @inquirer/search which has built-in escape handling,
|
|
115
|
+
* but we provide a consistent API with other cancellable prompts.
|
|
116
|
+
*/
|
|
117
|
+
export declare const searchCancellable: import("@inquirer/type").Prompt<unknown, SearchConfig<unknown>>;
|
|
118
|
+
export {};
|
|
119
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/Sprinkle/prompts.ts"],"names":[],"mappings":"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"}
|