latchkey 3.7.0 → 3.9.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/dist/scripts/recordBrowserSession.js +4 -3
- package/dist/scripts/recordBrowserSession.js.map +1 -1
- package/dist/src/apiCredentials/base.d.ts +7 -1
- package/dist/src/apiCredentials/base.d.ts.map +1 -1
- package/dist/src/apiCredentials/base.js.map +1 -1
- package/dist/src/apiCredentials/store.d.ts +5 -0
- package/dist/src/apiCredentials/store.d.ts.map +1 -1
- package/dist/src/apiCredentials/store.js +7 -0
- package/dist/src/apiCredentials/store.js.map +1 -1
- package/dist/src/atomicWrite.d.ts +4 -1
- package/dist/src/atomicWrite.d.ts.map +1 -1
- package/dist/src/atomicWrite.js +34 -3
- package/dist/src/atomicWrite.js.map +1 -1
- package/dist/src/cli.js +0 -3
- package/dist/src/cli.js.map +1 -1
- package/dist/src/cliCommands.d.ts +8 -0
- package/dist/src/cliCommands.d.ts.map +1 -1
- package/dist/src/cliCommands.js +88 -13
- package/dist/src/cliCommands.js.map +1 -1
- package/dist/src/curl.d.ts +36 -0
- package/dist/src/curl.d.ts.map +1 -1
- package/dist/src/curl.js +42 -0
- package/dist/src/curl.js.map +1 -1
- package/dist/src/curlInjection.d.ts +5 -4
- package/dist/src/curlInjection.d.ts.map +1 -1
- package/dist/src/curlInjection.js +8 -7
- package/dist/src/curlInjection.js.map +1 -1
- package/dist/src/gateway/gatewayEndpoint.d.ts.map +1 -1
- package/dist/src/gateway/gatewayEndpoint.js +6 -3
- package/dist/src/gateway/gatewayEndpoint.js.map +1 -1
- package/dist/src/gateway/server.d.ts.map +1 -1
- package/dist/src/gateway/server.js +14 -3
- package/dist/src/gateway/server.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/migrations.d.ts +6 -0
- package/dist/src/migrations.d.ts.map +1 -1
- package/dist/src/migrations.js +21 -8
- package/dist/src/migrations.js.map +1 -1
- package/dist/src/playwrightUtils.d.ts +57 -0
- package/dist/src/playwrightUtils.d.ts.map +1 -1
- package/dist/src/playwrightUtils.js +247 -8
- package/dist/src/playwrightUtils.js.map +1 -1
- package/dist/src/serviceRegistry.d.ts +14 -1
- package/dist/src/serviceRegistry.d.ts.map +1 -1
- package/dist/src/serviceRegistry.js +22 -2
- package/dist/src/serviceRegistry.js.map +1 -1
- package/dist/src/services/aws.d.ts +11 -2
- package/dist/src/services/aws.d.ts.map +1 -1
- package/dist/src/services/aws.js +72 -5
- package/dist/src/services/aws.js.map +1 -1
- package/dist/src/services/core/base.d.ts +55 -16
- package/dist/src/services/core/base.d.ts.map +1 -1
- package/dist/src/services/core/base.js +119 -31
- package/dist/src/services/core/base.js.map +1 -1
- 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 +13 -0
- package/dist/src/services/github.js.map +1 -1
- package/dist/src/services/huggingface.d.ts +2 -1
- package/dist/src/services/huggingface.d.ts.map +1 -1
- package/dist/src/services/huggingface.js +13 -0
- package/dist/src/services/huggingface.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 +14 -0
- package/dist/src/services/linear.js.map +1 -1
- package/dist/src/services/ngrok.d.ts +2 -1
- package/dist/src/services/ngrok.d.ts.map +1 -1
- package/dist/src/services/ngrok.js +12 -0
- package/dist/src/services/ngrok.js.map +1 -1
- package/dist/src/services/openrouter.d.ts +2 -1
- package/dist/src/services/openrouter.d.ts.map +1 -1
- package/dist/src/services/openrouter.js +12 -0
- package/dist/src/services/openrouter.js.map +1 -1
- package/dist/src/services/tailscale.d.ts +2 -1
- package/dist/src/services/tailscale.d.ts.map +1 -1
- package/dist/src/services/tailscale.js +18 -0
- package/dist/src/services/tailscale.js.map +1 -1
- package/dist/src/services/todoist.d.ts +2 -1
- package/dist/src/services/todoist.d.ts.map +1 -1
- package/dist/src/services/todoist.js +6 -0
- package/dist/src/services/todoist.js.map +1 -1
- package/dist/src/services/zoom.d.ts +2 -1
- package/dist/src/services/zoom.d.ts.map +1 -1
- package/dist/src/services/zoom.js +55 -55
- package/dist/src/services/zoom.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/tests/apiCredentialStore.test.js +8 -0
- package/dist/tests/apiCredentialStore.test.js.map +1 -1
- package/dist/tests/apiCredentials.test.js +84 -1
- package/dist/tests/apiCredentials.test.js.map +1 -1
- package/dist/tests/atomicWrite.test.js +42 -1
- package/dist/tests/atomicWrite.test.js.map +1 -1
- package/dist/tests/builtinServiceRegistry.d.ts +10 -0
- package/dist/tests/builtinServiceRegistry.d.ts.map +1 -0
- package/dist/tests/builtinServiceRegistry.js +10 -0
- package/dist/tests/builtinServiceRegistry.js.map +1 -0
- package/dist/tests/cli.test.js +155 -7
- package/dist/tests/cli.test.js.map +1 -1
- package/dist/tests/devShim.test.d.ts +2 -0
- package/dist/tests/devShim.test.d.ts.map +1 -0
- package/dist/tests/devShim.test.js +240 -0
- package/dist/tests/devShim.test.js.map +1 -0
- package/dist/tests/gateway.test.js +87 -2
- package/dist/tests/gateway.test.js.map +1 -1
- package/dist/tests/gatewayExtensions.test.js +2 -0
- package/dist/tests/gatewayExtensions.test.js.map +1 -1
- package/dist/tests/github.test.js +2 -2
- package/dist/tests/github.test.js.map +1 -1
- package/dist/tests/huggingface.test.js +2 -2
- package/dist/tests/huggingface.test.js.map +1 -1
- package/dist/tests/latchkeyEndpoint.test.js +9 -5
- package/dist/tests/latchkeyEndpoint.test.js.map +1 -1
- package/dist/tests/lint.test.js +1 -1
- package/dist/tests/manualCompletion.test.d.ts +10 -0
- package/dist/tests/manualCompletion.test.d.ts.map +1 -0
- package/dist/tests/manualCompletion.test.js +221 -0
- package/dist/tests/manualCompletion.test.js.map +1 -0
- package/dist/tests/manualCredentialForms.test.d.ts +8 -0
- package/dist/tests/manualCredentialForms.test.d.ts.map +1 -0
- package/dist/tests/manualCredentialForms.test.js +64 -0
- package/dist/tests/manualCredentialForms.test.js.map +1 -0
- package/dist/tests/serviceRegistry.test.js +104 -20
- package/dist/tests/serviceRegistry.test.js.map +1 -1
- package/dist/tests/servicesAgainstRecordings.test.js +2 -2
- package/dist/tests/servicesAgainstRecordings.test.js.map +1 -1
- package/dist/tests/tailscale.test.js +2 -2
- package/dist/tests/tailscale.test.js.map +1 -1
- package/package.json +4 -1
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAExF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EACL,OAAO,EACP,OAAO,EACP,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,GAAG,IAAI,OAAO,EACd,gBAAgB,IAAI,oBAAoB,EACxC,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,OAAO,EACP,cAAc,EACd,oBAAoB,EACpB,6BAA6B,EAC7B,YAAY,EACZ,2BAA2B,EAC3B,KAAK,WAAW,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,GACP,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAExF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EACL,OAAO,EACP,OAAO,EACP,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,GAAG,IAAI,OAAO,EACd,gBAAgB,IAAI,oBAAoB,EACxC,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,OAAO,EACP,cAAc,EACd,oBAAoB,EACpB,6BAA6B,EAC7B,YAAY,EACZ,2BAA2B,EAC3B,KAAK,WAAW,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,GACP,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -15,5 +15,5 @@ export { typeLikeHuman, BrowserDisabledError, BrowserFlowsNotSupportedError, } f
|
|
|
15
15
|
// Services
|
|
16
16
|
export { Service, ServiceSession, SimpleServiceSession, BrowserFollowupServiceSession, FollowupWork, buildFollowupSpinnerDetails, LoginCancelledError, LoginFailedError, Slack, SLACK, Discord, DISCORD, Github, GITHUB, Dropbox, DROPBOX, Linear, LINEAR, } from './services/index.js';
|
|
17
17
|
// ServiceRegistry
|
|
18
|
-
export { ServiceRegistry
|
|
18
|
+
export { ServiceRegistry } from './serviceRegistry.js';
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,2BAA2B;AAC3B,OAAO,EAEL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAExF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EACL,OAAO,EACP,OAAO,EACP,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,GAAG,IAAI,OAAO,EACd,gBAAgB,IAAI,oBAAoB,EACxC,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAE9B,WAAW;AACX,OAAO,EACL,OAAO,EACP,cAAc,EACd,oBAAoB,EACpB,6BAA6B,EAC7B,YAAY,EACZ,2BAA2B,EAE3B,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,GACP,MAAM,qBAAqB,CAAC;AAE7B,kBAAkB;AAClB,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,2BAA2B;AAC3B,OAAO,EAEL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAExF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EACL,OAAO,EACP,OAAO,EACP,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,GAAG,IAAI,OAAO,EACd,gBAAgB,IAAI,oBAAoB,EACxC,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAE9B,WAAW;AACX,OAAO,EACL,OAAO,EACP,cAAc,EACd,oBAAoB,EACpB,6BAA6B,EAC7B,YAAY,EACZ,2BAA2B,EAE3B,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,GACP,MAAM,qBAAqB,CAAC;AAE7B,kBAAkB;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/src/migrations.d.ts
CHANGED
|
@@ -30,6 +30,12 @@ export interface ResolvedCredential {
|
|
|
30
30
|
*/
|
|
31
31
|
export type CredentialResolver = (serviceName: string, credentialData: unknown) => Promise<ResolvedCredential>;
|
|
32
32
|
export declare const LATEST_VERSION: number;
|
|
33
|
+
/**
|
|
34
|
+
* Read the data format version of an arbitrary Latchkey directory. A directory
|
|
35
|
+
* without a version file is in the oldest format (version 0).
|
|
36
|
+
*/
|
|
37
|
+
export declare function readDataFormatVersionOfDirectory(directory: string): number;
|
|
33
38
|
export declare function readDataFormatVersion(config: Config): number;
|
|
39
|
+
export declare function writeDataFormatVersionOfDirectory(directory: string, version: number): void;
|
|
34
40
|
export declare function runMigrations(config: Config, encryptedStorage: EncryptedStorage, resolveCredential?: CredentialResolver): Promise<void>;
|
|
35
41
|
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAuB,MAAM,0BAA0B,CAAC;AAMpF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAuB,MAAM,0BAA0B,CAAC;AAMpF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAW9D,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAID;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,OAAO,KACpB,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAqNjC,eAAO,MAAM,cAAc,QAAoB,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAa1E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAG1F;AAMD,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,GAAE,kBAAwD,GAC1E,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
|
package/dist/src/migrations.js
CHANGED
|
@@ -4,7 +4,13 @@ import { writeFileAtomic } from './atomicWrite.js';
|
|
|
4
4
|
import { DEFAULT_ACCOUNT } from './apiCredentials/account.js';
|
|
5
5
|
import { ApiCredentialStatus } from './apiCredentials/base.js';
|
|
6
6
|
import { ApiCredentialsSchema, deserializeCredentials, serializeCredentials, } from './apiCredentials/serialization.js';
|
|
7
|
-
import {
|
|
7
|
+
import { BUILTIN_SERVICES, ServiceRegistry } from './serviceRegistry.js';
|
|
8
|
+
/**
|
|
9
|
+
* Migrations run before the CLI has built its own registry, and only ever need
|
|
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.
|
|
12
|
+
*/
|
|
13
|
+
const BUILTIN_SERVICE_REGISTRY = new ServiceRegistry(BUILTIN_SERVICES);
|
|
8
14
|
export class MigrationError extends Error {
|
|
9
15
|
constructor(message) {
|
|
10
16
|
super(message);
|
|
@@ -38,7 +44,7 @@ async function refreshIfExpired(service, credentials) {
|
|
|
38
44
|
* invalidated.
|
|
39
45
|
*/
|
|
40
46
|
async function resolveCredentialViaServiceRegistry(serviceName, credentialData) {
|
|
41
|
-
const service =
|
|
47
|
+
const service = BUILTIN_SERVICE_REGISTRY.getByName(serviceName);
|
|
42
48
|
if (service === null) {
|
|
43
49
|
return { status: ApiCredentialStatus.Unknown, account: null };
|
|
44
50
|
}
|
|
@@ -168,8 +174,12 @@ const MIGRATIONS = [
|
|
|
168
174
|
migrationIntroduceAccountsAndPreparations,
|
|
169
175
|
];
|
|
170
176
|
export const LATEST_VERSION = MIGRATIONS.length;
|
|
171
|
-
|
|
172
|
-
|
|
177
|
+
/**
|
|
178
|
+
* Read the data format version of an arbitrary Latchkey directory. A directory
|
|
179
|
+
* without a version file is in the oldest format (version 0).
|
|
180
|
+
*/
|
|
181
|
+
export function readDataFormatVersionOfDirectory(directory) {
|
|
182
|
+
const versionFilePath = join(directory, DATA_FORMAT_VERSION_FILENAME);
|
|
173
183
|
if (!existsSync(versionFilePath)) {
|
|
174
184
|
return 0;
|
|
175
185
|
}
|
|
@@ -180,8 +190,11 @@ export function readDataFormatVersion(config) {
|
|
|
180
190
|
}
|
|
181
191
|
return version;
|
|
182
192
|
}
|
|
183
|
-
function
|
|
184
|
-
|
|
193
|
+
export function readDataFormatVersion(config) {
|
|
194
|
+
return readDataFormatVersionOfDirectory(config.directory);
|
|
195
|
+
}
|
|
196
|
+
export function writeDataFormatVersionOfDirectory(directory, version) {
|
|
197
|
+
const versionFilePath = join(directory, DATA_FORMAT_VERSION_FILENAME);
|
|
185
198
|
writeFileAtomic(versionFilePath, String(version));
|
|
186
199
|
}
|
|
187
200
|
function isFirstInstallation(config) {
|
|
@@ -194,7 +207,7 @@ export async function runMigrations(config, encryptedStorage, resolveCredential
|
|
|
194
207
|
// created store for one in the oldest format and "migrate" (i.e. corrupt)
|
|
195
208
|
// it.
|
|
196
209
|
mkdirSync(config.directory, { recursive: true, mode: 0o700 });
|
|
197
|
-
|
|
210
|
+
writeDataFormatVersionOfDirectory(config.directory, LATEST_VERSION);
|
|
198
211
|
return;
|
|
199
212
|
}
|
|
200
213
|
const currentVersion = readDataFormatVersion(config);
|
|
@@ -210,7 +223,7 @@ export async function runMigrations(config, encryptedStorage, resolveCredential
|
|
|
210
223
|
await migration(config, encryptedStorage, resolveCredential);
|
|
211
224
|
}
|
|
212
225
|
if (currentVersion < LATEST_VERSION) {
|
|
213
|
-
|
|
226
|
+
writeDataFormatVersionOfDirectory(config.directory, LATEST_VERSION);
|
|
214
227
|
}
|
|
215
228
|
}
|
|
216
229
|
//# sourceMappingURL=migrations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAuB,MAAM,0BAA0B,CAAC;AACpF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAI3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAuB,MAAM,0BAA0B,CAAC;AACpF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAI3C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,wBAAwB,GAAG,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAC;AAEvE,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,4BAA4B,GAAG,qBAAqB,CAAC;AAgC3D;;;;;GAKG;AACH,KAAK,UAAU,gBAAgB,CAC7B,OAAgB,EAChB,WAA2B;IAE3B,IAAI,WAAW,CAAC,SAAS,EAAE,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACpE,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAChE,OAAO,SAAS,IAAI,WAAW,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,mCAAmC,CAChD,WAAmB,EACnB,cAAuB;IAEvB,MAAM,OAAO,GAAG,wBAAwB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAChE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC1C,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC;YACxC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;SAChC,CAAC,CAAC;QACH,OAAO;YACL,MAAM;YACN,OAAO,EAAE,MAAM,KAAK,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YAC9D,cAAc,EACZ,WAAW,KAAK,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC;SACtF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;AACH,CAAC;AAQD,MAAM,0BAA0B,GAAG;IACjC,cAAc;IACd,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,aAAa;IACb,eAAe;IACf,eAAe;CACP,CAAC;AAEX,SAAS,+BAA+B,CAAC,MAAc,EAAE,gBAAkC;IACzF,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACtE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IAC7D,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAErC,KAAK,MAAM,WAAW,IAAI,0BAA0B,EAAE,CAAC;QACrD,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAAC;QACxC,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC;AAcD,SAAS,qBAAqB,CAAC,cAAuB;IACpD,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,cAAyC,CAAC;IACzD,IACE,MAAM,CAAC,UAAU,KAAK,OAAO;QAC7B,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;QACnC,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,EACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAwC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,KAAK,UAAU,yCAAyC,CACtD,MAAc,EACd,gBAAkC,EAClC,iBAAqC;IAErC,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACtE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IAE7D,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,WAAW;QACX,cAAc;QACd,KAAK,EAAE,MAAM,iBAAiB,CAAC,WAAW,EAAE,cAAc,CAAC;KAC5D,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,WAAW,GAA4C,EAAE,CAAC;IAChE,MAAM,YAAY,GAA4B,EAAE,CAAC;IAEjD,KAAK,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,eAAe,EAAE,CAAC;QACrE,MAAM,SAAS,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;YACpD,YAAY,CAAC,WAAW,CAAC,GAAG;gBAC1B,UAAU,EAAE,OAAO;gBACnB,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,YAAY,EAAE,SAAS,CAAC,YAAY;aACrC,CAAC;QACJ,CAAC;QAED,MAAM,qBAAqB,GAAG,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC;QACxF,IAAI,qBAAqB,IAAI,KAAK,CAAC,MAAM,KAAK,mBAAmB,CAAC,OAAO,EAAE,CAAC;YAC1E,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GACX,KAAK,CAAC,MAAM,KAAK,mBAAmB,CAAC,KAAK;YAC1C,KAAK,CAAC,OAAO,KAAK,IAAI;YACtB,KAAK,CAAC,OAAO,KAAK,eAAe;YAC/B,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,eAAe,CAAC;QACtB,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,cAAc,IAAI,cAAc,EAAE,CAAC;IACnF,CAAC;IAED,gBAAgB,CAAC,SAAS,CACxB,MAAM,CAAC,mBAAmB,EAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CACvD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAiC;IAC/C,+BAA+B;IAC/B,yCAAyC;CAC1C,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAAC,SAAiB;IAChE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,cAAc,CACtB,iCAAiC,OAAO,qCAAqC,CAC9E,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,gCAAgC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,SAAiB,EAAE,OAAe;IAClF,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;IACtE,eAAe,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,gBAAkC,EAClC,oBAAwC,mCAAmC;IAE3E,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,uEAAuE;QACvE,oEAAoE;QACpE,0EAA0E;QAC1E,MAAM;QACN,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,iCAAiC,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAErD,IAAI,cAAc,GAAG,cAAc,EAAE,CAAC;QACpC,MAAM,IAAI,cAAc,CACtB,uBAAuB,MAAM,CAAC,cAAc,CAAC,+CAA+C,MAAM,CAAC,cAAc,CAAC,IAAI;YACpH,0BAA0B,CAC7B,CAAC;IACJ,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,cAAc,CAAC,0CAA0C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,cAAc,GAAG,cAAc,EAAE,CAAC;QACpC,iCAAiC,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
|
|
@@ -45,6 +45,14 @@ export declare function withTempBrowserContext<T>(encryptedStorage: EncryptedSto
|
|
|
45
45
|
* unlike fill() which sets the value directly.
|
|
46
46
|
*/
|
|
47
47
|
export declare function typeLikeHuman(page: Page, locator: Locator, text: string): Promise<void>;
|
|
48
|
+
/** One value the user can paste back when the automation could not get it. */
|
|
49
|
+
export interface CredentialFormField {
|
|
50
|
+
/** Key the submitted value appears under. */
|
|
51
|
+
readonly name: string;
|
|
52
|
+
readonly label: string;
|
|
53
|
+
/** Example or explanation shown under the input. */
|
|
54
|
+
readonly hint?: string;
|
|
55
|
+
}
|
|
48
56
|
/**
|
|
49
57
|
* Show a spinner overlay that hides page content from the user.
|
|
50
58
|
* The overlay persists across page navigations within the browser context.
|
|
@@ -59,4 +67,53 @@ export declare function typeLikeHuman(page: Page, locator: Locator, text: string
|
|
|
59
67
|
* type, so longer explanations do not read like a ragged centered block.
|
|
60
68
|
*/
|
|
61
69
|
export declare function showSpinnerPage(context: BrowserContext, message: string, details?: string): Promise<Page | null>;
|
|
70
|
+
export declare class CredentialFormFieldMissingError extends Error {
|
|
71
|
+
constructor(fieldName: string);
|
|
72
|
+
}
|
|
73
|
+
/** Non-empty values the user submitted, keyed by field name. */
|
|
74
|
+
export declare class CredentialFormValues {
|
|
75
|
+
private readonly values;
|
|
76
|
+
constructor(values: ReadonlyMap<string, string>);
|
|
77
|
+
get(fieldName: string): string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Turn what the form handed over into values, or null if it is not a complete
|
|
81
|
+
* set. The form checks completeness too; this is the Node-side half of that,
|
|
82
|
+
* so callers can rely on every field having a value.
|
|
83
|
+
*/
|
|
84
|
+
export declare function parseSubmittedCredentialValues(submitted: unknown, fields: readonly CredentialFormField[]): CredentialFormValues | null;
|
|
85
|
+
/** What the caller makes of a submission: a result, or a problem to report back. */
|
|
86
|
+
export type CredentialFormDecision<T> = {
|
|
87
|
+
readonly accepted: T;
|
|
88
|
+
} | {
|
|
89
|
+
readonly problem: string;
|
|
90
|
+
};
|
|
91
|
+
export interface CredentialRequest<T> {
|
|
92
|
+
readonly context: BrowserContext;
|
|
93
|
+
/**
|
|
94
|
+
* Page to show the request on, typically the spinner the user has been
|
|
95
|
+
* staring at. A page is opened when there is none (or it is already gone).
|
|
96
|
+
*/
|
|
97
|
+
readonly spinnerPage: Page | null;
|
|
98
|
+
readonly message: string;
|
|
99
|
+
readonly details: string;
|
|
100
|
+
readonly fields: readonly CredentialFormField[];
|
|
101
|
+
/**
|
|
102
|
+
* Decides what a submission is worth, e.g. by checking the credentials it
|
|
103
|
+
* builds against the service. A returned problem is shown in the form, which
|
|
104
|
+
* then lets the user correct and submit again.
|
|
105
|
+
*/
|
|
106
|
+
readonly decide: (values: CredentialFormValues) => Promise<CredentialFormDecision<T>>;
|
|
107
|
+
/** How long the request stays up before it is given up on. */
|
|
108
|
+
readonly timeoutMs: number;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Ask the user to paste in credentials the automation could not get, and wait
|
|
112
|
+
* for them to submit something acceptable.
|
|
113
|
+
*
|
|
114
|
+
* Returns null when nothing usable arrived: the user closed the browser, or the
|
|
115
|
+
* request timed out. There is no polling — the page calls in when the user
|
|
116
|
+
* submits, and its "checking..." state is resolved by what `decide` says.
|
|
117
|
+
*/
|
|
118
|
+
export declare function requestCredentialsFromUser<T>(request: CredentialRequest<T>): Promise<T | null>;
|
|
62
119
|
//# sourceMappingURL=playwrightUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwrightUtils.d.ts","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,oBAAqB,SAAQ,KAAK;;CAK9C;AAED,qBAAa,iCAAkC,SAAQ,KAAK;;CAQ3D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAUjD;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,WAAW,EAAE,MAAM,EAAE,cAAc,GAAE,KAAK,GAAG,YAAoB;CAM9E;AAMD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAiB,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAItF;AA2CD;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,CAAC,CAAC,CAoEZ;AAMD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7F;
|
|
1
|
+
{"version":3,"file":"playwrightUtils.d.ts","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -176,11 +176,18 @@ export async function typeLikeHuman(page, locator, text) {
|
|
|
176
176
|
await page.waitForTimeout(delay);
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
/**
|
|
180
|
+
* Script that creates the latchkey overlay, designed to run in browser context.
|
|
181
|
+
*
|
|
182
|
+
* The texts are injected as JSON literals and assigned as text rather than
|
|
183
|
+
* markup, so an error message that happens to contain a backtick or an angle
|
|
184
|
+
* bracket cannot break the script or the page.
|
|
185
|
+
*/
|
|
186
|
+
function createOverlayScript(content) {
|
|
187
|
+
const { message, details, showSpinner, formFields } = content;
|
|
181
188
|
return `
|
|
182
189
|
(() => {
|
|
183
|
-
|
|
190
|
+
document.getElementById('latchkey-spinner-overlay')?.remove();
|
|
184
191
|
const overlay = document.createElement('div');
|
|
185
192
|
overlay.id = 'latchkey-spinner-overlay';
|
|
186
193
|
overlay.innerHTML = \`
|
|
@@ -215,6 +222,10 @@ function createSpinnerOverlayScript(message, details) {
|
|
|
215
222
|
text-align: center;
|
|
216
223
|
max-width: 80%;
|
|
217
224
|
white-space: pre-line;
|
|
225
|
+
/* The text is there to be read from and copied (URLs, mostly), which
|
|
226
|
+
needs the pointer to reach it — the overlay itself stays inert. */
|
|
227
|
+
pointer-events: auto;
|
|
228
|
+
user-select: text;
|
|
218
229
|
}
|
|
219
230
|
#latchkey-spinner-overlay .details {
|
|
220
231
|
margin-top: 44px;
|
|
@@ -222,16 +233,140 @@ function createSpinnerOverlayScript(message, details) {
|
|
|
222
233
|
font-size: 13px;
|
|
223
234
|
line-height: 1.6;
|
|
224
235
|
text-align: left;
|
|
225
|
-
max-width:
|
|
236
|
+
max-width: 460px;
|
|
237
|
+
white-space: pre-line;
|
|
238
|
+
pointer-events: auto;
|
|
239
|
+
user-select: text;
|
|
240
|
+
}
|
|
241
|
+
#latchkey-spinner-overlay form {
|
|
242
|
+
margin-top: 28px;
|
|
243
|
+
width: 460px;
|
|
244
|
+
max-width: 80%;
|
|
245
|
+
display: flex;
|
|
246
|
+
flex-direction: column;
|
|
247
|
+
gap: 14px;
|
|
248
|
+
pointer-events: auto;
|
|
249
|
+
font-size: 13px;
|
|
250
|
+
color: #555;
|
|
251
|
+
}
|
|
252
|
+
#latchkey-spinner-overlay form label {
|
|
253
|
+
display: block;
|
|
254
|
+
margin-bottom: 4px;
|
|
255
|
+
}
|
|
256
|
+
#latchkey-spinner-overlay form input {
|
|
257
|
+
width: 100%;
|
|
258
|
+
box-sizing: border-box;
|
|
259
|
+
padding: 8px 10px;
|
|
260
|
+
border: 1px solid #cfcfcf;
|
|
261
|
+
border-radius: 4px;
|
|
262
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
263
|
+
font-size: 13px;
|
|
264
|
+
background: #fff;
|
|
265
|
+
}
|
|
266
|
+
#latchkey-spinner-overlay form .hint {
|
|
267
|
+
margin-top: 4px;
|
|
268
|
+
color: #8a8a8a;
|
|
269
|
+
font-size: 12px;
|
|
270
|
+
}
|
|
271
|
+
#latchkey-spinner-overlay form button {
|
|
272
|
+
align-self: flex-start;
|
|
273
|
+
padding: 8px 16px;
|
|
274
|
+
border: none;
|
|
275
|
+
border-radius: 4px;
|
|
276
|
+
background: #007bff;
|
|
277
|
+
color: #fff;
|
|
278
|
+
font-size: 13px;
|
|
279
|
+
cursor: pointer;
|
|
280
|
+
}
|
|
281
|
+
#latchkey-spinner-overlay form button:disabled {
|
|
282
|
+
background: #9dc7f5;
|
|
283
|
+
cursor: default;
|
|
284
|
+
}
|
|
285
|
+
#latchkey-spinner-overlay .form-status {
|
|
286
|
+
color: #c0392b;
|
|
287
|
+
font-size: 13px;
|
|
288
|
+
min-height: 18px;
|
|
289
|
+
white-space: pre-line;
|
|
290
|
+
}
|
|
291
|
+
#latchkey-spinner-overlay .form-status.accepted {
|
|
292
|
+
color: #1e7e34;
|
|
226
293
|
}
|
|
227
294
|
@keyframes latchkey-spin {
|
|
228
295
|
to { transform: rotate(360deg); }
|
|
229
296
|
}
|
|
230
297
|
</style>
|
|
231
|
-
<div class="spinner"></div>
|
|
232
|
-
<div class="message"
|
|
233
|
-
|
|
298
|
+
${showSpinner ? '<div class="spinner"></div>' : ''}
|
|
299
|
+
<div class="message"></div>
|
|
300
|
+
<div class="details"></div>
|
|
234
301
|
\`;
|
|
302
|
+
overlay.querySelector('.message').textContent = ${JSON.stringify(message)};
|
|
303
|
+
const detailsText = ${JSON.stringify(details)};
|
|
304
|
+
const detailsElement = overlay.querySelector('.details');
|
|
305
|
+
if (detailsText === '') {
|
|
306
|
+
detailsElement.remove();
|
|
307
|
+
} else {
|
|
308
|
+
detailsElement.textContent = detailsText;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
const fields = ${JSON.stringify(formFields)};
|
|
312
|
+
if (fields.length > 0) {
|
|
313
|
+
const form = document.createElement('form');
|
|
314
|
+
const inputs = fields.map((field) => {
|
|
315
|
+
const wrapper = document.createElement('div');
|
|
316
|
+
const label = document.createElement('label');
|
|
317
|
+
label.textContent = field.label;
|
|
318
|
+
const input = document.createElement('input');
|
|
319
|
+
input.type = 'text';
|
|
320
|
+
input.autocomplete = 'off';
|
|
321
|
+
input.spellcheck = false;
|
|
322
|
+
label.appendChild(input);
|
|
323
|
+
wrapper.appendChild(label);
|
|
324
|
+
if (field.hint) {
|
|
325
|
+
const hint = document.createElement('div');
|
|
326
|
+
hint.className = 'hint';
|
|
327
|
+
hint.textContent = field.hint;
|
|
328
|
+
wrapper.appendChild(hint);
|
|
329
|
+
}
|
|
330
|
+
form.appendChild(wrapper);
|
|
331
|
+
return { name: field.name, input: input };
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
const status = document.createElement('div');
|
|
335
|
+
status.className = 'form-status';
|
|
336
|
+
const submit = document.createElement('button');
|
|
337
|
+
submit.type = 'submit';
|
|
338
|
+
submit.textContent = 'Use these credentials';
|
|
339
|
+
form.appendChild(submit);
|
|
340
|
+
form.appendChild(status);
|
|
341
|
+
|
|
342
|
+
form.addEventListener('submit', async (event) => {
|
|
343
|
+
event.preventDefault();
|
|
344
|
+
const values = {};
|
|
345
|
+
for (const entry of inputs) {
|
|
346
|
+
values[entry.name] = entry.input.value.trim();
|
|
347
|
+
}
|
|
348
|
+
const isComplete = inputs.every((entry) => values[entry.name] !== '');
|
|
349
|
+
if (!isComplete) {
|
|
350
|
+
status.textContent = 'Please fill in every field.';
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
status.className = 'form-status';
|
|
354
|
+
status.textContent = 'Checking the credentials...';
|
|
355
|
+
submit.disabled = true;
|
|
356
|
+
const decision = await window['${SUBMIT_CREDENTIALS_BINDING}'](values);
|
|
357
|
+
if (decision && decision.problem) {
|
|
358
|
+
status.textContent = decision.problem;
|
|
359
|
+
submit.disabled = false;
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
status.className = 'form-status accepted';
|
|
363
|
+
status.textContent = 'Credentials accepted. This window can be closed.';
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
overlay.appendChild(form);
|
|
367
|
+
setTimeout(() => { inputs[0].input.focus(); }, 0);
|
|
368
|
+
}
|
|
369
|
+
|
|
235
370
|
document.body.appendChild(overlay);
|
|
236
371
|
})()
|
|
237
372
|
`;
|
|
@@ -254,8 +389,112 @@ export async function showSpinnerPage(context, message, details = '') {
|
|
|
254
389
|
return null;
|
|
255
390
|
}
|
|
256
391
|
const spinnerPage = await context.newPage();
|
|
257
|
-
await spinnerPage.evaluate(
|
|
392
|
+
await spinnerPage.evaluate(createOverlayScript({ message, details, showSpinner: true, formFields: [] }));
|
|
258
393
|
await spinnerPage.bringToFront();
|
|
259
394
|
return spinnerPage;
|
|
260
395
|
}
|
|
396
|
+
/** Name the credential form calls to hand what the user typed back to latchkey. */
|
|
397
|
+
const SUBMIT_CREDENTIALS_BINDING = '__latchkeySubmitCredentials';
|
|
398
|
+
export class CredentialFormFieldMissingError extends Error {
|
|
399
|
+
constructor(fieldName) {
|
|
400
|
+
super(`The credential form did not provide a value for '${fieldName}'.`);
|
|
401
|
+
this.name = 'CredentialFormFieldMissingError';
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
/** Non-empty values the user submitted, keyed by field name. */
|
|
405
|
+
export class CredentialFormValues {
|
|
406
|
+
values;
|
|
407
|
+
constructor(values) {
|
|
408
|
+
this.values = values;
|
|
409
|
+
}
|
|
410
|
+
get(fieldName) {
|
|
411
|
+
const value = this.values.get(fieldName);
|
|
412
|
+
if (value === undefined) {
|
|
413
|
+
throw new CredentialFormFieldMissingError(fieldName);
|
|
414
|
+
}
|
|
415
|
+
return value;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Turn what the form handed over into values, or null if it is not a complete
|
|
420
|
+
* set. The form checks completeness too; this is the Node-side half of that,
|
|
421
|
+
* so callers can rely on every field having a value.
|
|
422
|
+
*/
|
|
423
|
+
export function parseSubmittedCredentialValues(submitted, fields) {
|
|
424
|
+
if (typeof submitted !== 'object' || submitted === null) {
|
|
425
|
+
return null;
|
|
426
|
+
}
|
|
427
|
+
const submittedValues = submitted;
|
|
428
|
+
const values = new Map();
|
|
429
|
+
for (const field of fields) {
|
|
430
|
+
const value = submittedValues[field.name];
|
|
431
|
+
if (typeof value !== 'string' || value === '') {
|
|
432
|
+
return null;
|
|
433
|
+
}
|
|
434
|
+
values.set(field.name, value);
|
|
435
|
+
}
|
|
436
|
+
return new CredentialFormValues(values);
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Ask the user to paste in credentials the automation could not get, and wait
|
|
440
|
+
* for them to submit something acceptable.
|
|
441
|
+
*
|
|
442
|
+
* Returns null when nothing usable arrived: the user closed the browser, or the
|
|
443
|
+
* request timed out. There is no polling — the page calls in when the user
|
|
444
|
+
* submits, and its "checking..." state is resolved by what `decide` says.
|
|
445
|
+
*/
|
|
446
|
+
export async function requestCredentialsFromUser(request) {
|
|
447
|
+
const { context, spinnerPage, message, details, fields, decide, timeoutMs } = request;
|
|
448
|
+
const page = spinnerPage !== null && !spinnerPage.isClosed() ? spinnerPage : await context.newPage();
|
|
449
|
+
let resolveAccepted = () => {
|
|
450
|
+
/* replaced below */
|
|
451
|
+
};
|
|
452
|
+
const accepted = new Promise((resolve) => {
|
|
453
|
+
resolveAccepted = resolve;
|
|
454
|
+
});
|
|
455
|
+
// Listened for before the form goes up: a browser closed while it is being
|
|
456
|
+
// rendered should end the wait just the same.
|
|
457
|
+
const abandoned = new Promise((resolve) => {
|
|
458
|
+
const giveUp = () => {
|
|
459
|
+
resolve(null);
|
|
460
|
+
};
|
|
461
|
+
page.on('close', giveUp);
|
|
462
|
+
context.on('close', giveUp);
|
|
463
|
+
context.browser()?.on('disconnected', giveUp);
|
|
464
|
+
});
|
|
465
|
+
await page.exposeFunction(SUBMIT_CREDENTIALS_BINDING, async (submitted) => {
|
|
466
|
+
const values = parseSubmittedCredentialValues(submitted, fields);
|
|
467
|
+
if (values === null) {
|
|
468
|
+
return { problem: 'Please fill in every field.' };
|
|
469
|
+
}
|
|
470
|
+
let decision;
|
|
471
|
+
try {
|
|
472
|
+
decision = await decide(values);
|
|
473
|
+
}
|
|
474
|
+
catch (error) {
|
|
475
|
+
// The page is waiting for an answer, so failures are reported as
|
|
476
|
+
// problems rather than left to become an unhandled rejection there.
|
|
477
|
+
return { problem: error instanceof Error ? error.message : 'These values cannot be used.' };
|
|
478
|
+
}
|
|
479
|
+
if ('problem' in decision) {
|
|
480
|
+
return { problem: decision.problem };
|
|
481
|
+
}
|
|
482
|
+
resolveAccepted(decision.accepted);
|
|
483
|
+
return { accepted: true };
|
|
484
|
+
});
|
|
485
|
+
await page.evaluate(createOverlayScript({ message, details, showSpinner: false, formFields: fields }));
|
|
486
|
+
await page.bringToFront();
|
|
487
|
+
let timer;
|
|
488
|
+
const timedOut = new Promise((resolve) => {
|
|
489
|
+
timer = setTimeout(() => {
|
|
490
|
+
resolve(null);
|
|
491
|
+
}, timeoutMs);
|
|
492
|
+
});
|
|
493
|
+
try {
|
|
494
|
+
return await Promise.race([accepted, abandoned, timedOut]);
|
|
495
|
+
}
|
|
496
|
+
finally {
|
|
497
|
+
clearTimeout(timer);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
261
500
|
//# sourceMappingURL=playwrightUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwrightUtils.js","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"playwrightUtils.js","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,5 +43,18 @@ export declare class ServiceRegistry {
|
|
|
43
43
|
*/
|
|
44
44
|
export declare function hideServicesFromRegistry(registry: ServiceRegistry, serviceNames: readonly string[]): void;
|
|
45
45
|
export declare function loadRegisteredServicesIntoServiceRegistry(configPath: string, registry: ServiceRegistry): void;
|
|
46
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Build a registry holding `builtinServices` plus the services registered in
|
|
48
|
+
* config.json, with the named services removed. This is how both the CLI and
|
|
49
|
+
* every gateway request get their registry.
|
|
50
|
+
*
|
|
51
|
+
* Hiding happens once the whole file has been loaded, so that a registered
|
|
52
|
+
* service naming a hidden built-in as its family still resolves that family.
|
|
53
|
+
*
|
|
54
|
+
* A null `configPath` skips config.json entirely, which is what the CLI does
|
|
55
|
+
* when it is pointed at a remote gateway: the gateway owns the registered
|
|
56
|
+
* services there, and the local CLI only forwards commands to it.
|
|
57
|
+
*/
|
|
58
|
+
export declare function createServiceRegistry(builtinServices: readonly Service[], configPath: string | null, hiddenServiceNames: readonly string[]): ServiceRegistry;
|
|
59
|
+
export declare const BUILTIN_SERVICES: readonly Service[];
|
|
47
60
|
//# sourceMappingURL=serviceRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceRegistry.d.ts","sourceRoot":"","sources":["../../src/serviceRegistry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EACL,OAAO,EAqCR,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,IAAI,EAAE,MAAM;CAIzB;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,IAAI,EAAE,MAAM;CAMzB;AAID,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM5D;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,QAAQ,EAAE,SAAS,OAAO,EAAE;IAIxC,IAAI,QAAQ,IAAI,SAAS,OAAO,EAAE,CAEjC;IAED,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAOlC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOjC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IASvC,OAAO,CAAC,UAAU;IAelB;;;;;;;;OAQG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,OAAO,EAAE;IAInD;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;CAGtC;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,IAAI,CAIN;AAyBD,wBAAgB,yCAAyC,CACvD,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,eAAe,GACxB,IAAI,CAwBN;AAED,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"serviceRegistry.d.ts","sourceRoot":"","sources":["../../src/serviceRegistry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EACL,OAAO,EAqCR,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,IAAI,EAAE,MAAM;CAIzB;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,IAAI,EAAE,MAAM;CAMzB;AAID,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM5D;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,QAAQ,EAAE,SAAS,OAAO,EAAE;IAIxC,IAAI,QAAQ,IAAI,SAAS,OAAO,EAAE,CAEjC;IAED,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAOlC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOjC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IASvC,OAAO,CAAC,UAAU;IAelB;;;;;;;;OAQG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,OAAO,EAAE;IAInD;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;CAGtC;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,IAAI,CAIN;AAyBD,wBAAgB,yCAAyC,CACvD,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,eAAe,GACxB,IAAI,CAwBN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,SAAS,OAAO,EAAE,EACnC,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,kBAAkB,EAAE,SAAS,MAAM,EAAE,GACpC,eAAe,CAOjB;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,OAAO,EAqC9C,CAAC"}
|
|
@@ -140,7 +140,27 @@ export function loadRegisteredServicesIntoServiceRegistry(configPath, registry)
|
|
|
140
140
|
registry.addService(registeredService);
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
|
-
|
|
143
|
+
/**
|
|
144
|
+
* Build a registry holding `builtinServices` plus the services registered in
|
|
145
|
+
* config.json, with the named services removed. This is how both the CLI and
|
|
146
|
+
* every gateway request get their registry.
|
|
147
|
+
*
|
|
148
|
+
* Hiding happens once the whole file has been loaded, so that a registered
|
|
149
|
+
* service naming a hidden built-in as its family still resolves that family.
|
|
150
|
+
*
|
|
151
|
+
* A null `configPath` skips config.json entirely, which is what the CLI does
|
|
152
|
+
* when it is pointed at a remote gateway: the gateway owns the registered
|
|
153
|
+
* services there, and the local CLI only forwards commands to it.
|
|
154
|
+
*/
|
|
155
|
+
export function createServiceRegistry(builtinServices, configPath, hiddenServiceNames) {
|
|
156
|
+
const registry = new ServiceRegistry(builtinServices);
|
|
157
|
+
if (configPath !== null) {
|
|
158
|
+
loadRegisteredServicesIntoServiceRegistry(configPath, registry);
|
|
159
|
+
}
|
|
160
|
+
hideServicesFromRegistry(registry, hiddenServiceNames);
|
|
161
|
+
return registry;
|
|
162
|
+
}
|
|
163
|
+
export const BUILTIN_SERVICES = [
|
|
144
164
|
SLACK,
|
|
145
165
|
DISCORD,
|
|
146
166
|
DROPBOX,
|
|
@@ -177,5 +197,5 @@ export const SERVICE_REGISTRY = new ServiceRegistry([
|
|
|
177
197
|
HUGGINGFACE,
|
|
178
198
|
OPENROUTER,
|
|
179
199
|
TAILSCALE,
|
|
180
|
-
]
|
|
200
|
+
];
|
|
181
201
|
//# sourceMappingURL=serviceRegistry.js.map
|