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.
- package/README.md +66 -8
- package/dist/integrations/SKILL.md +15 -3
- package/dist/package.json +2 -2
- package/dist/scripts/codegen.js +1 -1
- package/dist/scripts/codegen.js.map +1 -1
- package/dist/src/apiCredentialStore.d.ts +1 -1
- package/dist/src/apiCredentialStore.d.ts.map +1 -1
- package/dist/src/apiCredentialStore.js +1 -1
- package/dist/src/apiCredentialStore.js.map +1 -1
- package/dist/src/apiCredentials.d.ts +13 -115
- package/dist/src/apiCredentials.d.ts.map +1 -1
- package/dist/src/apiCredentials.js +10 -101
- package/dist/src/apiCredentials.js.map +1 -1
- package/dist/src/apiCredentialsSerialization.d.ts +119 -0
- package/dist/src/apiCredentialsSerialization.d.ts.map +1 -0
- package/dist/src/apiCredentialsSerialization.js +90 -0
- package/dist/src/apiCredentialsSerialization.js.map +1 -0
- package/dist/src/browserConfig.d.ts +2 -33
- package/dist/src/browserConfig.d.ts.map +1 -1
- package/dist/src/browserConfig.js +6 -81
- package/dist/src/browserConfig.js.map +1 -1
- package/dist/src/cli.js +22 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/cliCommands.d.ts +0 -1
- package/dist/src/cliCommands.d.ts.map +1 -1
- package/dist/src/cliCommands.js +148 -44
- package/dist/src/cliCommands.js.map +1 -1
- package/dist/src/config.d.ts +4 -3
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +17 -23
- package/dist/src/config.js.map +1 -1
- package/dist/src/configDataStore.d.ts +43 -0
- package/dist/src/configDataStore.d.ts.map +1 -0
- package/dist/src/configDataStore.js +108 -0
- package/dist/src/configDataStore.js.map +1 -0
- package/dist/src/curl.d.ts +10 -0
- package/dist/src/curl.d.ts.map +1 -1
- package/dist/src/curl.js +88 -0
- package/dist/src/curl.js.map +1 -1
- package/dist/src/encryptedStorage.d.ts +9 -0
- package/dist/src/encryptedStorage.d.ts.map +1 -1
- package/dist/src/encryptedStorage.js +12 -0
- package/dist/src/encryptedStorage.js.map +1 -1
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/migrations.d.ts +9 -0
- package/dist/src/migrations.d.ts.map +1 -0
- package/dist/src/migrations.js +77 -0
- package/dist/src/migrations.js.map +1 -0
- package/dist/src/oauthUtils.d.ts +4 -1
- package/dist/src/oauthUtils.d.ts.map +1 -1
- package/dist/src/oauthUtils.js +1 -1
- package/dist/src/oauthUtils.js.map +1 -1
- package/dist/src/playwrightUtils.d.ts +2 -2
- package/dist/src/playwrightUtils.d.ts.map +1 -1
- package/dist/src/playwrightUtils.js +4 -4
- package/dist/src/playwrightUtils.js.map +1 -1
- package/dist/src/registeredService.d.ts +20 -0
- package/dist/src/registeredService.d.ts.map +1 -0
- package/dist/src/registeredService.js +34 -0
- package/dist/src/registeredService.js.map +1 -0
- package/dist/src/registeredServiceStore.d.ts +24 -0
- package/dist/src/registeredServiceStore.d.ts.map +1 -0
- package/dist/src/registeredServiceStore.js +70 -0
- package/dist/src/registeredServiceStore.js.map +1 -0
- package/dist/src/registry.d.ts +11 -1
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +70 -6
- package/dist/src/registry.js.map +1 -1
- package/dist/src/services/aws.d.ts +44 -0
- package/dist/src/services/aws.d.ts.map +1 -0
- package/dist/src/services/aws.js +237 -0
- package/dist/src/services/aws.js.map +1 -0
- package/dist/src/services/base.d.ts +14 -0
- package/dist/src/services/base.d.ts.map +1 -1
- package/dist/src/services/base.js +23 -11
- package/dist/src/services/base.js.map +1 -1
- package/dist/src/services/calendly.d.ts +12 -0
- package/dist/src/services/calendly.d.ts.map +1 -0
- package/dist/src/services/calendly.js +18 -0
- package/dist/src/services/calendly.js.map +1 -0
- package/dist/src/services/core/base.d.ts +141 -0
- package/dist/src/services/core/base.d.ts.map +1 -0
- package/dist/src/services/core/base.js +189 -0
- package/dist/src/services/core/base.js.map +1 -0
- package/dist/src/services/core/registered.d.ts +24 -0
- package/dist/src/services/core/registered.d.ts.map +1 -0
- package/dist/src/services/core/registered.js +53 -0
- package/dist/src/services/core/registered.js.map +1 -0
- package/dist/src/services/discord.d.ts +2 -1
- package/dist/src/services/discord.d.ts.map +1 -1
- package/dist/src/services/discord.js +4 -1
- package/dist/src/services/discord.js.map +1 -1
- package/dist/src/services/dropbox.d.ts +3 -2
- package/dist/src/services/dropbox.d.ts.map +1 -1
- package/dist/src/services/dropbox.js +6 -1
- package/dist/src/services/dropbox.js.map +1 -1
- package/dist/src/services/figma.d.ts +12 -0
- package/dist/src/services/figma.d.ts.map +1 -0
- package/dist/src/services/figma.js +14 -0
- package/dist/src/services/figma.js.map +1 -0
- package/dist/src/services/github.d.ts +2 -1
- package/dist/src/services/github.d.ts.map +1 -1
- package/dist/src/services/github.js +4 -1
- package/dist/src/services/github.js.map +1 -1
- package/dist/src/services/gitlab.d.ts +12 -0
- package/dist/src/services/gitlab.d.ts.map +1 -0
- package/dist/src/services/gitlab.js +14 -0
- package/dist/src/services/gitlab.js.map +1 -0
- package/dist/src/services/google/analytics.d.ts +11 -0
- package/dist/src/services/google/analytics.d.ts.map +1 -0
- package/dist/src/services/google/analytics.js +22 -0
- package/dist/src/services/google/analytics.js.map +1 -0
- package/dist/src/services/google/base.d.ts +73 -0
- package/dist/src/services/google/base.d.ts.map +1 -0
- package/dist/src/services/google/base.js +323 -0
- package/dist/src/services/google/base.js.map +1 -0
- package/dist/src/services/google/calendar.d.ts +11 -0
- package/dist/src/services/google/calendar.d.ts.map +1 -0
- package/dist/src/services/google/calendar.js +22 -0
- package/dist/src/services/google/calendar.js.map +1 -0
- package/dist/src/services/google/directions.d.ts +14 -0
- package/dist/src/services/google/directions.d.ts.map +1 -0
- package/dist/src/services/google/directions.js +49 -0
- package/dist/src/services/google/directions.js.map +1 -0
- package/dist/src/services/google/docs.d.ts +11 -0
- package/dist/src/services/google/docs.d.ts.map +1 -0
- package/dist/src/services/google/docs.js +19 -0
- package/dist/src/services/google/docs.js.map +1 -0
- package/dist/src/services/google/drive.d.ts +11 -0
- package/dist/src/services/google/drive.d.ts.map +1 -0
- package/dist/src/services/google/drive.js +19 -0
- package/dist/src/services/google/drive.js.map +1 -0
- package/dist/src/services/google/gmail.d.ts +11 -0
- package/dist/src/services/google/gmail.d.ts.map +1 -0
- package/dist/src/services/google/gmail.js +24 -0
- package/dist/src/services/google/gmail.js.map +1 -0
- package/dist/src/services/google/maps.d.ts +39 -0
- package/dist/src/services/google/maps.d.ts.map +1 -0
- package/dist/src/services/google/maps.js +94 -0
- package/dist/src/services/google/maps.js.map +1 -0
- package/dist/src/services/google/people.d.ts +11 -0
- package/dist/src/services/google/people.d.ts.map +1 -0
- package/dist/src/services/google/people.js +22 -0
- package/dist/src/services/google/people.js.map +1 -0
- package/dist/src/services/google/sheets.d.ts +11 -0
- package/dist/src/services/google/sheets.d.ts.map +1 -0
- package/dist/src/services/google/sheets.js +19 -0
- package/dist/src/services/google/sheets.js.map +1 -0
- package/dist/src/services/googleAnalytics.d.ts +11 -0
- package/dist/src/services/googleAnalytics.d.ts.map +1 -0
- package/dist/src/services/googleAnalytics.js +18 -0
- package/dist/src/services/googleAnalytics.js.map +1 -0
- package/dist/src/services/googleMaps.d.ts +12 -0
- package/dist/src/services/googleMaps.d.ts.map +1 -0
- package/dist/src/services/googleMaps.js +17 -0
- package/dist/src/services/googleMaps.js.map +1 -0
- package/dist/src/services/index.d.ts +21 -3
- package/dist/src/services/index.d.ts.map +1 -1
- package/dist/src/services/index.js +21 -3
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/linear.d.ts +2 -1
- package/dist/src/services/linear.d.ts.map +1 -1
- package/dist/src/services/linear.js +4 -1
- package/dist/src/services/linear.js.map +1 -1
- package/dist/src/services/mailchimp.d.ts +3 -2
- package/dist/src/services/mailchimp.d.ts.map +1 -1
- package/dist/src/services/mailchimp.js +5 -4
- package/dist/src/services/mailchimp.js.map +1 -1
- package/dist/src/services/notion.d.ts +2 -1
- package/dist/src/services/notion.d.ts.map +1 -1
- package/dist/src/services/notion.js +4 -1
- package/dist/src/services/notion.js.map +1 -1
- package/dist/src/services/sentry.d.ts +14 -0
- package/dist/src/services/sentry.d.ts.map +1 -0
- package/dist/src/services/sentry.js +43 -0
- package/dist/src/services/sentry.js.map +1 -0
- package/dist/src/services/slack.d.ts +31 -2
- package/dist/src/services/slack.d.ts.map +1 -1
- package/dist/src/services/slack.js +46 -3
- package/dist/src/services/slack.js.map +1 -1
- package/dist/src/services/stripe.d.ts +12 -0
- package/dist/src/services/stripe.d.ts.map +1 -0
- package/dist/src/services/stripe.js +14 -0
- package/dist/src/services/stripe.js.map +1 -0
- package/dist/src/services/telegram.d.ts +40 -0
- package/dist/src/services/telegram.d.ts.map +1 -0
- package/dist/src/services/telegram.js +73 -0
- package/dist/src/services/telegram.js.map +1 -0
- package/dist/src/services/yelp.d.ts +12 -0
- package/dist/src/services/yelp.d.ts.map +1 -0
- package/dist/src/services/yelp.js +16 -0
- package/dist/src/services/yelp.js.map +1 -0
- package/dist/src/services/zoom.d.ts +12 -0
- package/dist/src/services/zoom.d.ts.map +1 -0
- package/dist/src/services/zoom.js +18 -0
- package/dist/src/services/zoom.js.map +1 -0
- package/dist/tests/apiCredentialStore.test.js +2 -19
- package/dist/tests/apiCredentialStore.test.js.map +1 -1
- package/dist/tests/apiCredentials.test.js +139 -178
- package/dist/tests/apiCredentials.test.js.map +1 -1
- package/dist/tests/cli.test.js +755 -255
- package/dist/tests/cli.test.js.map +1 -1
- package/dist/tests/encryptedStorage.test.js +0 -4
- package/dist/tests/encryptedStorage.test.js.map +1 -1
- package/dist/tests/encryptedStorageKeyGeneration.test.d.ts +2 -0
- package/dist/tests/encryptedStorageKeyGeneration.test.d.ts.map +1 -0
- package/dist/tests/encryptedStorageKeyGeneration.test.js +22 -0
- package/dist/tests/encryptedStorageKeyGeneration.test.js.map +1 -0
- package/dist/tests/encryption.test.js +3 -35
- package/dist/tests/encryption.test.js.map +1 -1
- package/dist/tests/migrations.test.d.ts +2 -0
- package/dist/tests/migrations.test.d.ts.map +1 -0
- package/dist/tests/migrations.test.js +164 -0
- package/dist/tests/migrations.test.js.map +1 -0
- package/dist/tests/playwrightDownload.test.js +2 -65
- package/dist/tests/playwrightDownload.test.js.map +1 -1
- package/dist/tests/registry.test.js +147 -75
- package/dist/tests/registry.test.js.map +1 -1
- package/dist/tests/servicesAgainstRecordings.test.js +2 -2
- package/dist/tests/servicesAgainstRecordings.test.js.map +1 -1
- 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,
|
|
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
|
|
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":"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,
|
|
1
|
+
{"version":3,"file":"playwrightDownload.test.js","sourceRoot":"","sources":["../../tests/playwrightDownload.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,94 +1,75 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { Registry, REGISTRY } from '../src/registry.js';
|
|
3
|
-
import {
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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).
|
|
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(
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,
|
|
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.
|
|
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":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG9C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAW,oBAAoB,EAAE,MAAM,
|
|
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
|
|
4
|
-
"description": "A CLI tool that injects API credentials into curl requests
|
|
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",
|