shogun-core 3.3.5 → 3.3.6

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 (149) hide show
  1. package/dist/browser/shogun-core.js +79919 -190726
  2. package/dist/browser/shogun-core.js.map +1 -1
  3. package/dist/{src/index.js → index.js} +0 -1
  4. package/dist/{src/managers → managers}/CoreInitializer.js +0 -6
  5. package/dist/{src/storage → storage}/storage.js +0 -16
  6. package/dist/types/{src/index.d.ts → index.d.ts} +0 -1
  7. package/package.json +10 -26
  8. package/dist/browser/defaultVendors-node_modules_shogun-ipfs_node_modules_axios_index_js.shogun-core.js +0 -4078
  9. package/dist/browser/defaultVendors-node_modules_shogun-ipfs_node_modules_axios_index_js.shogun-core.js.map +0 -1
  10. package/dist/browser/defaultVendors-node_modules_shogun-ipfs_node_modules_is-ipfs_dist_src_index_js.shogun-core.js +0 -4908
  11. package/dist/browser/defaultVendors-node_modules_shogun-ipfs_node_modules_is-ipfs_dist_src_index_js.shogun-core.js.map +0 -1
  12. package/dist/browser/defaultVendors-node_modules_shogun-ipfs_node_modules_uint8-varint_dist_src_index_js-node_modu-0db5ba.shogun-core.js +0 -2109
  13. package/dist/browser/defaultVendors-node_modules_shogun-ipfs_node_modules_uint8-varint_dist_src_index_js-node_modu-0db5ba.shogun-core.js.map +0 -1
  14. package/dist/ship/examples/identity-cli.js +0 -511
  15. package/dist/ship/examples/messenger-cli.js +0 -745
  16. package/dist/ship/examples/stealth-cli.js +0 -433
  17. package/dist/ship/examples/storage-cli.js +0 -615
  18. package/dist/ship/examples/vault-cli.js +0 -444
  19. package/dist/ship/examples/wallet-cli.js +0 -767
  20. package/dist/ship/implementation/SHIP_00.js +0 -478
  21. package/dist/ship/implementation/SHIP_01.js +0 -433
  22. package/dist/ship/implementation/SHIP_02.js +0 -1366
  23. package/dist/ship/implementation/SHIP_03.js +0 -855
  24. package/dist/ship/implementation/SHIP_04.js +0 -589
  25. package/dist/ship/implementation/SHIP_05.js +0 -1064
  26. package/dist/ship/implementation/SHIP_06.js +0 -635
  27. package/dist/ship/index.js +0 -17
  28. package/dist/ship/interfaces/ISHIP_00.js +0 -135
  29. package/dist/ship/interfaces/ISHIP_01.js +0 -128
  30. package/dist/ship/interfaces/ISHIP_02.js +0 -57
  31. package/dist/ship/interfaces/ISHIP_03.js +0 -61
  32. package/dist/ship/interfaces/ISHIP_04.js +0 -62
  33. package/dist/ship/interfaces/ISHIP_05.js +0 -59
  34. package/dist/ship/interfaces/ISHIP_06.js +0 -194
  35. package/dist/types/ship/examples/identity-cli.d.ts +0 -40
  36. package/dist/types/ship/examples/messenger-cli.d.ts +0 -37
  37. package/dist/types/ship/examples/stealth-cli.d.ts +0 -31
  38. package/dist/types/ship/examples/storage-cli.d.ts +0 -48
  39. package/dist/types/ship/examples/vault-cli.d.ts +0 -13
  40. package/dist/types/ship/examples/wallet-cli.d.ts +0 -131
  41. package/dist/types/ship/implementation/SHIP_00.d.ts +0 -113
  42. package/dist/types/ship/implementation/SHIP_01.d.ts +0 -80
  43. package/dist/types/ship/implementation/SHIP_02.d.ts +0 -297
  44. package/dist/types/ship/implementation/SHIP_03.d.ts +0 -127
  45. package/dist/types/ship/implementation/SHIP_04.d.ts +0 -76
  46. package/dist/types/ship/implementation/SHIP_05.d.ts +0 -70
  47. package/dist/types/ship/implementation/SHIP_06.d.ts +0 -101
  48. package/dist/types/ship/index.d.ts +0 -14
  49. package/dist/types/ship/interfaces/ISHIP_00.d.ts +0 -410
  50. package/dist/types/ship/interfaces/ISHIP_01.d.ts +0 -343
  51. package/dist/types/ship/interfaces/ISHIP_02.d.ts +0 -470
  52. package/dist/types/ship/interfaces/ISHIP_03.d.ts +0 -295
  53. package/dist/types/ship/interfaces/ISHIP_04.d.ts +0 -245
  54. package/dist/types/ship/interfaces/ISHIP_05.d.ts +0 -234
  55. package/dist/types/ship/interfaces/ISHIP_06.d.ts +0 -522
  56. /package/dist/{src/config → config}/simplified-config.js +0 -0
  57. /package/dist/{src/core.js → core.js} +0 -0
  58. /package/dist/{src/examples → examples}/api-test.js +0 -0
  59. /package/dist/{src/examples → examples}/simple-api-test.js +0 -0
  60. /package/dist/{src/gundb → gundb}/api.js +0 -0
  61. /package/dist/{src/gundb → gundb}/crypto.js +0 -0
  62. /package/dist/{src/gundb → gundb}/db.js +0 -0
  63. /package/dist/{src/gundb → gundb}/derive.js +0 -0
  64. /package/dist/{src/gundb → gundb}/errors.js +0 -0
  65. /package/dist/{src/gundb → gundb}/index.js +0 -0
  66. /package/dist/{src/gundb → gundb}/rxjs.js +0 -0
  67. /package/dist/{src/gundb → gundb}/types.js +0 -0
  68. /package/dist/{src/interfaces → interfaces}/common.js +0 -0
  69. /package/dist/{src/interfaces → interfaces}/events.js +0 -0
  70. /package/dist/{src/interfaces → interfaces}/plugin.js +0 -0
  71. /package/dist/{src/interfaces → interfaces}/shogun.js +0 -0
  72. /package/dist/{src/managers → managers}/AuthManager.js +0 -0
  73. /package/dist/{src/managers → managers}/EventManager.js +0 -0
  74. /package/dist/{src/managers → managers}/PluginManager.js +0 -0
  75. /package/dist/{src/migration-test.js → migration-test.js} +0 -0
  76. /package/dist/{src/plugins → plugins}/base.js +0 -0
  77. /package/dist/{src/plugins → plugins}/index.js +0 -0
  78. /package/dist/{src/plugins → plugins}/nostr/index.js +0 -0
  79. /package/dist/{src/plugins → plugins}/nostr/nostrConnector.js +0 -0
  80. /package/dist/{src/plugins → plugins}/nostr/nostrConnectorPlugin.js +0 -0
  81. /package/dist/{src/plugins → plugins}/nostr/nostrSigner.js +0 -0
  82. /package/dist/{src/plugins → plugins}/nostr/types.js +0 -0
  83. /package/dist/{src/plugins → plugins}/oauth/index.js +0 -0
  84. /package/dist/{src/plugins → plugins}/oauth/oauthConnector.js +0 -0
  85. /package/dist/{src/plugins → plugins}/oauth/oauthPlugin.js +0 -0
  86. /package/dist/{src/plugins → plugins}/oauth/types.js +0 -0
  87. /package/dist/{src/plugins → plugins}/web3/index.js +0 -0
  88. /package/dist/{src/plugins → plugins}/web3/types.js +0 -0
  89. /package/dist/{src/plugins → plugins}/web3/web3Connector.js +0 -0
  90. /package/dist/{src/plugins → plugins}/web3/web3ConnectorPlugin.js +0 -0
  91. /package/dist/{src/plugins → plugins}/web3/web3Signer.js +0 -0
  92. /package/dist/{src/plugins → plugins}/webauthn/index.js +0 -0
  93. /package/dist/{src/plugins → plugins}/webauthn/types.js +0 -0
  94. /package/dist/{src/plugins → plugins}/webauthn/webauthn.js +0 -0
  95. /package/dist/{src/plugins → plugins}/webauthn/webauthnPlugin.js +0 -0
  96. /package/dist/{src/plugins → plugins}/webauthn/webauthnSigner.js +0 -0
  97. /package/dist/types/{src/config → config}/simplified-config.d.ts +0 -0
  98. /package/dist/types/{src/core.d.ts → core.d.ts} +0 -0
  99. /package/dist/{src/types → types}/events.js +0 -0
  100. /package/dist/types/{src/examples → examples}/api-test.d.ts +0 -0
  101. /package/dist/types/{src/examples → examples}/simple-api-test.d.ts +0 -0
  102. /package/dist/types/{src/gundb → gundb}/api.d.ts +0 -0
  103. /package/dist/types/{src/gundb → gundb}/crypto.d.ts +0 -0
  104. /package/dist/types/{src/gundb → gundb}/db.d.ts +0 -0
  105. /package/dist/types/{src/gundb → gundb}/derive.d.ts +0 -0
  106. /package/dist/types/{src/gundb → gundb}/errors.d.ts +0 -0
  107. /package/dist/types/{src/gundb → gundb}/index.d.ts +0 -0
  108. /package/dist/types/{src/gundb → gundb}/rxjs.d.ts +0 -0
  109. /package/dist/types/{src/gundb → gundb}/types.d.ts +0 -0
  110. /package/dist/types/{src/interfaces → interfaces}/common.d.ts +0 -0
  111. /package/dist/types/{src/interfaces → interfaces}/events.d.ts +0 -0
  112. /package/dist/types/{src/interfaces → interfaces}/plugin.d.ts +0 -0
  113. /package/dist/types/{src/interfaces → interfaces}/shogun.d.ts +0 -0
  114. /package/dist/types/{src/managers → managers}/AuthManager.d.ts +0 -0
  115. /package/dist/types/{src/managers → managers}/CoreInitializer.d.ts +0 -0
  116. /package/dist/types/{src/managers → managers}/EventManager.d.ts +0 -0
  117. /package/dist/types/{src/managers → managers}/PluginManager.d.ts +0 -0
  118. /package/dist/types/{src/migration-test.d.ts → migration-test.d.ts} +0 -0
  119. /package/dist/types/{src/plugins → plugins}/base.d.ts +0 -0
  120. /package/dist/types/{src/plugins → plugins}/index.d.ts +0 -0
  121. /package/dist/types/{src/plugins → plugins}/nostr/index.d.ts +0 -0
  122. /package/dist/types/{src/plugins → plugins}/nostr/nostrConnector.d.ts +0 -0
  123. /package/dist/types/{src/plugins → plugins}/nostr/nostrConnectorPlugin.d.ts +0 -0
  124. /package/dist/types/{src/plugins → plugins}/nostr/nostrSigner.d.ts +0 -0
  125. /package/dist/types/{src/plugins → plugins}/nostr/types.d.ts +0 -0
  126. /package/dist/types/{src/plugins → plugins}/oauth/index.d.ts +0 -0
  127. /package/dist/types/{src/plugins → plugins}/oauth/oauthConnector.d.ts +0 -0
  128. /package/dist/types/{src/plugins → plugins}/oauth/oauthPlugin.d.ts +0 -0
  129. /package/dist/types/{src/plugins → plugins}/oauth/types.d.ts +0 -0
  130. /package/dist/types/{src/plugins → plugins}/web3/index.d.ts +0 -0
  131. /package/dist/types/{src/plugins → plugins}/web3/types.d.ts +0 -0
  132. /package/dist/types/{src/plugins → plugins}/web3/web3Connector.d.ts +0 -0
  133. /package/dist/types/{src/plugins → plugins}/web3/web3ConnectorPlugin.d.ts +0 -0
  134. /package/dist/types/{src/plugins → plugins}/web3/web3Signer.d.ts +0 -0
  135. /package/dist/types/{src/plugins → plugins}/webauthn/index.d.ts +0 -0
  136. /package/dist/types/{src/plugins → plugins}/webauthn/types.d.ts +0 -0
  137. /package/dist/types/{src/plugins → plugins}/webauthn/webauthn.d.ts +0 -0
  138. /package/dist/types/{src/plugins → plugins}/webauthn/webauthnPlugin.d.ts +0 -0
  139. /package/dist/types/{src/plugins → plugins}/webauthn/webauthnSigner.d.ts +0 -0
  140. /package/dist/{src/types → types}/shogun.js +0 -0
  141. /package/dist/types/{src/storage → storage}/storage.d.ts +0 -0
  142. /package/dist/types/{src/types → types}/events.d.ts +0 -0
  143. /package/dist/types/{src/types → types}/shogun.d.ts +0 -0
  144. /package/dist/types/{src/utils → utils}/errorHandler.d.ts +0 -0
  145. /package/dist/types/{src/utils → utils}/eventEmitter.d.ts +0 -0
  146. /package/dist/types/{src/utils → utils}/validation.d.ts +0 -0
  147. /package/dist/{src/utils → utils}/errorHandler.js +0 -0
  148. /package/dist/{src/utils → utils}/eventEmitter.js +0 -0
  149. /package/dist/{src/utils → utils}/validation.js +0 -0
@@ -1,135 +0,0 @@
1
- "use strict";
2
- /**
3
- * SHIP-00: Decentralized Identity & Authentication Interface
4
- *
5
- * @title ISHIP_00 - Identity Foundation
6
- * @notice Base interface for decentralized identity in Shogun ecosystem
7
- *
8
- * ## Abstract
9
- *
10
- * This standard defines the foundational interface for identity that enables:
11
- * - Username/password authentication with deterministic key generation
12
- * - SEA key pair management (export, import, backup)
13
- * - Public key publication and discovery on GunDB
14
- * - User registry and lookup system
15
- * - Blockchain address derivation (Ethereum, Bitcoin, etc.)
16
- *
17
- * ## Specification
18
- *
19
- * Based on:
20
- * - GunDB for P2P identity storage
21
- * - SEA (Security, Encryption, Authorization) for key management
22
- * - Shogun Core DataBase API for authentication
23
- * - BIP32-like derivation for blockchain addresses
24
- *
25
- * ## Usage
26
- *
27
- * SHIP-00 serves as the foundation for all other SHIPs:
28
- * - SHIP-01 (Messaging) depends on SHIP-00 for identity
29
- * - SHIP-02 (Address Derivation) extends SHIP-00
30
- * - SHIP-03 (Multi-Modal Auth) extends SHIP-00
31
- * - SHIP-04 (File Storage) uses SHIP-00 for ACL
32
- */
33
- Object.defineProperty(exports, "__esModule", { value: true });
34
- // ============================================================================
35
- // IMPLEMENTATION EXAMPLE
36
- // ============================================================================
37
- /**
38
- * Example of how to implement ISHIP_00
39
- *
40
- * ```typescript
41
- * import { ShogunCore } from 'shogun-core';
42
- * import { ISHIP_00, SEAPair, AuthResult, SignupResult } from './interfaces/ISHIP_00';
43
- *
44
- * class IdentityManager implements ISHIP_00 {
45
- * private shogun: ShogunCore;
46
- *
47
- * constructor(config: IdentityConfig) {
48
- * this.shogun = new ShogunCore({
49
- * gunOptions: {
50
- * peers: config.peers,
51
- * radisk: config.radisk,
52
- * localStorage: config.localStorage
53
- * },
54
- * scope: config.scope
55
- * });
56
- * }
57
- *
58
- * async signup(username: string, password: string): Promise<SignupResult> {
59
- * // Use Shogun Core signUp method
60
- * const result = await this.shogun.signUp(username, password);
61
- *
62
- * if (result.success) {
63
- * // Publish public key
64
- * await this.publishPublicKey();
65
- *
66
- * // Derive Ethereum address
67
- * const derivedAddress = await this.deriveEthereumAddress(result.userPub);
68
- *
69
- * return {
70
- * success: true,
71
- * userPub: result.userPub,
72
- * username: username,
73
- * derivedAddress: derivedAddress
74
- * };
75
- * }
76
- *
77
- * return {
78
- * success: false,
79
- * error: result.error || 'Signup failed'
80
- * };
81
- * }
82
- *
83
- * async login(username: string, password: string): Promise<AuthResult> {
84
- * // Use Shogun Core login method
85
- * const result = await this.shogun.login(username, password);
86
- *
87
- * if (result.success) {
88
- * const derivedAddress = await this.deriveEthereumAddress(result.userPub);
89
- *
90
- * return {
91
- * success: true,
92
- * userPub: result.userPub,
93
- * username: username,
94
- * derivedAddress: derivedAddress
95
- * };
96
- * }
97
- *
98
- * return {
99
- * success: false,
100
- * error: result.error || 'Login failed'
101
- * };
102
- * }
103
- *
104
- * exportKeyPair(): SEAPair | null {
105
- * if (!this.isLoggedIn()) return null;
106
- *
107
- * const seaPair = (this.shogun.db.gun.user() as any)?._?.sea;
108
- * if (!seaPair) return null;
109
- *
110
- * return {
111
- * pub: seaPair.pub,
112
- * priv: seaPair.priv,
113
- * epub: seaPair.epub,
114
- * epriv: seaPair.epriv
115
- * };
116
- * }
117
- *
118
- * async getUserByAlias(username: string): Promise<UserData | null> {
119
- * // Use Shogun Core getUserByAlias method
120
- * return await this.shogun.db.getUserByAlias(username);
121
- * }
122
- *
123
- * async deriveEthereumAddress(publicKey?: string): Promise<string> {
124
- * // Use shogun-derive package
125
- * const derived = await derive(seaPair.priv, null, {
126
- * includeSecp256k1Ethereum: true
127
- * });
128
- *
129
- * return derived.secp256k1Ethereum.address;
130
- * }
131
- *
132
- * // ... implement other methods
133
- * }
134
- * ```
135
- */
@@ -1,128 +0,0 @@
1
- "use strict";
2
- /**
3
- * Shogun Messaging Protocol Interface
4
- *
5
- * @title ISHIP_01 - Decentralized Encrypted Messaging
6
- * @notice Interface for decentralized encrypted messaging on GunDB
7
- * @dev This interface depends on ISHIP_00 for identity and authentication
8
- *
9
- * ## Abstract
10
- *
11
- * This standard defines an interface for decentralized messaging that allows:
12
- * - End-to-end encrypted message sending (ECDH)
13
- * - Real-time message reception
14
- * - Decentralized message history
15
- *
16
- * ## Dependencies
17
- *
18
- * - ISHIP_00: Identity and authentication layer
19
- * - GunDB: P2P storage
20
- * - SEA: Cryptography (ECDH + AES-GCM)
21
- *
22
- * ## Specification
23
- *
24
- * Based on:
25
- * - SHIP-00 for identity management
26
- * - GunDB for P2P storage
27
- * - SEA (Security, Encryption, Authorization) for cryptography
28
- * - ECDH (Elliptic Curve Diffie-Hellman) for key agreement
29
- */
30
- Object.defineProperty(exports, "__esModule", { value: true });
31
- // ============================================================================
32
- // IMPLEMENTATION EXAMPLE
33
- // ============================================================================
34
- /**
35
- * Example of how to implement ISHIP_01 with ISHIP_00 dependency
36
- *
37
- * ```typescript
38
- * import { ISHIP_00 } from './ISHIP_00';
39
- * import { ISHIP_01, DecryptedMessage, SendMessageResult } from './ISHIP_01';
40
- *
41
- * class SecureMessagingApp implements ISHIP_01 {
42
- * constructor(private identity: ISHIP_00) {
43
- * // Verify identity is authenticated
44
- * if (!identity.isLoggedIn()) {
45
- * throw new Error('User must be authenticated');
46
- * }
47
- * }
48
- *
49
- * getIdentity(): ISHIP_00 {
50
- * return this.identity;
51
- * }
52
- *
53
- * async sendMessage(recipientUsername: string, message: string): Promise<SendMessageResult> {
54
- * // 1. Get recipient's public key from identity provider
55
- * const recipientKey = await this.identity.getPublicKey(recipientUsername);
56
- * if (!recipientKey) {
57
- * return { success: false, error: 'Recipient not found' };
58
- * }
59
- *
60
- * // 2. Get sender's key pair from identity provider
61
- * const senderPair = this.identity.getKeyPair();
62
- * if (!senderPair) {
63
- * return { success: false, error: 'Not authenticated' };
64
- * }
65
- *
66
- * // 3. Encrypt with ECDH
67
- * const encrypted = await crypto.encFor(
68
- * message,
69
- * senderPair,
70
- * { epub: recipientKey.epub }
71
- * );
72
- *
73
- * // 4. Save to GunDB
74
- * const messageId = generateId();
75
- * await gun.get('messages').get(messageId).put({
76
- * content: encrypted,
77
- * from: senderPair.pub,
78
- * to: recipientUsername,
79
- * timestamp: Date.now().toString()
80
- * });
81
- *
82
- * return { success: true, messageId };
83
- * }
84
- *
85
- * async listenForMessages(onMessage: (message: DecryptedMessage) => void): Promise<void> {
86
- * const currentUser = this.identity.getCurrentUser();
87
- * if (!currentUser) {
88
- * throw new Error('Not authenticated');
89
- * }
90
- *
91
- * gun.get('messages').map().on(async (data, key) => {
92
- * if (data && data.to === currentUser.alias) {
93
- * // Decrypt message
94
- * const senderKey = await this.identity.getPublicKey(data.from);
95
- * const receiverPair = this.identity.getKeyPair();
96
- *
97
- * if (senderKey && receiverPair) {
98
- * const decrypted = await crypto.decFrom(
99
- * data.content,
100
- * { epub: senderKey.epub },
101
- * receiverPair
102
- * );
103
- *
104
- * onMessage({
105
- * from: data.from,
106
- * content: decrypted,
107
- * timestamp: parseInt(data.timestamp)
108
- * });
109
- * }
110
- * }
111
- * });
112
- * }
113
- *
114
- * async getMessageHistory(withUsername: string): Promise<MessageHistoryEntry[]> {
115
- * // Implementation here
116
- * return [];
117
- * }
118
- * }
119
- *
120
- * // Usage
121
- * const identity = new SHIP_00(config);
122
- * await identity.login('alice', 'password123');
123
- * await identity.publishPublicKey();
124
- *
125
- * const messaging = new SecureMessagingApp(identity);
126
- * await messaging.sendMessage('bob', 'Hello Bob!');
127
- * ```
128
- */
@@ -1,57 +0,0 @@
1
- "use strict";
2
- /**
3
- * SHIP-02: Ethereum Address Derivation Interface
4
- *
5
- * @title ISHIP_02 - Deterministic Address Derivation
6
- * @notice Interface for deriving Ethereum addresses from SHIP-00 identity
7
- *
8
- * ## Abstract
9
- *
10
- * This standard extends SHIP-00 to enable:
11
- * - Deterministic Ethereum address derivation from identity keys
12
- * - BIP-32/BIP-44 hierarchical deterministic (HD) wallet support
13
- * - Stealth address generation for enhanced privacy
14
- * - Multiple address management from single identity
15
- * - Transaction signing with derived keys
16
- *
17
- * ## Specification
18
- *
19
- * Based on:
20
- * - SHIP-00 for identity foundation
21
- * - BIP-32 for hierarchical deterministic wallets
22
- * - BIP-44 for multi-account hierarchy
23
- * - Ethers.js for Ethereum operations
24
- * - ECDH for stealth address generation
25
- *
26
- * ## Dependencies
27
- *
28
- * - SHIP-00: Identity and authentication foundation
29
- * - ethers: Ethereum wallet and signing operations
30
- *
31
- * ## Usage
32
- *
33
- * SHIP-02 enables wallet functionality on top of SHIP-00 identity:
34
- * ```typescript
35
- * const identity = new SHIP_00({ gunOptions: { peers: ['...'] } });
36
- * await identity.login('alice', 'password123');
37
- *
38
- * const addressDerivation = new SHIP_02(identity);
39
- * await addressDerivation.initialize();
40
- *
41
- * const ethAddress = await addressDerivation.deriveEthereumAddress();
42
- * ```
43
- */
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.SHIP_02_EventType = void 0;
46
- /**
47
- * @notice Event types for SHIP-02 wallet operations
48
- */
49
- var SHIP_02_EventType;
50
- (function (SHIP_02_EventType) {
51
- SHIP_02_EventType["WALLET_CREATED"] = "walletCreated";
52
- SHIP_02_EventType["ADDRESS_DERIVED"] = "addressDerived";
53
- SHIP_02_EventType["TRANSACTION_SIGNED"] = "transactionSigned";
54
- SHIP_02_EventType["MNEMONIC_GENERATED"] = "mnemonicGenerated";
55
- SHIP_02_EventType["SYNC_COMPLETED"] = "syncCompleted";
56
- SHIP_02_EventType["ERROR"] = "error";
57
- })(SHIP_02_EventType || (exports.SHIP_02_EventType = SHIP_02_EventType = {}));
@@ -1,61 +0,0 @@
1
- "use strict";
2
- /**
3
- * SHIP-03: Dual-Key Stealth Address Interface
4
- *
5
- * @title ISHIP_03 - Privacy-Preserving Stealth Addresses
6
- * @notice Interface for ERC-5564 compatible stealth addresses
7
- *
8
- * ## Abstract
9
- *
10
- * This standard extends SHIP-00 and SHIP-02 to enable:
11
- * - Dual-key stealth addresses (viewing + spending keys)
12
- * - ERC-5564 / Fluidkey compatibility
13
- * - Enhanced transaction privacy
14
- * - Stealth address scanning and opening
15
- * - Deterministic key derivation from SHIP-00 identity
16
- *
17
- * ## Specification
18
- *
19
- * Based on:
20
- * - SHIP-00 for identity foundation
21
- * - SHIP-02 for Ethereum address derivation
22
- * - ERC-5564 for stealth address standard
23
- * - Fluidkey Stealth Account Kit
24
- * - ECDH for shared secret derivation
25
- *
26
- * ## Key Concepts
27
- *
28
- * **Viewing Key**: Used to scan blockchain for incoming stealth payments
29
- * **Spending Key**: Used to spend funds received at stealth addresses
30
- * **Ephemeral Key**: One-time key used by sender to generate stealth address
31
- *
32
- * ## Dependencies
33
- *
34
- * - SHIP-00: Identity and authentication foundation
35
- * - SHIP-02: Ethereum wallet operations
36
- * - @fluidkey/stealth-account-kit: ERC-5564 implementation
37
- * - ethers: Ethereum operations
38
- *
39
- * ## Usage
40
- *
41
- * ```typescript
42
- * const identity = new SHIP_00({ gunOptions: { peers: ['...'] } });
43
- * await identity.login('alice', 'password123');
44
- *
45
- * const eth = new SHIP_02(identity);
46
- * await eth.initialize();
47
- *
48
- * const stealth = new SHIP_03(identity, eth);
49
- * await stealth.initialize();
50
- *
51
- * // Get stealth keys (derived from SHIP-00 identity)
52
- * const keys = await stealth.getStealthKeys();
53
- *
54
- * // Generate stealth address for recipient
55
- * const stealthAddr = await stealth.generateStealthAddress(
56
- * recipientViewingKey,
57
- * recipientSpendingKey
58
- * );
59
- * ```
60
- */
61
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,62 +0,0 @@
1
- "use strict";
2
- /**
3
- * SHIP-04: Multi-Modal Authentication Interface
4
- *
5
- * @title ISHIP_04 - Alternative Authentication Methods
6
- * @notice Interface for multi-modal authentication extending SHIP-00
7
- *
8
- * ## Abstract
9
- *
10
- * This standard extends SHIP-00 to provide multiple authentication methods:
11
- * - OAuth (Google, GitHub, Discord, etc.)
12
- * - WebAuthn/Passkeys (biometric authentication)
13
- * - Nostr (decentralized social protocol)
14
- * - Web3 (MetaMask, WalletConnect, etc.)
15
- *
16
- * ## Dependencies
17
- *
18
- * - SHIP-00: Base identity foundation
19
- * - Shogun Core Plugins: OAuth, WebAuthn, Nostr, Web3
20
- *
21
- * ## Inclusive Hierarchy
22
- *
23
- * SHIP-04 extends SHIP-00 (✅ allowed):
24
- * ```
25
- * SHIP-04 (Multi-Modal Auth)
26
- * ↓ depends on
27
- * SHIP-00 (Identity Foundation)
28
- * ```
29
- *
30
- * ## Usage
31
- *
32
- * ```typescript
33
- * const identity = new SHIP_00(config);
34
- * const multiAuth = new SHIP_04(identity);
35
- *
36
- * // Login with OAuth
37
- * await multiAuth.loginWithOAuth('google');
38
- *
39
- * // Or WebAuthn
40
- * await multiAuth.loginWithWebAuthn('alice');
41
- *
42
- * // Result is SHIP-00 compatible!
43
- * const user = identity.getCurrentUser();
44
- * ```
45
- */
46
- Object.defineProperty(exports, "__esModule", { value: true });
47
- exports.AuthMethod = void 0;
48
- // ============================================================================
49
- // CORE TYPES
50
- // ============================================================================
51
- /**
52
- * Available authentication methods
53
- * Exported as const enum to allow usage as both type and value
54
- */
55
- var AuthMethod;
56
- (function (AuthMethod) {
57
- AuthMethod["PASSWORD"] = "password";
58
- AuthMethod["OAUTH"] = "oauth";
59
- AuthMethod["WEBAUTHN"] = "webauthn";
60
- AuthMethod["NOSTR"] = "nostr";
61
- AuthMethod["WEB3"] = "web3";
62
- })(AuthMethod || (exports.AuthMethod = AuthMethod = {}));
@@ -1,59 +0,0 @@
1
- "use strict";
2
- /**
3
- * SHIP-05: Decentralized File Storage Interface
4
- *
5
- * @title ISHIP_05 - IPFS Storage with Relay Network
6
- * @notice Interface for decentralized file storage with encryption
7
- *
8
- * ## Abstract
9
- *
10
- * This standard extends SHIP-00 to enable:
11
- * - Encrypted file storage on IPFS
12
- * - Relay network management for storage providers
13
- * - On-chain subscription system for storage
14
- * - Deterministic encryption from wallet signatures
15
- * - File sharing with access control
16
- *
17
- * ## Specification
18
- *
19
- * Based on:
20
- * - SHIP-00 for identity foundation
21
- * - IPFS for decentralized storage
22
- * - Smart contracts for relay payment system
23
- * - Deterministic encryption from wallet signatures
24
- *
25
- * ## Dependencies
26
- *
27
- * - SHIP-00: Identity and authentication foundation
28
- * - IPFS: Decentralized file storage
29
- * - Ethereum: For relay subscription payments
30
- * - shogun-ipfs: IPFS wrapper library
31
- *
32
- * ## Usage
33
- *
34
- * ```typescript
35
- * const identity = new SHIP_00({ gunOptions: { peers: ['...'] } });
36
- * await identity.login('alice', 'password123');
37
- *
38
- * const storage = new SHIP_05(identity);
39
- * await storage.initialize();
40
- *
41
- * // Upload encrypted file
42
- * const result = await storage.uploadFile(file, { encrypt: true });
43
- *
44
- * // Download and decrypt
45
- * const data = await storage.downloadFile(result.hash, { decrypt: true });
46
- * ```
47
- */
48
- Object.defineProperty(exports, "__esModule", { value: true });
49
- exports.SHIP_05_EventType = void 0;
50
- // ============================================================================
51
- // EVENTS
52
- // ============================================================================
53
- var SHIP_05_EventType;
54
- (function (SHIP_05_EventType) {
55
- SHIP_05_EventType["FILE_UPLOADED"] = "fileUploaded";
56
- SHIP_05_EventType["FILE_DOWNLOADED"] = "fileDownloaded";
57
- SHIP_05_EventType["FILE_DELETED"] = "fileDeleted";
58
- SHIP_05_EventType["ERROR"] = "error";
59
- })(SHIP_05_EventType || (exports.SHIP_05_EventType = SHIP_05_EventType = {}));
@@ -1,194 +0,0 @@
1
- "use strict";
2
- /**
3
- * SHIP-06: Secure Vault Interface
4
- *
5
- * @title ISHIP_06 - Secure Encrypted Vault
6
- * @notice Interface for secure encrypted key-value storage on GunDB
7
- * @dev This interface depends on ISHIP_00 for identity and encryption
8
- *
9
- * ## Abstract
10
- *
11
- * This standard defines an interface for secure vault storage that allows:
12
- * - End-to-end encrypted key-value storage
13
- * - Soft delete with recovery
14
- * - Export/import for backup
15
- * - Rich metadata support
16
- * - Simple, secure, focused on storage only
17
- *
18
- * ## Dependencies
19
- *
20
- * - ISHIP_00: Identity and authentication layer
21
- * - GunDB: P2P storage
22
- * - SEA: Cryptography (AES-256-GCM)
23
- *
24
- * ## Inspiration
25
- *
26
- * Based on Gunsafe (https://github.com/draeder/gunsafe)
27
- * Adapted for Shogun ecosystem with SHIP-00 integration
28
- */
29
- Object.defineProperty(exports, "__esModule", { value: true });
30
- // ============================================================================
31
- // IMPLEMENTATION EXAMPLE
32
- // ============================================================================
33
- /**
34
- * Example of how to implement ISHIP_07 with ISHIP_00 dependency
35
- *
36
- * ```typescript
37
- * import { ISHIP_00 } from './ISHIP_00';
38
- * import { ISHIP_07, VaultRecord, VaultResult } from './ISHIP_07';
39
- *
40
- * class SecureVault implements ISHIP_07 {
41
- * private vaultNode: any;
42
- * private initialized: boolean = false;
43
- *
44
- * constructor(private identity: ISHIP_00) {
45
- * if (!identity.isLoggedIn()) {
46
- * throw new Error('User must be authenticated via SHIP-00');
47
- * }
48
- * }
49
- *
50
- * getIdentity(): ISHIP_00 {
51
- * return this.identity;
52
- * }
53
- *
54
- * async initialize(): Promise<void> {
55
- * // Get Gun user node
56
- * const gun = this.identity.shogun.db.gun;
57
- * this.vaultNode = gun.user().get('vault').get('records');
58
- *
59
- * // Initialize vault metadata
60
- * await gun.user().get('vault').get('metadata').put({
61
- * version: '1.0.0',
62
- * created: Date.now().toString()
63
- * });
64
- *
65
- * this.initialized = true;
66
- * }
67
- *
68
- * isInitialized(): boolean {
69
- * return this.initialized;
70
- * }
71
- *
72
- * async put(name: string, data: any, metadata?: RecordMetadata): Promise<VaultResult> {
73
- * if (!this.initialized) {
74
- * return { success: false, error: 'Vault not initialized' };
75
- * }
76
- *
77
- * try {
78
- * // Get SEA crypto
79
- * const crypto = this.identity.shogun.db.crypto;
80
- * const pair = this.identity.getKeyPair();
81
- *
82
- * if (!pair) {
83
- * return { success: false, error: 'Cannot access key pair' };
84
- * }
85
- *
86
- * // Encrypt data
87
- * const encryptedData = await crypto.encrypt(
88
- * JSON.stringify(data),
89
- * pair.epriv
90
- * );
91
- *
92
- * // Encrypt metadata if provided
93
- * const encryptedMetadata = metadata
94
- * ? await crypto.encrypt(JSON.stringify(metadata), pair.epriv)
95
- * : undefined;
96
- *
97
- * // Store in vault
98
- * const record = {
99
- * data: encryptedData,
100
- * created: Date.now().toString(),
101
- * updated: Date.now().toString(),
102
- * deleted: false,
103
- * metadata: encryptedMetadata
104
- * };
105
- *
106
- * await this.vaultNode.get(name).put(record);
107
- *
108
- * return { success: true, recordName: name };
109
- * } catch (error: any) {
110
- * return { success: false, error: error.message };
111
- * }
112
- * }
113
- *
114
- * async get(name: string, options?: GetOptions): Promise<VaultRecord | null> {
115
- * if (!this.initialized) {
116
- * return null;
117
- * }
118
- *
119
- * try {
120
- * // Retrieve from vault
121
- * const encryptedRecord = await this.vaultNode.get(name).then();
122
- *
123
- * if (!encryptedRecord || !encryptedRecord.data) {
124
- * return null;
125
- * }
126
- *
127
- * // Skip if deleted (unless includeDeleted)
128
- * if (encryptedRecord.deleted && !options?.includeDeleted) {
129
- * return null;
130
- * }
131
- *
132
- * // Decrypt data
133
- * const crypto = this.identity.shogun.db.crypto;
134
- * const pair = this.identity.getKeyPair();
135
- *
136
- * if (!pair) {
137
- * return null;
138
- * }
139
- *
140
- * const decryptedData = await crypto.decrypt(
141
- * encryptedRecord.data,
142
- * pair.epriv
143
- * );
144
- *
145
- * // Decrypt metadata if present
146
- * const decryptedMetadata = encryptedRecord.metadata
147
- * ? JSON.parse(await crypto.decrypt(encryptedRecord.metadata, pair.epriv))
148
- * : undefined;
149
- *
150
- * return {
151
- * name,
152
- * data: JSON.parse(decryptedData),
153
- * created: parseInt(encryptedRecord.created),
154
- * updated: parseInt(encryptedRecord.updated),
155
- * deleted: encryptedRecord.deleted,
156
- * metadata: decryptedMetadata
157
- * };
158
- * } catch (error) {
159
- * console.error('Error retrieving record:', error);
160
- * return null;
161
- * }
162
- * }
163
- *
164
- * async delete(name?: string): Promise<VaultResult> {
165
- * // Implementation here
166
- * return { success: true };
167
- * }
168
- *
169
- * async list(options?: ListOptions): Promise<string[]> {
170
- * // Implementation here
171
- * return [];
172
- * }
173
- *
174
- * // ... implement other methods
175
- * }
176
- *
177
- * // Usage
178
- * const identity = new SHIP_00(config);
179
- * await identity.login('alice', 'password123');
180
- *
181
- * const vault = new SecureVault(identity);
182
- * await vault.initialize();
183
- *
184
- * // Store encrypted data
185
- * await vault.put('my-password', 'super_secret', {
186
- * type: 'password',
187
- * description: 'GitHub password'
188
- * });
189
- *
190
- * // Retrieve decrypted data
191
- * const record = await vault.get('my-password');
192
- * console.log('Password:', record?.data);
193
- * ```
194
- */