@inkbox/sdk 0.1.3 → 0.2.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 (47) hide show
  1. package/README.md +42 -2
  2. package/dist/_http.d.ts +7 -1
  3. package/dist/_http.d.ts.map +1 -1
  4. package/dist/_http.js +13 -1
  5. package/dist/_http.js.map +1 -1
  6. package/dist/agent_identity.d.ts +36 -4
  7. package/dist/agent_identity.d.ts.map +1 -1
  8. package/dist/agent_identity.js +70 -6
  9. package/dist/agent_identity.js.map +1 -1
  10. package/dist/authenticator/resources/accounts.d.ts +1 -1
  11. package/dist/authenticator/resources/accounts.js +1 -1
  12. package/dist/authenticator/resources/apps.d.ts +2 -2
  13. package/dist/authenticator/resources/apps.js +2 -2
  14. package/dist/credentials.d.ts +86 -0
  15. package/dist/credentials.d.ts.map +1 -0
  16. package/dist/credentials.js +130 -0
  17. package/dist/credentials.js.map +1 -0
  18. package/dist/identities/resources/identities.d.ts +1 -1
  19. package/dist/identities/resources/identities.js +1 -1
  20. package/dist/index.d.ts +8 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +6 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/inkbox.d.ts +25 -0
  25. package/dist/inkbox.d.ts.map +1 -1
  26. package/dist/inkbox.js +34 -1
  27. package/dist/inkbox.js.map +1 -1
  28. package/dist/mail/resources/messages.d.ts +2 -2
  29. package/dist/mail/resources/messages.d.ts.map +1 -1
  30. package/dist/mail/resources/messages.js.map +1 -1
  31. package/dist/mail/types.d.ts +8 -1
  32. package/dist/mail/types.d.ts.map +1 -1
  33. package/dist/mail/types.js +8 -0
  34. package/dist/mail/types.js.map +1 -1
  35. package/dist/vault/crypto.d.ts +136 -0
  36. package/dist/vault/crypto.d.ts.map +1 -0
  37. package/dist/vault/crypto.js +265 -0
  38. package/dist/vault/crypto.js.map +1 -0
  39. package/dist/vault/resources/vault.d.ts +149 -0
  40. package/dist/vault/resources/vault.d.ts.map +1 -0
  41. package/dist/vault/resources/vault.js +291 -0
  42. package/dist/vault/resources/vault.js.map +1 -0
  43. package/dist/vault/types.d.ts +236 -0
  44. package/dist/vault/types.d.ts.map +1 -0
  45. package/dist/vault/types.js +225 -0
  46. package/dist/vault/types.js.map +1 -0
  47. package/package.json +6 -2
@@ -0,0 +1,225 @@
1
+ /**
2
+ * inkbox-vault TypeScript SDK — public types.
3
+ *
4
+ * Includes API response types, raw JSON shapes, parsers,
5
+ * and client-side structured secret payloads.
6
+ */
7
+ // ---- Enums ----
8
+ /**
9
+ * Category of credential stored in a vault secret.
10
+ *
11
+ * Used as a client-side hint for which form to render. The server
12
+ * does not validate or enforce payload structure (it's opaque ciphertext).
13
+ */
14
+ export const VaultSecretType = {
15
+ API_KEY: "api_key",
16
+ KEY_PAIR: "key_pair",
17
+ LOGIN: "login",
18
+ SSH_KEY: "ssh_key",
19
+ OTHER: "other",
20
+ };
21
+ /**
22
+ * Discriminator for vault key records.
23
+ *
24
+ * - `PRIMARY` — a standard vault key issued to users or agents.
25
+ * - `RECOVERY` — a recovery code generated at vault initialization.
26
+ */
27
+ export const VaultKeyType = {
28
+ PRIMARY: "primary",
29
+ RECOVERY: "recovery",
30
+ };
31
+ /** @internal */
32
+ export function parseAccessRule(r) {
33
+ return {
34
+ id: r.id,
35
+ vaultSecretId: r.vault_secret_id,
36
+ identityId: r.identity_id,
37
+ createdAt: new Date(r.created_at),
38
+ };
39
+ }
40
+ // ---- Parsers ----
41
+ /** Parse a raw vault info response into a {@link VaultInfo}. @internal */
42
+ export function parseVaultInfo(r) {
43
+ return {
44
+ id: r.id,
45
+ organizationId: r.organization_id,
46
+ status: r.status,
47
+ createdAt: new Date(r.created_at),
48
+ updatedAt: new Date(r.updated_at),
49
+ keyCount: r.key_count,
50
+ secretCount: r.secret_count,
51
+ recoveryKeyCount: r.recovery_key_count,
52
+ };
53
+ }
54
+ /** Parse a raw vault key response into a {@link VaultKey}. @internal */
55
+ export function parseVaultKey(r) {
56
+ return {
57
+ id: r.id,
58
+ keyType: r.key_type,
59
+ createdBy: r.created_by,
60
+ status: r.status,
61
+ createdAt: new Date(r.created_at),
62
+ updatedAt: new Date(r.updated_at),
63
+ };
64
+ }
65
+ /** Parse a raw vault secret response into a {@link VaultSecret}. @internal */
66
+ export function parseVaultSecret(r) {
67
+ return {
68
+ id: r.id,
69
+ name: r.name,
70
+ description: r.description,
71
+ secretType: r.secret_type,
72
+ status: r.status,
73
+ createdAt: new Date(r.created_at),
74
+ updatedAt: new Date(r.updated_at),
75
+ };
76
+ }
77
+ /** Parse a raw vault secret detail response into a {@link VaultSecretDetail}. @internal */
78
+ export function parseVaultSecretDetail(r) {
79
+ return {
80
+ ...parseVaultSecret(r),
81
+ encryptedPayload: r.encrypted_payload,
82
+ };
83
+ }
84
+ // ---- Payload serialization (camelCase ↔ snake_case for JSON encryption) ----
85
+ /**
86
+ * Serialize a payload into a plain object for encryption.
87
+ *
88
+ * Converts camelCase payload fields to the snake_case wire format
89
+ * stored inside the encrypted blob.
90
+ *
91
+ * @param secretType - The secret type string.
92
+ * @param payload - The structured payload to serialize.
93
+ * @returns A plain object ready for JSON stringification.
94
+ * @throws If `secretType` is unknown.
95
+ * @internal
96
+ */
97
+ export function serializePayload(secretType, payload) {
98
+ switch (secretType) {
99
+ case "login": {
100
+ const p = payload;
101
+ const d = { password: p.password };
102
+ if (p.username !== undefined)
103
+ d.username = p.username;
104
+ if (p.email !== undefined)
105
+ d.email = p.email;
106
+ if (p.url !== undefined)
107
+ d.url = p.url;
108
+ if (p.notes !== undefined)
109
+ d.notes = p.notes;
110
+ return d;
111
+ }
112
+ case "other": {
113
+ const p = payload;
114
+ const d = { data: p.data };
115
+ if (p.notes !== undefined)
116
+ d.notes = p.notes;
117
+ return d;
118
+ }
119
+ case "ssh_key": {
120
+ const p = payload;
121
+ const d = { private_key: p.privateKey };
122
+ if (p.publicKey !== undefined)
123
+ d.public_key = p.publicKey;
124
+ if (p.fingerprint !== undefined)
125
+ d.fingerprint = p.fingerprint;
126
+ if (p.passphrase !== undefined)
127
+ d.passphrase = p.passphrase;
128
+ if (p.notes !== undefined)
129
+ d.notes = p.notes;
130
+ return d;
131
+ }
132
+ case "api_key": {
133
+ const p = payload;
134
+ const d = { api_key: p.apiKey };
135
+ if (p.endpoint !== undefined)
136
+ d.endpoint = p.endpoint;
137
+ if (p.notes !== undefined)
138
+ d.notes = p.notes;
139
+ return d;
140
+ }
141
+ case "key_pair": {
142
+ const p = payload;
143
+ const d = {
144
+ access_key: p.accessKey,
145
+ secret_key: p.secretKey,
146
+ };
147
+ if (p.endpoint !== undefined)
148
+ d.endpoint = p.endpoint;
149
+ if (p.notes !== undefined)
150
+ d.notes = p.notes;
151
+ return d;
152
+ }
153
+ default:
154
+ throw new Error(`Unknown secret_type: ${secretType}`);
155
+ }
156
+ }
157
+ /**
158
+ * Parse a decrypted plain object into the correct payload type.
159
+ *
160
+ * Converts snake_case wire-format fields back to camelCase.
161
+ *
162
+ * @param secretType - The secret type string.
163
+ * @param raw - The decrypted plain object.
164
+ * @returns The typed payload.
165
+ * @throws If `secretType` is unknown.
166
+ * @internal
167
+ */
168
+ export function parsePayload(secretType, raw) {
169
+ switch (secretType) {
170
+ case "login":
171
+ return {
172
+ password: raw.password,
173
+ username: raw.username,
174
+ email: raw.email,
175
+ url: raw.url,
176
+ notes: raw.notes,
177
+ };
178
+ case "other":
179
+ return { data: raw.data, notes: raw.notes };
180
+ case "ssh_key":
181
+ return {
182
+ privateKey: raw.private_key,
183
+ publicKey: raw.public_key,
184
+ fingerprint: raw.fingerprint,
185
+ passphrase: raw.passphrase,
186
+ notes: raw.notes,
187
+ };
188
+ case "api_key":
189
+ return {
190
+ apiKey: raw.api_key,
191
+ endpoint: raw.endpoint,
192
+ notes: raw.notes,
193
+ };
194
+ case "key_pair":
195
+ return {
196
+ accessKey: raw.access_key,
197
+ secretKey: raw.secret_key,
198
+ endpoint: raw.endpoint,
199
+ notes: raw.notes,
200
+ };
201
+ default:
202
+ throw new Error(`Unknown secret_type: ${secretType}`);
203
+ }
204
+ }
205
+ /**
206
+ * Infer the `secretType` string from a payload's shape.
207
+ *
208
+ * @param payload - A secret payload object.
209
+ * @returns The inferred secret type string.
210
+ * @throws If the payload shape doesn't match any known type.
211
+ */
212
+ export function inferSecretType(payload) {
213
+ if ("password" in payload)
214
+ return "login";
215
+ if ("privateKey" in payload)
216
+ return "ssh_key";
217
+ if ("apiKey" in payload)
218
+ return "api_key";
219
+ if ("accessKey" in payload && "secretKey" in payload)
220
+ return "key_pair";
221
+ if ("data" in payload)
222
+ return "other";
223
+ throw new Error("Cannot infer secret_type from payload shape");
224
+ }
225
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vault/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkbox/sdk",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "TypeScript SDK for the Inkbox API",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -13,7 +13,8 @@
13
13
  }
14
14
  },
15
15
  "files": [
16
- "dist"
16
+ "dist",
17
+ "README.md"
17
18
  ],
18
19
  "scripts": {
19
20
  "build": "tsc",
@@ -21,6 +22,9 @@
21
22
  "test:coverage": "vitest run --coverage",
22
23
  "prepublishOnly": "npm run build"
23
24
  },
25
+ "dependencies": {
26
+ "hash-wasm": "^4.11.0"
27
+ },
24
28
  "devDependencies": {
25
29
  "@types/node": "^25.5.0",
26
30
  "@vitest/coverage-v8": "^2.0.0",