@sapphire-sh/utils 1.81.0 → 1.83.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 (143) hide show
  1. package/lib/cjs/date.d.ts +1 -0
  2. package/lib/cjs/date.d.ts.map +1 -1
  3. package/lib/cjs/date.js +3 -1
  4. package/lib/cjs/date.js.map +1 -1
  5. package/lib/cjs/download.d.ts +1 -1
  6. package/lib/cjs/download.d.ts.map +1 -1
  7. package/lib/cjs/download.js +25 -2
  8. package/lib/cjs/download.js.map +1 -1
  9. package/lib/cjs/env.d.ts +3 -0
  10. package/lib/cjs/env.d.ts.map +1 -0
  11. package/lib/cjs/env.js +25 -0
  12. package/lib/cjs/env.js.map +1 -0
  13. package/lib/cjs/eslint.d.ts.map +1 -1
  14. package/lib/cjs/eslint.js +14 -2
  15. package/lib/cjs/eslint.js.map +1 -1
  16. package/lib/cjs/eslintNext.d.ts +3 -0
  17. package/lib/cjs/eslintNext.d.ts.map +1 -0
  18. package/lib/cjs/eslintNext.js +11 -0
  19. package/lib/cjs/eslintNext.js.map +1 -0
  20. package/lib/cjs/eslintRules.d.ts +1 -0
  21. package/lib/cjs/eslintRules.d.ts.map +1 -1
  22. package/lib/cjs/eslintRules.js +33 -1
  23. package/lib/cjs/eslintRules.js.map +1 -1
  24. package/lib/cjs/format.d.ts +2 -0
  25. package/lib/cjs/format.d.ts.map +1 -0
  26. package/lib/cjs/format.js +19 -0
  27. package/lib/cjs/format.js.map +1 -0
  28. package/lib/cjs/fs.d.ts +3 -0
  29. package/lib/cjs/fs.d.ts.map +1 -1
  30. package/lib/cjs/fs.js +22 -6
  31. package/lib/cjs/fs.js.map +1 -1
  32. package/lib/cjs/http.d.ts +3 -1
  33. package/lib/cjs/http.d.ts.map +1 -1
  34. package/lib/cjs/http.js +27 -16
  35. package/lib/cjs/http.js.map +1 -1
  36. package/lib/cjs/index.d.ts +15 -3
  37. package/lib/cjs/index.d.ts.map +1 -1
  38. package/lib/cjs/index.js +26 -1
  39. package/lib/cjs/index.js.map +1 -1
  40. package/lib/cjs/json.d.ts +12 -0
  41. package/lib/cjs/json.d.ts.map +1 -0
  42. package/lib/cjs/json.js +41 -0
  43. package/lib/cjs/json.js.map +1 -0
  44. package/lib/cjs/logger.d.ts +9 -1
  45. package/lib/cjs/logger.d.ts.map +1 -1
  46. package/lib/cjs/logger.js +42 -11
  47. package/lib/cjs/logger.js.map +1 -1
  48. package/lib/cjs/math.d.ts +2 -0
  49. package/lib/cjs/math.d.ts.map +1 -0
  50. package/lib/cjs/math.js +11 -0
  51. package/lib/cjs/math.js.map +1 -0
  52. package/lib/cjs/notify.d.ts +1 -0
  53. package/lib/cjs/notify.d.ts.map +1 -1
  54. package/lib/cjs/notify.js +18 -1
  55. package/lib/cjs/notify.js.map +1 -1
  56. package/lib/cjs/retry.d.ts +10 -0
  57. package/lib/cjs/retry.d.ts.map +1 -0
  58. package/lib/cjs/retry.js +22 -0
  59. package/lib/cjs/retry.js.map +1 -0
  60. package/lib/cjs/serialLimiter.d.ts +3 -0
  61. package/lib/cjs/serialLimiter.d.ts.map +1 -0
  62. package/lib/cjs/serialLimiter.js +29 -0
  63. package/lib/cjs/serialLimiter.js.map +1 -0
  64. package/lib/cjs/slackLogBatcher.d.ts +12 -0
  65. package/lib/cjs/slackLogBatcher.d.ts.map +1 -0
  66. package/lib/cjs/slackLogBatcher.js +54 -0
  67. package/lib/cjs/slackLogBatcher.js.map +1 -0
  68. package/lib/cjs/vitestNext.d.ts +3 -0
  69. package/lib/cjs/vitestNext.d.ts.map +1 -0
  70. package/lib/cjs/vitestNext.js +21 -0
  71. package/lib/cjs/vitestNext.js.map +1 -0
  72. package/lib/date.d.ts +1 -0
  73. package/lib/date.d.ts.map +1 -1
  74. package/lib/date.js +1 -0
  75. package/lib/date.js.map +1 -1
  76. package/lib/download.d.ts +1 -1
  77. package/lib/download.d.ts.map +1 -1
  78. package/lib/download.js +25 -2
  79. package/lib/download.js.map +1 -1
  80. package/lib/env.d.ts +3 -0
  81. package/lib/env.d.ts.map +1 -0
  82. package/lib/env.js +20 -0
  83. package/lib/env.js.map +1 -0
  84. package/lib/eslint.d.ts.map +1 -1
  85. package/lib/eslint.js +14 -2
  86. package/lib/eslint.js.map +1 -1
  87. package/lib/eslintNext.d.ts +3 -0
  88. package/lib/eslintNext.d.ts.map +1 -0
  89. package/lib/eslintNext.js +6 -0
  90. package/lib/eslintNext.js.map +1 -0
  91. package/lib/eslintRules.d.ts +1 -0
  92. package/lib/eslintRules.d.ts.map +1 -1
  93. package/lib/eslintRules.js +32 -0
  94. package/lib/eslintRules.js.map +1 -1
  95. package/lib/format.d.ts +2 -0
  96. package/lib/format.d.ts.map +1 -0
  97. package/lib/format.js +15 -0
  98. package/lib/format.js.map +1 -0
  99. package/lib/fs.d.ts +3 -0
  100. package/lib/fs.d.ts.map +1 -1
  101. package/lib/fs.js +18 -5
  102. package/lib/fs.js.map +1 -1
  103. package/lib/http.d.ts +3 -1
  104. package/lib/http.d.ts.map +1 -1
  105. package/lib/http.js +25 -15
  106. package/lib/http.js.map +1 -1
  107. package/lib/index.d.ts +15 -3
  108. package/lib/index.d.ts.map +1 -1
  109. package/lib/index.js +10 -3
  110. package/lib/index.js.map +1 -1
  111. package/lib/json.d.ts +12 -0
  112. package/lib/json.d.ts.map +1 -0
  113. package/lib/json.js +31 -0
  114. package/lib/json.js.map +1 -0
  115. package/lib/logger.d.ts +9 -1
  116. package/lib/logger.d.ts.map +1 -1
  117. package/lib/logger.js +42 -11
  118. package/lib/logger.js.map +1 -1
  119. package/lib/math.d.ts +2 -0
  120. package/lib/math.d.ts.map +1 -0
  121. package/lib/math.js +7 -0
  122. package/lib/math.js.map +1 -0
  123. package/lib/notify.d.ts +1 -0
  124. package/lib/notify.d.ts.map +1 -1
  125. package/lib/notify.js +16 -0
  126. package/lib/notify.js.map +1 -1
  127. package/lib/retry.d.ts +10 -0
  128. package/lib/retry.d.ts.map +1 -0
  129. package/lib/retry.js +18 -0
  130. package/lib/retry.js.map +1 -0
  131. package/lib/serialLimiter.d.ts +3 -0
  132. package/lib/serialLimiter.d.ts.map +1 -0
  133. package/lib/serialLimiter.js +25 -0
  134. package/lib/serialLimiter.js.map +1 -0
  135. package/lib/slackLogBatcher.d.ts +12 -0
  136. package/lib/slackLogBatcher.d.ts.map +1 -0
  137. package/lib/slackLogBatcher.js +49 -0
  138. package/lib/slackLogBatcher.js.map +1 -0
  139. package/lib/vitestNext.d.ts +3 -0
  140. package/lib/vitestNext.d.ts.map +1 -0
  141. package/lib/vitestNext.js +16 -0
  142. package/lib/vitestNext.js.map +1 -0
  143. package/package.json +21 -1
package/lib/cjs/date.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export declare const toLocalISOString: (date: Date) => string;
2
+ export declare const formatDate: (date: Date, timeZone?: string) => string;
2
3
  export declare const formatDuration: (ms: number) => string;
3
4
  //# sourceMappingURL=date.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/date.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,GAAI,MAAM,IAAI,KAAG,MAe7C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,KAAG,MAmB3C,CAAC"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/date.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,GAAI,MAAM,IAAI,KAAG,MAe7C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,EAAE,WAAW,MAAM,KAAG,MACoD,CAAC;AAEhH,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,KAAG,MAmB3C,CAAC"}
package/lib/cjs/date.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatDuration = exports.toLocalISOString = void 0;
3
+ exports.formatDuration = exports.formatDate = exports.toLocalISOString = void 0;
4
4
  const toLocalISOString = (date) => {
5
5
  const year = date.getFullYear();
6
6
  const month = `${date.getMonth() + 1}`.padStart(2, '0');
@@ -16,6 +16,8 @@ const toLocalISOString = (date) => {
16
16
  return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${ms}${sign}${offsetHours}:${offsetMinutes}`;
17
17
  };
18
18
  exports.toLocalISOString = toLocalISOString;
19
+ const formatDate = (date, timeZone) => new Intl.DateTimeFormat('en-CA', { timeZone, year: 'numeric', month: '2-digit', day: '2-digit' }).format(date);
20
+ exports.formatDate = formatDate;
19
21
  const formatDuration = (ms) => {
20
22
  if (ms < 1000) {
21
23
  return `${ms}ms`;
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/date.ts"],"names":[],"mappings":";;;AAAO,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAU,EAAE;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACrC,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAElE,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,IAAI,EAAE,GAAG,IAAI,GAAG,WAAW,IAAI,aAAa,EAAE,CAAC;AAC7G,CAAC,CAAC;AAfW,QAAA,gBAAgB,oBAe3B;AAEK,MAAM,cAAc,GAAG,CAAC,EAAU,EAAU,EAAE;IACpD,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACf,OAAO,GAAG,EAAE,IAAI,CAAC;IAClB,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC,CAAC;AAnBW,QAAA,cAAc,kBAmBzB"}
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/date.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const download: (url: string, filePath: string, init?: RequestInit, timeoutMs?: number) => Promise<void>;
1
+ export declare const download: (url: string, filePath: string, init?: RequestInit, timeoutMs?: number) => Promise<number>;
2
2
  //# sourceMappingURL=download.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/download.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ,GACpB,KAAK,MAAM,EACX,UAAU,MAAM,EAChB,OAAO,WAAW,EAClB,kBAAyB,KACvB,OAAO,CAAC,IAAI,CAUd,CAAC"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/download.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,QAAQ,GACpB,KAAK,MAAM,EACX,UAAU,MAAM,EAChB,OAAO,WAAW,EAClB,kBAAyB,KACvB,OAAO,CAAC,MAAM,CAgBhB,CAAC"}
@@ -5,7 +5,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.download = void 0;
7
7
  const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_stream_1 = require("node:stream");
9
+ const promises_1 = require("node:stream/promises");
8
10
  const http_js_1 = require("./http.js");
11
+ // fetch hands back the global ReadableStream, which Readable.fromWeb does not accept,
12
+ // so the body is drained through its reader instead.
13
+ const readChunks = async function* (body) {
14
+ const reader = body.getReader();
15
+ try {
16
+ for (;;) {
17
+ const result = await reader.read();
18
+ if (result.done) {
19
+ return;
20
+ }
21
+ yield result.value;
22
+ }
23
+ }
24
+ finally {
25
+ reader.releaseLock();
26
+ }
27
+ };
9
28
  const download = async (url, filePath, init, timeoutMs = 5 * 60 * 1000) => {
10
29
  const resp = await fetch(url, {
11
30
  signal: AbortSignal.timeout(timeoutMs),
@@ -14,8 +33,12 @@ const download = async (url, filePath, init, timeoutMs = 5 * 60 * 1000) => {
14
33
  if (!resp.ok) {
15
34
  throw new http_js_1.HttpError(resp.status, resp.statusText);
16
35
  }
17
- const buffer = await resp.arrayBuffer();
18
- await node_fs_1.default.promises.writeFile(filePath, Buffer.from(buffer));
36
+ if (resp.body === null) {
37
+ throw new Error(`Response body is empty: ${url}`);
38
+ }
39
+ await (0, promises_1.pipeline)(node_stream_1.Readable.from(readChunks(resp.body)), node_fs_1.default.createWriteStream(filePath));
40
+ const { size } = await node_fs_1.default.promises.stat(filePath);
41
+ return size;
19
42
  };
20
43
  exports.download = download;
21
44
  //# sourceMappingURL=download.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/download.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,uCAAsC;AAE/B,MAAM,QAAQ,GAAG,KAAK,EAC5B,GAAW,EACX,QAAgB,EAChB,IAAkB,EAClB,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EACT,EAAE;IAClB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;QACtC,GAAG,IAAI;KACP,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,mBAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,iBAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AAfW,QAAA,QAAQ,YAenB"}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/download.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,6CAAuC;AACvC,mDAAgD;AAChD,uCAAsC;AAEtC,sFAAsF;AACtF,qDAAqD;AACrD,MAAM,UAAU,GAAG,KAAK,SAAS,CAAC,EAAE,IAAmC;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC;QACJ,SAAS,CAAC;YACT,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO;YACR,CAAC;YACD,MAAM,MAAM,CAAC,KAAK,CAAC;QACpB,CAAC;IACF,CAAC;YAAS,CAAC;QACV,MAAM,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;AACF,CAAC,CAAC;AAEK,MAAM,QAAQ,GAAG,KAAK,EAC5B,GAAW,EACX,QAAgB,EAChB,IAAkB,EAClB,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EACP,EAAE;IACpB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;QACtC,GAAG,IAAI;KACP,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,mBAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,IAAA,mBAAQ,EAAC,sBAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,iBAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,iBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AArBW,QAAA,QAAQ,YAqBnB"}
@@ -0,0 +1,3 @@
1
+ export declare const readEnv: (name: string) => string | undefined;
2
+ export declare const requireEnv: (name: string) => string;
3
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAY/C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MAMzC,CAAC"}
package/lib/cjs/env.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requireEnv = exports.readEnv = void 0;
4
+ const readEnv = (name) => {
5
+ // The root entry re-exports modules that read env at load time, so a browser
6
+ // bundle without `process` must get undefined rather than a ReferenceError.
7
+ if (typeof process === 'undefined') {
8
+ return undefined;
9
+ }
10
+ const value = process.env[name];
11
+ if (value === undefined || value === '') {
12
+ return undefined;
13
+ }
14
+ return value;
15
+ };
16
+ exports.readEnv = readEnv;
17
+ const requireEnv = (name) => {
18
+ const value = (0, exports.readEnv)(name);
19
+ if (value === undefined) {
20
+ throw new Error(`Missing required env var: ${name}`);
21
+ }
22
+ return value;
23
+ };
24
+ exports.requireEnv = requireEnv;
25
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":";;;AAAO,MAAM,OAAO,GAAG,CAAC,IAAY,EAAsB,EAAE;IAC3D,6EAA6E;IAC7E,4EAA4E;IAC5E,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAZW,QAAA,OAAO,WAYlB;AAEK,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE;IAClD,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AANW,QAAA,UAAU,cAMrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"eslint.d.ts","sourceRoot":"","sources":["../../src/eslint.ts"],"names":[],"mappings":";AAOA,wBA0IE"}
1
+ {"version":3,"file":"eslint.d.ts","sourceRoot":"","sources":["../../src/eslint.ts"],"names":[],"mappings":";AAOA,wBAuJE"}
package/lib/cjs/eslint.js CHANGED
@@ -16,6 +16,7 @@ exports.default = (0, config_1.defineConfig)(js_1.default.configs.recommended, .
16
16
  rules: {
17
17
  // Sapphire
18
18
  'sapphire/no-control-characters': 'error',
19
+ 'sapphire/prefer-read-env': 'error',
19
20
  // General
20
21
  'arrow-body-style': ['error', 'as-needed'],
21
22
  curly: 'error',
@@ -37,6 +38,7 @@ exports.default = (0, config_1.defineConfig)(js_1.default.configs.recommended, .
37
38
  'no-restricted-imports': [
38
39
  'error',
39
40
  { name: 'assert', message: 'Use `node:assert` instead.' },
41
+ { name: 'axios', message: 'Use fetch or fetchWithRetry from @sapphire-sh/utils instead.' },
40
42
  { name: 'buffer', message: 'Use `node:buffer` instead.' },
41
43
  { name: 'child_process', message: 'Use `node:child_process` instead.' },
42
44
  { name: 'cluster', message: 'Use `node:cluster` instead.' },
@@ -92,9 +94,9 @@ exports.default = (0, config_1.defineConfig)(js_1.default.configs.recommended, .
92
94
  custom: { regex: '^I[A-Z]', match: false },
93
95
  },
94
96
  ],
95
- '@typescript-eslint/no-explicit-any': 'warn',
97
+ '@typescript-eslint/no-explicit-any': 'error',
96
98
  '@typescript-eslint/no-namespace': 'off',
97
- '@typescript-eslint/no-non-null-assertion': 'warn',
99
+ '@typescript-eslint/no-non-null-assertion': 'error',
98
100
  '@typescript-eslint/no-shadow': 'off',
99
101
  '@typescript-eslint/no-unnecessary-type-assertion': 'error',
100
102
  '@typescript-eslint/no-unused-vars': ['error', { varsIgnorePattern: '^_', argsIgnorePattern: '^_' }],
@@ -135,6 +137,16 @@ exports.default = (0, config_1.defineConfig)(js_1.default.configs.recommended, .
135
137
  project: true,
136
138
  },
137
139
  },
140
+ }, {
141
+ // Test doubles implement only part of an interface, and some libraries return
142
+ // `unknown`, so test files narrow with `as` where production code must not.
143
+ files: ['**/*.test.ts', '**/*.test.tsx'],
144
+ rules: {
145
+ '@typescript-eslint/consistent-type-assertions': [
146
+ 'error',
147
+ { assertionStyle: 'as', objectLiteralTypeAssertions: 'allow', arrayLiteralTypeAssertions: 'allow' },
148
+ ],
149
+ },
138
150
  }, {
139
151
  ignores: ['*.config.js', '**/*.json', 'coverage/', 'dist/', 'lib/', 'node_modules/'],
140
152
  });
@@ -1 +1 @@
1
- {"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../src/eslint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../src/eslint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@eslint/config-helpers").Config[];
2
+ export default _default;
3
+ //# sourceMappingURL=eslintNext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslintNext.d.ts","sourceRoot":"","sources":["../../src/eslintNext.ts"],"names":[],"mappings":";AAKA,wBAKE"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const core_web_vitals_1 = __importDefault(require("eslint-config-next/core-web-vitals"));
7
+ const typescript_1 = __importDefault(require("eslint-config-next/typescript"));
8
+ const config_1 = require("eslint/config");
9
+ const eslint_js_1 = __importDefault(require("./eslint.js"));
10
+ exports.default = (0, config_1.defineConfig)(...eslint_js_1.default, ...core_web_vitals_1.default, ...typescript_1.default, (0, config_1.globalIgnores)(['.next/**', 'out/**', 'build/**', 'next-env.d.ts']));
11
+ //# sourceMappingURL=eslintNext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslintNext.js","sourceRoot":"","sources":["../../src/eslintNext.ts"],"names":[],"mappings":";;;;;AAAA,yFAAmE;AACnE,+EAA2D;AAC3D,0CAA4D;AAC5D,4DAAyC;AAEzC,kBAAe,IAAA,qBAAY,EAC1B,GAAG,mBAAc,EACjB,GAAG,yBAAiB,EACpB,GAAG,oBAAc,EACjB,IAAA,sBAAa,EAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAClE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ESLint, Rule } from 'eslint';
2
2
  export declare const noControlCharacters: Rule.RuleModule;
3
+ export declare const preferReadEnv: Rule.RuleModule;
3
4
  export declare const sapphirePlugin: ESLint.Plugin;
4
5
  //# sourceMappingURL=eslintRules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eslintRules.d.ts","sourceRoot":"","sources":["../../src/eslintRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAO3C,eAAO,MAAM,mBAAmB,EAAE,IAAI,CAAC,UAgCtC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAInC,CAAC"}
1
+ {"version":3,"file":"eslintRules.d.ts","sourceRoot":"","sources":["../../src/eslintRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAQ3C,eAAO,MAAM,mBAAmB,EAAE,IAAI,CAAC,UAgCtC,CAAC;AAUF,eAAO,MAAM,aAAa,EAAE,IAAI,CAAC,UAyBhC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAKnC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sapphirePlugin = exports.noControlCharacters = void 0;
3
+ exports.sapphirePlugin = exports.preferReadEnv = exports.noControlCharacters = void 0;
4
4
  // C0 control characters and DEL, excluding tab (U+0009), LF (U+000A), and CR (U+000D).
5
5
  // Matching control characters is the whole point of this rule, so no-control-regex is expected here.
6
6
  // eslint-disable-next-line no-control-regex
@@ -38,9 +38,41 @@ exports.noControlCharacters = {
38
38
  };
39
39
  },
40
40
  };
41
+ const isProcessEnv = (node) => node.type === 'MemberExpression' &&
42
+ !node.computed &&
43
+ node.object.type === 'Identifier' &&
44
+ node.object.name === 'process' &&
45
+ node.property.type === 'Identifier' &&
46
+ node.property.name === 'env';
47
+ exports.preferReadEnv = {
48
+ meta: {
49
+ type: 'problem',
50
+ docs: {
51
+ description: 'Disallow fallback operators on process.env values, which keep an empty string as a value',
52
+ },
53
+ schema: [],
54
+ messages: {
55
+ preferReadEnv: 'Use readEnv() from @sapphire-sh/utils instead of a fallback operator on process.env, which does not treat an empty string as unset.',
56
+ },
57
+ },
58
+ create(context) {
59
+ return {
60
+ LogicalExpression(node) {
61
+ if (node.operator !== '??' && node.operator !== '||') {
62
+ return;
63
+ }
64
+ if (node.left.type !== 'MemberExpression' || !isProcessEnv(node.left.object)) {
65
+ return;
66
+ }
67
+ context.report({ node, messageId: 'preferReadEnv' });
68
+ },
69
+ };
70
+ },
71
+ };
41
72
  exports.sapphirePlugin = {
42
73
  rules: {
43
74
  'no-control-characters': exports.noControlCharacters,
75
+ 'prefer-read-env': exports.preferReadEnv,
44
76
  },
45
77
  };
46
78
  //# sourceMappingURL=eslintRules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eslintRules.js","sourceRoot":"","sources":["../../src/eslintRules.ts"],"names":[],"mappings":";;;AAEA,uFAAuF;AACvF,qGAAqG;AACrG,4CAA4C;AAC5C,MAAM,yBAAyB,GAAG,IAAI,MAAM,CAAC,uDAAuD,EAAE,GAAG,CAAC,CAAC;AAE9F,QAAA,mBAAmB,GAAoB;IACnD,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EAAE,mEAAmE;SAChF;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACT,gBAAgB,EAAE,oDAAoD;SACtE;KACD;IACD,MAAM,CAAC,OAAO;QACb,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAC/B,OAAO;YACN,OAAO,CAAC,IAAI;gBACX,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;gBAClC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;oBAC9D,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;oBACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;oBAChF,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI;wBACJ,GAAG,EAAE;4BACJ,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC;4BACxC,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;yBAC1C;wBACD,SAAS,EAAE,kBAAkB;wBAC7B,IAAI,EAAE,EAAE,IAAI,EAAE;qBACd,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC;AAEW,QAAA,cAAc,GAAkB;IAC5C,KAAK,EAAE;QACN,uBAAuB,EAAE,2BAAmB;KAC5C;CACD,CAAC"}
1
+ {"version":3,"file":"eslintRules.js","sourceRoot":"","sources":["../../src/eslintRules.ts"],"names":[],"mappings":";;;AAGA,uFAAuF;AACvF,qGAAqG;AACrG,4CAA4C;AAC5C,MAAM,yBAAyB,GAAG,IAAI,MAAM,CAAC,uDAAuD,EAAE,GAAG,CAAC,CAAC;AAE9F,QAAA,mBAAmB,GAAoB;IACnD,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EAAE,mEAAmE;SAChF;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACT,gBAAgB,EAAE,oDAAoD;SACtE;KACD;IACD,MAAM,CAAC,OAAO;QACb,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAC/B,OAAO;YACN,OAAO,CAAC,IAAI;gBACX,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;gBAClC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;oBAC9D,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;oBACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;oBAChF,OAAO,CAAC,MAAM,CAAC;wBACd,IAAI;wBACJ,GAAG,EAAE;4BACJ,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC;4BACxC,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;yBAC1C;wBACD,SAAS,EAAE,kBAAkB;wBAC7B,IAAI,EAAE,EAAE,IAAI,EAAE;qBACd,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAAU,EAAW,EAAE,CAC5C,IAAI,CAAC,IAAI,KAAK,kBAAkB;IAChC,CAAC,IAAI,CAAC,QAAQ;IACd,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;IACjC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;IAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;IACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC;AAEjB,QAAA,aAAa,GAAoB;IAC7C,IAAI,EAAE;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACL,WAAW,EAAE,0FAA0F;SACvG;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACT,aAAa,EACZ,qIAAqI;SACtI;KACD;IACD,MAAM,CAAC,OAAO;QACb,OAAO;YACN,iBAAiB,CAAC,IAAI;gBACrB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtD,OAAO;gBACR,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9E,OAAO;gBACR,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;YACtD,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC;AAEW,QAAA,cAAc,GAAkB;IAC5C,KAAK,EAAE;QACN,uBAAuB,EAAE,2BAAmB;QAC5C,iBAAiB,EAAE,qBAAa;KAChC;CACD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const formatBytes: (bytes: number) => string;
2
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAc3C,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatBytes = void 0;
4
+ const BYTES_PER_UNIT = 1024;
5
+ const BYTE_UNITS = ['KB', 'MB', 'GB', 'TB'];
6
+ const formatBytes = (bytes) => {
7
+ if (bytes < BYTES_PER_UNIT) {
8
+ return `${bytes} B`;
9
+ }
10
+ let value = bytes / BYTES_PER_UNIT;
11
+ let unitIndex = 0;
12
+ while (value >= BYTES_PER_UNIT && unitIndex < BYTE_UNITS.length - 1) {
13
+ value /= BYTES_PER_UNIT;
14
+ unitIndex += 1;
15
+ }
16
+ return `${value.toFixed(1)} ${BYTE_UNITS[unitIndex]}`;
17
+ };
18
+ exports.formatBytes = formatBytes;
19
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAErC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE;IACpD,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;QAC5B,OAAO,GAAG,KAAK,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,GAAG,cAAc,CAAC;IACnC,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,OAAO,KAAK,IAAI,cAAc,IAAI,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,KAAK,IAAI,cAAc,CAAC;QACxB,SAAS,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AACvD,CAAC,CAAC;AAdW,QAAA,WAAW,eActB"}
package/lib/cjs/fs.d.ts CHANGED
@@ -1,2 +1,5 @@
1
+ export declare const fileExists: (path: string) => Promise<boolean>;
1
2
  export declare const mkdir: (path: string) => Promise<void>;
3
+ export declare const readJson: <T>(path: string) => Promise<T>;
4
+ export declare const writeJson: (path: string, data: unknown) => Promise<void>;
2
5
  //# sourceMappingURL=fs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAUtD,CAAC"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,CAU9D,CAAC;AAEF,eAAO,MAAM,KAAK,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAKtD,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAU,CAAC,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,CAAC,CAIzD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,MAAM,MAAM,EAAE,MAAM,OAAO,KAAG,OAAO,CAAC,IAAI,CAEzE,CAAC"}
package/lib/cjs/fs.js CHANGED
@@ -3,20 +3,36 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.mkdir = void 0;
6
+ exports.writeJson = exports.readJson = exports.mkdir = exports.fileExists = void 0;
7
7
  const node_fs_1 = __importDefault(require("node:fs"));
8
- const mkdir = async (path) => {
8
+ const fileExists = async (path) => {
9
9
  try {
10
10
  await node_fs_1.default.promises.lstat(path);
11
+ return true;
11
12
  }
12
13
  catch (error) {
13
14
  if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
14
- await node_fs_1.default.promises.mkdir(path, { recursive: true });
15
- }
16
- else {
17
- throw error;
15
+ return false;
18
16
  }
17
+ throw error;
19
18
  }
20
19
  };
20
+ exports.fileExists = fileExists;
21
+ const mkdir = async (path) => {
22
+ if (await (0, exports.fileExists)(path)) {
23
+ return;
24
+ }
25
+ await node_fs_1.default.promises.mkdir(path, { recursive: true });
26
+ };
21
27
  exports.mkdir = mkdir;
28
+ const readJson = async (path) => {
29
+ const text = await node_fs_1.default.promises.readFile(path, 'utf-8');
30
+ const parsed = JSON.parse(text);
31
+ return parsed;
32
+ };
33
+ exports.readJson = readJson;
34
+ const writeJson = async (path, data) => {
35
+ await node_fs_1.default.promises.writeFile(path, `${JSON.stringify(data, null, 2)}\n`);
36
+ };
37
+ exports.writeJson = writeJson;
22
38
  //# sourceMappingURL=fs.js.map
package/lib/cjs/fs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AAElB,MAAM,KAAK,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;IAC1D,IAAI,CAAC;QACJ,MAAM,iBAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1E,MAAM,iBAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACP,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;AACF,CAAC,CAAC;AAVW,QAAA,KAAK,SAUhB"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AAElB,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAoB,EAAE;IAClE,IAAI,CAAC;QACJ,MAAM,iBAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1E,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC,CAAC;AAVW,QAAA,UAAU,cAUrB;AAEK,MAAM,KAAK,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;IAC1D,IAAI,MAAM,IAAA,kBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO;IACR,CAAC;IACD,MAAM,iBAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC,CAAC;AALW,QAAA,KAAK,SAKhB;AAEK,MAAM,QAAQ,GAAG,KAAK,EAAK,IAAY,EAAc,EAAE;IAC7D,MAAM,IAAI,GAAG,MAAM,iBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,MAAM,GAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAJW,QAAA,QAAQ,YAInB;AAEK,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAE,IAAa,EAAiB,EAAE;IAC7E,MAAM,iBAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB"}
package/lib/cjs/http.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export declare class HttpError extends Error {
2
2
  readonly status: number;
3
- constructor(status: number, statusText: string);
3
+ readonly retryAfterMs?: number | undefined;
4
+ constructor(status: number, statusText: string, retryAfterMs?: number | undefined);
4
5
  }
5
6
  export interface FetchRetryOptions {
6
7
  maxRetries?: number;
@@ -9,4 +10,5 @@ export interface FetchRetryOptions {
9
10
  timeoutMs?: number;
10
11
  }
11
12
  export declare const fetchWithRetry: (url: string, init?: RequestInit, retryOptions?: FetchRetryOptions) => Promise<Response>;
13
+ export declare const fetchJson: <T>(url: string, init?: RequestInit, retryOptions?: FetchRetryOptions) => Promise<T>;
12
14
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAEA,qBAAa,SAAU,SAAQ,KAAK;aAElB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,UAAU,EAAE,MAAM;CAInB;AAED,MAAM,WAAW,iBAAiB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,GAC1B,KAAK,MAAM,EACX,OAAO,WAAW,EAClB,eAAe,iBAAiB,KAC9B,OAAO,CAAC,QAAQ,CA6BlB,CAAC"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAEA,qBAAa,SAAU,SAAQ,KAAK;aAElB,MAAM,EAAE,MAAM;aAEd,YAAY,CAAC,EAAE,MAAM;gBAFrB,MAAM,EAAE,MAAM,EAC9B,UAAU,EAAE,MAAM,EACF,YAAY,CAAC,EAAE,MAAM,YAAA;CAItC;AAED,MAAM,WAAW,iBAAiB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD,eAAO,MAAM,cAAc,GAC1B,KAAK,MAAM,EACX,OAAO,WAAW,EAClB,eAAe,iBAAiB,KAC9B,OAAO,CAAC,QAAQ,CAwBlB,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,CAAC,EAAE,KAAK,MAAM,EAAE,OAAO,WAAW,EAAE,eAAe,iBAAiB,KAAG,OAAO,CAAC,CAAC,CAI/G,CAAC"}
package/lib/cjs/http.js CHANGED
@@ -1,18 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fetchWithRetry = exports.HttpError = void 0;
4
- const sleep_js_1 = require("./sleep.js");
3
+ exports.fetchJson = exports.fetchWithRetry = exports.HttpError = void 0;
4
+ const retry_js_1 = require("./retry.js");
5
5
  class HttpError extends Error {
6
6
  status;
7
- constructor(status, statusText) {
7
+ retryAfterMs;
8
+ constructor(status, statusText, retryAfterMs) {
8
9
  super(`HTTP ${status} ${statusText}`);
9
10
  this.status = status;
11
+ this.retryAfterMs = retryAfterMs;
10
12
  }
11
13
  }
12
14
  exports.HttpError = HttpError;
15
+ const parseRetryAfterMs = (response) => {
16
+ const header = response.headers.get('retry-after');
17
+ if (header === null || header === '') {
18
+ return undefined;
19
+ }
20
+ return Number.parseInt(header, 10) * 1000;
21
+ };
13
22
  const fetchWithRetry = async (url, init, retryOptions) => {
14
23
  const { maxRetries = 3, baseDelayMs = 1000, jitterMs = 500, timeoutMs = 30000 } = retryOptions ?? {};
15
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
24
+ return (0, retry_js_1.retry)(async () => {
16
25
  const resp = await fetch(url, {
17
26
  signal: AbortSignal.timeout(timeoutMs),
18
27
  ...init,
@@ -20,18 +29,20 @@ const fetchWithRetry = async (url, init, retryOptions) => {
20
29
  if (resp.ok) {
21
30
  return resp;
22
31
  }
23
- const error = new HttpError(resp.status, resp.statusText);
24
- const isTransient = resp.status === 429 || resp.status >= 500;
25
- if (!isTransient || attempt === maxRetries) {
26
- throw error;
27
- }
28
- const retryAfterHeader = resp.headers.get('retry-after');
29
- const delay = retryAfterHeader !== null && retryAfterHeader !== ''
30
- ? Number.parseInt(retryAfterHeader, 10) * 1000
31
- : baseDelayMs * 2 ** attempt;
32
- await (0, sleep_js_1.sleep)(delay, jitterMs);
33
- }
34
- throw new Error('unreachable');
32
+ throw new HttpError(resp.status, resp.statusText, parseRetryAfterMs(resp));
33
+ }, {
34
+ maxAttempts: maxRetries + 1,
35
+ baseDelayMs,
36
+ jitterMs,
37
+ isRetryable: (error) => error instanceof HttpError && (error.status === 429 || error.status >= 500),
38
+ delayMs: (error) => (error instanceof HttpError ? error.retryAfterMs : undefined),
39
+ });
35
40
  };
36
41
  exports.fetchWithRetry = fetchWithRetry;
42
+ const fetchJson = async (url, init, retryOptions) => {
43
+ const resp = await (0, exports.fetchWithRetry)(url, init, retryOptions);
44
+ const parsed = await resp.json();
45
+ return parsed;
46
+ };
47
+ exports.fetchJson = fetchJson;
37
48
  //# sourceMappingURL=http.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":";;;AAAA,yCAAmC;AAEnC,MAAa,SAAU,SAAQ,KAAK;IAElB;IADjB,YACiB,MAAc,EAC9B,UAAkB;QAElB,KAAK,CAAC,QAAQ,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;QAHtB,WAAM,GAAN,MAAM,CAAQ;IAI/B,CAAC;CACD;AAPD,8BAOC;AASM,MAAM,cAAc,GAAG,KAAK,EAClC,GAAW,EACX,IAAkB,EAClB,YAAgC,EACZ,EAAE;IACtB,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,GAAG,GAAG,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,YAAY,IAAI,EAAE,CAAC;IAErG,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;YACtC,GAAG,IAAI;SACP,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;QAE9D,IAAI,CAAC,WAAW,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAC5C,MAAM,KAAK,CAAC;QACb,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,KAAK,GACV,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,KAAK,EAAE;YACnD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,GAAG,IAAI;YAC9C,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC;QAC/B,MAAM,IAAA,gBAAK,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AAChC,CAAC,CAAC;AAjCW,QAAA,cAAc,kBAiCzB"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":";;;AAAA,yCAAmC;AAEnC,MAAa,SAAU,SAAQ,KAAK;IAElB;IAEA;IAHjB,YACiB,MAAc,EAC9B,UAAkB,EACF,YAAqB;QAErC,KAAK,CAAC,QAAQ,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;QAJtB,WAAM,GAAN,MAAM,CAAQ;QAEd,iBAAY,GAAZ,YAAY,CAAS;IAGtC,CAAC;CACD;AARD,8BAQC;AASD,MAAM,iBAAiB,GAAG,CAAC,QAAkB,EAAsB,EAAE;IACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACnD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;AAC3C,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG,KAAK,EAClC,GAAW,EACX,IAAkB,EAClB,YAAgC,EACZ,EAAE;IACtB,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,GAAG,GAAG,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,YAAY,IAAI,EAAE,CAAC;IAErG,OAAO,IAAA,gBAAK,EACX,KAAK,IAAI,EAAE;QACV,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;YACtC,GAAG,IAAI;SACP,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,CAAC,EACD;QACC,WAAW,EAAE,UAAU,GAAG,CAAC;QAC3B,WAAW;QACX,QAAQ;QACR,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;QACnG,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;KACjF,CACD,CAAC;AACH,CAAC,CAAC;AA5BW,QAAA,cAAc,kBA4BzB;AAEK,MAAM,SAAS,GAAG,KAAK,EAAK,GAAW,EAAE,IAAkB,EAAE,YAAgC,EAAc,EAAE;IACnH,MAAM,IAAI,GAAG,MAAM,IAAA,sBAAc,EAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAM,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAJW,QAAA,SAAS,aAIpB"}
@@ -1,12 +1,24 @@
1
- export { formatDuration, toLocalISOString } from './date.js';
1
+ export { formatDate, formatDuration, toLocalISOString } from './date.js';
2
+ export { readEnv, requireEnv } from './env.js';
2
3
  export { serializeError } from './error.js';
4
+ export { formatBytes } from './format.js';
3
5
  export { getEnumValue } from './getEnumValue.js';
4
- export { HttpError, fetchWithRetry } from './http.js';
6
+ export { HttpError, fetchJson, fetchWithRetry } from './http.js';
5
7
  export type { FetchRetryOptions } from './http.js';
6
8
  export { isNonNullable } from './isNonNullable.js';
9
+ export { getArray, getBoolean, getNumber, getObject, getString, isJsonObject, parseJson } from './json.js';
10
+ export type { JsonObject, JsonValue } from './json.js';
7
11
  export { LogLevel, logger } from './logger.js';
8
- export { notifyMattermost, notifySlack } from './notify.js';
12
+ export type { LogEntry, LogSink } from './logger.js';
13
+ export { clamp } from './math.js';
14
+ export { notifyMattermost, notifySlack, pingHealthchecks } from './notify.js';
9
15
  export { Queue } from './queue.js';
16
+ export { retry } from './retry.js';
17
+ export type { RetryOptions } from './retry.js';
18
+ export { createSerialLimiter } from './serialLimiter.js';
19
+ export type { SerialLimiter } from './serialLimiter.js';
20
+ export { chunkLines, createSlackLogBatcher } from './slackLogBatcher.js';
21
+ export type { SlackLogBatcher, SlackLogBatcherOptions } from './slackLogBatcher.js';
10
22
  export { sleep } from './sleep.js';
11
23
  export { escapeHtml } from './string.js';
12
24
  export { throttle } from './throttle.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3G,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"}
package/lib/cjs/index.js CHANGED
@@ -1,26 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.throttle = exports.escapeHtml = exports.sleep = exports.Queue = exports.notifySlack = exports.notifyMattermost = exports.logger = exports.LogLevel = exports.isNonNullable = exports.fetchWithRetry = exports.HttpError = exports.getEnumValue = exports.serializeError = exports.toLocalISOString = exports.formatDuration = void 0;
3
+ exports.throttle = exports.escapeHtml = exports.sleep = exports.createSlackLogBatcher = exports.chunkLines = exports.createSerialLimiter = exports.retry = exports.Queue = exports.pingHealthchecks = exports.notifySlack = exports.notifyMattermost = exports.clamp = exports.logger = exports.LogLevel = exports.parseJson = exports.isJsonObject = exports.getString = exports.getObject = exports.getNumber = exports.getBoolean = exports.getArray = exports.isNonNullable = exports.fetchWithRetry = exports.fetchJson = exports.HttpError = exports.getEnumValue = exports.formatBytes = exports.serializeError = exports.requireEnv = exports.readEnv = exports.toLocalISOString = exports.formatDuration = exports.formatDate = void 0;
4
4
  var date_js_1 = require("./date.js");
5
+ Object.defineProperty(exports, "formatDate", { enumerable: true, get: function () { return date_js_1.formatDate; } });
5
6
  Object.defineProperty(exports, "formatDuration", { enumerable: true, get: function () { return date_js_1.formatDuration; } });
6
7
  Object.defineProperty(exports, "toLocalISOString", { enumerable: true, get: function () { return date_js_1.toLocalISOString; } });
8
+ var env_js_1 = require("./env.js");
9
+ Object.defineProperty(exports, "readEnv", { enumerable: true, get: function () { return env_js_1.readEnv; } });
10
+ Object.defineProperty(exports, "requireEnv", { enumerable: true, get: function () { return env_js_1.requireEnv; } });
7
11
  var error_js_1 = require("./error.js");
8
12
  Object.defineProperty(exports, "serializeError", { enumerable: true, get: function () { return error_js_1.serializeError; } });
13
+ var format_js_1 = require("./format.js");
14
+ Object.defineProperty(exports, "formatBytes", { enumerable: true, get: function () { return format_js_1.formatBytes; } });
9
15
  var getEnumValue_js_1 = require("./getEnumValue.js");
10
16
  Object.defineProperty(exports, "getEnumValue", { enumerable: true, get: function () { return getEnumValue_js_1.getEnumValue; } });
11
17
  var http_js_1 = require("./http.js");
12
18
  Object.defineProperty(exports, "HttpError", { enumerable: true, get: function () { return http_js_1.HttpError; } });
19
+ Object.defineProperty(exports, "fetchJson", { enumerable: true, get: function () { return http_js_1.fetchJson; } });
13
20
  Object.defineProperty(exports, "fetchWithRetry", { enumerable: true, get: function () { return http_js_1.fetchWithRetry; } });
14
21
  var isNonNullable_js_1 = require("./isNonNullable.js");
15
22
  Object.defineProperty(exports, "isNonNullable", { enumerable: true, get: function () { return isNonNullable_js_1.isNonNullable; } });
23
+ var json_js_1 = require("./json.js");
24
+ Object.defineProperty(exports, "getArray", { enumerable: true, get: function () { return json_js_1.getArray; } });
25
+ Object.defineProperty(exports, "getBoolean", { enumerable: true, get: function () { return json_js_1.getBoolean; } });
26
+ Object.defineProperty(exports, "getNumber", { enumerable: true, get: function () { return json_js_1.getNumber; } });
27
+ Object.defineProperty(exports, "getObject", { enumerable: true, get: function () { return json_js_1.getObject; } });
28
+ Object.defineProperty(exports, "getString", { enumerable: true, get: function () { return json_js_1.getString; } });
29
+ Object.defineProperty(exports, "isJsonObject", { enumerable: true, get: function () { return json_js_1.isJsonObject; } });
30
+ Object.defineProperty(exports, "parseJson", { enumerable: true, get: function () { return json_js_1.parseJson; } });
16
31
  var logger_js_1 = require("./logger.js");
17
32
  Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return logger_js_1.LogLevel; } });
18
33
  Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_js_1.logger; } });
34
+ var math_js_1 = require("./math.js");
35
+ Object.defineProperty(exports, "clamp", { enumerable: true, get: function () { return math_js_1.clamp; } });
19
36
  var notify_js_1 = require("./notify.js");
20
37
  Object.defineProperty(exports, "notifyMattermost", { enumerable: true, get: function () { return notify_js_1.notifyMattermost; } });
21
38
  Object.defineProperty(exports, "notifySlack", { enumerable: true, get: function () { return notify_js_1.notifySlack; } });
39
+ Object.defineProperty(exports, "pingHealthchecks", { enumerable: true, get: function () { return notify_js_1.pingHealthchecks; } });
22
40
  var queue_js_1 = require("./queue.js");
23
41
  Object.defineProperty(exports, "Queue", { enumerable: true, get: function () { return queue_js_1.Queue; } });
42
+ var retry_js_1 = require("./retry.js");
43
+ Object.defineProperty(exports, "retry", { enumerable: true, get: function () { return retry_js_1.retry; } });
44
+ var serialLimiter_js_1 = require("./serialLimiter.js");
45
+ Object.defineProperty(exports, "createSerialLimiter", { enumerable: true, get: function () { return serialLimiter_js_1.createSerialLimiter; } });
46
+ var slackLogBatcher_js_1 = require("./slackLogBatcher.js");
47
+ Object.defineProperty(exports, "chunkLines", { enumerable: true, get: function () { return slackLogBatcher_js_1.chunkLines; } });
48
+ Object.defineProperty(exports, "createSlackLogBatcher", { enumerable: true, get: function () { return slackLogBatcher_js_1.createSlackLogBatcher; } });
24
49
  var sleep_js_1 = require("./sleep.js");
25
50
  Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return sleep_js_1.sleep; } });
26
51
  var string_js_1 = require("./string.js");