latchkey 3.13.1 → 3.15.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 (156) hide show
  1. package/README.md +28 -1
  2. package/dist/src/apiCredentials/base.d.ts +53 -5
  3. package/dist/src/apiCredentials/base.d.ts.map +1 -1
  4. package/dist/src/apiCredentials/base.js +43 -9
  5. package/dist/src/apiCredentials/base.js.map +1 -1
  6. package/dist/src/apiCredentials/serialization.d.ts +11 -139
  7. package/dist/src/apiCredentials/serialization.d.ts.map +1 -1
  8. package/dist/src/apiCredentials/serialization.js +53 -81
  9. package/dist/src/apiCredentials/serialization.js.map +1 -1
  10. package/dist/src/apiCredentials/store.d.ts +7 -2
  11. package/dist/src/apiCredentials/store.d.ts.map +1 -1
  12. package/dist/src/apiCredentials/store.js +18 -8
  13. package/dist/src/apiCredentials/store.js.map +1 -1
  14. package/dist/src/cli.js +13 -2
  15. package/dist/src/cli.js.map +1 -1
  16. package/dist/src/cliCommands.d.ts +15 -7
  17. package/dist/src/cliCommands.d.ts.map +1 -1
  18. package/dist/src/cliCommands.js +56 -25
  19. package/dist/src/cliCommands.js.map +1 -1
  20. package/dist/src/config.d.ts +10 -0
  21. package/dist/src/config.d.ts.map +1 -1
  22. package/dist/src/config.js +15 -0
  23. package/dist/src/config.js.map +1 -1
  24. package/dist/src/configDataStore.d.ts +3 -0
  25. package/dist/src/configDataStore.d.ts.map +1 -1
  26. package/dist/src/configDataStore.js +1 -0
  27. package/dist/src/configDataStore.js.map +1 -1
  28. package/dist/src/curlInjection.d.ts +15 -4
  29. package/dist/src/curlInjection.d.ts.map +1 -1
  30. package/dist/src/curlInjection.js +16 -6
  31. package/dist/src/curlInjection.js.map +1 -1
  32. package/dist/src/diagnosticHeaders.d.ts +19 -0
  33. package/dist/src/diagnosticHeaders.d.ts.map +1 -0
  34. package/dist/src/diagnosticHeaders.js +20 -0
  35. package/dist/src/diagnosticHeaders.js.map +1 -0
  36. package/dist/src/errorMessages.d.ts.map +1 -1
  37. package/dist/src/errorMessages.js +35 -1
  38. package/dist/src/errorMessages.js.map +1 -1
  39. package/dist/src/gateway/gatewayEndpoint.d.ts.map +1 -1
  40. package/dist/src/gateway/gatewayEndpoint.js +11 -4
  41. package/dist/src/gateway/gatewayEndpoint.js.map +1 -1
  42. package/dist/src/gateway/headerEncoding.d.ts +22 -0
  43. package/dist/src/gateway/headerEncoding.d.ts.map +1 -0
  44. package/dist/src/gateway/headerEncoding.js +26 -0
  45. package/dist/src/gateway/headerEncoding.js.map +1 -0
  46. package/dist/src/gateway/server.d.ts.map +1 -1
  47. package/dist/src/gateway/server.js +5 -2
  48. package/dist/src/gateway/server.js.map +1 -1
  49. package/dist/src/index.d.ts +2 -2
  50. package/dist/src/index.d.ts.map +1 -1
  51. package/dist/src/index.js +1 -1
  52. package/dist/src/index.js.map +1 -1
  53. package/dist/src/migrations.d.ts.map +1 -1
  54. package/dist/src/migrations.js +8 -8
  55. package/dist/src/migrations.js.map +1 -1
  56. package/dist/src/oauthUtils.d.ts +17 -0
  57. package/dist/src/oauthUtils.d.ts.map +1 -1
  58. package/dist/src/oauthUtils.js +22 -1
  59. package/dist/src/oauthUtils.js.map +1 -1
  60. package/dist/src/pluginSdk.d.ts +117 -0
  61. package/dist/src/pluginSdk.d.ts.map +1 -0
  62. package/dist/src/pluginSdk.js +97 -0
  63. package/dist/src/pluginSdk.js.map +1 -0
  64. package/dist/src/plugins.d.ts +74 -0
  65. package/dist/src/plugins.d.ts.map +1 -0
  66. package/dist/src/plugins.js +221 -0
  67. package/dist/src/plugins.js.map +1 -0
  68. package/dist/src/serviceRegistry.d.ts +2 -2
  69. package/dist/src/serviceRegistry.d.ts.map +1 -1
  70. package/dist/src/serviceRegistry.js +3 -3
  71. package/dist/src/serviceRegistry.js.map +1 -1
  72. package/dist/src/services/aws.d.ts +2 -1
  73. package/dist/src/services/aws.d.ts.map +1 -1
  74. package/dist/src/services/aws.js +4 -2
  75. package/dist/src/services/aws.js.map +1 -1
  76. package/dist/src/services/core/base.d.ts +42 -2
  77. package/dist/src/services/core/base.d.ts.map +1 -1
  78. package/dist/src/services/core/base.js +48 -1
  79. package/dist/src/services/core/base.js.map +1 -1
  80. package/dist/src/services/dropbox.d.ts.map +1 -1
  81. package/dist/src/services/dropbox.js +2 -2
  82. package/dist/src/services/dropbox.js.map +1 -1
  83. package/dist/src/services/fastmail.d.ts +4 -19
  84. package/dist/src/services/fastmail.d.ts.map +1 -1
  85. package/dist/src/services/fastmail.js +17 -22
  86. package/dist/src/services/fastmail.js.map +1 -1
  87. package/dist/src/services/google/base.d.ts +8 -3
  88. package/dist/src/services/google/base.d.ts.map +1 -1
  89. package/dist/src/services/google/base.js +23 -13
  90. package/dist/src/services/google/base.js.map +1 -1
  91. package/dist/src/services/notion-mcp.d.ts +16 -16
  92. package/dist/src/services/notion-mcp.d.ts.map +1 -1
  93. package/dist/src/services/notion-mcp.js +36 -21
  94. package/dist/src/services/notion-mcp.js.map +1 -1
  95. package/dist/src/services/ramp.d.ts.map +1 -1
  96. package/dist/src/services/ramp.js +2 -2
  97. package/dist/src/services/ramp.js.map +1 -1
  98. package/dist/src/services/slack.d.ts +2 -1
  99. package/dist/src/services/slack.d.ts.map +1 -1
  100. package/dist/src/services/slack.js +4 -2
  101. package/dist/src/services/slack.js.map +1 -1
  102. package/dist/src/services/tailscale.d.ts +2 -1
  103. package/dist/src/services/tailscale.d.ts.map +1 -1
  104. package/dist/src/services/tailscale.js +4 -2
  105. package/dist/src/services/tailscale.js.map +1 -1
  106. package/dist/src/services/telegram.d.ts +2 -1
  107. package/dist/src/services/telegram.d.ts.map +1 -1
  108. package/dist/src/services/telegram.js +4 -2
  109. package/dist/src/services/telegram.js.map +1 -1
  110. package/dist/src/services/zoom.d.ts +2 -1
  111. package/dist/src/services/zoom.d.ts.map +1 -1
  112. package/dist/src/services/zoom.js +4 -2
  113. package/dist/src/services/zoom.js.map +1 -1
  114. package/dist/src/version.d.ts +1 -1
  115. package/dist/src/version.js +1 -1
  116. package/dist/tests/apiCredentialStore.test.js +54 -1
  117. package/dist/tests/apiCredentialStore.test.js.map +1 -1
  118. package/dist/tests/apiCredentials.test.js +73 -12
  119. package/dist/tests/apiCredentials.test.js.map +1 -1
  120. package/dist/tests/cli.test.js +97 -1
  121. package/dist/tests/cli.test.js.map +1 -1
  122. package/dist/tests/config.test.js +7 -0
  123. package/dist/tests/config.test.js.map +1 -1
  124. package/dist/tests/diagnosticHeaders.test.d.ts +2 -0
  125. package/dist/tests/diagnosticHeaders.test.d.ts.map +1 -0
  126. package/dist/tests/diagnosticHeaders.test.js +22 -0
  127. package/dist/tests/diagnosticHeaders.test.js.map +1 -0
  128. package/dist/tests/errorMessages.test.d.ts +6 -0
  129. package/dist/tests/errorMessages.test.d.ts.map +1 -0
  130. package/dist/tests/errorMessages.test.js +31 -0
  131. package/dist/tests/errorMessages.test.js.map +1 -0
  132. package/dist/tests/gateway.test.js +65 -4
  133. package/dist/tests/gateway.test.js.map +1 -1
  134. package/dist/tests/gatewayExtensions.test.js +5 -2
  135. package/dist/tests/gatewayExtensions.test.js.map +1 -1
  136. package/dist/tests/headerEncoding.test.d.ts +5 -0
  137. package/dist/tests/headerEncoding.test.d.ts.map +1 -0
  138. package/dist/tests/headerEncoding.test.js +40 -0
  139. package/dist/tests/headerEncoding.test.js.map +1 -0
  140. package/dist/tests/latchkeyEndpoint.test.js +8 -6
  141. package/dist/tests/latchkeyEndpoint.test.js.map +1 -1
  142. package/dist/tests/notion-mcp.test.d.ts +2 -0
  143. package/dist/tests/notion-mcp.test.d.ts.map +1 -0
  144. package/dist/tests/notion-mcp.test.js +16 -0
  145. package/dist/tests/notion-mcp.test.js.map +1 -0
  146. package/dist/tests/oauthUtils.test.js +23 -1
  147. package/dist/tests/oauthUtils.test.js.map +1 -1
  148. package/dist/tests/plugins.test.d.ts +2 -0
  149. package/dist/tests/plugins.test.d.ts.map +1 -0
  150. package/dist/tests/plugins.test.js +506 -0
  151. package/dist/tests/plugins.test.js.map +1 -0
  152. package/dist/tests/sharedOperations.test.js +63 -2
  153. package/dist/tests/sharedOperations.test.js.map +1 -1
  154. package/dist/tests/tailscale.test.js +1 -3
  155. package/dist/tests/tailscale.test.js.map +1 -1
  156. package/package.json +16 -2
@@ -3,12 +3,14 @@ import { join } from 'node:path';
3
3
  import { writeFileAtomic } from './atomicWrite.js';
4
4
  import { DEFAULT_ACCOUNT } from './apiCredentials/account.js';
5
5
  import { ApiCredentialStatus } from './apiCredentials/base.js';
6
- import { ApiCredentialsSchema, deserializeCredentials, serializeCredentials, } from './apiCredentials/serialization.js';
6
+ import { BUILTIN_API_CREDENTIALS_TYPES, deserializeCredentials, serializeCredentials, } from './apiCredentials/serialization.js';
7
7
  import { BUILTIN_SERVICES, ServiceRegistry } from './serviceRegistry.js';
8
8
  /**
9
9
  * Migrations run before the CLI has built its own registry, and only ever need
10
10
  * to recognize the services latchkey ships with: a credential stored under a
11
- * name that is not one of them is left with an unknown status.
11
+ * name that is not one of them is left with an unknown status. The same goes
12
+ * for credentials of a type only a plugin knows, which are parsed with the
13
+ * built-in types below and left alone when that fails.
12
14
  */
13
15
  const BUILTIN_SERVICE_REGISTRY = new ServiceRegistry(BUILTIN_SERVICES);
14
16
  export class MigrationError extends Error {
@@ -48,12 +50,8 @@ async function resolveCredentialViaServiceRegistry(serviceName, credentialData)
48
50
  if (service === null) {
49
51
  return { status: ApiCredentialStatus.Unknown, account: null };
50
52
  }
51
- const parsed = ApiCredentialsSchema.safeParse(credentialData);
52
- if (!parsed.success) {
53
- return { status: ApiCredentialStatus.Unknown, account: null };
54
- }
55
53
  try {
56
- const originalCredentials = deserializeCredentials(parsed.data);
54
+ const originalCredentials = deserializeCredentials(credentialData, BUILTIN_API_CREDENTIALS_TYPES);
57
55
  const credentials = await refreshIfExpired(service, originalCredentials);
58
56
  const [status, account] = await Promise.all([
59
57
  service.checkApiCredentials(credentials),
@@ -64,7 +62,9 @@ async function resolveCredentialViaServiceRegistry(serviceName, credentialData)
64
62
  return {
65
63
  status,
66
64
  account: status === ApiCredentialStatus.Valid ? account : null,
67
- credentialData: credentials === originalCredentials ? undefined : serializeCredentials(credentials),
65
+ credentialData: credentials === originalCredentials
66
+ ? undefined
67
+ : serializeCredentials(credentials, BUILTIN_API_CREDENTIALS_TYPES),
68
68
  };
69
69
  }
70
70
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Generic OAuth utilities for localhost callback server and token exchange.
3
3
  */
4
+ import { type ApiCredentials } from './apiCredentials/base.js';
4
5
  export interface OAuthTokenResponse {
5
6
  access_token: string;
6
7
  refresh_token?: string;
@@ -16,6 +17,22 @@ export declare class OAuthTokenExchangeError extends Error {
16
17
  export declare class OAuthCallbackServerTimeoutError extends Error {
17
18
  constructor();
18
19
  }
20
+ /**
21
+ * The path the loopback callback server listens on by default.
22
+ */
23
+ export declare const DEFAULT_OAUTH_CALLBACK_PATH = "/oauth2callback";
24
+ /**
25
+ * The loopback redirect URI for a login that receives the authorization code
26
+ * itself, on the port {@link startOAuthCallbackServer} picked.
27
+ */
28
+ export declare function buildLoopbackRedirectUri(port: number, callbackPath?: string): string;
29
+ /**
30
+ * The pre-registered redirect URI to use instead of a loopback one, as stored
31
+ * by `latchkey auth prepare`; undefined when there is none and login should
32
+ * receive the authorization code directly. See
33
+ * {@link OAuthCredentials.redirectUri}.
34
+ */
35
+ export declare function readRedirectUriOverride(credentials?: ApiCredentials): string | undefined;
19
36
  export interface OAuthCallbackServer {
20
37
  /** The port the server is listening on */
21
38
  port: number;
@@ -1 +1 @@
1
- {"version":3,"file":"oauthUtils.d.ts","sourceRoot":"","sources":["../../src/oauthUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,+BAAgC,SAAQ,KAAK;;CAKzD;AAED,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,EACpB,YAAY,SAAoB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CA8F9B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC7C,OAAO,CAAC,0BAA0B,CAAC,CA6DrC;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC7C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAuCpC"}
1
+ {"version":3,"file":"oauthUtils.d.ts","sourceRoot":"","sources":["../../src/oauthUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,KAAK,cAAc,EAAoB,MAAM,0BAA0B,CAAC;AAIjF,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,+BAAgC,SAAQ,KAAK;;CAKzD;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,YAAY,GAAE,MAAoC,GACjD,MAAM,CAER;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAExF;AAED,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,EACpB,YAAY,GAAE,MAAoC,GACjD,OAAO,CAAC,mBAAmB,CAAC,CA8F9B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC7C,OAAO,CAAC,0BAA0B,CAAC,CA6DrC;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC7C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAuCpC"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import * as crypto from 'node:crypto';
5
5
  import * as http from 'node:http';
6
+ import { OAuthCredentials } from './apiCredentials/base.js';
6
7
  import { runCapturedAsync } from './curl.js';
7
8
  import { LoginCancelledError, LoginFailedError } from './services/core/base.js';
8
9
  export class OAuthTokenExchangeError extends Error {
@@ -17,6 +18,26 @@ export class OAuthCallbackServerTimeoutError extends Error {
17
18
  this.name = 'OAuthCallbackServerTimeoutError';
18
19
  }
19
20
  }
21
+ /**
22
+ * The path the loopback callback server listens on by default.
23
+ */
24
+ export const DEFAULT_OAUTH_CALLBACK_PATH = '/oauth2callback';
25
+ /**
26
+ * The loopback redirect URI for a login that receives the authorization code
27
+ * itself, on the port {@link startOAuthCallbackServer} picked.
28
+ */
29
+ export function buildLoopbackRedirectUri(port, callbackPath = DEFAULT_OAUTH_CALLBACK_PATH) {
30
+ return `http://localhost:${port.toString()}${callbackPath}`;
31
+ }
32
+ /**
33
+ * The pre-registered redirect URI to use instead of a loopback one, as stored
34
+ * by `latchkey auth prepare`; undefined when there is none and login should
35
+ * receive the authorization code directly. See
36
+ * {@link OAuthCredentials.redirectUri}.
37
+ */
38
+ export function readRedirectUriOverride(credentials) {
39
+ return credentials instanceof OAuthCredentials ? credentials.redirectUri : undefined;
40
+ }
20
41
  /**
21
42
  * Start a temporary HTTP server to receive OAuth callback.
22
43
  * Returns the assigned port and a promise that resolves with the authorization code.
@@ -25,7 +46,7 @@ export class OAuthCallbackServerTimeoutError extends Error {
25
46
  * @param signal - Optional AbortSignal to cancel the server early
26
47
  * @param callbackPath - Path to listen for OAuth callback (default: '/oauth2callback')
27
48
  */
28
- export function startOAuthCallbackServer(timeoutMs, signal, callbackPath = '/oauth2callback') {
49
+ export function startOAuthCallbackServer(timeoutMs, signal, callbackPath = DEFAULT_OAUTH_CALLBACK_PATH) {
29
50
  const server = http.createServer();
30
51
  return new Promise((resolveServer, rejectServer) => {
31
52
  server.on('error', (error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"oauthUtils.js","sourceRoot":"","sources":["../../src/oauthUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauthUtils.js","sourceRoot":"","sources":["../../src/oauthUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * The `latchkey/plugin` entry point.
3
+ *
4
+ * At runtime, this builds the object handed to a plugin's factory: every value
5
+ * a plugin may use, so that a bare clone with no node_modules of its own has
6
+ * everything it needs. For plugin authors, it is also where the types come
7
+ * from, with `import type { LatchkeySdk, Service } from 'latchkey/plugin'`.
8
+ * That is the only way a plugin imports from it: the SDK object, not this
9
+ * module, is what carries the classes and helpers.
10
+ *
11
+ * Plugins declare the Latchkey versions they support as a semver range (see
12
+ * `src/plugins.ts`), so this surface follows semantic versioning: additions
13
+ * are welcome in any release, while removing or changing anything here is a
14
+ * breaking change that calls for a new major version of Latchkey.
15
+ */
16
+ import { z } from 'zod';
17
+ import { ApiCredentialStatus, ApiCredentialsUsageError, AuthorizationBare, AuthorizationBearer, OAuthCredentials, RawCurlCredentials } from './apiCredentials/base.js';
18
+ import { fetchAccountFromEndpoint, tryParseJson } from './apiCredentials/account.js';
19
+ import { runCapturedAsync } from './curl.js';
20
+ import { OAuthCallbackServerTimeoutError, OAuthTokenExchangeError, buildLoopbackRedirectUri, exchangeCodeForTokens, generateCodeChallenge, generateCodeVerifier, readRedirectUriOverride, refreshAccessToken, startOAuthCallbackServer } from './oauthUtils.js';
21
+ import { BrowserFeaturesUnavailableError, loadPlaywright } from './playwrightLoader.js';
22
+ import { BrowserDisabledError, BrowserFlowsNotSupportedError, CredentialFormFieldMissingError, CredentialFormValues, GraphicalEnvironmentNotFoundError, generateLatchkeyAppName, hasGraphicalEnvironment, requestCredentialsFromUser, showSpinnerPage, typeLikeHuman, withTempBrowserContext } from './playwrightUtils.js';
23
+ import { BrowserFollowupServiceSession, FollowupWork, LoginCancelledError, LoginFailedError, NoCurlCredentialsNotSupportedError, PrepareInputInvalidError, PrepareNotSupportedError, Service, ServiceSession, SimpleServiceSession, buildDynamicClientPreparation, buildFollowupSpinnerDetails, buildPreparedCredentials, describeSchemaIssues, isBrowserClosedError, isResponseBodyUnavailableError, isTimeoutError } from './services/core/base.js';
24
+ import { CookieCaptureLoginFlow } from './services/core/loginFlows/cookieCapture.js';
25
+ import { TokenCaptureLoginFlow } from './services/core/loginFlows/tokenCapture.js';
26
+ import { RegisteredService } from './services/core/registered.js';
27
+ import { GoogleService } from './services/google/base.js';
28
+ export declare function createLatchkeySdk(latchkeyVersion: string): Readonly<{
29
+ latchkeyVersion: string;
30
+ z: typeof z;
31
+ builtinServices: readonly Service[];
32
+ Service: typeof Service;
33
+ ServiceSession: typeof ServiceSession;
34
+ SimpleServiceSession: typeof SimpleServiceSession;
35
+ BrowserFollowupServiceSession: typeof BrowserFollowupServiceSession;
36
+ FollowupWork: typeof FollowupWork;
37
+ RegisteredService: typeof RegisteredService;
38
+ GoogleService: typeof GoogleService;
39
+ CookieCaptureLoginFlow: typeof CookieCaptureLoginFlow;
40
+ TokenCaptureLoginFlow: typeof TokenCaptureLoginFlow;
41
+ buildDynamicClientPreparation: typeof buildDynamicClientPreparation;
42
+ buildFollowupSpinnerDetails: typeof buildFollowupSpinnerDetails;
43
+ buildPreparedCredentials: typeof buildPreparedCredentials;
44
+ describeSchemaIssues: typeof describeSchemaIssues;
45
+ isBrowserClosedError: typeof isBrowserClosedError;
46
+ isResponseBodyUnavailableError: typeof isResponseBodyUnavailableError;
47
+ isTimeoutError: typeof isTimeoutError;
48
+ LoginCancelledError: typeof LoginCancelledError;
49
+ LoginFailedError: typeof LoginFailedError;
50
+ NoCurlCredentialsNotSupportedError: typeof NoCurlCredentialsNotSupportedError;
51
+ PrepareNotSupportedError: typeof PrepareNotSupportedError;
52
+ PrepareInputInvalidError: typeof PrepareInputInvalidError;
53
+ RedirectUriOverrideSchema: z.ZodEffects<z.ZodString, string, string>;
54
+ DynamicClientPrepareInputSchema: z.ZodEffects<z.ZodObject<{
55
+ clientId: z.ZodOptional<z.ZodString>;
56
+ redirectUri: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
57
+ }, "strict", z.ZodTypeAny, {
58
+ clientId?: string | undefined;
59
+ redirectUri?: string | undefined;
60
+ }, {
61
+ clientId?: string | undefined;
62
+ redirectUri?: string | undefined;
63
+ }>, {
64
+ clientId?: string | undefined;
65
+ redirectUri?: string | undefined;
66
+ }, {
67
+ clientId?: string | undefined;
68
+ redirectUri?: string | undefined;
69
+ }>;
70
+ ApiCredentialStatus: typeof ApiCredentialStatus;
71
+ ApiCredentialsUsageError: typeof ApiCredentialsUsageError;
72
+ AuthorizationBearer: typeof AuthorizationBearer;
73
+ AuthorizationBare: typeof AuthorizationBare;
74
+ RawCurlCredentials: typeof RawCurlCredentials;
75
+ OAuthCredentials: typeof OAuthCredentials;
76
+ DEFAULT_ACCOUNT: "";
77
+ fetchAccountFromEndpoint: typeof fetchAccountFromEndpoint;
78
+ tryParseJson: typeof tryParseJson;
79
+ loadPlaywright: typeof loadPlaywright;
80
+ withTempBrowserContext: typeof withTempBrowserContext;
81
+ showSpinnerPage: typeof showSpinnerPage;
82
+ requestCredentialsFromUser: typeof requestCredentialsFromUser;
83
+ typeLikeHuman: typeof typeLikeHuman;
84
+ generateLatchkeyAppName: typeof generateLatchkeyAppName;
85
+ hasGraphicalEnvironment: typeof hasGraphicalEnvironment;
86
+ CredentialFormValues: typeof CredentialFormValues;
87
+ CredentialFormFieldMissingError: typeof CredentialFormFieldMissingError;
88
+ BrowserDisabledError: typeof BrowserDisabledError;
89
+ BrowserFlowsNotSupportedError: typeof BrowserFlowsNotSupportedError;
90
+ BrowserFeaturesUnavailableError: typeof BrowserFeaturesUnavailableError;
91
+ GraphicalEnvironmentNotFoundError: typeof GraphicalEnvironmentNotFoundError;
92
+ startOAuthCallbackServer: typeof startOAuthCallbackServer;
93
+ DEFAULT_OAUTH_CALLBACK_PATH: "/oauth2callback";
94
+ buildLoopbackRedirectUri: typeof buildLoopbackRedirectUri;
95
+ readRedirectUriOverride: typeof readRedirectUriOverride;
96
+ exchangeCodeForTokens: typeof exchangeCodeForTokens;
97
+ refreshAccessToken: typeof refreshAccessToken;
98
+ generateCodeVerifier: typeof generateCodeVerifier;
99
+ generateCodeChallenge: typeof generateCodeChallenge;
100
+ OAuthTokenExchangeError: typeof OAuthTokenExchangeError;
101
+ OAuthCallbackServerTimeoutError: typeof OAuthCallbackServerTimeoutError;
102
+ runCurlCapturedAsync: typeof runCapturedAsync;
103
+ }>;
104
+ export type LatchkeySdk = ReturnType<typeof createLatchkeySdk>;
105
+ export type { LatchkeyPlugin, LatchkeyPluginFactory } from './plugins.js';
106
+ export type { Service, ServiceSession, SimpleServiceSession, BrowserFollowupServiceSession, LoginResult, ManualCredentialForm, } from './services/core/base.js';
107
+ export type { RegisteredService, RegisteredServiceOptions } from './services/core/registered.js';
108
+ export type { LoginFlow } from './services/core/loginFlows/base.js';
109
+ export type { GoogleService } from './services/google/base.js';
110
+ export type { ApiCredentials, ApiCredentialsType, AuthorizationBare, AuthorizationBearer, OAuthCredentials, RawCurlCredentials, SerializedApiCredentials, } from './apiCredentials/base.js';
111
+ export type { EncryptedStorage } from './encryptedStorage.js';
112
+ export type { BrowserLaunchOptions, BrowserWithContext, CredentialFormDecision, CredentialFormField, CredentialFormValues, CredentialRequest, } from './playwrightUtils.js';
113
+ export type { OAuthCallbackServer, OAuthTokenExchangeResponse, OAuthTokenResponse, } from './oauthUtils.js';
114
+ export type { CurlResult } from './curl.js';
115
+ export type { Browser, BrowserContext, Locator, Page, Response } from 'playwright';
116
+ export type { z } from 'zod';
117
+ //# sourceMappingURL=pluginSdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginSdk.d.ts","sourceRoot":"","sources":["../../src/pluginSdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * The `latchkey/plugin` entry point.
3
+ *
4
+ * At runtime, this builds the object handed to a plugin's factory: every value
5
+ * a plugin may use, so that a bare clone with no node_modules of its own has
6
+ * everything it needs. For plugin authors, it is also where the types come
7
+ * from, with `import type { LatchkeySdk, Service } from 'latchkey/plugin'`.
8
+ * That is the only way a plugin imports from it: the SDK object, not this
9
+ * module, is what carries the classes and helpers.
10
+ *
11
+ * Plugins declare the Latchkey versions they support as a semver range (see
12
+ * `src/plugins.ts`), so this surface follows semantic versioning: additions
13
+ * are welcome in any release, while removing or changing anything here is a
14
+ * breaking change that calls for a new major version of Latchkey.
15
+ */
16
+ import { z } from 'zod';
17
+ import { ApiCredentialStatus, ApiCredentialsUsageError, AuthorizationBare, AuthorizationBearer, OAuthCredentials, RawCurlCredentials, } from './apiCredentials/base.js';
18
+ import { DEFAULT_ACCOUNT, fetchAccountFromEndpoint, tryParseJson, } from './apiCredentials/account.js';
19
+ import { runCapturedAsync } from './curl.js';
20
+ import { DEFAULT_OAUTH_CALLBACK_PATH, OAuthCallbackServerTimeoutError, OAuthTokenExchangeError, buildLoopbackRedirectUri, exchangeCodeForTokens, generateCodeChallenge, generateCodeVerifier, readRedirectUriOverride, refreshAccessToken, startOAuthCallbackServer, } from './oauthUtils.js';
21
+ import { BrowserFeaturesUnavailableError, loadPlaywright } from './playwrightLoader.js';
22
+ import { BrowserDisabledError, BrowserFlowsNotSupportedError, CredentialFormFieldMissingError, CredentialFormValues, GraphicalEnvironmentNotFoundError, generateLatchkeyAppName, hasGraphicalEnvironment, requestCredentialsFromUser, showSpinnerPage, typeLikeHuman, withTempBrowserContext, } from './playwrightUtils.js';
23
+ import { BUILTIN_SERVICES } from './serviceRegistry.js';
24
+ import { BrowserFollowupServiceSession, DynamicClientPrepareInputSchema, FollowupWork, LoginCancelledError, LoginFailedError, NoCurlCredentialsNotSupportedError, PrepareInputInvalidError, PrepareNotSupportedError, RedirectUriOverrideSchema, Service, ServiceSession, SimpleServiceSession, buildDynamicClientPreparation, buildFollowupSpinnerDetails, buildPreparedCredentials, describeSchemaIssues, isBrowserClosedError, isResponseBodyUnavailableError, isTimeoutError, } from './services/core/base.js';
25
+ import { CookieCaptureLoginFlow } from './services/core/loginFlows/cookieCapture.js';
26
+ import { TokenCaptureLoginFlow } from './services/core/loginFlows/tokenCapture.js';
27
+ import { RegisteredService } from './services/core/registered.js';
28
+ import { GoogleService } from './services/google/base.js';
29
+ export function createLatchkeySdk(latchkeyVersion) {
30
+ return Object.freeze({
31
+ latchkeyVersion,
32
+ z,
33
+ builtinServices: BUILTIN_SERVICES,
34
+ // Services
35
+ Service,
36
+ ServiceSession,
37
+ SimpleServiceSession,
38
+ BrowserFollowupServiceSession,
39
+ FollowupWork,
40
+ RegisteredService,
41
+ GoogleService,
42
+ CookieCaptureLoginFlow,
43
+ TokenCaptureLoginFlow,
44
+ buildDynamicClientPreparation,
45
+ buildFollowupSpinnerDetails,
46
+ buildPreparedCredentials,
47
+ describeSchemaIssues,
48
+ isBrowserClosedError,
49
+ isResponseBodyUnavailableError,
50
+ isTimeoutError,
51
+ LoginCancelledError,
52
+ LoginFailedError,
53
+ NoCurlCredentialsNotSupportedError,
54
+ PrepareNotSupportedError,
55
+ PrepareInputInvalidError,
56
+ RedirectUriOverrideSchema,
57
+ DynamicClientPrepareInputSchema,
58
+ // Credentials
59
+ ApiCredentialStatus,
60
+ ApiCredentialsUsageError,
61
+ AuthorizationBearer,
62
+ AuthorizationBare,
63
+ RawCurlCredentials,
64
+ OAuthCredentials,
65
+ DEFAULT_ACCOUNT,
66
+ fetchAccountFromEndpoint,
67
+ tryParseJson,
68
+ // Browser automation
69
+ loadPlaywright,
70
+ withTempBrowserContext,
71
+ showSpinnerPage,
72
+ requestCredentialsFromUser,
73
+ typeLikeHuman,
74
+ generateLatchkeyAppName,
75
+ hasGraphicalEnvironment,
76
+ CredentialFormValues,
77
+ CredentialFormFieldMissingError,
78
+ BrowserDisabledError,
79
+ BrowserFlowsNotSupportedError,
80
+ BrowserFeaturesUnavailableError,
81
+ GraphicalEnvironmentNotFoundError,
82
+ // OAuth
83
+ startOAuthCallbackServer,
84
+ DEFAULT_OAUTH_CALLBACK_PATH,
85
+ buildLoopbackRedirectUri,
86
+ readRedirectUriOverride,
87
+ exchangeCodeForTokens,
88
+ refreshAccessToken,
89
+ generateCodeVerifier,
90
+ generateCodeChallenge,
91
+ OAuthTokenExchangeError,
92
+ OAuthCallbackServerTimeoutError,
93
+ // curl
94
+ runCurlCapturedAsync: runCapturedAsync,
95
+ });
96
+ }
97
+ //# sourceMappingURL=pluginSdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginSdk.js","sourceRoot":"","sources":["../../src/pluginSdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Plugins: services contributed by repositories cloned into the plugins
3
+ * directory (`~/.latchkey/plugins/` by default). Once loaded, their services
4
+ * are indistinguishable from the built-in ones.
5
+ *
6
+ * A plugin is an ES module package whose default export is a factory. It is
7
+ * handed a {@link LatchkeySdk} and returns a {@link LatchkeyPlugin}:
8
+ *
9
+ * export default (sdk) => {
10
+ * class Foo extends sdk.Service { ... }
11
+ * return { latchkeyVersion: '^3.15.0', services: [new Foo()] };
12
+ * };
13
+ *
14
+ * A plugin whose services use a credentials class of their own also lists
15
+ * that class under `apiCredentialsTypes`, which is what lets such credentials
16
+ * be stored. The class carries a static `objectType` and a static `fromJSON`
17
+ * that validates stored data (see the built-in credentials classes).
18
+ *
19
+ * `latchkeyVersion` is the range of Latchkey versions the plugin was written
20
+ * for, in the syntax of a package.json dependency. Latchkey follows semantic
21
+ * versioning with respect to the sdk, so `^3.15.0` means "3.15.0 or newer,
22
+ * until the next major version", and a plugin whose range excludes the running
23
+ * Latchkey is refused at load time rather than failing in some subtler way
24
+ * later.
25
+ *
26
+ * Everything a plugin needs at runtime comes from the sdk, so a bare
27
+ * `git clone` into the plugins directory is a complete installation.
28
+ */
29
+ import type { ApiCredentialsType } from './apiCredentials/base.js';
30
+ import type { LatchkeySdk } from './pluginSdk.js';
31
+ import { Service } from './services/core/base.js';
32
+ export interface LatchkeyPlugin {
33
+ /**
34
+ * The Latchkey versions the plugin supports, as a package.json-style
35
+ * version range such as `^3.15.0`.
36
+ */
37
+ readonly latchkeyVersion: string;
38
+ readonly services: readonly Service[];
39
+ /** The credentials classes the plugin defines, if any. */
40
+ readonly apiCredentialsTypes?: readonly ApiCredentialsType[];
41
+ }
42
+ export type LatchkeyPluginFactory = (sdk: LatchkeySdk) => LatchkeyPlugin | Promise<LatchkeyPlugin>;
43
+ export interface LoadedPlugin {
44
+ /** The name of the plugin's directory inside the plugins directory. */
45
+ readonly name: string;
46
+ readonly directory: string;
47
+ readonly services: readonly Service[];
48
+ readonly apiCredentialsTypes: readonly ApiCredentialsType[];
49
+ }
50
+ export declare class PluginLoadError extends Error {
51
+ constructor(pluginName: string, detail: string);
52
+ }
53
+ /**
54
+ * Whether the running Latchkey falls within the version range a plugin
55
+ * declares. A prerelease Latchkey (say a development build) counts too, as
56
+ * long as the range would admit its release.
57
+ */
58
+ export declare function isLatchkeyVersionSupported(versionRange: string, latchkeyVersion: string): boolean;
59
+ /**
60
+ * Load every plugin found in `directory`, in alphabetical order of directory
61
+ * name. Entries that are not directories (following symlinks, so a checkout
62
+ * elsewhere can be linked in) are ignored, as are `node_modules` and dot
63
+ * directories. A missing directory means no plugins. Throws `PluginLoadError`
64
+ * on the first plugin that cannot be loaded.
65
+ */
66
+ export declare function loadPlugins(directory: string, sdk: LatchkeySdk): Promise<readonly LoadedPlugin[]>;
67
+ /**
68
+ * The built-in services followed by every plugin's, refusing a plugin service
69
+ * whose name is already taken. The registry itself only checks names as
70
+ * services are added one by one, and these all go in together.
71
+ */
72
+ export declare function combineWithPluginServices(builtinServices: readonly Service[], plugins: readonly LoadedPlugin[]): readonly Service[];
73
+ export declare function combineWithPluginApiCredentialsTypes(builtinTypes: readonly ApiCredentialsType[], plugins: readonly LoadedPlugin[]): readonly ApiCredentialsType[];
74
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,0DAA0D;IAC1D,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAC9D;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEnG,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAC7D;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAI/C;AAuDD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAEjG;AAqID;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAclC;AA+BD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,SAAS,OAAO,EAAE,EACnC,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B,SAAS,OAAO,EAAE,CAQpB;AAED,wBAAgB,oCAAoC,CAClD,YAAY,EAAE,SAAS,kBAAkB,EAAE,EAC3C,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B,SAAS,kBAAkB,EAAE,CAQ/B"}