@el-j/google-sheet-translations 1.0.2 → 1.2.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 (43) hide show
  1. package/README.md +129 -1
  2. package/dist/getSpreadSheetData.d.ts.map +1 -1
  3. package/dist/getSpreadSheetData.js +124 -75
  4. package/dist/getSpreadSheetData.js.map +1 -1
  5. package/dist/index.d.ts +4 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +11 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/utils/auth.js +1 -1
  10. package/dist/utils/auth.js.map +1 -1
  11. package/dist/utils/configurationHandler.d.ts +44 -0
  12. package/dist/utils/configurationHandler.d.ts.map +1 -1
  13. package/dist/utils/configurationHandler.js +8 -2
  14. package/dist/utils/configurationHandler.js.map +1 -1
  15. package/dist/utils/publicSheetReader.d.ts +17 -0
  16. package/dist/utils/publicSheetReader.d.ts.map +1 -0
  17. package/dist/utils/publicSheetReader.js +106 -0
  18. package/dist/utils/publicSheetReader.js.map +1 -0
  19. package/dist/utils/rateLimiter.d.ts +15 -0
  20. package/dist/utils/rateLimiter.d.ts.map +1 -0
  21. package/dist/utils/rateLimiter.js +55 -0
  22. package/dist/utils/rateLimiter.js.map +1 -0
  23. package/dist/utils/sheetProcessor.d.ts +20 -6
  24. package/dist/utils/sheetProcessor.d.ts.map +1 -1
  25. package/dist/utils/sheetProcessor.js +54 -19
  26. package/dist/utils/sheetProcessor.js.map +1 -1
  27. package/dist/utils/spreadsheetCreator.d.ts +23 -0
  28. package/dist/utils/spreadsheetCreator.d.ts.map +1 -0
  29. package/dist/utils/spreadsheetCreator.js +121 -0
  30. package/dist/utils/spreadsheetCreator.js.map +1 -0
  31. package/dist/utils/spreadsheetUpdater.d.ts +1 -1
  32. package/dist/utils/spreadsheetUpdater.d.ts.map +1 -1
  33. package/dist/utils/spreadsheetUpdater.js +8 -14
  34. package/dist/utils/spreadsheetUpdater.js.map +1 -1
  35. package/dist/utils/validateEnv.d.ts +7 -3
  36. package/dist/utils/validateEnv.d.ts.map +1 -1
  37. package/dist/utils/validateEnv.js +22 -10
  38. package/dist/utils/validateEnv.js.map +1 -1
  39. package/dist/utils/wait.d.ts +5 -2
  40. package/dist/utils/wait.d.ts.map +1 -1
  41. package/dist/utils/wait.js +8 -10
  42. package/dist/utils/wait.js.map +1 -1
  43. package/package.json +92 -91
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.updateSpreadsheetWithLocalChanges = updateSpreadsheetWithLocalChanges;
4
- const wait_1 = require("./wait");
4
+ const rateLimiter_1 = require("./rateLimiter");
5
5
  const localeNormalizer_1 = require("./localeNormalizer");
6
6
  /** Converts a 0-based column index to a spreadsheet column letter (A, B, ..., Z, AA, AB, ...) */
7
7
  function columnIndexToLetter(index) {
@@ -29,13 +29,14 @@ function columnIndexToLetter(index) {
29
29
  *
30
30
  * @param doc - The Google Spreadsheet instance
31
31
  * @param changes - Object containing new keys to add to the spreadsheet
32
- * @param waitSeconds - Number of seconds to wait between API calls
32
+ * @param waitSeconds - Base back-off delay in seconds for retrying rate-limited API calls
33
33
  * @param autoTranslate - Whether to add Google Translate formulas for missing translations (default: false)
34
34
  * @param localeMapping - Mapping from normalized locale codes to original spreadsheet headers
35
35
  * @returns Promise that resolves when the update is complete
36
36
  */
37
37
  async function updateSpreadsheetWithLocalChanges(doc, changes, waitSeconds, autoTranslate = false, localeMapping = {}) {
38
38
  console.log("Updating spreadsheet with local changes...");
39
+ const baseDelayMs = waitSeconds * 1000;
39
40
  // Process each sheet in the changes object
40
41
  for (const sheetTitle of new Set(Object.values(changes).flatMap(locale => Object.keys(locale)))) {
41
42
  console.log(`Processing sheet: ${sheetTitle}`);
@@ -44,9 +45,8 @@ async function updateSpreadsheetWithLocalChanges(doc, changes, waitSeconds, auto
44
45
  console.warn(`Sheet "${sheetTitle}" not found in the document, cannot update`);
45
46
  continue;
46
47
  }
47
- // Get all rows from the sheet
48
- await (0, wait_1.wait)(waitSeconds, `before getting rows for sheet: ${sheetTitle}`);
49
- const rows = await sheet.getRows();
48
+ // Get all rows from the sheet (retries automatically on rate-limit)
49
+ const rows = await (0, rateLimiter_1.withRetry)(() => sheet.getRows(), `getRows: ${sheetTitle}`, baseDelayMs);
50
50
  if (!rows || rows.length === 0) {
51
51
  console.warn(`No rows found in sheet "${sheetTitle}", cannot update`);
52
52
  continue;
@@ -119,9 +119,8 @@ async function updateSpreadsheetWithLocalChanges(doc, changes, waitSeconds, auto
119
119
  if (localeHeader) {
120
120
  // Use set() method instead of direct property assignment to avoid TS errors
121
121
  row.set(localeHeader, String(localeData[key]));
122
- await (0, wait_1.wait)(waitSeconds / 2, `before updating row ${rowIndex}`);
123
122
  try {
124
- await row.save();
123
+ await (0, rateLimiter_1.withRetry)(() => row.save(), `save row ${rowIndex} in ${sheetTitle}`, baseDelayMs);
125
124
  }
126
125
  catch (err) {
127
126
  console.error(`Failed to save row for key "${keyLower}" in sheet "${sheetTitle}":`, err);
@@ -178,18 +177,13 @@ async function updateSpreadsheetWithLocalChanges(doc, changes, waitSeconds, auto
178
177
  }
179
178
  }
180
179
  const newRows = Array.from(newKeys.values());
181
- await (0, wait_1.wait)(waitSeconds, `before adding ${newRows.length} new rows`);
182
- // Add new rows in chunks to avoid rate limiting
180
+ // Add new rows in chunks to keep individual requests manageable
183
181
  const CHUNK_SIZE = 5;
184
182
  for (let i = 0; i < newRows.length; i += CHUNK_SIZE) {
185
183
  const chunk = newRows.slice(i, i + CHUNK_SIZE);
186
- await sheet.addRows(chunk);
187
- if (i + CHUNK_SIZE < newRows.length) {
188
- await (0, wait_1.wait)(waitSeconds, `after adding ${chunk.length} rows (chunk ${i / CHUNK_SIZE + 1})`);
189
- }
184
+ await (0, rateLimiter_1.withRetry)(() => sheet.addRows(chunk), `addRows chunk ${Math.floor(i / CHUNK_SIZE) + 1} in ${sheetTitle}`, baseDelayMs);
190
185
  }
191
186
  }
192
- await (0, wait_1.wait)(waitSeconds, `after updating sheet: ${sheetTitle}`);
193
187
  }
194
188
  console.log("Finished updating spreadsheet with local changes.");
195
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spreadsheetUpdater.js","sourceRoot":"","sources":["../../src/utils/spreadsheetUpdater.ts"],"names":[],"mappings":";;AAqCA,8EAiNC;AApPD,iCAA8B;AAC9B,yDAAgE;AAEhE,iGAAiG;AACjG,SAAS,mBAAmB,CAAC,KAAa;IACtC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,KAAK,CAAC;IACd,GAAG,CAAC;QACA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;QACrD,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IACjB,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACI,KAAK,UAAU,iCAAiC,CACnD,GAAsB,EACtB,OAAwB,EACxB,WAAmB,EACnB,aAAa,GAAG,KAAK,EACrB,gBAAwC,EAAE;IAE1C,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1D,2CAA2C;IAC3C,KAAK,MAAM,UAAU,IAAI,IAAI,GAAG,CAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAChE,EAAE,CAAC;QACA,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,UAAU,UAAU,4CAA4C,CAAC,CAAC;YAC/E,SAAS;QACb,CAAC;QAED,8BAA8B;QAC9B,MAAM,IAAA,WAAI,EAAC,WAAW,EAAE,kCAAkC,UAAU,EAAE,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,2BAA2B,UAAU,kBAAkB,CAAC,CAAC;YACtE,SAAS;QACb,CAAC;QAED,6BAA6B;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B;QAE1D,2DAA2D;QAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QAE3D,4CAA4C;QAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACxB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,CAAC;YAE/E,IAAI,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,6DAA6D;gBAC7D,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;YACxE,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,+BAA+B;QAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;QAE1D,0EAA0E;QAC1E,MAAM,aAAa,GAAG,IAAI,GAAG,EAA+B,CAAC;QAE7D,8CAA8C;QAC9C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC;gBAAE,SAAS;YAE7C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;YAC/C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;gBAEnC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;wBAC5C,8CAA8C;wBAC9C,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAkB,CAAC,CAAC;oBAC3D,CAAC;oBAED,0DAA0D;oBAC1D,IAAI,YAAY,GAAG,IAAA,6CAA0B,EAAC,MAAM,EAAE,aAAa,CAAC,CAAC;oBAErE,2EAA2E;oBAC3E,IAAI,CAAC,YAAY,EAAE,CAAC;wBAChB,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;oBACjF,CAAC;oBAED,IAAI,YAAY,EAAE,CAAC;wBACf,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACrC,IAAI,CAAC,MAAM,EAAE,CAAC;4BACV,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,yCAAyC,CAAC,CAAC;4BACnE,SAAS;wBACb,CAAC;wBAED,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;wBAEtC,mDAAmD;wBACnD,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;wBAE7B,yDAAyD;wBACzD,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAClD,IAAI,aAAa,EAAE,CAAC;4BAChB,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC;wBAC1D,CAAC;oBACL,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,2CAA2C;oBAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;oBAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAE3B,0DAA0D;oBAC1D,IAAI,YAAY,GAAG,IAAA,6CAA0B,EAAC,MAAM,EAAE,aAAa,CAAC,CAAC;oBAErE,8DAA8D;oBAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;wBAChB,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAChD,CAAC;oBACN,CAAC;oBAED,IAAI,YAAY,EAAE,CAAC;wBACf,4EAA4E;wBAC5E,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC/C,MAAM,IAAA,WAAI,EAAC,WAAW,GAAG,CAAC,EAAE,uBAAuB,QAAQ,EAAE,CAAC,CAAC;wBAC/D,IAAI,CAAC;4BACD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;wBACrB,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACX,OAAO,CAAC,KAAK,CACT,+BAA+B,QAAQ,eAAe,UAAU,IAAI,EACpE,GAAG,CACN,CAAC;wBACN,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,4BAA4B;QAC5B,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,IAAI,sBAAsB,UAAU,KAAK,CAAC,CAAC;YAEzE,iDAAiD;YACjD,IAAI,aAAa,EAAE,CAAC;gBAChB,uBAAuB;gBACvB,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;oBAClD,MAAM,iBAAiB,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAEtD,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;wBAClD,mEAAmE;wBACnE,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE7D,+CAA+C;wBAC/C,wFAAwF;wBAExF,2EAA2E;wBAC3E,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE,CAAC;4BACjC,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;4BAE/C,0CAA0C;4BAC1C,IAAI,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gCAC9D,SAAS;4BACb,CAAC;4BAED,4CAA4C;4BAC5C,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,WAAW,CACvC,CAAC;4BAEF,IAAI,eAAe,EAAE,CAAC;gCAClB,iEAAiE;gCACjE,gFAAgF;gCAChF,gFAAgF;gCAEhF,oEAAoE;gCACpE,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gCAC1D,6CAA6C;gCAC7C,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gCAC7D,gDAAgD;gCAChD,IAAI,iBAAiB,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;oCACjD,SAAS;gCACb,CAAC;gCACD,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;gCAClE,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;gCAElE,8EAA8E;gCAC9E,uCAAuC;gCACvC,qDAAqD;gCACrD,6DAA6D;gCAC7D,4DAA4D;gCAC5D,OAAO,CAAC,eAAe,CAAC,GAAG,8BAA8B,kBAAkB,aAAa,kBAAkB,MAAM,kBAAkB,KAAK,CAAC;4BAC5I,CAAC;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7C,MAAM,IAAA,WAAI,EAAC,WAAW,EAAE,iBAAiB,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC;YAEpE,gDAAgD;YAChD,MAAM,UAAU,GAAG,CAAC,CAAC;YAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;gBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;gBAE/C,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAE3B,IAAI,CAAC,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;oBAClC,MAAM,IAAA,WAAI,EAAC,WAAW,EAAE,gBAAgB,KAAK,CAAC,MAAM,gBAAgB,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC/F,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,IAAA,WAAI,EAAC,WAAW,EAAE,yBAAyB,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"spreadsheetUpdater.js","sourceRoot":"","sources":["../../src/utils/spreadsheetUpdater.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
1
  import type { GoogleEnvVars } from "../types";
2
2
  /**
3
- * Validates required environment variables for Google Sheets API
4
- * @returns Object with validated environment variables
5
- * @throws Error if any required environment variable is missing
3
+ * Validates that the Google service-account credentials are present.
4
+ * Does NOT require GOOGLE_SPREADSHEET_ID the caller may create one on first run.
5
+ */
6
+ export declare function validateCredentials(): Pick<GoogleEnvVars, 'GOOGLE_CLIENT_EMAIL' | 'GOOGLE_PRIVATE_KEY'>;
7
+ /**
8
+ * Validates all three required Google Sheets environment variables.
9
+ * Throws if any are missing.
6
10
  */
7
11
  export declare function validateEnv(): GoogleEnvVars;
8
12
  export default validateEnv;
@@ -1 +1 @@
1
- {"version":3,"file":"validateEnv.d.ts","sourceRoot":"","sources":["../../src/utils/validateEnv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,aAAa,CAuB3C;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"validateEnv.d.ts","sourceRoot":"","sources":["../../src/utils/validateEnv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAAC,aAAa,EAAE,qBAAqB,GAAG,oBAAoB,CAAC,CAYvG;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,aAAa,CAiB3C;AAED,eAAe,WAAW,CAAC"}
@@ -1,24 +1,36 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateCredentials = validateCredentials;
3
4
  exports.validateEnv = validateEnv;
4
5
  /**
5
- * Validates required environment variables for Google Sheets API
6
- * @returns Object with validated environment variables
7
- * @throws Error if any required environment variable is missing
6
+ * Validates that the Google service-account credentials are present.
7
+ * Does NOT require GOOGLE_SPREADSHEET_ID the caller may create one on first run.
8
+ */
9
+ function validateCredentials() {
10
+ const requiredVars = ['GOOGLE_CLIENT_EMAIL', 'GOOGLE_PRIVATE_KEY'];
11
+ const missing = requiredVars.filter((v) => !process.env[v]);
12
+ if (missing.length > 0) {
13
+ throw new Error(`Missing required environment variables: ${missing.join(', ')}\n\nMake sure these are set in your .env file or environment.`);
14
+ }
15
+ return {
16
+ GOOGLE_CLIENT_EMAIL: process.env.GOOGLE_CLIENT_EMAIL,
17
+ GOOGLE_PRIVATE_KEY: process.env.GOOGLE_PRIVATE_KEY,
18
+ };
19
+ }
20
+ /**
21
+ * Validates all three required Google Sheets environment variables.
22
+ * Throws if any are missing.
8
23
  */
9
24
  function validateEnv() {
10
- // Check for required environment variables
11
25
  const requiredVars = [
12
- "GOOGLE_CLIENT_EMAIL",
13
- "GOOGLE_PRIVATE_KEY",
14
- "GOOGLE_SPREADSHEET_ID",
26
+ 'GOOGLE_CLIENT_EMAIL',
27
+ 'GOOGLE_PRIVATE_KEY',
28
+ 'GOOGLE_SPREADSHEET_ID',
15
29
  ];
16
30
  const missingVars = requiredVars.filter((varName) => !process.env[varName]);
17
31
  if (missingVars.length > 0) {
18
- throw new Error(`Missing required environment variables: ${missingVars.join(", ")}\n
19
- \nMake sure these are set in your .env file or environment.`);
32
+ throw new Error(`Missing required environment variables: ${missingVars.join(', ')}\n\nMake sure these are set in your .env file or environment.`);
20
33
  }
21
- // Return validated environment variables
22
34
  return {
23
35
  GOOGLE_CLIENT_EMAIL: process.env.GOOGLE_CLIENT_EMAIL,
24
36
  GOOGLE_PRIVATE_KEY: process.env.GOOGLE_PRIVATE_KEY,
@@ -1 +1 @@
1
- {"version":3,"file":"validateEnv.js","sourceRoot":"","sources":["../../src/utils/validateEnv.ts"],"names":[],"mappings":";;AAOA,kCAuBC;AA5BD;;;;GAIG;AACH,SAAgB,WAAW;IAC1B,2CAA2C;IAC3C,MAAM,YAAY,GAA+B;QAChD,qBAAqB;QACrB,oBAAoB;QACpB,uBAAuB;KACvB,CAAC;IAEF,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACd,2CAA2C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;4DACR,CACzD,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,OAAO;QACN,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAA6B;QAC9D,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAA4B;QAC5D,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAA+B;KAClE,CAAC;AACH,CAAC;AAED,kBAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"validateEnv.js","sourceRoot":"","sources":["../../src/utils/validateEnv.ts"],"names":[],"mappings":";;AAMA,kDAYC;AAMD,kCAiBC;AAvCD;;;GAGG;AACH,SAAgB,mBAAmB;IAClC,MAAM,YAAY,GAAG,CAAC,qBAAqB,EAAE,oBAAoB,CAAU,CAAC;IAC5E,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACd,2CAA2C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,+DAA+D,CAC5H,CAAC;IACH,CAAC;IACD,OAAO;QACN,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAA6B;QAC9D,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAA4B;KAC5D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW;IAC1B,MAAM,YAAY,GAA+B;QAChD,qBAAqB;QACrB,oBAAoB;QACpB,uBAAuB;KACvB,CAAC;IACF,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACd,2CAA2C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,+DAA+D,CAChI,CAAC;IACH,CAAC;IACD,OAAO;QACN,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAA6B;QAC9D,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAA4B;QAC5D,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAA+B;KAClE,CAAC;AACH,CAAC;AAED,kBAAe,WAAW,CAAC"}
@@ -1,7 +1,10 @@
1
1
  /**
2
- * Creates a promise that resolves after a specified number of seconds
2
+ * Creates a promise that resolves after a specified number of seconds.
3
+ * Uses the built-in `node:timers/promises` API which is designed for
4
+ * use with `await` and keeps the event loop alive until the delay expires.
5
+ *
3
6
  * @param seconds - The number of seconds to wait
4
- * @param reason - A description of why we're waiting
7
+ * @param reason - A description of why we are waiting (for logging)
5
8
  * @returns A promise that resolves after the specified delay
6
9
  */
7
10
  export declare function wait(seconds: number, reason: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../src/utils/wait.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUnE;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../src/utils/wait.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnE;AAED,eAAe,IAAI,CAAC"}
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.wait = wait;
4
+ const promises_1 = require("node:timers/promises");
4
5
  /**
5
- * Creates a promise that resolves after a specified number of seconds
6
+ * Creates a promise that resolves after a specified number of seconds.
7
+ * Uses the built-in `node:timers/promises` API which is designed for
8
+ * use with `await` and keeps the event loop alive until the delay expires.
9
+ *
6
10
  * @param seconds - The number of seconds to wait
7
- * @param reason - A description of why we're waiting
11
+ * @param reason - A description of why we are waiting (for logging)
8
12
  * @returns A promise that resolves after the specified delay
9
13
  */
10
14
  function wait(seconds, reason) {
11
- console.log("wait", seconds, reason);
12
- return new Promise((resolve) => {
13
- const timeoutId = setTimeout(() => {
14
- resolve();
15
- }, seconds * 1000);
16
- // This ensures the timeout is properly cleared if the promise is garbage collected
17
- timeoutId.unref?.();
18
- });
15
+ console.log('wait', seconds, reason);
16
+ return (0, promises_1.setTimeout)(seconds * 1000);
19
17
  }
20
18
  exports.default = wait;
21
19
  //# sourceMappingURL=wait.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/utils/wait.ts"],"names":[],"mappings":";;AAMA,oBAUC;AAhBD;;;;;GAKG;AACH,SAAgB,IAAI,CAAC,OAAe,EAAE,MAAc;IACnD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACpC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,OAAO,EAAE,CAAC;QACX,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;QAEnB,mFAAmF;QACnF,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,kBAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/utils/wait.ts"],"names":[],"mappings":";;AAWA,oBAGC;AAdD,mDAA2D;AAE3D;;;;;;;;GAQG;AACH,SAAgB,IAAI,CAAC,OAAe,EAAE,MAAc;IACnD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,IAAA,qBAAK,EAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,kBAAe,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,93 +1,94 @@
1
1
  {
2
- "name": "@el-j/google-sheet-translations",
3
- "version": "1.0.2",
4
- "description": "A package to manage translations stored in Google Spreadsheets",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "exports": {
8
- ".": {
9
- "types": "./dist/index.d.ts",
10
- "require": "./dist/index.js",
11
- "import": "./dist/index.js",
12
- "default": "./dist/index.js"
13
- }
14
- },
15
- "publishConfig": {
16
- "access": "public"
17
- },
18
- "files": [
19
- "dist",
20
- "LICENSE",
21
- "README.md"
22
- ],
23
- "scripts": {
24
- "build": "tsc",
25
- "clean": "rimraf dist",
26
- "prebuild": "npm run clean",
27
- "prepare": "npm run build",
28
- "test": "jest",
29
- "lint": "eslint src/ --ext .ts --max-warnings 0",
30
- "dev": "tsc --watch",
31
- "release": "semantic-release",
32
- "release:dry-run": "semantic-release --dry-run",
33
- "docs:dev": "vitepress dev website",
34
- "docs:build": "vitepress build website",
35
- "docs:preview": "vitepress preview website"
36
- },
37
- "keywords": [
38
- "google-sheets",
39
- "translations",
40
- "i18n",
41
- "nextjs",
42
- "typescript",
43
- "auto-translation",
44
- "machine-translation",
45
- "google-translate",
46
- "localization",
47
- "internationalization",
48
- "spreadsheet",
49
- "google-api",
50
- "google-spreadsheet"
51
- ],
52
- "author": "el-j",
53
- "license": "MIT",
54
- "dependencies": {
55
- "google-auth-library": "^10.1.0",
56
- "google-spreadsheet": "^4.1.5"
57
- },
58
- "peerDependencies": {
59
- "typescript": ">=4.0.0"
60
- },
61
- "devDependencies": {
62
- "@eslint/js": "^10.0.1",
63
- "@semantic-release/changelog": "^6.0.3",
64
- "@semantic-release/commit-analyzer": "^13.0.1",
65
- "@semantic-release/git": "^10.0.1",
66
- "@semantic-release/github": "^12.0.6",
67
- "@semantic-release/npm": "^13.1.5",
68
- "@semantic-release/release-notes-generator": "^14.1.0",
69
- "@types/jest": "^30.0.0",
70
- "@types/node": "^24.0.15",
71
- "@typescript-eslint/eslint-plugin": "^8.56.1",
72
- "@typescript-eslint/parser": "^8.56.1",
73
- "conventional-changelog-conventionalcommits": "^9.3.0",
74
- "dotenv": "17.2.0",
75
- "eslint": "^10.0.3",
76
- "jest": "^30.0.4",
77
- "jest-mock-extended": "^4.0.0",
78
- "rimraf": "^6.0.1",
79
- "semantic-release": "^25.0.3",
80
- "ts-jest": "^29.4.0",
81
- "ts-node": "^10.9.2",
82
- "typescript": "^5.8.3",
83
- "vitepress": "^1.6.4"
84
- },
85
- "engines": {
86
- "node": ">=14.18.0"
87
- },
88
- "overrides": {
89
- "google-spreadsheet": {
90
- "google-auth-library": "^10.1.0"
91
- }
92
- }
2
+ "name": "@el-j/google-sheet-translations",
3
+ "version": "1.2.0",
4
+ "description": "A package to manage translations stored in Google Spreadsheets",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "require": "./dist/index.js",
11
+ "import": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ }
14
+ },
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "LICENSE",
21
+ "README.md"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsc",
25
+ "clean": "rimraf dist",
26
+ "prebuild": "npm run clean",
27
+ "prepare": "npm run build",
28
+ "test": "jest",
29
+ "lint": "eslint src/ --ext .ts --max-warnings 0",
30
+ "dev": "tsc --watch",
31
+ "release": "semantic-release",
32
+ "release:dry-run": "semantic-release --dry-run",
33
+ "docs:dev": "vitepress dev website",
34
+ "docs:build": "vitepress build website",
35
+ "docs:preview": "vitepress preview website",
36
+ "test:integration": "INTEGRATION=true jest --testPathPatterns=integration --testTimeout=60000 --coverage=false"
37
+ },
38
+ "keywords": [
39
+ "google-sheets",
40
+ "translations",
41
+ "i18n",
42
+ "nextjs",
43
+ "typescript",
44
+ "auto-translation",
45
+ "machine-translation",
46
+ "google-translate",
47
+ "localization",
48
+ "internationalization",
49
+ "spreadsheet",
50
+ "google-api",
51
+ "google-spreadsheet"
52
+ ],
53
+ "author": "el-j",
54
+ "license": "MIT",
55
+ "dependencies": {
56
+ "google-auth-library": "^10.1.0",
57
+ "google-spreadsheet": "^4.1.5"
58
+ },
59
+ "peerDependencies": {
60
+ "typescript": ">=4.0.0"
61
+ },
62
+ "devDependencies": {
63
+ "@eslint/js": "^10.0.1",
64
+ "@semantic-release/changelog": "^6.0.3",
65
+ "@semantic-release/commit-analyzer": "^13.0.1",
66
+ "@semantic-release/git": "^10.0.1",
67
+ "@semantic-release/github": "^12.0.6",
68
+ "@semantic-release/npm": "^13.1.5",
69
+ "@semantic-release/release-notes-generator": "^14.1.0",
70
+ "@types/jest": "^30.0.0",
71
+ "@types/node": "^24.0.15",
72
+ "@typescript-eslint/eslint-plugin": "^8.56.1",
73
+ "@typescript-eslint/parser": "^8.56.1",
74
+ "conventional-changelog-conventionalcommits": "^9.3.0",
75
+ "dotenv": "17.2.0",
76
+ "eslint": "^10.0.3",
77
+ "jest": "^30.0.4",
78
+ "jest-mock-extended": "^4.0.0",
79
+ "rimraf": "^6.0.1",
80
+ "semantic-release": "^25.0.3",
81
+ "ts-jest": "^29.4.0",
82
+ "ts-node": "^10.9.2",
83
+ "typescript": "^5.8.3",
84
+ "vitepress": "^1.6.4"
85
+ },
86
+ "engines": {
87
+ "node": ">=18.0.0"
88
+ },
89
+ "overrides": {
90
+ "google-spreadsheet": {
91
+ "google-auth-library": "^10.1.0"
92
+ }
93
+ }
93
94
  }