dc-ops-cli 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 (62) hide show
  1. package/README.md +310 -0
  2. package/dist/commands/copy.d.ts +23 -0
  3. package/dist/commands/copy.d.ts.map +1 -0
  4. package/dist/commands/copy.js +74 -0
  5. package/dist/commands/copy.js.map +1 -0
  6. package/dist/commands/export.d.ts +14 -0
  7. package/dist/commands/export.d.ts.map +1 -0
  8. package/dist/commands/export.js +111 -0
  9. package/dist/commands/export.js.map +1 -0
  10. package/dist/commands/get.d.ts +31 -0
  11. package/dist/commands/get.d.ts.map +1 -0
  12. package/dist/commands/get.js +142 -0
  13. package/dist/commands/get.js.map +1 -0
  14. package/dist/commands/import.d.ts +27 -0
  15. package/dist/commands/import.d.ts.map +1 -0
  16. package/dist/commands/import.js +129 -0
  17. package/dist/commands/import.js.map +1 -0
  18. package/dist/commands/inspect.d.ts +20 -0
  19. package/dist/commands/inspect.d.ts.map +1 -0
  20. package/dist/commands/inspect.js +73 -0
  21. package/dist/commands/inspect.js.map +1 -0
  22. package/dist/commands/list.d.ts +11 -0
  23. package/dist/commands/list.d.ts.map +1 -0
  24. package/dist/commands/list.js +90 -0
  25. package/dist/commands/list.js.map +1 -0
  26. package/dist/commands/resolve.d.ts +18 -0
  27. package/dist/commands/resolve.d.ts.map +1 -0
  28. package/dist/commands/resolve.js +143 -0
  29. package/dist/commands/resolve.js.map +1 -0
  30. package/dist/commands/run.d.ts +29 -0
  31. package/dist/commands/run.d.ts.map +1 -0
  32. package/dist/commands/run.js +127 -0
  33. package/dist/commands/run.js.map +1 -0
  34. package/dist/commands/set.d.ts +12 -0
  35. package/dist/commands/set.d.ts.map +1 -0
  36. package/dist/commands/set.js +86 -0
  37. package/dist/commands/set.js.map +1 -0
  38. package/dist/commands/vaults.d.ts +18 -0
  39. package/dist/commands/vaults.d.ts.map +1 -0
  40. package/dist/commands/vaults.js +54 -0
  41. package/dist/commands/vaults.js.map +1 -0
  42. package/dist/index.d.ts +3 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +161 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/utils/cli.d.ts +8 -0
  47. package/dist/utils/cli.d.ts.map +1 -0
  48. package/dist/utils/cli.js +53 -0
  49. package/dist/utils/cli.js.map +1 -0
  50. package/dist/utils/io.d.ts +2 -0
  51. package/dist/utils/io.d.ts.map +1 -0
  52. package/dist/utils/io.js +8 -0
  53. package/dist/utils/io.js.map +1 -0
  54. package/dist/utils/op.d.ts +68 -0
  55. package/dist/utils/op.d.ts.map +1 -0
  56. package/dist/utils/op.js +358 -0
  57. package/dist/utils/op.js.map +1 -0
  58. package/dist/utils/types.d.ts +31 -0
  59. package/dist/utils/types.d.ts.map +1 -0
  60. package/dist/utils/types.js +9 -0
  61. package/dist/utils/types.js.map +1 -0
  62. package/package.json +52 -0
@@ -0,0 +1,358 @@
1
+ import { execFileSync, execSync } from 'child_process';
2
+ import { readFileSync } from 'fs';
3
+ import { homedir } from 'os';
4
+ import { join } from 'path';
5
+ import { OpError } from './types.js';
6
+ /**
7
+ * Load service account token from ~/.config/op/sa_token
8
+ */
9
+ function loadServiceAccountToken() {
10
+ try {
11
+ const tokenPath = join(homedir(), '.config', 'op', 'sa_token');
12
+ const token = readFileSync(tokenPath, 'utf-8').trim();
13
+ return token;
14
+ }
15
+ catch {
16
+ return undefined;
17
+ }
18
+ }
19
+ /**
20
+ * Get environment with service account token if available
21
+ */
22
+ function getOpEnv() {
23
+ const token = loadServiceAccountToken();
24
+ const env = { ...process.env };
25
+ if (token) {
26
+ env.OP_SERVICE_ACCOUNT_TOKEN = token;
27
+ }
28
+ return env;
29
+ }
30
+ function formatOpErrorMessage(error) {
31
+ if (!error || typeof error !== 'object') {
32
+ return '';
33
+ }
34
+ const maybeError = error;
35
+ const stderr = maybeError.stderr ? String(maybeError.stderr).trim() : '';
36
+ if (stderr.length > 0) {
37
+ return stderr.split('\n')[0];
38
+ }
39
+ if (maybeError.message) {
40
+ return String(maybeError.message).trim();
41
+ }
42
+ return '';
43
+ }
44
+ function getOpEnvWithoutServiceAccount() {
45
+ const env = { ...process.env };
46
+ delete env.OP_SERVICE_ACCOUNT_TOKEN;
47
+ return env;
48
+ }
49
+ function isShareLinkUnsupported(message) {
50
+ return message.includes('--share-link') && message.includes('unknown');
51
+ }
52
+ function isServiceAccountRestriction(message) {
53
+ return (message.toLowerCase().includes('service account') ||
54
+ message.toLowerCase().includes('vault query must be provided'));
55
+ }
56
+ function runShareLinkAttempts(shareLink, env, execFn) {
57
+ let lastError = '';
58
+ let shareLinkUnsupported = false;
59
+ let serviceAccountRestricted = false;
60
+ const attempts = [
61
+ ['item', 'get', '--share-link', shareLink, '--format=json'],
62
+ ['item', 'get', shareLink, '--format=json'],
63
+ ];
64
+ for (const args of attempts) {
65
+ try {
66
+ const output = execFn('op', args, {
67
+ encoding: 'utf-8',
68
+ stdio: 'pipe',
69
+ env,
70
+ });
71
+ return { item: JSON.parse(output) };
72
+ }
73
+ catch (error) {
74
+ const message = formatOpErrorMessage(error);
75
+ if (message) {
76
+ lastError = message;
77
+ }
78
+ if (isShareLinkUnsupported(message)) {
79
+ shareLinkUnsupported = true;
80
+ }
81
+ if (isServiceAccountRestriction(message)) {
82
+ serviceAccountRestricted = true;
83
+ }
84
+ }
85
+ }
86
+ return { lastError, shareLinkUnsupported, serviceAccountRestricted };
87
+ }
88
+ export function createShareLinkResolver(overrides = {}) {
89
+ const deps = {
90
+ execFileSync,
91
+ getServiceAccountEnv: getOpEnv,
92
+ getUserEnv: getOpEnvWithoutServiceAccount,
93
+ ...overrides,
94
+ };
95
+ return (shareLink) => {
96
+ const primary = runShareLinkAttempts(shareLink, deps.getServiceAccountEnv(), deps.execFileSync);
97
+ if (primary.item) {
98
+ return primary.item;
99
+ }
100
+ if (primary.shareLinkUnsupported) {
101
+ throw new OpError('Share links are not supported by this op CLI version. Update op and try again.', 1);
102
+ }
103
+ if (primary.serviceAccountRestricted) {
104
+ const fallback = runShareLinkAttempts(shareLink, deps.getUserEnv(), deps.execFileSync);
105
+ if (fallback.item) {
106
+ return fallback.item;
107
+ }
108
+ if (fallback.shareLinkUnsupported) {
109
+ throw new OpError('Share links are not supported by this op CLI version. Update op and try again.', 1);
110
+ }
111
+ const suffix = fallback.lastError ? `: ${fallback.lastError}` : '';
112
+ throw new OpError(`Failed to resolve share link${suffix}`, 1);
113
+ }
114
+ const suffix = primary.lastError ? `: ${primary.lastError}` : '';
115
+ throw new OpError(`Failed to resolve share link${suffix}`, 1);
116
+ };
117
+ }
118
+ /**
119
+ * Check if op CLI is installed and user is signed in
120
+ */
121
+ export function checkOpCli() {
122
+ const env = getOpEnv();
123
+ try {
124
+ execSync('op --version', { stdio: 'pipe', env });
125
+ }
126
+ catch {
127
+ throw new OpError('op CLI not found. Install from: https://1password.com/downloads/command-line/', 1);
128
+ }
129
+ try {
130
+ execSync('op account list', { stdio: 'pipe', env });
131
+ }
132
+ catch {
133
+ throw new OpError('Not signed in to 1Password. Run: op signin or opbootstrap', 1);
134
+ }
135
+ }
136
+ /**
137
+ * List items in a vault
138
+ */
139
+ export function listItems(vault = 'Private') {
140
+ const env = getOpEnv();
141
+ try {
142
+ const output = execSync(`op item list --vault="${vault}" --format=json`, { encoding: 'utf-8', stdio: 'pipe', env });
143
+ return JSON.parse(output);
144
+ }
145
+ catch (error) {
146
+ if (error.stderr?.includes('vault')) {
147
+ throw new OpError(`Vault "${vault}" not found`, 1);
148
+ }
149
+ throw new OpError(`Failed to list items: ${error.message}`, 1);
150
+ }
151
+ }
152
+ /**
153
+ * Check if an item exists in the vault (regardless of field)
154
+ */
155
+ export function itemExists(title, vault = 'Private') {
156
+ const env = getOpEnv();
157
+ try {
158
+ execSync(`op item get "${title}" --vault="${vault}" --format=json`, {
159
+ encoding: 'utf-8',
160
+ stdio: 'pipe',
161
+ env,
162
+ });
163
+ return true;
164
+ }
165
+ catch {
166
+ return false;
167
+ }
168
+ }
169
+ /**
170
+ * Get a secret from 1Password
171
+ */
172
+ export function getSecret(reference, vault = 'Private', field = 'password') {
173
+ const env = getOpEnv();
174
+ try {
175
+ // Try direct reference first (op://vault/item/field)
176
+ if (reference.startsWith('op://')) {
177
+ const output = execSync(`op read "${reference}"`, {
178
+ encoding: 'utf-8',
179
+ stdio: 'pipe',
180
+ env,
181
+ });
182
+ return output.trim();
183
+ }
184
+ // Otherwise, construct reference
185
+ const opReference = `op://${vault}/${reference}/${field}`;
186
+ const output = execSync(`op read "${opReference}" 2>/dev/null`, {
187
+ encoding: 'utf-8',
188
+ stdio: 'pipe',
189
+ env,
190
+ });
191
+ return output.trim();
192
+ }
193
+ catch {
194
+ return null;
195
+ }
196
+ }
197
+ /**
198
+ * Create or update a secret in 1Password
199
+ */
200
+ export function setSecret(title, value, vault = 'Private', field = 'password') {
201
+ const env = getOpEnv();
202
+ try {
203
+ // Check if item exists
204
+ const existing = getSecret(title, vault, field);
205
+ if (existing) {
206
+ // Update existing item
207
+ execSync(`op item edit "${title}" --vault="${vault}" "${field}=${value}"`, { stdio: 'pipe', env });
208
+ }
209
+ else {
210
+ // Create new item
211
+ execSync(`op item create --category="password" --title="${title}" --vault="${vault}" "${field}=${value}"`, { stdio: 'pipe', env });
212
+ }
213
+ }
214
+ catch (error) {
215
+ throw new OpError(`Failed to set secret: ${error.message}`, 1);
216
+ }
217
+ }
218
+ /**
219
+ * Create a secret item in 1Password
220
+ */
221
+ export function createItem(title, value, vault = 'Private', field = 'password') {
222
+ const env = getOpEnv();
223
+ try {
224
+ execFileSync('op', [
225
+ 'item',
226
+ 'create',
227
+ '--category=password',
228
+ '--title',
229
+ title,
230
+ '--vault',
231
+ vault,
232
+ `${field}=${value}`,
233
+ ], { stdio: 'pipe', env });
234
+ }
235
+ catch (error) {
236
+ throw new OpError(`Failed to create secret: ${error.message}`, 1);
237
+ }
238
+ }
239
+ /**
240
+ * Update a secret item in 1Password
241
+ */
242
+ export function updateItem(title, value, vault = 'Private', field = 'password') {
243
+ const env = getOpEnv();
244
+ try {
245
+ execFileSync('op', ['item', 'edit', title, '--vault', vault, `${field}=${value}`], { stdio: 'pipe', env });
246
+ }
247
+ catch (error) {
248
+ throw new OpError(`Failed to update secret: ${error.message}`, 1);
249
+ }
250
+ }
251
+ /**
252
+ * Get item details including all fields
253
+ */
254
+ export function getItem(title, vault = 'Private') {
255
+ const env = getOpEnv();
256
+ try {
257
+ const output = execSync(`op item get "${title}" --vault="${vault}" --format=json`, { encoding: 'utf-8', stdio: 'pipe', env });
258
+ return JSON.parse(output);
259
+ }
260
+ catch {
261
+ return null;
262
+ }
263
+ }
264
+ /**
265
+ * Get available field labels for an item
266
+ */
267
+ export function getItemFields(title, vault = 'Private') {
268
+ const item = getItem(title, vault);
269
+ if (!item?.fields)
270
+ return [];
271
+ return item.fields
272
+ .filter((f) => f.label && f.label.length > 0)
273
+ .map((f) => f.label);
274
+ }
275
+ /**
276
+ * Resolve a 1Password share link into an item payload.
277
+ */
278
+ const resolveShareLink = createShareLinkResolver();
279
+ export function getItemFromShareLink(shareLink) {
280
+ return resolveShareLink(shareLink);
281
+ }
282
+ /**
283
+ * List favorite items in a vault
284
+ */
285
+ export function listFavorites(vault = 'Private') {
286
+ const env = getOpEnv();
287
+ try {
288
+ const output = execSync(`op item list --vault="${vault}" --favorite --format=json`, { encoding: 'utf-8', stdio: 'pipe', env });
289
+ return JSON.parse(output);
290
+ }
291
+ catch (error) {
292
+ if (error.stderr?.includes('vault')) {
293
+ throw new OpError(`Vault "${vault}" not found`, 1);
294
+ }
295
+ throw new OpError(`Failed to list favorites: ${error.message}`, 1);
296
+ }
297
+ }
298
+ /**
299
+ * Search for items by title
300
+ */
301
+ export function searchItems(query, vault = 'Private') {
302
+ const items = listItems(vault);
303
+ return items.filter((item) => item.title.toLowerCase().includes(query.toLowerCase()));
304
+ }
305
+ /**
306
+ * Find similar item names using simple string matching
307
+ */
308
+ export function findSimilarItems(query, vault = 'Private', maxResults = 3) {
309
+ const items = listItems(vault);
310
+ const queryLower = query.toLowerCase();
311
+ // Score items by similarity
312
+ const scored = items
313
+ .map((item) => {
314
+ const titleLower = item.title.toLowerCase();
315
+ let score = 0;
316
+ // Exact substring match
317
+ if (titleLower.includes(queryLower) || queryLower.includes(titleLower)) {
318
+ score += 50;
319
+ }
320
+ // Word overlap
321
+ const queryWords = queryLower.split(/[_\-\s]+/);
322
+ const titleWords = titleLower.split(/[_\-\s]+/);
323
+ for (const qw of queryWords) {
324
+ for (const tw of titleWords) {
325
+ if (tw.includes(qw) || qw.includes(tw)) {
326
+ score += 20;
327
+ }
328
+ }
329
+ }
330
+ // Character overlap ratio
331
+ const commonChars = [...queryLower].filter((c) => titleLower.includes(c)).length;
332
+ score += Math.floor((commonChars / queryLower.length) * 30);
333
+ return { title: item.title, score };
334
+ })
335
+ .filter((item) => item.score > 20)
336
+ .sort((a, b) => b.score - a.score)
337
+ .slice(0, maxResults);
338
+ return scored.map((item) => item.title);
339
+ }
340
+ /**
341
+ * List all vaults accessible to the user
342
+ */
343
+ export function listVaults() {
344
+ const env = getOpEnv();
345
+ try {
346
+ const output = execSync('op vault list --format=json', {
347
+ encoding: 'utf-8',
348
+ stdio: 'pipe',
349
+ env,
350
+ });
351
+ return JSON.parse(output);
352
+ }
353
+ catch (error) {
354
+ const message = formatOpErrorMessage(error);
355
+ throw new OpError(`Failed to list vaults${message ? ': ' + message : ''}`, 1);
356
+ }
357
+ }
358
+ //# sourceMappingURL=op.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op.js","sourceRoot":"","sources":["../../src/utils/op.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAU,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,SAAS,uBAAuB;IAC9B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ;IACf,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE/B,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,wBAAwB,GAAG,KAAK,CAAC;IACvC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,KAAuD,CAAC;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,6BAA6B;IACpC,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,OAAO,GAAG,CAAC,wBAAwB,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC7C,OAAO,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,2BAA2B,CAAC,OAAe;IAClD,OAAO,CACL,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACjD,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAC/D,CAAC;AACJ,CAAC;AAQD,SAAS,oBAAoB,CAC3B,SAAiB,EACjB,GAAsB,EACtB,MAA2B;IAE3B,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,wBAAwB,GAAG,KAAK,CAAC;IAErC,MAAM,QAAQ,GAAe;QAC3B,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,CAAC;QAC3D,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC;KAC5C,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;gBAChC,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,MAAM;gBACb,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAW,EAAE,CAAC;QAChD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,OAAO,EAAE,CAAC;gBACZ,SAAS,GAAG,OAAO,CAAC;YACtB,CAAC;YACD,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,oBAAoB,GAAG,IAAI,CAAC;YAC9B,CAAC;YACD,IAAI,2BAA2B,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,wBAAwB,GAAG,IAAI,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,YAA4C,EAAE;IAE9C,MAAM,IAAI,GAA0B;QAClC,YAAY;QACZ,oBAAoB,EAAE,QAAQ;QAC9B,UAAU,EAAE,6BAA6B;QACzC,GAAG,SAAS;KACb,CAAC;IAEF,OAAO,CAAC,SAAiB,EAAU,EAAE;QACnC,MAAM,OAAO,GAAG,oBAAoB,CAClC,SAAS,EACT,IAAI,CAAC,oBAAoB,EAAE,EAC3B,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QAED,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACjC,MAAM,IAAI,OAAO,CACf,gFAAgF,EAChF,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,oBAAoB,CACnC,SAAS,EACT,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,YAAY,CAClB,CAAC;YAEF,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YAED,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC;gBAClC,MAAM,IAAI,OAAO,CACf,gFAAgF,EAChF,CAAC,CACF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,OAAO,CAAC,+BAA+B,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,OAAO,CAAC,+BAA+B,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,QAAQ,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,OAAO,CACf,+EAA+E,EAC/E,CAAC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,OAAO,CACf,2DAA2D,EAC3D,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB,SAAS;IACjD,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CACrB,yBAAyB,KAAK,iBAAiB,EAC/C,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAC1C,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,KAAa,EACb,QAAgB,SAAS;IAEzB,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,QAAQ,CAAC,gBAAgB,KAAK,cAAc,KAAK,iBAAiB,EAAE;YAClE,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;YACb,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,SAAiB,EACjB,QAAgB,SAAS,EACzB,QAAgB,UAAU;IAE1B,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,qDAAqD;QACrD,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,SAAS,GAAG,EAAE;gBAChD,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,MAAM;gBACb,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QAED,iCAAiC;QACjC,MAAM,WAAW,GAAG,QAAQ,KAAK,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,WAAW,eAAe,EAAE;YAC9D,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;YACb,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,KAAa,EACb,KAAa,EACb,QAAgB,SAAS,EACzB,QAAgB,UAAU;IAE1B,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,uBAAuB;QACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEhD,IAAI,QAAQ,EAAE,CAAC;YACb,uBAAuB;YACvB,QAAQ,CACN,iBAAiB,KAAK,cAAc,KAAK,MAAM,KAAK,IAAI,KAAK,GAAG,EAChE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CACvB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,QAAQ,CACN,iDAAiD,KAAK,cAAc,KAAK,MAAM,KAAK,IAAI,KAAK,GAAG,EAChG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CACvB,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,OAAO,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,KAAa,EACb,KAAa,EACb,QAAgB,SAAS,EACzB,QAAgB,UAAU;IAE1B,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,YAAY,CACV,IAAI,EACJ;YACE,MAAM;YACN,QAAQ;YACR,qBAAqB;YACrB,SAAS;YACT,KAAK;YACL,SAAS;YACT,KAAK;YACL,GAAG,KAAK,IAAI,KAAK,EAAE;SACpB,EACD,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CACvB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,OAAO,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,KAAa,EACb,KAAa,EACb,QAAgB,SAAS,EACzB,QAAgB,UAAU;IAE1B,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,YAAY,CACV,IAAI,EACJ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC,EAC9D,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CACvB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,OAAO,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,QAAgB,SAAS;IAC9D,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CACrB,gBAAgB,KAAK,cAAc,KAAK,iBAAiB,EACzD,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAC1C,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,QAAgB,SAAS;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAE7B,OAAO,IAAI,CAAC,MAAM;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,gBAAgB,GAAG,uBAAuB,EAAE,CAAC;AAEnD,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,SAAS;IACrD,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CACrB,yBAAyB,KAAK,4BAA4B,EAC1D,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAC1C,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,QAAgB,SAAS;IAClE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,QAAgB,SAAS,EACzB,aAAqB,CAAC;IAEtB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEvC,4BAA4B;IAC5B,MAAM,MAAM,GAAG,KAAK;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,wBAAwB;QACxB,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,KAAK,IAAI,EAAE,CAAC;QACd,CAAC;QAED,eAAe;QACf,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChD,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;gBAC5B,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;oBACvC,KAAK,IAAI,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,WAAW,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACjF,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAE5D,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SACjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SACjC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAExB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAQD;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,6BAA6B,EAAE;YACrD,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;YACb,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,IAAI,OAAO,CAAC,wBAAwB,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ export interface OpItem {
2
+ id: string;
3
+ title: string;
4
+ vault: string;
5
+ category: string;
6
+ favorite?: boolean;
7
+ fields?: OpField[];
8
+ }
9
+ export interface OpField {
10
+ id: string;
11
+ type: string;
12
+ label: string;
13
+ value?: string;
14
+ }
15
+ export interface SecretConfig {
16
+ vault?: string;
17
+ field?: string;
18
+ }
19
+ export interface ExportOptions {
20
+ vault?: string;
21
+ format?: 'env' | 'json';
22
+ json?: boolean;
23
+ output?: string;
24
+ quiet?: boolean;
25
+ color?: boolean;
26
+ }
27
+ export declare class OpError extends Error {
28
+ exitCode: number;
29
+ constructor(message: string, exitCode?: number);
30
+ }
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,OAAQ,SAAQ,KAAK;IAGvB,QAAQ,EAAE,MAAM;gBADvB,OAAO,EAAE,MAAM,EACR,QAAQ,GAAE,MAAU;CAK9B"}
@@ -0,0 +1,9 @@
1
+ export class OpError extends Error {
2
+ exitCode;
3
+ constructor(message, exitCode = 1) {
4
+ super(message);
5
+ this.exitCode = exitCode;
6
+ this.name = 'OpError';
7
+ }
8
+ }
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAGvB;IAFT,YACE,OAAe,EACR,WAAmB,CAAC;QAE3B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,aAAQ,GAAR,QAAQ,CAAY;QAG3B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACxB,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "dc-ops-cli",
3
+ "version": "1.0.0",
4
+ "description": "Easy secret retrieval from 1Password with smart fallbacks",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "ops": "./dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "scripts": {
17
+ "build:bin": "bun build --compile src/index.ts --outfile bin/ops",
18
+ "build": "tsc",
19
+ "dev": "ts-node src/index.ts",
20
+ "typecheck": "tsc --noEmit",
21
+ "lint": "tsc --noEmit",
22
+ "test": "TS_NODE_TRANSPILE_ONLY=1 node --test --loader ts-node/esm",
23
+ "prepublishOnly": "npm run build"
24
+ },
25
+ "keywords": [
26
+ "1password",
27
+ "secrets",
28
+ "cli",
29
+ "security"
30
+ ],
31
+ "author": "",
32
+ "license": "MIT",
33
+ "dependencies": {
34
+ "chalk": "^5.3.0",
35
+ "clipboardy": "^3.0.0",
36
+ "commander": "^11.1.0",
37
+ "cross-spawn": "^7.0.3",
38
+ "dotenv": "^16.4.5",
39
+ "inquirer": "^9.2.12",
40
+ "ora": "^7.0.1"
41
+ },
42
+ "devDependencies": {
43
+ "@types/cross-spawn": "^6.0.2",
44
+ "@types/inquirer": "^9.0.7",
45
+ "@types/node": "^20.10.6",
46
+ "ts-node": "^10.9.2",
47
+ "typescript": "^5.3.3"
48
+ },
49
+ "engines": {
50
+ "node": ">=18.0.0"
51
+ }
52
+ }