@google/gemini-cli-core 0.1.10-dev.14 → 0.1.10

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 (163) hide show
  1. package/README.md +16 -2
  2. package/dist/google-gemini-cli-core-0.1.9.tgz +0 -0
  3. package/dist/src/code_assist/codeAssist.js +3 -2
  4. package/dist/src/code_assist/codeAssist.js.map +1 -1
  5. package/dist/src/code_assist/converter.js.map +1 -1
  6. package/dist/src/code_assist/oauth2.d.ts +3 -2
  7. package/dist/src/code_assist/oauth2.js +56 -25
  8. package/dist/src/code_assist/oauth2.js.map +1 -1
  9. package/dist/src/code_assist/oauth2.test.js +83 -7
  10. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  11. package/dist/src/code_assist/server.js +35 -2
  12. package/dist/src/code_assist/server.js.map +1 -1
  13. package/dist/src/code_assist/setup.js +1 -1
  14. package/dist/src/code_assist/setup.js.map +1 -1
  15. package/dist/src/code_assist/setup.test.d.ts +6 -0
  16. package/dist/src/code_assist/setup.test.js +62 -0
  17. package/dist/src/code_assist/setup.test.js.map +1 -0
  18. package/dist/src/config/config.d.ts +23 -3
  19. package/dist/src/config/config.js +85 -56
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +25 -0
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/core/client.d.ts +20 -6
  24. package/dist/src/core/client.js +83 -30
  25. package/dist/src/core/client.js.map +1 -1
  26. package/dist/src/core/client.test.js +132 -8
  27. package/dist/src/core/client.test.js.map +1 -1
  28. package/dist/src/core/contentGenerator.d.ts +3 -4
  29. package/dist/src/core/contentGenerator.js +14 -13
  30. package/dist/src/core/contentGenerator.js.map +1 -1
  31. package/dist/src/core/contentGenerator.test.js +49 -3
  32. package/dist/src/core/contentGenerator.test.js.map +1 -1
  33. package/dist/src/core/coreToolScheduler.d.ts +9 -2
  34. package/dist/src/core/coreToolScheduler.js +28 -2
  35. package/dist/src/core/coreToolScheduler.js.map +1 -1
  36. package/dist/src/core/coreToolScheduler.test.js +80 -0
  37. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  38. package/dist/src/core/geminiChat.d.ts +2 -2
  39. package/dist/src/core/geminiChat.js +52 -32
  40. package/dist/src/core/geminiChat.js.map +1 -1
  41. package/dist/src/core/geminiChat.test.js +4 -2
  42. package/dist/src/core/geminiChat.test.js.map +1 -1
  43. package/dist/src/core/modelCheck.js +1 -1
  44. package/dist/src/core/modelCheck.js.map +1 -1
  45. package/dist/src/core/nonInteractiveToolExecutor.js +3 -0
  46. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  47. package/dist/src/core/nonInteractiveToolExecutor.test.js +5 -0
  48. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  49. package/dist/src/core/turn.d.ts +3 -1
  50. package/dist/src/core/turn.js +5 -2
  51. package/dist/src/core/turn.js.map +1 -1
  52. package/dist/src/core/turn.test.js +2 -2
  53. package/dist/src/core/turn.test.js.map +1 -1
  54. package/dist/src/index.d.ts +1 -0
  55. package/dist/src/index.js +1 -0
  56. package/dist/src/index.js.map +1 -1
  57. package/dist/src/services/fileDiscoveryService.d.ts +4 -0
  58. package/dist/src/services/fileDiscoveryService.js +13 -0
  59. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  60. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +54 -11
  61. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  62. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -1
  63. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +5 -0
  64. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  65. package/dist/src/telemetry/loggers.test.js +18 -5
  66. package/dist/src/telemetry/loggers.test.js.map +1 -1
  67. package/dist/src/telemetry/types.d.ts +9 -4
  68. package/dist/src/telemetry/types.js +14 -4
  69. package/dist/src/telemetry/types.js.map +1 -1
  70. package/dist/src/telemetry/uiTelemetry.test.js +1 -0
  71. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  72. package/dist/src/tools/edit.d.ts +1 -2
  73. package/dist/src/tools/edit.js +11 -12
  74. package/dist/src/tools/edit.js.map +1 -1
  75. package/dist/src/tools/edit.test.js +7 -9
  76. package/dist/src/tools/edit.test.js.map +1 -1
  77. package/dist/src/tools/glob.d.ts +5 -1
  78. package/dist/src/tools/glob.js +14 -9
  79. package/dist/src/tools/glob.js.map +1 -1
  80. package/dist/src/tools/glob.test.js +3 -3
  81. package/dist/src/tools/glob.test.js.map +1 -1
  82. package/dist/src/tools/grep.js +8 -7
  83. package/dist/src/tools/grep.js.map +1 -1
  84. package/dist/src/tools/grep.test.js +3 -3
  85. package/dist/src/tools/grep.test.js.map +1 -1
  86. package/dist/src/tools/ls.js +9 -8
  87. package/dist/src/tools/ls.js.map +1 -1
  88. package/dist/src/tools/mcp-client.d.ts +0 -2
  89. package/dist/src/tools/mcp-client.js +31 -30
  90. package/dist/src/tools/mcp-client.js.map +1 -1
  91. package/dist/src/tools/mcp-client.test.js +85 -4
  92. package/dist/src/tools/mcp-client.test.js.map +1 -1
  93. package/dist/src/tools/mcp-tool.d.ts +3 -3
  94. package/dist/src/tools/mcp-tool.js.map +1 -1
  95. package/dist/src/tools/memoryTool.js +3 -2
  96. package/dist/src/tools/memoryTool.js.map +1 -1
  97. package/dist/src/tools/read-file.js +8 -8
  98. package/dist/src/tools/read-file.js.map +1 -1
  99. package/dist/src/tools/read-file.test.js +4 -4
  100. package/dist/src/tools/read-file.test.js.map +1 -1
  101. package/dist/src/tools/read-many-files.js +24 -38
  102. package/dist/src/tools/read-many-files.js.map +1 -1
  103. package/dist/src/tools/read-many-files.test.js +4 -4
  104. package/dist/src/tools/read-many-files.test.js.map +1 -1
  105. package/dist/src/tools/shell.d.ts +20 -1
  106. package/dist/src/tools/shell.js +53 -16
  107. package/dist/src/tools/shell.js.map +1 -1
  108. package/dist/src/tools/shell.test.js +85 -65
  109. package/dist/src/tools/shell.test.js.map +1 -1
  110. package/dist/src/tools/tool-registry.d.ts +16 -2
  111. package/dist/src/tools/tool-registry.js +150 -19
  112. package/dist/src/tools/tool-registry.js.map +1 -1
  113. package/dist/src/tools/tool-registry.test.js +186 -75
  114. package/dist/src/tools/tool-registry.test.js.map +1 -1
  115. package/dist/src/tools/tools.d.ts +7 -4
  116. package/dist/src/tools/tools.js.map +1 -1
  117. package/dist/src/tools/web-fetch.js +6 -5
  118. package/dist/src/tools/web-fetch.js.map +1 -1
  119. package/dist/src/tools/web-search.d.ts +5 -0
  120. package/dist/src/tools/web-search.js +12 -6
  121. package/dist/src/tools/web-search.js.map +1 -1
  122. package/dist/src/tools/write-file.d.ts +7 -1
  123. package/dist/src/tools/write-file.js +17 -11
  124. package/dist/src/tools/write-file.js.map +1 -1
  125. package/dist/src/tools/write-file.test.js +4 -4
  126. package/dist/src/tools/write-file.test.js.map +1 -1
  127. package/dist/src/utils/editCorrector.d.ts +1 -1
  128. package/dist/src/utils/editCorrector.js +106 -2
  129. package/dist/src/utils/editCorrector.js.map +1 -1
  130. package/dist/src/utils/editCorrector.test.js +69 -19
  131. package/dist/src/utils/editCorrector.test.js.map +1 -1
  132. package/dist/src/utils/editor.d.ts +1 -1
  133. package/dist/src/utils/editor.js +1 -1
  134. package/dist/src/utils/fileUtils.d.ts +1 -1
  135. package/dist/src/utils/fileUtils.js +17 -0
  136. package/dist/src/utils/fileUtils.js.map +1 -1
  137. package/dist/src/utils/fileUtils.test.js +17 -0
  138. package/dist/src/utils/fileUtils.test.js.map +1 -1
  139. package/dist/src/utils/flashFallback.integration.test.js +1 -1
  140. package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
  141. package/dist/src/utils/messageInspectors.d.ts +1 -0
  142. package/dist/src/utils/messageInspectors.js +5 -0
  143. package/dist/src/utils/messageInspectors.js.map +1 -1
  144. package/dist/src/utils/nextSpeakerChecker.js +1 -1
  145. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  146. package/dist/src/utils/quotaErrorDetection.d.ts +22 -0
  147. package/dist/src/utils/quotaErrorDetection.js +74 -0
  148. package/dist/src/utils/quotaErrorDetection.js.map +1 -0
  149. package/dist/src/utils/retry.d.ts +1 -1
  150. package/dist/src/utils/retry.js +58 -2
  151. package/dist/src/utils/retry.js.map +1 -1
  152. package/dist/src/utils/retry.test.js +1 -1
  153. package/dist/src/utils/retry.test.js.map +1 -1
  154. package/dist/src/utils/schemaValidator.d.ts +10 -5
  155. package/dist/src/utils/schemaValidator.js +44 -32
  156. package/dist/src/utils/schemaValidator.js.map +1 -1
  157. package/dist/src/utils/user_id.d.ts +1 -1
  158. package/dist/src/utils/user_id.js +5 -5
  159. package/dist/src/utils/user_id.js.map +1 -1
  160. package/dist/src/utils/user_id.test.js +15 -11
  161. package/dist/src/utils/user_id.test.js.map +1 -1
  162. package/dist/tsconfig.tsbuildinfo +1 -1
  163. package/package.json +8 -7
@@ -3,48 +3,60 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import * as ajv from 'ajv';
7
+ const ajValidator = new ajv.Ajv();
6
8
  /**
7
9
  * Simple utility to validate objects against JSON Schemas
8
10
  */
9
11
  export class SchemaValidator {
10
12
  /**
11
- * Validates data against a JSON schema
12
- * @param schema JSON Schema to validate against
13
- * @param data Data to validate
14
- * @returns True if valid, false otherwise
13
+ * Returns null if the data confroms to the schema described by schema (or if schema
14
+ * is null). Otherwise, returns a string describing the error.
15
15
  */
16
16
  static validate(schema, data) {
17
- // This is a simplified implementation
18
- // In a real application, you would use a library like Ajv for proper validation
19
- // Check for required fields
20
- if (schema.required && Array.isArray(schema.required)) {
21
- const required = schema.required;
22
- const dataObj = data;
23
- for (const field of required) {
24
- if (dataObj[field] === undefined) {
25
- console.error(`Missing required field: ${field}`);
26
- return false;
27
- }
28
- }
17
+ if (!schema) {
18
+ return null;
19
+ }
20
+ if (typeof data !== 'object' || data === null) {
21
+ return 'Value of params must be an object';
22
+ }
23
+ const validate = ajValidator.compile(this.toObjectSchema(schema));
24
+ const valid = validate(data);
25
+ if (!valid && validate.errors) {
26
+ return ajValidator.errorsText(validate.errors, { dataVar: 'params' });
29
27
  }
30
- // Check property types if properties are defined
31
- if (schema.properties && typeof schema.properties === 'object') {
32
- const properties = schema.properties;
33
- const dataObj = data;
34
- for (const [key, prop] of Object.entries(properties)) {
35
- if (dataObj[key] !== undefined && prop.type) {
36
- const expectedType = prop.type;
37
- const actualType = Array.isArray(dataObj[key])
38
- ? 'array'
39
- : typeof dataObj[key];
40
- if (expectedType !== actualType) {
41
- console.error(`Type mismatch for property "${key}": expected ${expectedType}, got ${actualType}`);
42
- return false;
43
- }
44
- }
28
+ return null;
29
+ }
30
+ /**
31
+ * Converts @google/genai's Schema to an object compatible with avj.
32
+ * This is necessry because it represents Types as an Enum (with
33
+ * UPPERCASE values) and minItems and minLength as strings, when they should be numbers.
34
+ */
35
+ static toObjectSchema(schema) {
36
+ const newSchema = { ...schema };
37
+ if (newSchema.anyOf && Array.isArray(newSchema.anyOf)) {
38
+ newSchema.anyOf = newSchema.anyOf.map((v) => this.toObjectSchema(v));
39
+ }
40
+ if (newSchema.items) {
41
+ newSchema.items = this.toObjectSchema(newSchema.items);
42
+ }
43
+ if (newSchema.properties && typeof newSchema.properties === 'object') {
44
+ const newProperties = {};
45
+ for (const [key, value] of Object.entries(newSchema.properties)) {
46
+ newProperties[key] = this.toObjectSchema(value);
45
47
  }
48
+ newSchema.properties = newProperties;
49
+ }
50
+ if (newSchema.type) {
51
+ newSchema.type = String(newSchema.type).toLowerCase();
52
+ }
53
+ if (newSchema.minItems) {
54
+ newSchema.minItems = Number(newSchema.minItems);
55
+ }
56
+ if (newSchema.minLength) {
57
+ newSchema.minLength = Number(newSchema.minLength);
46
58
  }
47
- return true;
59
+ return newSchema;
48
60
  }
49
61
  }
50
62
  //# sourceMappingURL=schemaValidator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemaValidator.js","sourceRoot":"","sources":["../../../src/utils/schemaValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,MAA+B,EAAE,IAAa;QAC5D,sCAAsC;QACtC,gFAAgF;QAEhF,4BAA4B;QAC5B,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAoB,CAAC;YAC7C,MAAM,OAAO,GAAG,IAA+B,CAAC;YAEhD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;oBACjC,OAAO,CAAC,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;oBAClD,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,UAA+C,CAAC;YAC1E,MAAM,OAAO,GAAG,IAA+B,CAAC;YAEhD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;oBAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBAC5C,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;oBAExB,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;wBAChC,OAAO,CAAC,KAAK,CACX,+BAA+B,GAAG,eAAe,YAAY,SAAS,UAAU,EAAE,CACnF,CAAC;wBACF,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"schemaValidator.js","sourceRoot":"","sources":["../../../src/utils/schemaValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,MAA0B,EAAE,IAAa;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,mCAAmC,CAAC;QAC7C,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,cAAc,CAAC,MAAc;QAC1C,MAAM,SAAS,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;QACzD,IAAI,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,SAAS,CAAC,UAAU,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACrE,MAAM,aAAa,GAA4B,EAAE,CAAC;YAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAe,CAAC,CAAC;YAC5D,CAAC;YACD,SAAS,CAAC,UAAU,GAAG,aAAa,CAAC;QACvC,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACnB,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACxD,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACxB,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -14,4 +14,4 @@ export declare function getInstallationId(): string;
14
14
  * When OAuth is available, returns the user's cached Google Account ID. Otherwise, returns the installation ID.
15
15
  * @returns A string ID for the user (Google Account ID if available, otherwise installation ID).
16
16
  */
17
- export declare function getObfuscatedGoogleAccountId(): string;
17
+ export declare function getGoogleAccountId(): Promise<string>;
@@ -51,19 +51,19 @@ export function getInstallationId() {
51
51
  * When OAuth is available, returns the user's cached Google Account ID. Otherwise, returns the installation ID.
52
52
  * @returns A string ID for the user (Google Account ID if available, otherwise installation ID).
53
53
  */
54
- export function getObfuscatedGoogleAccountId() {
54
+ export async function getGoogleAccountId() {
55
55
  // Try to get cached Google Account ID first
56
56
  try {
57
- // Dynamically import to avoid circular dependencies
58
- // eslint-disable-next-line @typescript-eslint/no-require-imports, no-restricted-syntax
59
- const { getCachedGoogleAccountId } = require('../code_assist/oauth2.js');
57
+ // Dynamic import to avoid circular dependencies
58
+ const { getCachedGoogleAccountId } = await import('../code_assist/oauth2.js');
60
59
  const googleAccountId = getCachedGoogleAccountId();
61
60
  if (googleAccountId) {
62
61
  return googleAccountId;
63
62
  }
64
63
  }
65
- catch (_error) {
64
+ catch (error) {
66
65
  // If there's any error accessing Google Account ID, just return empty string
66
+ console.debug('Could not get cached Google Account ID:', error);
67
67
  }
68
68
  return '';
69
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user_id.js","sourceRoot":"","sources":["../../../src/utils/user_id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAEnE,SAAS,qBAAqB;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,OAAO,cAAc,IAAI,IAAI,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,cAAsB;IACvD,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,qBAAqB,EAAE,CAAC;QACxB,IAAI,cAAc,GAAG,0BAA0B,EAAE,CAAC;QAElD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,UAAU,EAAE,CAAC;YAC9B,yBAAyB,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,gEAAgE,EAChE,KAAK,CACN,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B;IAC1C,4CAA4C;IAC5C,IAAI,CAAC;QACH,oDAAoD;QACpD,uFAAuF;QACvF,MAAM,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,wBAAwB,EAAE,CAAC;QACnD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,6EAA6E;IAC/E,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"user_id.js","sourceRoot":"","sources":["../../../src/utils/user_id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAEnE,SAAS,qBAAqB;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,OAAO,cAAc,IAAI,IAAI,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,cAAsB;IACvD,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,qBAAqB,EAAE,CAAC;QACxB,IAAI,cAAc,GAAG,0BAA0B,EAAE,CAAC;QAElD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,UAAU,EAAE,CAAC;YAC9B,yBAAyB,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,gEAAgE,EAChE,KAAK,CACN,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,4CAA4C;IAC5C,IAAI,CAAC;QACH,gDAAgD;QAChD,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAC/C,0BAA0B,CAC3B,CAAC;QACF,MAAM,eAAe,GAAG,wBAAwB,EAAE,CAAC;QACnD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6EAA6E;QAC7E,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect } from 'vitest';
7
- import { getInstallationId, getObfuscatedGoogleAccountId } from './user_id.js';
7
+ import { getInstallationId, getGoogleAccountId } from './user_id.js';
8
8
  describe('user_id', () => {
9
9
  describe('getInstallationId', () => {
10
10
  it('should return a valid UUID format string', () => {
@@ -17,21 +17,25 @@ describe('user_id', () => {
17
17
  expect(secondCall).toBe(installationId);
18
18
  });
19
19
  });
20
- describe('getObfuscatedGoogleAccountId', () => {
21
- it('should return a non-empty string', () => {
22
- const result = getObfuscatedGoogleAccountId();
20
+ describe('getGoogleAccountId', () => {
21
+ it('should return a non-empty string', async () => {
22
+ const result = await getGoogleAccountId();
23
23
  expect(result).toBeDefined();
24
24
  expect(typeof result).toBe('string');
25
25
  // Should be consistent on subsequent calls
26
- const secondCall = getObfuscatedGoogleAccountId();
26
+ const secondCall = await getGoogleAccountId();
27
27
  expect(secondCall).toBe(result);
28
28
  });
29
- it('should return empty string when no Google Account ID is cached', () => {
30
- // In a clean test environment, there should be no cached Google Account ID
31
- // so getObfuscatedGoogleAccountId should fall back to installation ID
32
- const googleAccountIdResult = getObfuscatedGoogleAccountId();
33
- // They should be the same when no Google Account ID is cached
34
- expect(googleAccountIdResult).toBe('');
29
+ it('should return empty string when no Google Account ID is cached, or a valid ID when cached', async () => {
30
+ // The function can return either an empty string (if no cached ID) or a valid Google Account ID (if cached)
31
+ const googleAccountIdResult = await getGoogleAccountId();
32
+ expect(googleAccountIdResult).toBeDefined();
33
+ expect(typeof googleAccountIdResult).toBe('string');
34
+ // Should be either empty string or a numeric string (Google Account ID)
35
+ if (googleAccountIdResult !== '') {
36
+ // If we have a cached ID, it should be a numeric string
37
+ expect(googleAccountIdResult).toMatch(/^\d+$/);
38
+ }
35
39
  });
36
40
  });
37
41
  });
@@ -1 +1 @@
1
- {"version":3,"file":"user_id.test.js","sourceRoot":"","sources":["../../../src/utils/user_id.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAE/E,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;YAE3C,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAEjD,6DAA6D;YAC7D,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,MAAM,GAAG,4BAA4B,EAAE,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErC,2CAA2C;YAC3C,MAAM,UAAU,GAAG,4BAA4B,EAAE,CAAC;YAClD,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,2EAA2E;YAC3E,sEAAsE;YACtE,MAAM,qBAAqB,GAAG,4BAA4B,EAAE,CAAC;YAE7D,8DAA8D;YAC9D,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"user_id.test.js","sourceRoot":"","sources":["../../../src/utils/user_id.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAErE,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;YAE3C,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAEjD,6DAA6D;YAC7D,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErC,2CAA2C;YAC3C,MAAM,UAAU,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC9C,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2FAA2F,EAAE,KAAK,IAAI,EAAE;YACzG,4GAA4G;YAC5G,MAAM,qBAAqB,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAEzD,MAAM,CAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEpD,wEAAwE;YACxE,IAAI,qBAAqB,KAAK,EAAE,EAAE,CAAC;gBACjC,wDAAwD;gBACxD,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}