latchkey 1.0.1 → 2.1.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 (224) hide show
  1. package/README.md +66 -8
  2. package/dist/integrations/SKILL.md +15 -3
  3. package/dist/package.json +2 -2
  4. package/dist/scripts/codegen.js +1 -1
  5. package/dist/scripts/codegen.js.map +1 -1
  6. package/dist/src/apiCredentialStore.d.ts +1 -1
  7. package/dist/src/apiCredentialStore.d.ts.map +1 -1
  8. package/dist/src/apiCredentialStore.js +1 -1
  9. package/dist/src/apiCredentialStore.js.map +1 -1
  10. package/dist/src/apiCredentials.d.ts +13 -115
  11. package/dist/src/apiCredentials.d.ts.map +1 -1
  12. package/dist/src/apiCredentials.js +10 -101
  13. package/dist/src/apiCredentials.js.map +1 -1
  14. package/dist/src/apiCredentialsSerialization.d.ts +119 -0
  15. package/dist/src/apiCredentialsSerialization.d.ts.map +1 -0
  16. package/dist/src/apiCredentialsSerialization.js +90 -0
  17. package/dist/src/apiCredentialsSerialization.js.map +1 -0
  18. package/dist/src/browserConfig.d.ts +2 -33
  19. package/dist/src/browserConfig.d.ts.map +1 -1
  20. package/dist/src/browserConfig.js +6 -81
  21. package/dist/src/browserConfig.js.map +1 -1
  22. package/dist/src/cli.js +22 -0
  23. package/dist/src/cli.js.map +1 -1
  24. package/dist/src/cliCommands.d.ts +0 -1
  25. package/dist/src/cliCommands.d.ts.map +1 -1
  26. package/dist/src/cliCommands.js +148 -44
  27. package/dist/src/cliCommands.js.map +1 -1
  28. package/dist/src/config.d.ts +4 -3
  29. package/dist/src/config.d.ts.map +1 -1
  30. package/dist/src/config.js +17 -23
  31. package/dist/src/config.js.map +1 -1
  32. package/dist/src/configDataStore.d.ts +43 -0
  33. package/dist/src/configDataStore.d.ts.map +1 -0
  34. package/dist/src/configDataStore.js +108 -0
  35. package/dist/src/configDataStore.js.map +1 -0
  36. package/dist/src/curl.d.ts +10 -0
  37. package/dist/src/curl.d.ts.map +1 -1
  38. package/dist/src/curl.js +88 -0
  39. package/dist/src/curl.js.map +1 -1
  40. package/dist/src/encryptedStorage.d.ts +9 -0
  41. package/dist/src/encryptedStorage.d.ts.map +1 -1
  42. package/dist/src/encryptedStorage.js +12 -0
  43. package/dist/src/encryptedStorage.js.map +1 -1
  44. package/dist/src/index.d.ts +4 -2
  45. package/dist/src/index.d.ts.map +1 -1
  46. package/dist/src/index.js +4 -2
  47. package/dist/src/index.js.map +1 -1
  48. package/dist/src/migrations.d.ts +9 -0
  49. package/dist/src/migrations.d.ts.map +1 -0
  50. package/dist/src/migrations.js +77 -0
  51. package/dist/src/migrations.js.map +1 -0
  52. package/dist/src/oauthUtils.d.ts +4 -1
  53. package/dist/src/oauthUtils.d.ts.map +1 -1
  54. package/dist/src/oauthUtils.js +1 -1
  55. package/dist/src/oauthUtils.js.map +1 -1
  56. package/dist/src/playwrightUtils.d.ts +2 -2
  57. package/dist/src/playwrightUtils.d.ts.map +1 -1
  58. package/dist/src/playwrightUtils.js +4 -4
  59. package/dist/src/playwrightUtils.js.map +1 -1
  60. package/dist/src/registeredService.d.ts +20 -0
  61. package/dist/src/registeredService.d.ts.map +1 -0
  62. package/dist/src/registeredService.js +34 -0
  63. package/dist/src/registeredService.js.map +1 -0
  64. package/dist/src/registeredServiceStore.d.ts +24 -0
  65. package/dist/src/registeredServiceStore.d.ts.map +1 -0
  66. package/dist/src/registeredServiceStore.js +70 -0
  67. package/dist/src/registeredServiceStore.js.map +1 -0
  68. package/dist/src/registry.d.ts +11 -1
  69. package/dist/src/registry.d.ts.map +1 -1
  70. package/dist/src/registry.js +70 -6
  71. package/dist/src/registry.js.map +1 -1
  72. package/dist/src/services/aws.d.ts +44 -0
  73. package/dist/src/services/aws.d.ts.map +1 -0
  74. package/dist/src/services/aws.js +237 -0
  75. package/dist/src/services/aws.js.map +1 -0
  76. package/dist/src/services/base.d.ts +14 -0
  77. package/dist/src/services/base.d.ts.map +1 -1
  78. package/dist/src/services/base.js +23 -11
  79. package/dist/src/services/base.js.map +1 -1
  80. package/dist/src/services/calendly.d.ts +12 -0
  81. package/dist/src/services/calendly.d.ts.map +1 -0
  82. package/dist/src/services/calendly.js +18 -0
  83. package/dist/src/services/calendly.js.map +1 -0
  84. package/dist/src/services/core/base.d.ts +141 -0
  85. package/dist/src/services/core/base.d.ts.map +1 -0
  86. package/dist/src/services/core/base.js +189 -0
  87. package/dist/src/services/core/base.js.map +1 -0
  88. package/dist/src/services/core/registered.d.ts +24 -0
  89. package/dist/src/services/core/registered.d.ts.map +1 -0
  90. package/dist/src/services/core/registered.js +53 -0
  91. package/dist/src/services/core/registered.js.map +1 -0
  92. package/dist/src/services/discord.d.ts +2 -1
  93. package/dist/src/services/discord.d.ts.map +1 -1
  94. package/dist/src/services/discord.js +4 -1
  95. package/dist/src/services/discord.js.map +1 -1
  96. package/dist/src/services/dropbox.d.ts +3 -2
  97. package/dist/src/services/dropbox.d.ts.map +1 -1
  98. package/dist/src/services/dropbox.js +6 -1
  99. package/dist/src/services/dropbox.js.map +1 -1
  100. package/dist/src/services/figma.d.ts +12 -0
  101. package/dist/src/services/figma.d.ts.map +1 -0
  102. package/dist/src/services/figma.js +14 -0
  103. package/dist/src/services/figma.js.map +1 -0
  104. package/dist/src/services/github.d.ts +2 -1
  105. package/dist/src/services/github.d.ts.map +1 -1
  106. package/dist/src/services/github.js +4 -1
  107. package/dist/src/services/github.js.map +1 -1
  108. package/dist/src/services/gitlab.d.ts +12 -0
  109. package/dist/src/services/gitlab.d.ts.map +1 -0
  110. package/dist/src/services/gitlab.js +14 -0
  111. package/dist/src/services/gitlab.js.map +1 -0
  112. package/dist/src/services/google/analytics.d.ts +11 -0
  113. package/dist/src/services/google/analytics.d.ts.map +1 -0
  114. package/dist/src/services/google/analytics.js +22 -0
  115. package/dist/src/services/google/analytics.js.map +1 -0
  116. package/dist/src/services/google/base.d.ts +73 -0
  117. package/dist/src/services/google/base.d.ts.map +1 -0
  118. package/dist/src/services/google/base.js +323 -0
  119. package/dist/src/services/google/base.js.map +1 -0
  120. package/dist/src/services/google/calendar.d.ts +11 -0
  121. package/dist/src/services/google/calendar.d.ts.map +1 -0
  122. package/dist/src/services/google/calendar.js +22 -0
  123. package/dist/src/services/google/calendar.js.map +1 -0
  124. package/dist/src/services/google/directions.d.ts +14 -0
  125. package/dist/src/services/google/directions.d.ts.map +1 -0
  126. package/dist/src/services/google/directions.js +49 -0
  127. package/dist/src/services/google/directions.js.map +1 -0
  128. package/dist/src/services/google/docs.d.ts +11 -0
  129. package/dist/src/services/google/docs.d.ts.map +1 -0
  130. package/dist/src/services/google/docs.js +19 -0
  131. package/dist/src/services/google/docs.js.map +1 -0
  132. package/dist/src/services/google/drive.d.ts +11 -0
  133. package/dist/src/services/google/drive.d.ts.map +1 -0
  134. package/dist/src/services/google/drive.js +19 -0
  135. package/dist/src/services/google/drive.js.map +1 -0
  136. package/dist/src/services/google/gmail.d.ts +11 -0
  137. package/dist/src/services/google/gmail.d.ts.map +1 -0
  138. package/dist/src/services/google/gmail.js +24 -0
  139. package/dist/src/services/google/gmail.js.map +1 -0
  140. package/dist/src/services/google/maps.d.ts +39 -0
  141. package/dist/src/services/google/maps.d.ts.map +1 -0
  142. package/dist/src/services/google/maps.js +94 -0
  143. package/dist/src/services/google/maps.js.map +1 -0
  144. package/dist/src/services/google/people.d.ts +11 -0
  145. package/dist/src/services/google/people.d.ts.map +1 -0
  146. package/dist/src/services/google/people.js +22 -0
  147. package/dist/src/services/google/people.js.map +1 -0
  148. package/dist/src/services/google/sheets.d.ts +11 -0
  149. package/dist/src/services/google/sheets.d.ts.map +1 -0
  150. package/dist/src/services/google/sheets.js +19 -0
  151. package/dist/src/services/google/sheets.js.map +1 -0
  152. package/dist/src/services/googleAnalytics.d.ts +11 -0
  153. package/dist/src/services/googleAnalytics.d.ts.map +1 -0
  154. package/dist/src/services/googleAnalytics.js +18 -0
  155. package/dist/src/services/googleAnalytics.js.map +1 -0
  156. package/dist/src/services/googleMaps.d.ts +12 -0
  157. package/dist/src/services/googleMaps.d.ts.map +1 -0
  158. package/dist/src/services/googleMaps.js +17 -0
  159. package/dist/src/services/googleMaps.js.map +1 -0
  160. package/dist/src/services/index.d.ts +21 -3
  161. package/dist/src/services/index.d.ts.map +1 -1
  162. package/dist/src/services/index.js +21 -3
  163. package/dist/src/services/index.js.map +1 -1
  164. package/dist/src/services/linear.d.ts +2 -1
  165. package/dist/src/services/linear.d.ts.map +1 -1
  166. package/dist/src/services/linear.js +4 -1
  167. package/dist/src/services/linear.js.map +1 -1
  168. package/dist/src/services/mailchimp.d.ts +3 -2
  169. package/dist/src/services/mailchimp.d.ts.map +1 -1
  170. package/dist/src/services/mailchimp.js +5 -4
  171. package/dist/src/services/mailchimp.js.map +1 -1
  172. package/dist/src/services/notion.d.ts +2 -1
  173. package/dist/src/services/notion.d.ts.map +1 -1
  174. package/dist/src/services/notion.js +4 -1
  175. package/dist/src/services/notion.js.map +1 -1
  176. package/dist/src/services/sentry.d.ts +14 -0
  177. package/dist/src/services/sentry.d.ts.map +1 -0
  178. package/dist/src/services/sentry.js +43 -0
  179. package/dist/src/services/sentry.js.map +1 -0
  180. package/dist/src/services/slack.d.ts +31 -2
  181. package/dist/src/services/slack.d.ts.map +1 -1
  182. package/dist/src/services/slack.js +46 -3
  183. package/dist/src/services/slack.js.map +1 -1
  184. package/dist/src/services/stripe.d.ts +12 -0
  185. package/dist/src/services/stripe.d.ts.map +1 -0
  186. package/dist/src/services/stripe.js +14 -0
  187. package/dist/src/services/stripe.js.map +1 -0
  188. package/dist/src/services/telegram.d.ts +40 -0
  189. package/dist/src/services/telegram.d.ts.map +1 -0
  190. package/dist/src/services/telegram.js +73 -0
  191. package/dist/src/services/telegram.js.map +1 -0
  192. package/dist/src/services/yelp.d.ts +12 -0
  193. package/dist/src/services/yelp.d.ts.map +1 -0
  194. package/dist/src/services/yelp.js +16 -0
  195. package/dist/src/services/yelp.js.map +1 -0
  196. package/dist/src/services/zoom.d.ts +12 -0
  197. package/dist/src/services/zoom.d.ts.map +1 -0
  198. package/dist/src/services/zoom.js +18 -0
  199. package/dist/src/services/zoom.js.map +1 -0
  200. package/dist/tests/apiCredentialStore.test.js +2 -19
  201. package/dist/tests/apiCredentialStore.test.js.map +1 -1
  202. package/dist/tests/apiCredentials.test.js +139 -178
  203. package/dist/tests/apiCredentials.test.js.map +1 -1
  204. package/dist/tests/cli.test.js +755 -255
  205. package/dist/tests/cli.test.js.map +1 -1
  206. package/dist/tests/encryptedStorage.test.js +0 -4
  207. package/dist/tests/encryptedStorage.test.js.map +1 -1
  208. package/dist/tests/encryptedStorageKeyGeneration.test.d.ts +2 -0
  209. package/dist/tests/encryptedStorageKeyGeneration.test.d.ts.map +1 -0
  210. package/dist/tests/encryptedStorageKeyGeneration.test.js +22 -0
  211. package/dist/tests/encryptedStorageKeyGeneration.test.js.map +1 -0
  212. package/dist/tests/encryption.test.js +3 -35
  213. package/dist/tests/encryption.test.js.map +1 -1
  214. package/dist/tests/migrations.test.d.ts +2 -0
  215. package/dist/tests/migrations.test.d.ts.map +1 -0
  216. package/dist/tests/migrations.test.js +164 -0
  217. package/dist/tests/migrations.test.js.map +1 -0
  218. package/dist/tests/playwrightDownload.test.js +2 -65
  219. package/dist/tests/playwrightDownload.test.js.map +1 -1
  220. package/dist/tests/registry.test.js +147 -75
  221. package/dist/tests/registry.test.js.map +1 -1
  222. package/dist/tests/servicesAgainstRecordings.test.js +2 -2
  223. package/dist/tests/servicesAgainstRecordings.test.js.map +1 -1
  224. package/package.json +2 -2
@@ -2,36 +2,18 @@ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
2
  import { mkdtempSync, rmSync, writeFileSync, existsSync, statSync } from 'node:fs';
3
3
  import { tmpdir, platform } from 'node:os';
4
4
  import { join } from 'node:path';
5
- import { getChromiumExecutable, downloadFile, extractZip, setExecutablePermissions, BrowserDownloadError, BrowserExtractionError, } from '../src/playwrightDownload.js';
5
+ import { getChromiumExecutable, downloadFile, setExecutablePermissions, BrowserDownloadError, } from '../src/playwrightDownload.js';
6
6
  describe('playwrightDownload', () => {
7
7
  describe('getChromiumExecutable', () => {
8
- it('should return Chromium executable info from Playwright registry', () => {
8
+ it('should return Chromium executable info with download URLs', () => {
9
9
  const executable = getChromiumExecutable();
10
- expect(executable).toBeDefined();
11
10
  expect(executable.name).toBe('chromium');
12
11
  expect(executable.directory).toBeDefined();
13
- expect(typeof executable.directory).toBe('string');
14
- expect(executable.executablePath.bind(executable)).toBeDefined();
15
- expect(typeof executable.executablePath).toBe('function');
16
- });
17
- it('should return download URLs for Chromium', () => {
18
- const executable = getChromiumExecutable();
19
- expect(executable.downloadURLs).toBeDefined();
20
- expect(Array.isArray(executable.downloadURLs)).toBe(true);
21
12
  expect(executable.downloadURLs.length).toBeGreaterThan(0);
22
- // Each URL should be a valid HTTPS URL pointing to Chrome/Chromium
23
13
  for (const url of executable.downloadURLs) {
24
14
  expect(url).toMatch(/^https:\/\//);
25
- expect(url).toMatch(/chromium|chrome/);
26
15
  }
27
16
  });
28
- it('should return an executable path function', () => {
29
- const executable = getChromiumExecutable();
30
- const path = executable.executablePath('javascript');
31
- expect(path).toBeDefined();
32
- expect(typeof path).toBe('string');
33
- expect(path.length).toBeGreaterThan(0);
34
- });
35
17
  });
36
18
  describe('downloadFile', () => {
37
19
  let tempDir;
@@ -53,37 +35,6 @@ describe('playwrightDownload', () => {
53
35
  const destinationPath = join(tempDir, 'test-file.txt');
54
36
  await expect(downloadFile('https://httpbin.org/status/404', destinationPath)).rejects.toThrow(BrowserDownloadError);
55
37
  }, 30000);
56
- it('should create parent directories if they do not exist', async () => {
57
- const nestedPath = join(tempDir, 'nested', 'directory', 'test-file.txt');
58
- await downloadFile('https://httpbin.org/robots.txt', nestedPath);
59
- expect(existsSync(nestedPath)).toBe(true);
60
- }, 30000);
61
- it('should handle redirects', async () => {
62
- const destinationPath = join(tempDir, 'redirected-file.txt');
63
- // httpbin.org/redirect-to redirects to the specified URL
64
- await downloadFile('https://httpbin.org/redirect-to?url=https%3A%2F%2Fhttpbin.org%2Frobots.txt', destinationPath);
65
- expect(existsSync(destinationPath)).toBe(true);
66
- }, 30000);
67
- });
68
- describe('extractZip', () => {
69
- let tempDir;
70
- beforeEach(() => {
71
- tempDir = mkdtempSync(join(tmpdir(), 'latchkey-extract-test-'));
72
- });
73
- afterEach(() => {
74
- rmSync(tempDir, { recursive: true, force: true });
75
- });
76
- it('should create destination directory if it does not exist', async () => {
77
- const destinationDir = join(tempDir, 'non-existent-dir');
78
- // This will fail because there's no valid zip, but the directory should be created
79
- try {
80
- await extractZip(join(tempDir, 'fake.zip'), destinationDir);
81
- }
82
- catch {
83
- // Expected to fail, but directory should exist
84
- }
85
- expect(existsSync(destinationDir)).toBe(true);
86
- });
87
38
  });
88
39
  describe('setExecutablePermissions', () => {
89
40
  let tempDir;
@@ -113,19 +64,5 @@ describe('playwrightDownload', () => {
113
64
  }).not.toThrow();
114
65
  });
115
66
  });
116
- describe('error classes', () => {
117
- it('BrowserDownloadError should have correct name', () => {
118
- const error = new BrowserDownloadError('test message');
119
- expect(error.name).toBe('BrowserDownloadError');
120
- expect(error.message).toBe('test message');
121
- expect(error instanceof Error).toBe(true);
122
- });
123
- it('BrowserExtractionError should have correct name', () => {
124
- const error = new BrowserExtractionError('test message');
125
- expect(error.name).toBe('BrowserExtractionError');
126
- expect(error.message).toBe('test message');
127
- expect(error instanceof Error).toBe(true);
128
- });
129
- });
130
67
  });
131
68
  //# sourceMappingURL=playwrightDownload.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"playwrightDownload.test.js","sourceRoot":"","sources":["../../tests/playwrightDownload.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playwrightDownload.test.js","sourceRoot":"","sources":["../../tests/playwrightDownload.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAEtC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;YAE3C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,CAAC,UAAU,CAAC,YAAa,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAE3D,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,YAAa,EAAE,CAAC;gBAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,IAAI,OAAe,CAAC;QAEpB,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACb,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAEvD,iCAAiC;YACjC,MAAM,YAAY,CAAC,gCAAgC,EAAE,eAAe,CAAC,CAAC;YAEtE,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAEvD,MAAM,MAAM,CAAC,YAAY,CAAC,gCAAgC,EAAE,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC3F,oBAAoB,CACrB,CAAC;QACJ,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,OAAe,CAAC;QAEpB,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACb,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,IAAI,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;gBAC3B,uDAAuD;gBACvD,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;YAClD,aAAa,CAAC,QAAQ,EAAE,wBAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAEnE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;YAEnC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjC,iEAAiE;YACjE,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YAE3D,mBAAmB;YACnB,MAAM,CAAC,GAAG,EAAE;gBACV,wBAAwB,CAAC,eAAe,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,94 +1,75 @@
1
1
  import { describe, it, expect } from 'vitest';
2
- import { Registry, REGISTRY } from '../src/registry.js';
3
- import { SLACK, DISCORD, GITHUB, DROPBOX, LINEAR, NOTION, GOOGLE, MAILCHIMP, } from '../src/services/index.js';
2
+ import { DuplicateServiceNameError, InvalidServiceNameError, Registry, REGISTRY, canonicalizeServiceName, } from '../src/registry.js';
3
+ import { RegisteredService } from '../src/services/core/registered.js';
4
+ import { SLACK, DISCORD, GITHUB, DROPBOX, LINEAR, NOTION, GOOGLE_GMAIL, GOOGLE_CALENDAR, GOOGLE_DRIVE, GOOGLE_SHEETS, GOOGLE_DOCS, GOOGLE_PEOPLE, MAILCHIMP, GITLAB, AWS, TELEGRAM, } from '../src/services/index.js';
4
5
  describe('Registry', () => {
5
6
  describe('getByName', () => {
6
- it('should find Slack by name', () => {
7
- expect(REGISTRY.getByName('slack')).toBe(SLACK);
8
- });
9
- it('should find Discord by name', () => {
10
- expect(REGISTRY.getByName('discord')).toBe(DISCORD);
11
- });
12
- it('should find GitHub by name', () => {
13
- expect(REGISTRY.getByName('github')).toBe(GITHUB);
14
- });
15
- it('should find Dropbox by name', () => {
16
- expect(REGISTRY.getByName('dropbox')).toBe(DROPBOX);
17
- });
18
- it('should find Linear by name', () => {
19
- expect(REGISTRY.getByName('linear')).toBe(LINEAR);
20
- });
21
- it('should find Google by name', () => {
22
- expect(REGISTRY.getByName('google')).toBe(GOOGLE);
23
- });
24
- it('should find Notion by name', () => {
25
- expect(REGISTRY.getByName('notion')).toBe(NOTION);
26
- });
27
- it('should find Mailchimp by name', () => {
28
- expect(REGISTRY.getByName('mailchimp')).toBe(MAILCHIMP);
29
- });
7
+ const namedServices = [
8
+ ['slack', SLACK],
9
+ ['discord', DISCORD],
10
+ ['github', GITHUB],
11
+ ['dropbox', DROPBOX],
12
+ ['linear', LINEAR],
13
+ ['notion', NOTION],
14
+ ['google-gmail', GOOGLE_GMAIL],
15
+ ['google-calendar', GOOGLE_CALENDAR],
16
+ ['google-drive', GOOGLE_DRIVE],
17
+ ['google-sheets', GOOGLE_SHEETS],
18
+ ['google-docs', GOOGLE_DOCS],
19
+ ['google-people', GOOGLE_PEOPLE],
20
+ ['mailchimp', MAILCHIMP],
21
+ ['aws', AWS],
22
+ ['telegram', TELEGRAM],
23
+ ];
24
+ for (const [name, service] of namedServices) {
25
+ it(`should find ${name} by name`, () => {
26
+ expect(REGISTRY.getByName(name)).toBe(service);
27
+ });
28
+ }
30
29
  it('should return null for unknown service', () => {
31
30
  expect(REGISTRY.getByName('unknown')).toBeNull();
32
31
  });
33
32
  it('should be case-sensitive', () => {
34
33
  expect(REGISTRY.getByName('Slack')).toBeNull();
35
- expect(REGISTRY.getByName('SLACK')).toBeNull();
36
34
  });
37
35
  });
38
36
  describe('getByUrl', () => {
39
- it('should find Slack by API URL', () => {
40
- expect(REGISTRY.getByUrl('https://slack.com/api/auth.test')).toBe(SLACK);
41
- expect(REGISTRY.getByUrl('https://slack.com/api/users.list')).toBe(SLACK);
42
- });
43
- it('should find Discord by API URL', () => {
44
- expect(REGISTRY.getByUrl('https://discord.com/api/v9/users/@me')).toBe(DISCORD);
45
- expect(REGISTRY.getByUrl('https://discord.com/api/guilds')).toBe(DISCORD);
46
- });
47
- it('should find GitHub by API URL', () => {
48
- expect(REGISTRY.getByUrl('https://api.github.com/user')).toBe(GITHUB);
49
- expect(REGISTRY.getByUrl('https://api.github.com/repos')).toBe(GITHUB);
50
- });
51
- it('should find Dropbox by API URL', () => {
52
- expect(REGISTRY.getByUrl('https://api.dropboxapi.com/2/users/get_current_account')).toBe(DROPBOX);
53
- expect(REGISTRY.getByUrl('https://content.dropboxapi.com/upload')).toBe(DROPBOX);
54
- expect(REGISTRY.getByUrl('https://notify.dropboxapi.com/subscribe')).toBe(DROPBOX);
55
- });
56
- it('should find Linear by API URL', () => {
57
- expect(REGISTRY.getByUrl('https://api.linear.app/graphql')).toBe(LINEAR);
58
- });
59
- it('should find Google by API URL', () => {
60
- expect(REGISTRY.getByUrl('https://www.googleapis.com/gmail/v1/users/me/profile')).toBe(GOOGLE);
61
- });
62
- it('should find Notion by API URL', () => {
63
- expect(REGISTRY.getByUrl('https://api.notion.com/v1/users/me')).toBe(NOTION);
64
- });
65
- it('should find Mailchimp by API URL', () => {
66
- expect(REGISTRY.getByUrl('https://api.mailchimp.com/3.0/ping')).toBe(MAILCHIMP);
67
- });
68
- it('should find Mailchimp by regex pattern for datacenter-specific URLs', () => {
69
- expect(REGISTRY.getByUrl('https://us1.api.mailchimp.com/3.0/lists')).toBe(MAILCHIMP);
70
- expect(REGISTRY.getByUrl('https://us19.api.mailchimp.com/3.0/campaigns')).toBe(MAILCHIMP);
71
- expect(REGISTRY.getByUrl('https://eu-west-1.api.mailchimp.com/3.0/automations')).toBe(MAILCHIMP);
72
- });
37
+ const urlMappings = [
38
+ ['https://slack.com/api/auth.test', SLACK],
39
+ ['https://discord.com/api/v9/users/@me', DISCORD],
40
+ ['https://api.github.com/user', GITHUB],
41
+ ['https://api.dropboxapi.com/2/users/get_current_account', DROPBOX],
42
+ ['https://api.linear.app/graphql', LINEAR],
43
+ ['https://gmail.googleapis.com/gmail/v1/users/me/profile', GOOGLE_GMAIL],
44
+ ['https://www.googleapis.com/calendar/v3/calendars/primary', GOOGLE_CALENDAR],
45
+ ['https://www.googleapis.com/drive/v3/files', GOOGLE_DRIVE],
46
+ ['https://sheets.googleapis.com/v4/spreadsheets', GOOGLE_SHEETS],
47
+ ['https://docs.googleapis.com/v1/documents/abc', GOOGLE_DOCS],
48
+ ['https://people.googleapis.com/v1/people/me', GOOGLE_PEOPLE],
49
+ ['https://api.notion.com/v1/users/me', NOTION],
50
+ ['https://api.mailchimp.com/3.0/ping', MAILCHIMP],
51
+ ['https://us1.api.mailchimp.com/3.0/lists', MAILCHIMP],
52
+ ['https://sts.amazonaws.com/?Action=GetCallerIdentity', AWS],
53
+ ['https://s3.us-east-1.amazonaws.com/my-bucket', AWS],
54
+ ];
55
+ for (const [url, service] of urlMappings) {
56
+ it(`should find ${service.name} by URL ${url}`, () => {
57
+ expect(REGISTRY.getByUrl(url)).toBe(service);
58
+ });
59
+ }
73
60
  it('should return null for unknown URL', () => {
74
61
  expect(REGISTRY.getByUrl('https://example.com/api')).toBeNull();
75
62
  });
76
63
  it('should not match partial URLs', () => {
77
64
  expect(REGISTRY.getByUrl('https://slack.com/')).toBeNull();
78
- expect(REGISTRY.getByUrl('https://slack.com')).toBeNull();
79
65
  });
80
66
  });
81
67
  describe('services', () => {
82
- it('should contain all services', () => {
83
- expect(REGISTRY.services).toHaveLength(8);
68
+ it('should contain all registered services', () => {
69
+ expect(REGISTRY.services.length).toBeGreaterThan(0);
84
70
  expect(REGISTRY.services).toContain(SLACK);
85
- expect(REGISTRY.services).toContain(DISCORD);
86
71
  expect(REGISTRY.services).toContain(GITHUB);
87
- expect(REGISTRY.services).toContain(DROPBOX);
88
- expect(REGISTRY.services).toContain(LINEAR);
89
- expect(REGISTRY.services).toContain(NOTION);
90
- expect(REGISTRY.services).toContain(GOOGLE);
91
- expect(REGISTRY.services).toContain(MAILCHIMP);
72
+ expect(REGISTRY.services).toContain(AWS);
92
73
  });
93
74
  });
94
75
  describe('custom registry', () => {
@@ -99,11 +80,102 @@ describe('Registry', () => {
99
80
  expect(customRegistry.getByName('github')).toBe(GITHUB);
100
81
  expect(customRegistry.getByName('discord')).toBeNull();
101
82
  });
102
- it('should work with empty service list', () => {
103
- const emptyRegistry = new Registry([]);
104
- expect(emptyRegistry.services).toHaveLength(0);
105
- expect(emptyRegistry.getByName('slack')).toBeNull();
106
- expect(emptyRegistry.getByUrl('https://slack.com/api/test')).toBeNull();
83
+ });
84
+ describe('addService', () => {
85
+ it('should add a service to the registry', () => {
86
+ const registry = new Registry([SLACK]);
87
+ const registered = new RegisteredService('my-gitlab', 'https://gitlab.mycompany.com/api/', GITLAB);
88
+ registry.addService(registered);
89
+ expect(registry.getByName('my-gitlab')).toBe(registered);
90
+ expect(registry.getByUrl('https://gitlab.mycompany.com/api/v4/user')).toBe(registered);
91
+ });
92
+ it('should throw DuplicateServiceNameError for existing built-in name', () => {
93
+ const registry = new Registry([SLACK]);
94
+ const duplicate = new RegisteredService('slack', 'https://slack.mycompany.com/api/', SLACK);
95
+ expect(() => {
96
+ registry.addService(duplicate);
97
+ }).toThrow(DuplicateServiceNameError);
98
+ });
99
+ it('should throw DuplicateServiceNameError for existing registered name', () => {
100
+ const registry = new Registry([GITLAB]);
101
+ const first = new RegisteredService('my-gitlab', 'https://gitlab.mycompany.com/api/', GITLAB);
102
+ const second = new RegisteredService('my-gitlab', 'https://gitlab.other.com/api/', GITLAB);
103
+ registry.addService(first);
104
+ expect(() => {
105
+ registry.addService(second);
106
+ }).toThrow(DuplicateServiceNameError);
107
+ });
108
+ });
109
+ describe('canonicalizeServiceName', () => {
110
+ it('should accept lowercase alphanumeric names', () => {
111
+ expect(canonicalizeServiceName('myservice')).toBe('myservice');
112
+ });
113
+ it('should accept names with hyphens', () => {
114
+ expect(canonicalizeServiceName('my-service')).toBe('my-service');
115
+ });
116
+ it('should accept names with underscores', () => {
117
+ expect(canonicalizeServiceName('my_service')).toBe('my_service');
118
+ });
119
+ it('should accept names with digits', () => {
120
+ expect(canonicalizeServiceName('service2')).toBe('service2');
121
+ });
122
+ it('should convert uppercase to lowercase', () => {
123
+ expect(canonicalizeServiceName('MyService')).toBe('myservice');
124
+ });
125
+ it('should convert mixed case to lowercase', () => {
126
+ expect(canonicalizeServiceName('My-GitLab')).toBe('my-gitlab');
127
+ });
128
+ it('should convert spaces to hyphens', () => {
129
+ expect(canonicalizeServiceName('my service')).toBe('my-service');
130
+ });
131
+ it('should collapse multiple spaces into a single hyphen', () => {
132
+ expect(canonicalizeServiceName('my service')).toBe('my-service');
133
+ });
134
+ it('should reject names with special characters', () => {
135
+ expect(() => canonicalizeServiceName('my@service')).toThrow(InvalidServiceNameError);
136
+ });
137
+ it('should reject names with dots', () => {
138
+ expect(() => canonicalizeServiceName('my.service')).toThrow(InvalidServiceNameError);
139
+ });
140
+ it('should reject empty names', () => {
141
+ expect(() => canonicalizeServiceName('')).toThrow(InvalidServiceNameError);
142
+ });
143
+ it('should reject names starting with a hyphen', () => {
144
+ expect(() => canonicalizeServiceName('-myservice')).toThrow(InvalidServiceNameError);
145
+ });
146
+ it('should reject names starting with an underscore', () => {
147
+ expect(() => canonicalizeServiceName('_myservice')).toThrow(InvalidServiceNameError);
148
+ });
149
+ it('should reject names that are only spaces', () => {
150
+ expect(() => canonicalizeServiceName(' ')).toThrow(InvalidServiceNameError);
151
+ });
152
+ });
153
+ describe('RegisteredService', () => {
154
+ it('should not expose getSession when no loginUrl is provided', () => {
155
+ const registered = new RegisteredService('my-gitlab', 'https://gitlab.mycompany.com/api/', GITLAB);
156
+ expect(registered.getSession).toBeUndefined(); // eslint-disable-line @typescript-eslint/unbound-method
157
+ expect(registered.loginUrl).toBe('');
158
+ });
159
+ it('should expose getSession when loginUrl is provided and family supports it', () => {
160
+ const registered = new RegisteredService('my-slack', 'https://slack.mycompany.com/api/', SLACK, 'https://slack.mycompany.com/signin');
161
+ expect(registered.getSession).toBeDefined(); // eslint-disable-line @typescript-eslint/unbound-method
162
+ expect(registered.loginUrl).toBe('https://slack.mycompany.com/signin');
163
+ });
164
+ it('should work without a family service', () => {
165
+ const registered = new RegisteredService('my-api', 'https://api.example.com/');
166
+ expect(registered.getSession).toBeUndefined(); // eslint-disable-line @typescript-eslint/unbound-method
167
+ expect(registered.loginUrl).toBe('');
168
+ expect(registered.info).toContain('Generic service');
169
+ expect(registered.setCredentialsExample('my-api')).toContain('latchkey auth set my-api');
170
+ });
171
+ it('should not expose getSession when loginUrl is provided but no family', () => {
172
+ const registered = new RegisteredService('my-api', 'https://api.example.com/', undefined, 'https://api.example.com/login');
173
+ expect(registered.getSession).toBeUndefined(); // eslint-disable-line @typescript-eslint/unbound-method
174
+ });
175
+ it('should not expose getSession when loginUrl is provided but family lacks it', () => {
176
+ // TELEGRAM has no getSession
177
+ const registered = new RegisteredService('my-telegram', 'https://telegram.mycompany.com/bot', TELEGRAM, 'https://telegram.mycompany.com/login');
178
+ expect(registered.getSession).toBeUndefined(); // eslint-disable-line @typescript-eslint/unbound-method
107
179
  });
108
180
  });
109
181
  });
@@ -1 +1 @@
1
- {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../tests/registry.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../tests/registry.test.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ import { dirname, join, resolve } from 'node:path';
21
21
  import { fileURLToPath } from 'node:url';
22
22
  import { describe, it, expect } from 'vitest';
23
23
  import { REGISTRY } from '../src/registry.js';
24
- import { SimpleServiceSession } from '../src/services/base.js';
24
+ import { SimpleServiceSession } from '../src/services/core/base.js';
25
25
  // Get the directory of this file
26
26
  const __filename = fileURLToPath(import.meta.url);
27
27
  const __dirname = dirname(__filename);
@@ -152,7 +152,7 @@ describe('Services Against Recordings', () => {
152
152
  const apiCredentials = await testServiceWithRecording(service, recordingPath);
153
153
  // Verify API credentials are valid
154
154
  expect(apiCredentials).not.toBeNull();
155
- const curlArgs = apiCredentials.asCurlArguments();
155
+ const curlArgs = apiCredentials.injectIntoCurlCall([]);
156
156
  expect(curlArgs.length).toBeGreaterThan(0);
157
157
  });
158
158
  }
@@ -1 +1 @@
1
- {"version":3,"file":"servicesAgainstRecordings.test.js","sourceRoot":"","sources":["../../tests/servicesAgainstRecordings.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"servicesAgainstRecordings.test.js","sourceRoot":"","sources":["../../tests/servicesAgainstRecordings.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "latchkey",
3
- "version": "1.0.1",
4
- "description": "A CLI tool that injects API credentials into curl requests for known third-party services",
3
+ "version": "2.1.0",
4
+ "description": "A CLI tool that injects API credentials into curl requests to third-party services",
5
5
  "author": "Imbue <hynek@imbue.com>",
6
6
  "repository": {
7
7
  "type": "git",