latchkey 2.4.2 → 2.5.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 (50) hide show
  1. package/README.md +5 -0
  2. package/dist/package.json +1 -1
  3. package/dist/scripts/encryptFile.d.ts +21 -0
  4. package/dist/scripts/encryptFile.d.ts.map +1 -0
  5. package/dist/scripts/encryptFile.js +101 -0
  6. package/dist/scripts/encryptFile.js.map +1 -0
  7. package/dist/skills/generic/SKILL.md +114 -0
  8. package/dist/skills/generic/latchkey/SKILL.md +114 -0
  9. package/dist/skills/openclaw/SKILL.md +106 -0
  10. package/dist/skills/openclaw/latchkey/SKILL.md +106 -0
  11. package/dist/src/browserState.d.ts +8 -0
  12. package/dist/src/browserState.d.ts.map +1 -0
  13. package/dist/src/browserState.js +21 -0
  14. package/dist/src/browserState.js.map +1 -0
  15. package/dist/src/cli.js +1 -1
  16. package/dist/src/cli.js.map +1 -1
  17. package/dist/src/latestVersionCheck.d.ts +10 -0
  18. package/dist/src/latestVersionCheck.d.ts.map +1 -0
  19. package/dist/src/latestVersionCheck.js +42 -0
  20. package/dist/src/latestVersionCheck.js.map +1 -0
  21. package/dist/src/registeredService.d.ts +20 -0
  22. package/dist/src/registeredService.d.ts.map +1 -0
  23. package/dist/src/registeredService.js +34 -0
  24. package/dist/src/registeredService.js.map +1 -0
  25. package/dist/src/registeredServiceStore.d.ts +24 -0
  26. package/dist/src/registeredServiceStore.d.ts.map +1 -0
  27. package/dist/src/registeredServiceStore.js +70 -0
  28. package/dist/src/registeredServiceStore.js.map +1 -0
  29. package/dist/src/services/google/maps.d.ts +39 -0
  30. package/dist/src/services/google/maps.d.ts.map +1 -0
  31. package/dist/src/services/google/maps.js +94 -0
  32. package/dist/src/services/google/maps.js.map +1 -0
  33. package/dist/src/services/google.d.ts.map +1 -1
  34. package/dist/src/services/google.js +4 -3
  35. package/dist/src/services/google.js.map +1 -1
  36. package/dist/src/services/googleAnalytics.d.ts +11 -0
  37. package/dist/src/services/googleAnalytics.d.ts.map +1 -0
  38. package/dist/src/services/googleAnalytics.js +18 -0
  39. package/dist/src/services/googleAnalytics.js.map +1 -0
  40. package/dist/src/services/googleMaps.d.ts +12 -0
  41. package/dist/src/services/googleMaps.d.ts.map +1 -0
  42. package/dist/src/services/googleMaps.js +17 -0
  43. package/dist/src/services/googleMaps.js.map +1 -0
  44. package/dist/src/skillMd.js +2 -2
  45. package/dist/src/skillMd.js.map +1 -1
  46. package/dist/tests/latestVersionCheck.test.d.ts +2 -0
  47. package/dist/tests/latestVersionCheck.test.d.ts.map +1 -0
  48. package/dist/tests/latestVersionCheck.test.js +80 -0
  49. package/dist/tests/latestVersionCheck.test.js.map +1 -0
  50. package/package.json +7 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latestVersionCheck.d.ts","sourceRoot":"","sources":["../../src/latestVersionCheck.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAyB1C,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAgB/D"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Fire-and-forget version check on startup.
3
+ *
4
+ * Reads `LATCHKEY_DIR/latest-version-check` for an ISO timestamp.
5
+ * If the file is missing or the timestamp is older than 24 hours,
6
+ * spawns a detached curl process to ping the version endpoint.
7
+ */
8
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
9
+ import { join } from 'node:path';
10
+ import { runDetached } from './curl.js';
11
+ const VERSION_CHECK_FILENAME = 'latest-version-check';
12
+ const VERSION_CHECK_URL = 'https://dau-tracker.latchkey.host.imbue.com/api/version/latchkey';
13
+ const ONE_DAY_IN_MILLISECONDS = 24 * 60 * 60 * 1000;
14
+ const TIMEOUT_SECONDS = 5;
15
+ function shouldCheck(config) {
16
+ const filePath = join(config.directory, VERSION_CHECK_FILENAME);
17
+ if (!existsSync(filePath)) {
18
+ return true;
19
+ }
20
+ const content = readFileSync(filePath, 'utf-8').trim();
21
+ const timestamp = new Date(content);
22
+ if (isNaN(timestamp.getTime())) {
23
+ return true;
24
+ }
25
+ return Date.now() - timestamp.getTime() > ONE_DAY_IN_MILLISECONDS;
26
+ }
27
+ export function checkLatestVersionIfNeeded(config) {
28
+ if (config.telemetryDisabled || !shouldCheck(config)) {
29
+ return;
30
+ }
31
+ const filePath = join(config.directory, VERSION_CHECK_FILENAME);
32
+ writeFileSync(filePath, new Date().toISOString(), 'utf-8');
33
+ runDetached([
34
+ '--silent',
35
+ '--max-time',
36
+ String(TIMEOUT_SECONDS),
37
+ '--output',
38
+ '/dev/null',
39
+ VERSION_CHECK_URL,
40
+ ]);
41
+ }
42
+ //# sourceMappingURL=latestVersionCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latestVersionCheck.js","sourceRoot":"","sources":["../../src/latestVersionCheck.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AACtD,MAAM,iBAAiB,GAAG,kEAAkE,CAAC;AAC7F,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACpD,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAEhE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,uBAAuB,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAc;IACvD,IAAI,MAAM,CAAC,iBAAiB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAChE,aAAa,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;IAE3D,WAAW,CAAC;QACV,UAAU;QACV,YAAY;QACZ,MAAM,CAAC,eAAe,CAAC;QACvB,UAAU;QACV,WAAW;QACX,iBAAiB;KAClB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * A user-registered service that wraps a built-in "family" service
3
+ * with a custom name and base API URL. Used for self-hosted instances.
4
+ */
5
+ import type { ApiCredentials } from './apiCredentials.js';
6
+ import { Service, type ServiceSession } from './services/base.js';
7
+ export declare class RegisteredService extends Service {
8
+ readonly name: string;
9
+ readonly displayName: string;
10
+ readonly baseApiUrls: readonly string[];
11
+ readonly loginUrl: string;
12
+ readonly info: string;
13
+ readonly credentialCheckCurlArguments: readonly string[];
14
+ private readonly familyService;
15
+ constructor(name: string, baseApiUrl: string, familyService: Service, loginUrl?: string);
16
+ getSession?(): ServiceSession;
17
+ setCredentialsExample(serviceName: string): string;
18
+ getCredentialsNoCurl(arguments_: readonly string[]): ApiCredentials;
19
+ }
20
+ //# sourceMappingURL=registeredService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registeredService.d.ts","sourceRoot":"","sources":["../../src/registeredService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAElE,qBAAa,iBAAkB,SAAQ,OAAO;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,4BAA4B,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;gBAE5B,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;IAe9E,UAAU,CAAC,IAAI,cAAc;IAEtC,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIzC,oBAAoB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc;CAG7E"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * A user-registered service that wraps a built-in "family" service
3
+ * with a custom name and base API URL. Used for self-hosted instances.
4
+ */
5
+ import { Service } from './services/base.js';
6
+ export class RegisteredService extends Service {
7
+ name;
8
+ displayName;
9
+ baseApiUrls;
10
+ loginUrl;
11
+ info;
12
+ credentialCheckCurlArguments;
13
+ familyService;
14
+ constructor(name, baseApiUrl, familyService, loginUrl) {
15
+ super();
16
+ this.name = name;
17
+ this.displayName = name;
18
+ this.baseApiUrls = [baseApiUrl];
19
+ this.loginUrl = loginUrl ?? '';
20
+ this.info = `Self-hosted ${familyService.displayName} instance. ${familyService.info}`;
21
+ this.credentialCheckCurlArguments = [];
22
+ this.familyService = familyService;
23
+ if (loginUrl !== undefined && familyService.getSession !== undefined) {
24
+ this.getSession = () => familyService.getSession();
25
+ }
26
+ }
27
+ setCredentialsExample(serviceName) {
28
+ return this.familyService.setCredentialsExample(serviceName);
29
+ }
30
+ getCredentialsNoCurl(arguments_) {
31
+ return this.familyService.getCredentialsNoCurl(arguments_);
32
+ }
33
+ }
34
+ //# sourceMappingURL=registeredService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registeredService.js","sourceRoot":"","sources":["../../src/registeredService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAuB,MAAM,oBAAoB,CAAC;AAElE,MAAM,OAAO,iBAAkB,SAAQ,OAAO;IACnC,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,WAAW,CAAoB;IAC/B,QAAQ,CAAS;IACjB,IAAI,CAAS;IACb,4BAA4B,CAAoB;IAExC,aAAa,CAAU;IAExC,YAAY,IAAY,EAAE,UAAkB,EAAE,aAAsB,EAAE,QAAiB;QACrF,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,eAAe,aAAa,CAAC,WAAW,cAAc,aAAa,CAAC,IAAI,EAAE,CAAC;QACvF,IAAI,CAAC,4BAA4B,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,IAAI,QAAQ,KAAK,SAAS,IAAI,aAAa,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrE,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,UAAW,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IAID,qBAAqB,CAAC,WAAmB;QACvC,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC/D,CAAC;IAEQ,oBAAoB,CAAC,UAA6B;QACzD,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Persistence for user-registered services in config.json.
3
+ */
4
+ import { z } from 'zod';
5
+ import type { Registry } from './registry.js';
6
+ declare const RegisteredServiceEntrySchema: z.ZodObject<{
7
+ baseApiUrl: z.ZodString;
8
+ serviceFamily: z.ZodString;
9
+ loginUrl: z.ZodOptional<z.ZodString>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ baseApiUrl: string;
12
+ serviceFamily: string;
13
+ loginUrl?: string | undefined;
14
+ }, {
15
+ baseApiUrl: string;
16
+ serviceFamily: string;
17
+ loginUrl?: string | undefined;
18
+ }>;
19
+ export type RegisteredServiceEntry = z.infer<typeof RegisteredServiceEntrySchema>;
20
+ export declare function loadRegisteredServices(configPath: string): ReadonlyMap<string, RegisteredServiceEntry>;
21
+ export declare function saveRegisteredService(configPath: string, name: string, entry: RegisteredServiceEntry): void;
22
+ export declare function loadRegisteredServicesIntoRegistry(configPath: string, registry: Registry): void;
23
+ export {};
24
+ //# sourceMappingURL=registeredServiceStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registeredServiceStore.d.ts","sourceRoot":"","sources":["../../src/registeredServiceStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,QAAA,MAAM,4BAA4B;;;;;;;;;;;;EAIhC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAIlF,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,GACjB,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAiB7C;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,sBAAsB,GAC5B,IAAI,CA2BN;AAED,wBAAgB,kCAAkC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAkB/F"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Persistence for user-registered services in config.json.
3
+ */
4
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
5
+ import { dirname } from 'node:path';
6
+ import { z } from 'zod';
7
+ import { RegisteredService } from './registeredService.js';
8
+ const RegisteredServiceEntrySchema = z.object({
9
+ baseApiUrl: z.string(),
10
+ serviceFamily: z.string(),
11
+ loginUrl: z.string().optional(),
12
+ });
13
+ const RegisteredServicesSchema = z.record(z.string(), RegisteredServiceEntrySchema);
14
+ export function loadRegisteredServices(configPath) {
15
+ if (!existsSync(configPath)) {
16
+ return new Map();
17
+ }
18
+ try {
19
+ const content = readFileSync(configPath, 'utf-8');
20
+ const data = JSON.parse(content);
21
+ if (typeof data !== 'object' || data === null) {
22
+ return new Map();
23
+ }
24
+ const record = data;
25
+ const registeredServices = RegisteredServicesSchema.parse(record.registeredServices ?? {});
26
+ return new Map(Object.entries(registeredServices));
27
+ }
28
+ catch {
29
+ return new Map();
30
+ }
31
+ }
32
+ export function saveRegisteredService(configPath, name, entry) {
33
+ const directory = dirname(configPath);
34
+ if (!existsSync(directory)) {
35
+ mkdirSync(directory, { recursive: true, mode: 0o700 });
36
+ }
37
+ let existingConfig = {};
38
+ if (existsSync(configPath)) {
39
+ try {
40
+ const existingContent = readFileSync(configPath, 'utf-8');
41
+ existingConfig = JSON.parse(existingContent);
42
+ }
43
+ catch {
44
+ // Ignore parse errors, start fresh
45
+ }
46
+ }
47
+ const registeredServices = typeof existingConfig.registeredServices === 'object' &&
48
+ existingConfig.registeredServices !== null
49
+ ? existingConfig.registeredServices
50
+ : {};
51
+ registeredServices[name] = entry;
52
+ existingConfig.registeredServices = registeredServices;
53
+ const content = JSON.stringify(existingConfig, null, 2);
54
+ writeFileSync(configPath, content, { encoding: 'utf-8' });
55
+ }
56
+ export function loadRegisteredServicesIntoRegistry(configPath, registry) {
57
+ const entries = loadRegisteredServices(configPath);
58
+ for (const [name, entry] of entries) {
59
+ const familyService = registry.getByName(entry.serviceFamily);
60
+ if (familyService === null) {
61
+ continue;
62
+ }
63
+ if (registry.getByName(name) !== null) {
64
+ continue;
65
+ }
66
+ const registeredService = new RegisteredService(name, entry.baseApiUrl, familyService, entry.loginUrl);
67
+ registry.addService(registeredService);
68
+ }
69
+ }
70
+ //# sourceMappingURL=registeredServiceStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registeredServiceStore.js","sourceRoot":"","sources":["../../src/registeredServiceStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod';
2
+ import { ApiCredentialStatus, type ApiCredentials } from '../../apiCredentials.js';
3
+ import { Service } from '../base.js';
4
+ /**
5
+ * Google Maps API key credentials.
6
+ * The API key is injected as a `key=` query parameter in the URL.
7
+ */
8
+ export declare const GoogleMapsApiKeyCredentialsSchema: z.ZodObject<{
9
+ objectType: z.ZodLiteral<"googleMapsApiKey">;
10
+ apiKey: z.ZodString;
11
+ }, "strip", z.ZodTypeAny, {
12
+ objectType: "googleMapsApiKey";
13
+ apiKey: string;
14
+ }, {
15
+ objectType: "googleMapsApiKey";
16
+ apiKey: string;
17
+ }>;
18
+ export type GoogleMapsApiKeyCredentialsData = z.infer<typeof GoogleMapsApiKeyCredentialsSchema>;
19
+ export declare class GoogleMapsApiKeyCredentials implements ApiCredentials {
20
+ readonly objectType: "googleMapsApiKey";
21
+ readonly apiKey: string;
22
+ constructor(apiKey: string);
23
+ injectIntoCurlCall(curlArguments: readonly string[]): readonly string[];
24
+ isExpired(): boolean | undefined;
25
+ toJSON(): GoogleMapsApiKeyCredentialsData;
26
+ static fromJSON(data: GoogleMapsApiKeyCredentialsData): GoogleMapsApiKeyCredentials;
27
+ }
28
+ export declare class GoogleMaps extends Service {
29
+ readonly name = "google-maps";
30
+ readonly displayName = "Google Maps";
31
+ readonly baseApiUrls: readonly ["https://maps.googleapis.com/"];
32
+ readonly loginUrl = "https://console.cloud.google.com/google/maps-apis/";
33
+ readonly info: string;
34
+ readonly credentialCheckCurlArguments: readonly ["https://maps.googleapis.com/maps/api/geocode/json?address=test"];
35
+ getCredentialsNoCurl(arguments_: readonly string[]): ApiCredentials;
36
+ checkApiCredentials(apiCredentials: ApiCredentials): ApiCredentialStatus;
37
+ }
38
+ export declare const GOOGLE_MAPS: GoogleMaps;
39
+ //# sourceMappingURL=maps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maps.d.ts","sourceRoot":"","sources":["../../../../src/services/google/maps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAsC,OAAO,EAAE,MAAM,YAAY,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;EAG5C,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAEhG,qBAAa,2BAA4B,YAAW,cAAc;IAChE,QAAQ,CAAC,UAAU,EAAG,kBAAkB,CAAU;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM;IAI1B,kBAAkB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IAcvE,SAAS,IAAI,OAAO,GAAG,SAAS;IAIhC,MAAM,IAAI,+BAA+B;IAOzC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,+BAA+B,GAAG,2BAA2B;CAGpF;AAED,qBAAa,UAAW,SAAQ,OAAO;IACrC,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,iBAAiB;IACrC,QAAQ,CAAC,WAAW,4CAA6C;IACjE,QAAQ,CAAC,QAAQ,wDAAwD;IACzE,QAAQ,CAAC,IAAI,SAKkC;IAE/C,QAAQ,CAAC,4BAA4B,8EAE1B;IAEF,oBAAoB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc;IAiBnE,mBAAmB,CAAC,cAAc,EAAE,cAAc,GAAG,mBAAmB;CAiBlF;AAUD,eAAO,MAAM,WAAW,YAAmB,CAAC"}
@@ -0,0 +1,94 @@
1
+ import { z } from 'zod';
2
+ import { ApiCredentialStatus } from '../../apiCredentials.js';
3
+ import { extractUrlFromCurlArguments, runCaptured } from '../../curl.js';
4
+ import { NoCurlCredentialsNotSupportedError, Service } from '../base.js';
5
+ /**
6
+ * Google Maps API key credentials.
7
+ * The API key is injected as a `key=` query parameter in the URL.
8
+ */
9
+ export const GoogleMapsApiKeyCredentialsSchema = z.object({
10
+ objectType: z.literal('googleMapsApiKey'),
11
+ apiKey: z.string(),
12
+ });
13
+ export class GoogleMapsApiKeyCredentials {
14
+ objectType = 'googleMapsApiKey';
15
+ apiKey;
16
+ constructor(apiKey) {
17
+ this.apiKey = apiKey;
18
+ }
19
+ injectIntoCurlCall(curlArguments) {
20
+ const url = extractUrlFromCurlArguments(curlArguments);
21
+ if (!url?.startsWith('https://maps.googleapis.com/')) {
22
+ return curlArguments;
23
+ }
24
+ const parsed = new URL(url);
25
+ if (parsed.searchParams.has('key')) {
26
+ return curlArguments;
27
+ }
28
+ parsed.searchParams.set('key', this.apiKey);
29
+ const rewrittenUrl = parsed.toString();
30
+ return curlArguments.map((argument) => (argument === url ? rewrittenUrl : argument));
31
+ }
32
+ isExpired() {
33
+ return undefined;
34
+ }
35
+ toJSON() {
36
+ return {
37
+ objectType: this.objectType,
38
+ apiKey: this.apiKey,
39
+ };
40
+ }
41
+ static fromJSON(data) {
42
+ return new GoogleMapsApiKeyCredentials(data.apiKey);
43
+ }
44
+ }
45
+ export class GoogleMaps extends Service {
46
+ name = 'google-maps';
47
+ displayName = 'Google Maps';
48
+ baseApiUrls = ['https://maps.googleapis.com/'];
49
+ loginUrl = 'https://console.cloud.google.com/google/maps-apis/';
50
+ info = 'https://developers.google.com/maps/documentation. ' +
51
+ 'Browser-based authentication is not yet supported. ' +
52
+ 'Use `latchkey auth set-nocurl google-maps <api-key>` to add credentials. ' +
53
+ 'Example invocation: `latchkey curl google-maps https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway` ' +
54
+ '(the API key will be added automatically).';
55
+ credentialCheckCurlArguments = [
56
+ 'https://maps.googleapis.com/maps/api/geocode/json?address=test',
57
+ ];
58
+ getCredentialsNoCurl(arguments_) {
59
+ if (arguments_.length !== 1 || arguments_[0] === undefined) {
60
+ throw new GoogleMapsCredentialError('Expected exactly one argument: the API key.\n' +
61
+ 'Example: latchkey auth set-nocurl google-maps AIzaSyA1B2C3D4E5F6G7H8I9J0');
62
+ }
63
+ const apiKey = arguments_[0];
64
+ if (apiKey.length < 10) {
65
+ throw new GoogleMapsCredentialError("The provided key doesn't look like a Google Maps API key (too short).\n" +
66
+ 'Example: AIzaSyA1B2C3D4E5F6G7H8I9J0');
67
+ }
68
+ return new GoogleMapsApiKeyCredentials(apiKey);
69
+ }
70
+ checkApiCredentials(apiCredentials) {
71
+ const allCurlArgs = apiCredentials.injectIntoCurlCall([
72
+ '-s',
73
+ '-o',
74
+ '/dev/null',
75
+ '-w',
76
+ '%{http_code}',
77
+ ...this.credentialCheckCurlArguments,
78
+ ]);
79
+ const result = runCaptured(allCurlArgs, 10);
80
+ if (result.stdout === '200') {
81
+ return ApiCredentialStatus.Valid;
82
+ }
83
+ return ApiCredentialStatus.Invalid;
84
+ }
85
+ }
86
+ class GoogleMapsCredentialError extends NoCurlCredentialsNotSupportedError {
87
+ constructor(message) {
88
+ super('google-maps');
89
+ this.message = message;
90
+ this.name = 'GoogleMapsCredentialError';
91
+ }
92
+ }
93
+ export const GOOGLE_MAPS = new GoogleMaps();
94
+ //# sourceMappingURL=maps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maps.js","sourceRoot":"","sources":["../../../../src/services/google/maps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/services/google.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAQ,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAoB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EACL,OAAO,EACP,6BAA6B,EAI9B,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAqQ/D,cAAM,oBAAqB,SAAQ,6BAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IAEvD,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIpC,SAAS,CAAC,eAAe,IAAI,OAAO;IAIpC;;;OAGG;cACgB,mBAAmB,CACpC,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,cAAc,EACvB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;cAIjB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAgClB,OAAO,CACpB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,CAAC,EAAE,oBAAoB,GACnC,OAAO,CAAC,cAAc,CAAC;YAmBZ,gBAAgB;CAoE/B;AAED,qBAAa,MAAO,SAAQ,OAAO;IACjC,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,sBAAsB;IAC1C,QAAQ,CAAC,WAAW,2CAA4C;IAChE,QAAQ,CAAC,QAAQ,uCAAuC;IACxD,QAAQ,CAAC,IAAI,SAG0D;IAEvE,QAAQ,CAAC,4BAA4B,6DAE1B;IAEF,UAAU,IAAI,oBAAoB;IAIlC,kBAAkB,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAoC5F;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
1
+ {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/services/google.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAQ,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAoB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EACL,OAAO,EACP,6BAA6B,EAI9B,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAqQ/D,cAAM,oBAAqB,SAAQ,6BAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IAEvD,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIpC,SAAS,CAAC,eAAe,IAAI,OAAO;IAIpC;;;OAGG;cACgB,mBAAmB,CACpC,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,cAAc,EACvB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;cAIjB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAgClB,OAAO,CACpB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,CAAC,EAAE,oBAAoB,GACnC,OAAO,CAAC,cAAc,CAAC;YAmBZ,gBAAgB;CAqE/B;AAED,qBAAa,MAAO,SAAQ,OAAO;IACjC,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,sBAAsB;IAC1C,QAAQ,CAAC,WAAW,2CAA4C;IAChE,QAAQ,CAAC,QAAQ,uCAAuC;IACxD,QAAQ,CAAC,IAAI,SAG0D;IAEvE,QAAQ,CAAC,4BAA4B,6DAE1B;IAEF,UAAU,IAAI,oBAAoB;IAIlC,kBAAkB,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAoC5F;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -229,7 +229,7 @@ class GoogleServiceSession extends BrowserFollowupServiceSession {
229
229
  }
230
230
  // Require existing credentials with client ID and secret
231
231
  if (!(oldCredentials instanceof OAuthCredentials)) {
232
- throw new LoginFailedError('Google login requires existing OAuth client credentials. Run prepare first.');
232
+ throw new LoginFailedError('Google login requires existing OAuth client credentials. Run browser-prepare first.');
233
233
  }
234
234
  const clientId = oldCredentials.clientId;
235
235
  const clientSecret = oldCredentials.clientSecret;
@@ -281,6 +281,7 @@ class GoogleServiceSession extends BrowserFollowupServiceSession {
281
281
  // Google refresh tokens typically don't expire, so we don't set refreshTokenExpiresAt
282
282
  return {
283
283
  accessToken: tokens.access_token,
284
+ // exchangeCodeForTokens() guarantees refresh_token is present
284
285
  refreshToken: tokens.refresh_token,
285
286
  accessTokenExpiresAt,
286
287
  };
@@ -305,7 +306,7 @@ export class Google extends Service {
305
306
  baseApiUrls = ['https://www.googleapis.com/'];
306
307
  loginUrl = 'https://console.cloud.google.com/';
307
308
  info = 'Supports some Google Workspace APIs: Gmail, Calendar, Drive, Sheets, Docs, and Contacts. ' +
308
- 'If needed, run "latchkey prepare google" to create an OAuth client first. ' +
309
+ 'If needed, run "latchkey auth browser-prepare google" to create an OAuth client first. ' +
309
310
  'It may take a few minutes before the OAuth client is ready to use.';
310
311
  credentialCheckCurlArguments = [
311
312
  'https://www.googleapis.com/oauth2/v1/userinfo',
@@ -328,7 +329,7 @@ export class Google extends Service {
328
329
  const accessTokenExpiresAt = new Date(Date.now() + tokens.expires_in * 1000).toISOString();
329
330
  // Return new credentials with refreshed access token
330
331
  // Keep the same refresh token unless a new one is provided
331
- return Promise.resolve(new OAuthCredentials(apiCredentials.clientId, apiCredentials.clientSecret, tokens.access_token, tokens.refresh_token, accessTokenExpiresAt, apiCredentials.refreshTokenExpiresAt));
332
+ return Promise.resolve(new OAuthCredentials(apiCredentials.clientId, apiCredentials.clientSecret, tokens.access_token, tokens.refresh_token ?? apiCredentials.refreshToken, accessTokenExpiresAt, apiCredentials.refreshTokenExpiresAt));
332
333
  }
333
334
  }
334
335
  export const GOOGLE = new Google();
@@ -1 +1 @@
1
- {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/services/google.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/services/google.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC,OAAO,EAAkB,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,sBAAsB,GAEvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AAGnB,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,qBAAqB,GAAG,qCAAqC,CAAC;AACpE,MAAM,IAAI,GAAG;IACX,sBAAsB;IACtB,8BAA8B;IAC9B,sBAAsB;IACtB,uBAAuB;IACvB,qBAAqB;IACrB,uBAAuB,EAAE,eAAe;CACzC,CAAC;AACF,MAAM,YAAY,GAAG;IACnB,wCAAwC;IACxC,kDAAkD;IAClD,gDAAgD;IAChD,YAAY;IACZ,gDAAgD;IAChD,8CAA8C;IAC9C,+CAA+C;IAC/C,4CAA4C;IAC5C,eAAe;IACf,0CAA0C;IAC1C,iDAAiD;IACjD,YAAY;IACZ,uCAAuC;IACvC,4CAA4C;IAC5C,aAAa;IACb,8CAA8C;IAC9C,WAAW;IACX,2CAA2C;IAC3C,eAAe;IACf,0CAA0C;IAC1C,mDAAmD;CAC3C,CAAC;AAeX;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC;QAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,gBAAgB,CACxB,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,SAAS;YAC1B,YAAY,EAAE,MAAM,CAAC,aAAa;SACnC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACtC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,gBAAgB,CACxB,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAU;IACrC,gCAAgC;IAChC,MAAM,IAAI,CAAC,IAAI,CAAC,kEAAkE,EAAE;QAClF,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAC;IAEH,8BAA8B;IAC9B,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC5E,MAAM,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACnE,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAElC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAClE,MAAM,gBAAgB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,GAAG,EAAE,CAAC,CAAC;IACtE,MAAM,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAE3B,MAAM,IAAI,CAAC,UAAU,CAAC,4DAA4D,EAAE;QAClF,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,gBAAgB,CAAC,uDAAuD,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAU,EAAE,WAAmB;IACvD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,WAAmB,EAAE,OAAe;IACvE,MAAM,IAAI,CAAC,IAAI,CACb,iDAAiD,OAAO,YAAY,WAAW,EAAE,EACjF;QACE,OAAO,EAAE,kBAAkB;KAC5B,CACF,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,uCAAuC;IACrG,MAAM,YAAY,GAAG,IAAI;SACtB,OAAO,CAAC,0DAA0D,CAAC;SACnE,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,MAAM,oBAAoB,GAAG,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,oBAAoB,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAEtE,IAAI,MAAM,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrD,MAAM,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAU,EAAE,WAAmB;IAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,0DAA0D,WAAW,EAAE,EAAE;QACvF,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;IACpF,MAAM,gBAAgB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChE,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IAC1E,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC5D,MAAM,YAAY,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC7D,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;IAC5B,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;IAClF,MAAM,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,CAAC;IACjE,MAAM,kBAAkB,CAAC,KAAK,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC5D,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IAEzB,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,qBAAqB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACrE,MAAM,qBAAqB,CAAC,KAAK,EAAE,CAAC;IACpC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IAEzB,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;IACxF,MAAM,iBAAiB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACjE,MAAM,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IAEzB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC7D,MAAM,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC7D,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;IAC5B,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IAEzB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IACvE,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC5D,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAU;IACzC,+BAA+B;IAC/B,MAAM,IAAI,CAAC,IAAI,CAAC,mDAAmD,EAAE;QACnE,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAC;IAEH,oCAAoC;IACpC,MAAM,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;IACxF,MAAM,uBAAuB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACvE,MAAM,uBAAuB,CAAC,KAAK,EAAE,CAAC;IAEtC,0BAA0B;IAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IAC9F,MAAM,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACnE,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAElC,MAAM,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,uBAAuB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACvE,MAAM,uBAAuB,CAAC,KAAK,EAAE,CAAC;IAEtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,gBAAgB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChE,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAE/B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IAC7E,MAAM,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC/D,MAAM,eAAe,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAEtD,eAAe;IACf,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAChE,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAE3B,yBAAyB;IACzB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACjE,MAAM,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9D,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9F,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEjD,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,wBAAwB,CAC/B,QAAkB,EAClB,aAAsC;IAEtC,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnC,gEAAgE;IAChE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,mCAAmC,CAAC,EAAE,CAAC;QAClE,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,EAAE,CAAC;YAC9B,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACjC,wDAAwD;gBACxD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;oBACjD,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;gBAClC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAU;IAC1C,MAAM,aAAa,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAE5C,MAAM,eAAe,GAAG,CAAC,QAAkB,EAAE,EAAE;QAC7C,wBAAwB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACpD,CAAC,CAAC;IAEF,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAErC,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,oBAAqB,SAAQ,6BAA6B;IAC7C,aAAa,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAEvD,UAAU,CAAC,QAAkB;QAC3B,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;IAES,eAAe;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;IACvC,CAAC;IAED;;;OAGG;IACgB,mBAAmB,CACpC,QAAiB,EACjB,OAAuB,EACvB,cAA+B;QAE/B,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC9D,CAAC;IAES,KAAK,CAAC,sBAAsB,CACpC,OAAuB,EACvB,cAA+B;QAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;QACtE,CAAC;QAED,yDAAyD;QACzD,IAAI,CAAC,CAAC,cAAc,YAAY,gBAAgB,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,gBAAgB,CACxB,qFAAqF,CACtF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;QACzC,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;QAEjD,2CAA2C;QAC3C,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,GAC9E,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAErE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAEnB,OAAO,IAAI,gBAAgB,CACzB,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,CACtB,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,OAAO,CACpB,gBAAkC,EAClC,aAAoC;QAEpC,OAAO,sBAAsB,CAAC,gBAAgB,EAAE,aAAa,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACzF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAE/B,MAAM,eAAe,CACnB,OAAO,EACP,cAAc,IAAI,CAAC,OAAO,CAAC,WAAW,yCAAyC,CAChF,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACpC,MAAM,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC3C,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,IAAI,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,OAAuB,EACvB,IAAU,EACV,QAAgB,EAChB,YAAoB;QAOpB,0EAA0E;QAC1E,2EAA2E;QAC3E,8DAA8D;QAC9D,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,eAAe,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAElC,IAAI,CAAC;YACH,gEAAgE;YAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,wBAAwB,CAC1D,gBAAgB,EAChB,eAAe,CAAC,MAAM,CACvB,CAAC;YACF,MAAM,WAAW,GAAG,oBAAoB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;YAEzE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,8CAA8C,CAAC,CAAC;YACxE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAChD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACtD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YAClD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACnD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAE9C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEpC,oDAAoD;YACpD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC/B,MAAM,MAAM,GAAG,qBAAqB,CAClC,qBAAqB,EACrB,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,WAAW,CACZ,CAAC;YACF,MAAM,oBAAoB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAE3F,sFAAsF;YACtF,OAAO;gBACL,WAAW,EAAE,MAAM,CAAC,YAAY;gBAChC,8DAA8D;gBAC9D,YAAY,EAAE,MAAM,CAAC,aAAc;gBACnC,oBAAoB;aACrB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,KAAK,YAAY,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,mBAAmB,EAAE,CAAC;YAClC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,qEAAqE;YACrE,oCAAoC;YACpC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,MAAO,SAAQ,OAAO;IACxB,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,kBAAkB,CAAC;IACjC,WAAW,GAAG,CAAC,6BAA6B,CAAU,CAAC;IACvD,QAAQ,GAAG,mCAAmC,CAAC;IAC/C,IAAI,GACX,2FAA2F;QAC3F,yFAAyF;QACzF,oEAAoE,CAAC;IAE9D,4BAA4B,GAAG;QACtC,+CAA+C;KACvC,CAAC;IAEF,UAAU;QACjB,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEQ,kBAAkB,CAAC,cAA8B;QACxD,IAAI,CAAC,CAAC,cAAc,YAAY,gBAAgB,CAAC,EAAE,CAAC;YAClD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,CAC/B,qBAAqB,EACrB,cAAc,CAAC,YAAY,EAC3B,cAAc,CAAC,QAAQ,EACvB,cAAc,CAAC,YAAY,CAC5B,CAAC;QAEF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,8DAA8D;QAC9D,MAAM,oBAAoB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAE3F,qDAAqD;QACrD,2DAA2D;QAC3D,OAAO,OAAO,CAAC,OAAO,CACpB,IAAI,gBAAgB,CAClB,cAAc,CAAC,QAAQ,EACvB,cAAc,CAAC,YAAY,EAC3B,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,aAAa,IAAI,cAAc,CAAC,YAAY,EACnD,oBAAoB,EACpB,cAAc,CAAC,qBAAqB,CACrC,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Service } from './base.js';
2
+ export declare class GoogleAnalytics extends Service {
3
+ readonly name = "google-analytics";
4
+ readonly displayName = "Google Analytics";
5
+ readonly baseApiUrls: readonly ["https://analyticsdata.googleapis.com/", "https://analyticsadmin.googleapis.com/"];
6
+ readonly loginUrl = "https://analytics.google.com/";
7
+ readonly info: string;
8
+ readonly credentialCheckCurlArguments: readonly ["https://analyticsadmin.googleapis.com/v1beta/accountSummaries"];
9
+ }
10
+ export declare const GOOGLE_ANALYTICS: GoogleAnalytics;
11
+ //# sourceMappingURL=googleAnalytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"googleAnalytics.d.ts","sourceRoot":"","sources":["../../../src/services/googleAnalytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,eAAgB,SAAQ,OAAO;IAC1C,QAAQ,CAAC,IAAI,sBAAsB;IACnC,QAAQ,CAAC,WAAW,sBAAsB;IAC1C,QAAQ,CAAC,WAAW,+FAGT;IACX,QAAQ,CAAC,QAAQ,mCAAmC;IACpD,QAAQ,CAAC,IAAI,SAGgG;IAE7G,QAAQ,CAAC,4BAA4B,6EAE1B;CACZ;AAED,eAAO,MAAM,gBAAgB,iBAAwB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Service } from './base.js';
2
+ export class GoogleAnalytics extends Service {
3
+ name = 'google-analytics';
4
+ displayName = 'Google Analytics';
5
+ baseApiUrls = [
6
+ 'https://analyticsdata.googleapis.com/',
7
+ 'https://analyticsadmin.googleapis.com/',
8
+ ];
9
+ loginUrl = 'https://analytics.google.com/';
10
+ info = 'https://developers.google.com/analytics/devguides/reporting/data/v1. ' +
11
+ 'Browser-based authentication is not yet supported. ' +
12
+ 'Use `latchkey auth set google-analytics -H "Authorization: Bearer <token>"` to add credentials manually.';
13
+ credentialCheckCurlArguments = [
14
+ 'https://analyticsadmin.googleapis.com/v1beta/accountSummaries',
15
+ ];
16
+ }
17
+ export const GOOGLE_ANALYTICS = new GoogleAnalytics();
18
+ //# sourceMappingURL=googleAnalytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"googleAnalytics.js","sourceRoot":"","sources":["../../../src/services/googleAnalytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,eAAgB,SAAQ,OAAO;IACjC,IAAI,GAAG,kBAAkB,CAAC;IAC1B,WAAW,GAAG,kBAAkB,CAAC;IACjC,WAAW,GAAG;QACrB,uCAAuC;QACvC,wCAAwC;KAChC,CAAC;IACF,QAAQ,GAAG,+BAA+B,CAAC;IAC3C,IAAI,GACX,uEAAuE;QACvE,qDAAqD;QACrD,0GAA0G,CAAC;IAEpG,4BAA4B,GAAG;QACtC,+DAA+D;KACvD,CAAC;CACZ;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Service } from './base.js';
2
+ /** Work in progress — not yet registered in the service registry. */
3
+ export declare class GoogleMaps extends Service {
4
+ readonly name = "google-maps";
5
+ readonly displayName = "Google Maps";
6
+ readonly baseApiUrls: readonly ["https://maps.googleapis.com/"];
7
+ readonly loginUrl = "https://console.cloud.google.com/google/maps-apis/";
8
+ readonly info: string;
9
+ readonly credentialCheckCurlArguments: readonly ["https://maps.googleapis.com/maps/api/geocode/json?address=test"];
10
+ }
11
+ export declare const GOOGLE_MAPS: GoogleMaps;
12
+ //# sourceMappingURL=googleMaps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"googleMaps.d.ts","sourceRoot":"","sources":["../../../src/services/googleMaps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qEAAqE;AACrE,qBAAa,UAAW,SAAQ,OAAO;IACrC,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,iBAAiB;IACrC,QAAQ,CAAC,WAAW,4CAA6C;IACjE,QAAQ,CAAC,QAAQ,wDAAwD;IACzE,QAAQ,CAAC,IAAI,SAIgD;IAE7D,QAAQ,CAAC,4BAA4B,8EAE1B;CACZ;AAED,eAAO,MAAM,WAAW,YAAmB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Service } from './base.js';
2
+ /** Work in progress — not yet registered in the service registry. */
3
+ export class GoogleMaps extends Service {
4
+ name = 'google-maps';
5
+ displayName = 'Google Maps';
6
+ baseApiUrls = ['https://maps.googleapis.com/'];
7
+ loginUrl = 'https://console.cloud.google.com/google/maps-apis/';
8
+ info = 'https://developers.google.com/maps/documentation. ' +
9
+ 'Browser-based authentication is not yet supported. ' +
10
+ 'Use `latchkey auth set google-maps -H "X-Goog-Api-Key: <key>"` to add credentials manually. ' +
11
+ 'Only a subset of the APIs accept API keys in the header.';
12
+ credentialCheckCurlArguments = [
13
+ 'https://maps.googleapis.com/maps/api/geocode/json?address=test',
14
+ ];
15
+ }
16
+ export const GOOGLE_MAPS = new GoogleMaps();
17
+ //# sourceMappingURL=googleMaps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"googleMaps.js","sourceRoot":"","sources":["../../../src/services/googleMaps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qEAAqE;AACrE,MAAM,OAAO,UAAW,SAAQ,OAAO;IAC5B,IAAI,GAAG,aAAa,CAAC;IACrB,WAAW,GAAG,aAAa,CAAC;IAC5B,WAAW,GAAG,CAAC,8BAA8B,CAAU,CAAC;IACxD,QAAQ,GAAG,oDAAoD,CAAC;IAChE,IAAI,GACX,oDAAoD;QACpD,qDAAqD;QACrD,8FAA8F;QAC9F,0DAA0D,CAAC;IAEpD,4BAA4B,GAAG;QACtC,gEAAgE;KACxD,CAAC;CACZ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC"}
@@ -7,13 +7,13 @@ async function getSkillMdPath() {
7
7
  try {
8
8
  // @ts-expect-error - Bun-specific import attribute
9
9
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
10
- const mod = await import('../integrations/SKILL.md', {
10
+ const mod = await import('../skills/generic/latchkey/SKILL.md', {
11
11
  with: { type: 'text' },
12
12
  });
13
13
  return mod.default;
14
14
  }
15
15
  catch {
16
- return resolve(import.meta.dirname, '../integrations/SKILL.md');
16
+ return resolve(import.meta.dirname, '../skills/generic/latchkey/SKILL.md');
17
17
  }
18
18
  }
19
19
  //# sourceMappingURL=skillMd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skillMd.js","sourceRoot":"","sources":["../../src/skillMd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,YAAY,CAAC,MAAM,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC;QACH,mDAAmD;QACnD,mEAAmE;QACnE,MAAM,GAAG,GAAwB,MAAM,MAAM,CAAC,0BAA0B,EAAE;YACxE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACvB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"skillMd.js","sourceRoot":"","sources":["../../src/skillMd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,YAAY,CAAC,MAAM,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC;QACH,mDAAmD;QACnD,mEAAmE;QACnE,MAAM,GAAG,GAAwB,MAAM,MAAM,CAAC,qCAAqC,EAAE;YACnF,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACvB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,qCAAqC,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=latestVersionCheck.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latestVersionCheck.test.d.ts","sourceRoot":"","sources":["../../tests/latestVersionCheck.test.ts"],"names":[],"mappings":""}