@sparkvault/sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +720 -0
  2. package/dist/auto-init.d.ts +51 -0
  3. package/dist/config.d.ts +25 -0
  4. package/dist/errors.d.ts +30 -0
  5. package/dist/http.d.ts +48 -0
  6. package/dist/identity/api.d.ts +101 -0
  7. package/dist/identity/container.d.ts +49 -0
  8. package/dist/identity/handlers/index.d.ts +9 -0
  9. package/dist/identity/handlers/passkey-handler.d.ts +52 -0
  10. package/dist/identity/handlers/sparklink-handler.d.ts +43 -0
  11. package/dist/identity/handlers/totp-handler.d.ts +52 -0
  12. package/dist/identity/index.d.ts +69 -0
  13. package/dist/identity/inline-container.d.ts +60 -0
  14. package/dist/identity/methods.d.ts +23 -0
  15. package/dist/identity/modal.d.ts +74 -0
  16. package/dist/identity/renderer.d.ts +97 -0
  17. package/dist/identity/state.d.ts +95 -0
  18. package/dist/identity/styles.d.ts +22 -0
  19. package/dist/identity/types.d.ts +183 -0
  20. package/dist/identity/utils/cooldown-timer.d.ts +73 -0
  21. package/dist/identity/utils/index.d.ts +5 -0
  22. package/dist/identity/utils.d.ts +27 -0
  23. package/dist/identity/views/base.d.ts +62 -0
  24. package/dist/identity/views/error.d.ts +25 -0
  25. package/dist/identity/views/icons.d.ts +34 -0
  26. package/dist/identity/views/identity-input.d.ts +48 -0
  27. package/dist/identity/views/index.d.ts +14 -0
  28. package/dist/identity/views/loading.d.ts +15 -0
  29. package/dist/identity/views/method-select.d.ts +29 -0
  30. package/dist/identity/views/passkey-prompt.d.ts +22 -0
  31. package/dist/identity/views/passkey.d.ts +38 -0
  32. package/dist/identity/views/sparklink-waiting.d.ts +33 -0
  33. package/dist/identity/views/totp-verify.d.ts +58 -0
  34. package/dist/index.d.ts +658 -0
  35. package/dist/logger.d.ts +45 -0
  36. package/dist/rng/index.d.ts +54 -0
  37. package/dist/rng/types.d.ts +26 -0
  38. package/dist/sparks/index.d.ts +37 -0
  39. package/dist/sparks/types.d.ts +56 -0
  40. package/dist/sparkvault.cjs.js +6152 -0
  41. package/dist/sparkvault.cjs.js.map +1 -0
  42. package/dist/sparkvault.esm.js +6137 -0
  43. package/dist/sparkvault.esm.js.map +1 -0
  44. package/dist/sparkvault.js +2 -0
  45. package/dist/sparkvault.js.map +1 -0
  46. package/dist/utils/base64url.d.ts +49 -0
  47. package/dist/utils/retry.d.ts +32 -0
  48. package/dist/vaults/index.d.ts +83 -0
  49. package/dist/vaults/types.d.ts +120 -0
  50. package/package.json +64 -0
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Vaults Module
3
+ *
4
+ * Create and manage encrypted vaults and ingots.
5
+ * Uses Triple Zero-Trust encryption (SVMK + AMK + VMK).
6
+ */
7
+ import type { ResolvedConfig } from '../config';
8
+ import { HttpClient } from '../http';
9
+ import type { CreateVaultOptions, Vault, UnsealedVault, VaultSummary, Ingot, UploadIngotOptions } from './types';
10
+ export declare class VaultsModule {
11
+ private readonly http;
12
+ constructor(_config: ResolvedConfig, http: HttpClient);
13
+ /**
14
+ * Create a new encrypted vault.
15
+ * IMPORTANT: Store the VMK securely - it cannot be recovered!
16
+ *
17
+ * @example
18
+ * const vault = await sv.vaults.create({ name: 'My Vault' });
19
+ * console.log('Save this VMK:', vault.vmk);
20
+ */
21
+ create(options: CreateVaultOptions): Promise<Vault>;
22
+ /**
23
+ * Unseal a vault to access its contents.
24
+ * Returns a short-lived Vault Access Token (VAT).
25
+ *
26
+ * @example
27
+ * const unsealed = await sv.vaults.unseal('vlt_abc', vmk);
28
+ * console.log('Ingots:', unsealed.ingotCount);
29
+ */
30
+ unseal(vaultId: string, vmk: string): Promise<UnsealedVault>;
31
+ /**
32
+ * List all vaults for the account.
33
+ *
34
+ * @example
35
+ * const vaults = await sv.vaults.list();
36
+ * vaults.forEach(v => console.log(v.name));
37
+ */
38
+ list(): Promise<VaultSummary[]>;
39
+ /**
40
+ * Delete a vault and all its ingots.
41
+ * This action is irreversible!
42
+ *
43
+ * @example
44
+ * await sv.vaults.delete('vlt_abc', vmk);
45
+ */
46
+ delete(vaultId: string, vmk: string): Promise<void>;
47
+ /**
48
+ * Upload a file as an ingot to an unsealed vault.
49
+ *
50
+ * @example
51
+ * const ingot = await sv.vaults.uploadIngot(unsealed, {
52
+ * file: myFile,
53
+ * name: 'document.pdf'
54
+ * });
55
+ */
56
+ uploadIngot(vault: UnsealedVault, options: UploadIngotOptions): Promise<Ingot>;
57
+ /**
58
+ * Download an ingot from an unsealed vault.
59
+ *
60
+ * @example
61
+ * const blob = await sv.vaults.downloadIngot(unsealed, 'ing_abc');
62
+ * const url = URL.createObjectURL(blob);
63
+ */
64
+ downloadIngot(vault: UnsealedVault, ingotId: string): Promise<Blob>;
65
+ /**
66
+ * List all ingots in an unsealed vault.
67
+ *
68
+ * @example
69
+ * const ingots = await sv.vaults.listIngots(unsealed);
70
+ * ingots.forEach(i => console.log(i.name, i.size));
71
+ */
72
+ listIngots(vault: UnsealedVault): Promise<Ingot[]>;
73
+ /**
74
+ * Delete an ingot from an unsealed vault.
75
+ *
76
+ * @example
77
+ * await sv.vaults.deleteIngot(unsealed, 'ing_abc');
78
+ */
79
+ deleteIngot(vault: UnsealedVault, ingotId: string): Promise<void>;
80
+ private validateCreateOptions;
81
+ private validateUploadOptions;
82
+ }
83
+ export type { CreateVaultOptions, Vault, UnsealedVault, VaultSummary, Ingot, UploadIngotOptions, } from './types';
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Vaults Module Types
3
+ */
4
+ export interface CreateVaultOptions {
5
+ /** Vault name */
6
+ name: string;
7
+ /** Store VMK server-side (less secure, more convenient) */
8
+ hostedVmk?: boolean;
9
+ }
10
+ export interface Vault {
11
+ /** Vault ID */
12
+ id: string;
13
+ /** Vault name */
14
+ name: string;
15
+ /** Vault Master Key (24 chars) - STORE SECURELY! */
16
+ vmk: string;
17
+ /** Creation timestamp (Unix seconds) */
18
+ createdAt: number;
19
+ /** Whether VMK is hosted server-side */
20
+ hostedVmk: boolean;
21
+ }
22
+ export interface UnsealVaultOptions {
23
+ /** Vault ID */
24
+ vaultId: string;
25
+ /** Vault Master Key */
26
+ vmk: string;
27
+ }
28
+ export interface UnsealedVault {
29
+ /** Vault ID */
30
+ id: string;
31
+ /** Vault name */
32
+ name: string;
33
+ /** Vault Access Token (short-lived session) */
34
+ vatToken: string;
35
+ /** VAT expiry timestamp (Unix seconds) */
36
+ expiresAt: number;
37
+ /** Number of ingots in vault */
38
+ ingotCount: number;
39
+ /** Total storage used in bytes */
40
+ storageBytes: number;
41
+ }
42
+ export interface VaultSummary {
43
+ /** Vault ID */
44
+ id: string;
45
+ /** Vault name */
46
+ name: string;
47
+ /** Creation timestamp (Unix seconds) */
48
+ createdAt: number;
49
+ /** Number of ingots */
50
+ ingotCount: number;
51
+ /** Total storage used in bytes */
52
+ storageBytes: number;
53
+ /** Whether VMK is hosted server-side */
54
+ hostedVmk: boolean;
55
+ }
56
+ export interface Ingot {
57
+ /** Ingot ID */
58
+ id: string;
59
+ /** Ingot name */
60
+ name: string;
61
+ /** Content type (MIME) */
62
+ contentType: string;
63
+ /** Size in bytes */
64
+ size: number;
65
+ /** Creation timestamp (Unix seconds) */
66
+ createdAt: number;
67
+ /** Ingot type: 'standard' or 'structured' */
68
+ type: 'standard' | 'structured';
69
+ }
70
+ export interface UploadIngotOptions {
71
+ /** File to upload */
72
+ file: File | Blob;
73
+ /** Optional name (defaults to file name) */
74
+ name?: string;
75
+ /** Content type (auto-detected if not provided) */
76
+ contentType?: string;
77
+ }
78
+ export interface CreateVaultResponse {
79
+ vault_id: string;
80
+ name: string;
81
+ vmk: string;
82
+ created_at: number;
83
+ hosted_vmk: boolean;
84
+ }
85
+ export interface UnsealVaultResponse {
86
+ vault_id: string;
87
+ name: string;
88
+ vat_token: string;
89
+ expires_at: number;
90
+ ingot_count: number;
91
+ storage_bytes: number;
92
+ }
93
+ export interface ListVaultsResponse {
94
+ vaults: {
95
+ vault_id: string;
96
+ name: string;
97
+ created_at: number;
98
+ ingot_count: number;
99
+ storage_bytes: number;
100
+ hosted_vmk: boolean;
101
+ }[];
102
+ }
103
+ export interface ListIngotsResponse {
104
+ ingots: {
105
+ ingot_id: string;
106
+ name: string;
107
+ content_type: string;
108
+ size_bytes: number;
109
+ created_at: number;
110
+ ingot_type: 'standard' | 'structured';
111
+ }[];
112
+ }
113
+ export interface CreateIngotResponse {
114
+ ingot_id: string;
115
+ name: string;
116
+ content_type: string;
117
+ size_bytes: number;
118
+ created_at: number;
119
+ ingot_type: 'standard' | 'structured';
120
+ }
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@sparkvault/sdk",
3
+ "version": "1.0.0",
4
+ "description": "SparkVault JavaScript SDK - Identity, Sparks, Vaults, and RNG",
5
+ "type": "module",
6
+ "main": "dist/sparkvault.cjs.js",
7
+ "module": "dist/sparkvault.esm.js",
8
+ "browser": "dist/sparkvault.js",
9
+ "types": "dist/index.d.ts",
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "rollup -c",
15
+ "build:watch": "rollup -c -w",
16
+ "typecheck": "tsc --noEmit",
17
+ "lint": "eslint src --ext .ts",
18
+ "test": "vitest run",
19
+ "test:watch": "vitest",
20
+ "prepublishOnly": "npm run build"
21
+ },
22
+ "keywords": [
23
+ "sparkvault",
24
+ "identity",
25
+ "authentication",
26
+ "encryption",
27
+ "cryptography",
28
+ "passkey",
29
+ "webauthn",
30
+ "totp",
31
+ "vault",
32
+ "rng"
33
+ ],
34
+ "author": "SparkVault",
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/Spark-Vault/sdk-js.git"
39
+ },
40
+ "homepage": "https://sparkvault.com/api/docs/sdk",
41
+ "devDependencies": {
42
+ "@eslint/js": "^9.0.0",
43
+ "@rollup/plugin-commonjs": "^28.0.0",
44
+ "@rollup/plugin-node-resolve": "^16.0.0",
45
+ "@rollup/plugin-terser": "^0.4.4",
46
+ "@rollup/plugin-typescript": "^12.1.0",
47
+ "@types/node": "^22.0.0",
48
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
49
+ "@typescript-eslint/parser": "^8.0.0",
50
+ "eslint": "^9.0.0",
51
+ "jsdom": "^25.0.0",
52
+ "rollup": "^4.0.0",
53
+ "rollup-plugin-dts": "^6.0.0",
54
+ "tslib": "^2.8.0",
55
+ "typescript": "^5.7.0",
56
+ "vitest": "^3.0.0"
57
+ },
58
+ "engines": {
59
+ "node": ">=18.0.0"
60
+ },
61
+ "publishConfig": {
62
+ "access": "public"
63
+ }
64
+ }