@photostructure/fs-metadata 0.1.2 → 0.1.4

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 (261) hide show
  1. package/binding.gyp +13 -0
  2. package/dist/cjs/array.cjs +57 -0
  3. package/dist/cjs/array.js.map +1 -0
  4. package/dist/cjs/async.cjs +116 -0
  5. package/dist/cjs/async.js.map +1 -0
  6. package/dist/cjs/cache.cjs +28 -0
  7. package/dist/cjs/cache.js.map +1 -0
  8. package/dist/cjs/debuglog.cjs +35 -0
  9. package/dist/cjs/debuglog.js.map +1 -0
  10. package/dist/cjs/defer.cjs +26 -0
  11. package/dist/cjs/defer.js.map +1 -0
  12. package/dist/cjs/error.cjs +63 -0
  13. package/dist/cjs/error.js.map +1 -0
  14. package/dist/cjs/exports.cjs +14 -0
  15. package/dist/cjs/exports.js.map +1 -0
  16. package/dist/cjs/fs.cjs +81 -0
  17. package/dist/cjs/fs.js.map +1 -0
  18. package/dist/cjs/glob.cjs +117 -0
  19. package/dist/cjs/glob.js.map +1 -0
  20. package/dist/cjs/hidden.cjs +163 -0
  21. package/dist/cjs/hidden.js.map +1 -0
  22. package/dist/cjs/index.cjs +23 -0
  23. package/dist/cjs/index.cjs.map +1 -0
  24. package/dist/cjs/linux/dev_disk.cjs +66 -0
  25. package/dist/cjs/linux/dev_disk.js.map +1 -0
  26. package/dist/cjs/linux/mount_points.cjs +81 -0
  27. package/dist/cjs/linux/mount_points.js.map +1 -0
  28. package/dist/cjs/linux/mtab.cjs +88 -0
  29. package/dist/cjs/linux/mtab.js.map +1 -0
  30. package/dist/cjs/mount_point.cjs +67 -0
  31. package/dist/cjs/mount_point.js.map +1 -0
  32. package/dist/cjs/number.cjs +41 -0
  33. package/dist/cjs/number.js.map +1 -0
  34. package/dist/cjs/object.cjs +59 -0
  35. package/dist/cjs/object.js.map +1 -0
  36. package/dist/cjs/options.cjs +115 -0
  37. package/dist/cjs/options.js.map +1 -0
  38. package/dist/cjs/path.cjs +50 -0
  39. package/dist/cjs/path.js.map +1 -0
  40. package/dist/cjs/platform.cjs +10 -0
  41. package/dist/cjs/platform.js.map +1 -0
  42. package/dist/cjs/random.cjs +43 -0
  43. package/dist/cjs/random.js.map +1 -0
  44. package/dist/cjs/remote_info.cjs +123 -0
  45. package/dist/cjs/remote_info.js.map +1 -0
  46. package/dist/cjs/setup.cjs +47 -0
  47. package/dist/cjs/setup.js.map +1 -0
  48. package/dist/cjs/string.cjs +89 -0
  49. package/dist/cjs/string.js.map +1 -0
  50. package/dist/cjs/string_enum.cjs +27 -0
  51. package/dist/cjs/string_enum.js.map +1 -0
  52. package/dist/cjs/system_volume.cjs +44 -0
  53. package/dist/cjs/system_volume.js.map +1 -0
  54. package/dist/cjs/types/native_bindings.cjs +4 -0
  55. package/dist/cjs/types/native_bindings.js.map +1 -0
  56. package/dist/cjs/unc.cjs +52 -0
  57. package/dist/cjs/unc.js.map +1 -0
  58. package/dist/cjs/units.cjs +35 -0
  59. package/dist/cjs/units.js.map +1 -0
  60. package/dist/cjs/uuid.cjs +25 -0
  61. package/dist/cjs/uuid.js.map +1 -0
  62. package/dist/cjs/volume_health_status.cjs +50 -0
  63. package/dist/cjs/volume_health_status.js.map +1 -0
  64. package/dist/cjs/volume_metadata.cjs +169 -0
  65. package/dist/cjs/volume_metadata.js.map +1 -0
  66. package/dist/esm/array.js +50 -0
  67. package/dist/esm/array.js.map +1 -0
  68. package/dist/esm/async.js +109 -0
  69. package/dist/esm/async.js.map +1 -0
  70. package/dist/esm/cache.js +25 -0
  71. package/dist/esm/cache.js.map +1 -0
  72. package/dist/esm/debuglog.js +30 -0
  73. package/dist/esm/debuglog.js.map +1 -0
  74. package/dist/esm/defer.js +23 -0
  75. package/dist/esm/defer.js.map +1 -0
  76. package/dist/esm/error.js +58 -0
  77. package/dist/esm/error.js.map +1 -0
  78. package/dist/esm/exports.js +4 -0
  79. package/dist/esm/exports.js.map +1 -0
  80. package/dist/esm/fs.js +73 -0
  81. package/dist/esm/fs.js.map +1 -0
  82. package/dist/esm/glob.js +113 -0
  83. package/dist/esm/glob.js.map +1 -0
  84. package/dist/esm/hidden.js +155 -0
  85. package/dist/esm/hidden.js.map +1 -0
  86. package/dist/esm/index.js +7 -0
  87. package/dist/esm/index.js.map +1 -0
  88. package/dist/esm/linux/dev_disk.js +61 -0
  89. package/dist/esm/linux/dev_disk.js.map +1 -0
  90. package/dist/esm/linux/mount_points.js +77 -0
  91. package/dist/esm/linux/mount_points.js.map +1 -0
  92. package/dist/esm/linux/mtab.js +82 -0
  93. package/dist/esm/linux/mtab.js.map +1 -0
  94. package/dist/esm/mount_point.js +63 -0
  95. package/dist/esm/mount_point.js.map +1 -0
  96. package/dist/esm/number.js +32 -0
  97. package/dist/esm/number.js.map +1 -0
  98. package/dist/esm/object.js +52 -0
  99. package/dist/esm/object.js.map +1 -0
  100. package/dist/esm/options.js +111 -0
  101. package/dist/esm/options.js.map +1 -0
  102. package/dist/esm/path.js +44 -0
  103. package/dist/esm/path.js.map +1 -0
  104. package/dist/esm/platform.js +7 -0
  105. package/dist/esm/platform.js.map +1 -0
  106. package/dist/esm/random.js +37 -0
  107. package/dist/esm/random.js.map +1 -0
  108. package/dist/esm/remote_info.js +116 -0
  109. package/dist/esm/remote_info.js.map +1 -0
  110. package/dist/esm/setup.js +41 -0
  111. package/dist/esm/setup.js.map +1 -0
  112. package/dist/esm/string.js +78 -0
  113. package/dist/esm/string.js.map +1 -0
  114. package/dist/esm/string_enum.js +24 -0
  115. package/dist/esm/string_enum.js.map +1 -0
  116. package/dist/esm/system_volume.js +40 -0
  117. package/dist/esm/system_volume.js.map +1 -0
  118. package/dist/esm/types/native_bindings.js +3 -0
  119. package/dist/esm/types/native_bindings.js.map +1 -0
  120. package/dist/esm/unc.js +49 -0
  121. package/dist/esm/unc.js.map +1 -0
  122. package/dist/esm/units.js +31 -0
  123. package/dist/esm/units.js.map +1 -0
  124. package/dist/esm/uuid.js +22 -0
  125. package/dist/esm/uuid.js.map +1 -0
  126. package/dist/esm/volume_health_status.js +46 -0
  127. package/dist/esm/volume_health_status.js.map +1 -0
  128. package/dist/esm/volume_metadata.js +164 -0
  129. package/dist/esm/volume_metadata.js.map +1 -0
  130. package/dist/types/array.d.ts +31 -0
  131. package/dist/types/array.d.ts.map +1 -0
  132. package/dist/types/array.js +50 -0
  133. package/dist/types/array.js.map +1 -0
  134. package/dist/types/async.d.ts +43 -0
  135. package/dist/types/async.d.ts.map +1 -0
  136. package/dist/types/async.js +109 -0
  137. package/dist/types/async.js.map +1 -0
  138. package/dist/types/cache.d.ts +5 -0
  139. package/dist/types/cache.d.ts.map +1 -0
  140. package/dist/types/cache.js +25 -0
  141. package/dist/types/cache.js.map +1 -0
  142. package/dist/types/debuglog.d.ts +9 -0
  143. package/dist/types/debuglog.d.ts.map +1 -0
  144. package/dist/types/debuglog.js +30 -0
  145. package/dist/types/debuglog.js.map +1 -0
  146. package/dist/types/defer.d.ts +12 -0
  147. package/dist/types/defer.d.ts.map +1 -0
  148. package/dist/types/defer.js +23 -0
  149. package/dist/types/defer.js.map +1 -0
  150. package/dist/types/error.d.ts +18 -0
  151. package/dist/types/error.d.ts.map +1 -0
  152. package/dist/types/error.js +58 -0
  153. package/dist/types/error.js.map +1 -0
  154. package/dist/types/exports.d.ts +99 -0
  155. package/dist/types/exports.d.ts.map +1 -0
  156. package/dist/types/exports.js +4 -0
  157. package/dist/types/exports.js.map +1 -0
  158. package/dist/types/fs.d.ts +23 -0
  159. package/dist/types/fs.d.ts.map +1 -0
  160. package/dist/types/fs.js +73 -0
  161. package/dist/types/fs.js.map +1 -0
  162. package/dist/types/glob.d.ts +18 -0
  163. package/dist/types/glob.d.ts.map +1 -0
  164. package/dist/types/glob.js +113 -0
  165. package/dist/types/glob.js.map +1 -0
  166. package/dist/types/hidden.d.ts +67 -0
  167. package/dist/types/hidden.d.ts.map +1 -0
  168. package/dist/types/hidden.js +155 -0
  169. package/dist/types/hidden.js.map +1 -0
  170. package/dist/types/index.d.ts +3 -0
  171. package/dist/types/index.d.ts.map +1 -0
  172. package/dist/types/index.js +7 -0
  173. package/dist/types/index.js.map +1 -0
  174. package/dist/types/linux/dev_disk.d.ts +14 -0
  175. package/dist/types/linux/dev_disk.d.ts.map +1 -0
  176. package/dist/types/linux/dev_disk.js +61 -0
  177. package/dist/types/linux/dev_disk.js.map +1 -0
  178. package/dist/types/linux/mount_points.d.ts +7 -0
  179. package/dist/types/linux/mount_points.d.ts.map +1 -0
  180. package/dist/types/linux/mount_points.js +77 -0
  181. package/dist/types/linux/mount_points.js.map +1 -0
  182. package/dist/types/linux/mtab.d.ts +48 -0
  183. package/dist/types/linux/mtab.d.ts.map +1 -0
  184. package/dist/types/linux/mtab.js +82 -0
  185. package/dist/types/linux/mtab.js.map +1 -0
  186. package/dist/types/mount_point.d.ts +56 -0
  187. package/dist/types/mount_point.d.ts.map +1 -0
  188. package/dist/types/mount_point.js +63 -0
  189. package/dist/types/mount_point.js.map +1 -0
  190. package/dist/types/number.d.ts +8 -0
  191. package/dist/types/number.d.ts.map +1 -0
  192. package/dist/types/number.js +32 -0
  193. package/dist/types/number.js.map +1 -0
  194. package/dist/types/object.d.ts +18 -0
  195. package/dist/types/object.d.ts.map +1 -0
  196. package/dist/types/object.js +52 -0
  197. package/dist/types/object.js.map +1 -0
  198. package/dist/types/options.d.ts +80 -0
  199. package/dist/types/options.d.ts.map +1 -0
  200. package/dist/types/options.js +111 -0
  201. package/dist/types/options.js.map +1 -0
  202. package/dist/types/path.d.ts +18 -0
  203. package/dist/types/path.d.ts.map +1 -0
  204. package/dist/types/path.js +44 -0
  205. package/dist/types/path.js.map +1 -0
  206. package/dist/types/platform.d.ts +4 -0
  207. package/dist/types/platform.d.ts.map +1 -0
  208. package/dist/types/platform.js +7 -0
  209. package/dist/types/platform.js.map +1 -0
  210. package/dist/types/random.d.ts +13 -0
  211. package/dist/types/random.d.ts.map +1 -0
  212. package/dist/types/random.js +37 -0
  213. package/dist/types/random.js.map +1 -0
  214. package/dist/types/remote_info.d.ts +39 -0
  215. package/dist/types/remote_info.d.ts.map +1 -0
  216. package/dist/types/remote_info.js +116 -0
  217. package/dist/types/remote_info.js.map +1 -0
  218. package/dist/types/setup.d.ts +3 -0
  219. package/dist/types/setup.d.ts.map +1 -0
  220. package/dist/types/setup.js +41 -0
  221. package/dist/types/setup.js.map +1 -0
  222. package/dist/types/string.d.ts +38 -0
  223. package/dist/types/string.d.ts.map +1 -0
  224. package/dist/types/string.js +78 -0
  225. package/dist/types/string.js.map +1 -0
  226. package/dist/types/string_enum.d.ts +20 -0
  227. package/dist/types/string_enum.d.ts.map +1 -0
  228. package/dist/types/string_enum.js +24 -0
  229. package/dist/types/string_enum.js.map +1 -0
  230. package/dist/types/system_volume.d.ts +15 -0
  231. package/dist/types/system_volume.d.ts.map +1 -0
  232. package/dist/types/system_volume.js +40 -0
  233. package/dist/types/system_volume.js.map +1 -0
  234. package/dist/types/types/native_bindings.d.ts +52 -0
  235. package/dist/types/types/native_bindings.d.ts.map +1 -0
  236. package/dist/types/types/native_bindings.js +3 -0
  237. package/dist/types/types/native_bindings.js.map +1 -0
  238. package/dist/types/unc.d.ts +12 -0
  239. package/dist/types/unc.d.ts.map +1 -0
  240. package/dist/types/unc.js +49 -0
  241. package/dist/types/unc.js.map +1 -0
  242. package/dist/types/units.d.ts +17 -0
  243. package/dist/types/units.d.ts.map +1 -0
  244. package/dist/types/units.js +31 -0
  245. package/dist/types/units.js.map +1 -0
  246. package/dist/types/uuid.d.ts +17 -0
  247. package/dist/types/uuid.d.ts.map +1 -0
  248. package/dist/types/uuid.js +22 -0
  249. package/dist/types/uuid.js.map +1 -0
  250. package/dist/types/volume_health_status.d.ts +25 -0
  251. package/dist/types/volume_health_status.d.ts.map +1 -0
  252. package/dist/types/volume_health_status.js +46 -0
  253. package/dist/types/volume_health_status.js.map +1 -0
  254. package/dist/types/volume_metadata.d.ts +55 -0
  255. package/dist/types/volume_metadata.d.ts.map +1 -0
  256. package/dist/types/volume_metadata.js +164 -0
  257. package/dist/types/volume_metadata.js.map +1 -0
  258. package/package.json +11 -12
  259. package/prebuilds/darwin-arm64/@photostructure+fs-metadata.glibc.node +0 -0
  260. package/prebuilds/win32-x64/@photostructure+fs-metadata.glibc.node +0 -0
  261. package/scripts/fix-cjs.mjs +35 -0
package/binding.gyp CHANGED
@@ -72,8 +72,21 @@
72
72
  ],
73
73
  "msvs_settings": {
74
74
  "VCCLCompilerTool": {
75
+ "AdditionalOptions": [
76
+ "/Qspectre",
77
+ "/guard:cf",
78
+ "/ZH:SHA_256",
79
+ "/sdl"
80
+ ],
75
81
  "ExceptionHandling": 1,
76
82
  "RuntimeTypeInfo": "true"
83
+ },
84
+ "VCLinkerTool": {
85
+ "AdditionalOptions": [
86
+ "/guard:cf",
87
+ "/DYNAMICBASE",
88
+ "/CETCOMPAT"
89
+ ]
77
90
  }
78
91
  }
79
92
  }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ // src/array.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.asyncFilter = asyncFilter;
5
+ exports.uniq = uniq;
6
+ exports.uniqBy = uniqBy;
7
+ exports.times = times;
8
+ exports.compact = compact;
9
+ /**
10
+ * @return a new array whose elements return true based on the given `predicate`
11
+ * function.
12
+ */
13
+ async function asyncFilter(arr, predicate) {
14
+ const results = await Promise.all(arr.map(async (ea) => predicate(ea)));
15
+ return arr.filter((_item, index) => results[index]);
16
+ }
17
+ /**
18
+ * Remove duplicate elements from an array.
19
+ *
20
+ * - Primitive values are compared using strict equality.
21
+ * - Objects and arrays are compared by reference.
22
+ *
23
+ * @return A new array with duplicate elements removed
24
+ */
25
+ function uniq(arr) {
26
+ return Array.from(new Set(arr));
27
+ }
28
+ /**
29
+ * Remove duplicate elements from an array based on a key function.
30
+ * @param keyFn A function that returns a key for each element. Elements that
31
+ * the key function returns nullish will be removed from the returned array.
32
+ * @return a new array omitting duplicate elements based on a key function.
33
+ */
34
+ function uniqBy(arr, keyFn) {
35
+ const seen = new Set();
36
+ return arr.filter((item) => {
37
+ const key = keyFn(item);
38
+ if (key == null || seen.has(key))
39
+ return false;
40
+ seen.add(key);
41
+ return true;
42
+ });
43
+ }
44
+ /**
45
+ * @return an array of specified length, with each element created by calling
46
+ * the provided function.
47
+ */
48
+ function times(length, fn) {
49
+ return Array.from({ length }, (_, i) => fn(i));
50
+ }
51
+ /**
52
+ * @return a new array with elements that are not `null` or `undefined`.
53
+ */
54
+ function compact(arr) {
55
+ return arr == null ? [] : arr.filter((ea) => ea != null);
56
+ }
57
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/array.ts"],"names":[],"mappings":";AAAA,eAAe;;AAMf,kCAMC;AAUD,oBAEC;AAQD,wBAQC;AAMD,sBAEC;AAKD,0BAEC;AArDD;;;GAGG;AACI,KAAK,UAAU,WAAW,CAC/B,GAAQ,EACR,SAAkD;IAElD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,IAAI,CAAI,GAAQ;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,MAAM,CAAO,GAAQ,EAAE,KAAiC;IACtE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAK,CAAC;IAC1B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAI,MAAc,EAAE,EAAwB;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAI,GAAyC;IAClE,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAW,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeoutError = void 0;
4
+ exports.withTimeout = withTimeout;
5
+ exports.delay = delay;
6
+ exports.mapConcurrent = mapConcurrent;
7
+ const node_os_1 = require("node:os");
8
+ const node_process_1 = require("node:process");
9
+ const number_js_1 = require("./number.cjs");
10
+ const string_js_1 = require("./string.cjs");
11
+ /**
12
+ * An error that is thrown when a promise does not resolve within the specified
13
+ * time.
14
+ */
15
+ class TimeoutError extends Error {
16
+ constructor(message, captureStackTrace = true) {
17
+ super(message);
18
+ this.name = "TimeoutError";
19
+ // Capture the stack trace up to the calling site
20
+ if (captureStackTrace && Error.captureStackTrace) {
21
+ Error.captureStackTrace(this, this.constructor);
22
+ }
23
+ }
24
+ }
25
+ exports.TimeoutError = TimeoutError;
26
+ /**
27
+ * Rejects the promise with a TimeoutError if it does not resolve within the
28
+ * specified time.
29
+ *
30
+ * @param promise The promise to wrap.
31
+ * @param timeoutMs The timeout in milliseconds. Timeouts are disabled if this is 0.
32
+ * @returns A promise that resolves when the input promise resolves, or rejects
33
+ * with a TimeoutError if the input promise does not resolve within the
34
+ * specified time.
35
+ * @throws {TimeoutError} if the input promise does not resolve within the
36
+ * specified time.
37
+ * @throws {TypeError} if timeoutMs is not a number that is greater than 0.
38
+ */
39
+ async function withTimeout(opts) {
40
+ const desc = (0, string_js_1.isBlank)(opts.desc) ? "thenOrTimeout()" : opts.desc;
41
+ if (!(0, number_js_1.isNumber)(opts.timeoutMs)) {
42
+ throw new TypeError(desc +
43
+ ": Expected timeoutMs to be numeric, but got " +
44
+ JSON.stringify(opts.timeoutMs));
45
+ }
46
+ const timeoutMs = Math.floor(opts.timeoutMs);
47
+ if (timeoutMs < 0) {
48
+ throw new TypeError(desc + ": Expected timeoutMs to be > 0, but got " + timeoutMs);
49
+ }
50
+ if (timeoutMs === 0) {
51
+ return opts.promise;
52
+ }
53
+ // Create error here to captured the caller's stack trace. If we create it in
54
+ // the timeout callback, the stack trace will be truncated to this function.
55
+ const timeoutError = new TimeoutError(`${desc}: timeout after ${timeoutMs}ms`);
56
+ if (node_process_1.env["NODE_ENV"] === "test" && timeoutMs === 1) {
57
+ timeoutError.message += "(timeout test)";
58
+ opts.promise.catch(() => { }); // < avoid unhandled rejection warnings
59
+ throw timeoutError;
60
+ }
61
+ let timeoutId;
62
+ opts.promise
63
+ .catch(() => { }) // < avoid unhandled rejection warnings
64
+ .finally(() => {
65
+ if (timeoutId != null) {
66
+ clearTimeout(timeoutId);
67
+ timeoutId = undefined;
68
+ }
69
+ });
70
+ const timeoutPromise = new Promise((_, reject) => {
71
+ timeoutId = setTimeout(() => {
72
+ if (timeoutId != null) {
73
+ timeoutError.message += "(timeout callback)";
74
+ reject(timeoutError);
75
+ }
76
+ timeoutId = undefined;
77
+ }, timeoutMs);
78
+ });
79
+ return Promise.race([opts.promise, timeoutPromise]);
80
+ }
81
+ /**
82
+ * Delay for the specified number of milliseconds.
83
+ *
84
+ * @param ms The number of milliseconds to delay
85
+ * @param t Optional value to resolve with after delay
86
+ * @returns Promise that resolves with the provided value (or void if none provided)
87
+ */
88
+ async function delay(ms, t) {
89
+ return new Promise((resolve) => setTimeout(() => resolve(t), ms));
90
+ }
91
+ /**
92
+ * Apply `fn` to every item in `items` with a maximum concurrency of
93
+ * `maxConcurrency`.
94
+ */
95
+ async function mapConcurrent({ items, fn, maxConcurrency = (0, node_os_1.availableParallelism)(), }) {
96
+ // Validate maxConcurrency
97
+ if (!(0, number_js_1.gt0)(maxConcurrency)) {
98
+ throw new Error(`maxConcurrency must be a positive integer, got: ${maxConcurrency}`);
99
+ }
100
+ if (typeof fn !== "function") {
101
+ throw new TypeError(`fn must be a function, got: ${typeof fn}`);
102
+ }
103
+ const results = [];
104
+ const executing = new Set();
105
+ for (const [index, item] of items.entries()) {
106
+ // Create a wrapped promise that handles cleanup
107
+ while (executing.size >= maxConcurrency) {
108
+ await Promise.race(executing);
109
+ }
110
+ const p = (results[index] = fn(item).catch((error) => error));
111
+ executing.add(p);
112
+ p.finally(() => executing.delete(p));
113
+ }
114
+ return Promise.all(results);
115
+ }
116
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/async.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ttlCache = ttlCache;
4
+ /**
5
+ * Cache the result of a function for a given time-to-live (TTL).
6
+ */
7
+ function ttlCache(fn, ttl) {
8
+ if (ttl <= 0)
9
+ return fn;
10
+ const cache = new Map();
11
+ return (...args) => {
12
+ const key = JSON.stringify(args);
13
+ const entry = cache.get(key);
14
+ if (entry) {
15
+ return entry.r;
16
+ }
17
+ const result = fn(...args);
18
+ const timeoutId = setTimeout(() => {
19
+ const currentEntry = cache.get(key);
20
+ if (currentEntry?.t === timeoutId) {
21
+ cache.delete(key);
22
+ }
23
+ }, ttl);
24
+ cache.set(key, { r: result, t: timeoutId });
25
+ return result;
26
+ };
27
+ }
28
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":";;AAQA,4BA6BC;AAhCD;;GAEG;AACH,SAAgB,QAAQ,CACtB,EAAwB,EACxB,GAAW;IAEX,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE/C,OAAO,CAAC,GAAG,IAAU,EAAK,EAAE;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAE3B,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,YAAY,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;gBAClC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDebugEnabled = exports.debugLogContext = void 0;
4
+ exports.debug = debug;
5
+ exports.resetDebugLog = resetDebugLog;
6
+ const node_util_1 = require("node:util");
7
+ const defer_js_1 = require("./defer.cjs");
8
+ // allow tests to reset the debug log context
9
+ exports.debugLogContext = (0, defer_js_1.defer)(() => {
10
+ for (const ea of ["fs-metadata", "fs-meta"]) {
11
+ if ((0, node_util_1.debuglog)(ea).enabled) {
12
+ return ea;
13
+ }
14
+ if ((0, node_util_1.debuglog)(ea.toUpperCase()).enabled) {
15
+ return ea;
16
+ }
17
+ }
18
+ return "photostructure:fs-metadata";
19
+ });
20
+ exports.isDebugEnabled = (0, defer_js_1.defer)(() => {
21
+ return (0, node_util_1.debuglog)((0, exports.debugLogContext)()).enabled ?? false;
22
+ });
23
+ function debug(msg, ...args) {
24
+ if (!(0, exports.isDebugEnabled)())
25
+ return;
26
+ const now = new Date();
27
+ // Format: [HH:MM:SS.mmm] prefix: message
28
+ const timestamp = `[${now.getHours().toString().padStart(2, "0")}:${now.getMinutes().toString().padStart(2, "0")}:${now.getSeconds().toString().padStart(2, "0")}.${now.getMilliseconds().toString().padStart(3, "0")}] ${(0, exports.debugLogContext)()} `;
29
+ process.stderr.write(timestamp + (0, node_util_1.format)(msg, ...args) + "\n");
30
+ }
31
+ function resetDebugLog() {
32
+ exports.debugLogContext.reset();
33
+ exports.isDebugEnabled.reset();
34
+ }
35
+ //# sourceMappingURL=debuglog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debuglog.js","sourceRoot":"","sources":["../../src/debuglog.ts"],"names":[],"mappings":";;;AAqBA,sBAQC;AAED,sCAGC;AAlCD,yCAA6C;AAC7C,yCAAmC;AAEnC,6CAA6C;AAEhC,QAAA,eAAe,GAAG,IAAA,gBAAK,EAAC,GAAG,EAAE;IACxC,KAAK,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;QAC5C,IAAI,IAAA,oBAAQ,EAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,IAAA,oBAAQ,EAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,4BAA4B,CAAC;AACtC,CAAC,CAAC,CAAC;AAEU,QAAA,cAAc,GAAG,IAAA,gBAAK,EAAC,GAAG,EAAE;IACvC,OAAO,IAAA,oBAAQ,EAAC,IAAA,uBAAe,GAAE,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,SAAgB,KAAK,CAAC,GAAW,EAAE,GAAG,IAAe;IACnD,IAAI,CAAC,IAAA,sBAAc,GAAE;QAAE,OAAO;IAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,yCAAyC;IACzC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAA,uBAAe,GAAE,GAAG,CAAC;IAE/O,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,IAAA,kBAAM,EAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,aAAa;IAC3B,uBAAe,CAAC,KAAK,EAAE,CAAC;IACxB,sBAAc,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ // src/defer.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.defer = defer;
5
+ /**
6
+ * Creates a deferred value that is computed once on first access and cached for
7
+ * subsequent accesses.
8
+ * @param thunk A function that takes no arguments and returns a value
9
+ * @returns A function that returns the computed value
10
+ */
11
+ function defer(thunk) {
12
+ let computed = false;
13
+ let value;
14
+ const fn = () => {
15
+ if (!computed) {
16
+ computed = true;
17
+ value = thunk();
18
+ }
19
+ return value;
20
+ };
21
+ fn.reset = () => {
22
+ computed = false;
23
+ };
24
+ return fn;
25
+ }
26
+ //# sourceMappingURL=defer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defer.js","sourceRoot":"","sources":["../../src/defer.ts"],"names":[],"mappings":";AAAA,eAAe;;AAYf,sBAiBC;AAvBD;;;;;GAKG;AACH,SAAgB,KAAK,CAAI,KAAc;IACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,KAAQ,CAAC;IAEb,MAAM,EAAE,GAAG,GAAG,EAAE;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,GAAG,KAAK,EAAE,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,EAAE,CAAC,KAAK,GAAG,GAAG,EAAE;QACd,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ // src/error.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.WrappedError = void 0;
5
+ exports.toError = toError;
6
+ const number_js_1 = require("./number.cjs");
7
+ const object_js_1 = require("./object.cjs");
8
+ const string_js_1 = require("./string.cjs");
9
+ function toMessage(context, cause) {
10
+ const causeStr = cause instanceof Error
11
+ ? cause.message
12
+ : typeof cause === "string"
13
+ ? cause
14
+ : cause
15
+ ? JSON.stringify(cause)
16
+ : "";
17
+ return context + ((0, string_js_1.isBlank)(causeStr) ? "" : ": " + causeStr);
18
+ }
19
+ class WrappedError extends Error {
20
+ errno;
21
+ code;
22
+ syscall;
23
+ path;
24
+ constructor(context, options) {
25
+ super(toMessage(context, options?.cause));
26
+ const cause = (0, object_js_1.map)(options?.cause, toError);
27
+ const opts = { ...(0, object_js_1.compactValues)(cause), ...(0, object_js_1.compactValues)(options) };
28
+ if ((0, string_js_1.isNotBlank)(options?.name)) {
29
+ this.name = options.name;
30
+ }
31
+ if (cause != null) {
32
+ this.cause = cause;
33
+ if (cause instanceof Error) {
34
+ this.stack = `${this.stack}\nCaused by: ${cause.stack}`;
35
+ }
36
+ }
37
+ if ((0, number_js_1.isNumber)(opts.errno)) {
38
+ this.errno = opts.errno;
39
+ }
40
+ if ((0, string_js_1.isNotBlank)(opts.code)) {
41
+ this.code = opts.code;
42
+ }
43
+ if ((0, string_js_1.isNotBlank)(opts.syscall)) {
44
+ this.syscall = opts.syscall;
45
+ }
46
+ if ((0, string_js_1.isNotBlank)(options?.path)) {
47
+ this.path = options.path;
48
+ }
49
+ }
50
+ get details() {
51
+ return (0, object_js_1.compactValues)((0, object_js_1.omit)(this, "name", "message", "cause"));
52
+ }
53
+ toString() {
54
+ const details = this.details;
55
+ const detailsStr = Object.keys(details).length === 0 ? "" : " " + JSON.stringify(details);
56
+ return `${super.toString()}${detailsStr}`;
57
+ }
58
+ }
59
+ exports.WrappedError = WrappedError;
60
+ function toError(cause) {
61
+ return cause instanceof Error ? cause : new Error(String(cause));
62
+ }
63
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VolumeHealthStatuses = exports.TimeoutMsDefault = exports.SystemPathPatternsDefault = exports.SystemFsTypesDefault = exports.optionsWithDefaults = exports.OptionsDefault = exports.LinuxMountTablePathsDefault = exports.IncludeSystemVolumesDefault = void 0;
4
+ const options_js_1 = require("./options.cjs");
5
+ Object.defineProperty(exports, "IncludeSystemVolumesDefault", { enumerable: true, get: function () { return options_js_1.IncludeSystemVolumesDefault; } });
6
+ Object.defineProperty(exports, "LinuxMountTablePathsDefault", { enumerable: true, get: function () { return options_js_1.LinuxMountTablePathsDefault; } });
7
+ Object.defineProperty(exports, "OptionsDefault", { enumerable: true, get: function () { return options_js_1.OptionsDefault; } });
8
+ Object.defineProperty(exports, "optionsWithDefaults", { enumerable: true, get: function () { return options_js_1.optionsWithDefaults; } });
9
+ Object.defineProperty(exports, "SystemFsTypesDefault", { enumerable: true, get: function () { return options_js_1.SystemFsTypesDefault; } });
10
+ Object.defineProperty(exports, "SystemPathPatternsDefault", { enumerable: true, get: function () { return options_js_1.SystemPathPatternsDefault; } });
11
+ Object.defineProperty(exports, "TimeoutMsDefault", { enumerable: true, get: function () { return options_js_1.TimeoutMsDefault; } });
12
+ const volume_health_status_js_1 = require("./volume_health_status.cjs");
13
+ Object.defineProperty(exports, "VolumeHealthStatuses", { enumerable: true, get: function () { return volume_health_status_js_1.VolumeHealthStatuses; } });
14
+ //# sourceMappingURL=exports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":";;;AAGA,6CAQsB;AAqIpB,4GA5IA,wCAA2B,OA4IA;AAC3B,4GA5IA,wCAA2B,OA4IA;AAC3B,+FA5IA,2BAAc,OA4IA;AACd,oGA5IA,gCAAmB,OA4IA;AACnB,qGA5IA,iCAAoB,OA4IA;AACpB,0GA5IA,sCAAyB,OA4IA;AACzB,iGA5IA,6BAAgB,OA4IA;AAnIlB,uEAAiE;AAoI/D,qGApIO,8CAAoB,OAoIP"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ // src/fs.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.statAsync = statAsync;
5
+ exports.canStatAsync = canStatAsync;
6
+ exports.isDirectory = isDirectory;
7
+ exports.findAncestorDir = findAncestorDir;
8
+ exports.existsSync = existsSync;
9
+ exports.canReaddir = canReaddir;
10
+ const node_fs_1 = require("node:fs");
11
+ const promises_1 = require("node:fs/promises");
12
+ const node_path_1 = require("node:path");
13
+ const async_js_1 = require("./async.cjs");
14
+ /**
15
+ * Wrapping node:fs/promises.stat() so we can mock it in tests.
16
+ */
17
+ async function statAsync(path, options) {
18
+ return (0, promises_1.stat)(path, options);
19
+ }
20
+ async function canStatAsync(path) {
21
+ try {
22
+ return null != (await statAsync(path));
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ /**
29
+ * @return true if `path` exists and is a directory
30
+ */
31
+ async function isDirectory(path) {
32
+ try {
33
+ return (await statAsync(path))?.isDirectory() === true;
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ }
39
+ /**
40
+ * @return the first directory containing `file` or an empty string
41
+ */
42
+ async function findAncestorDir(dir, file) {
43
+ dir = (0, node_path_1.resolve)(dir);
44
+ try {
45
+ const s = await statAsync((0, node_path_1.join)(dir, file));
46
+ if (s.isFile())
47
+ return dir;
48
+ }
49
+ catch {
50
+ // fall through
51
+ }
52
+ const parent = (0, node_path_1.resolve)(dir, "..");
53
+ return parent === dir ? undefined : findAncestorDir(parent, file);
54
+ }
55
+ function existsSync(path) {
56
+ return (0, node_fs_1.statSync)(path, { throwIfNoEntry: false }) != null;
57
+ }
58
+ /**
59
+ * @return `true` if `dir` exists and is a directory and at least one entry can be read.
60
+ * @throws {Error} if `dir` does not exist or is not a directory or cannot be read.
61
+ */
62
+ async function canReaddir(dir, timeoutMs) {
63
+ return (0, async_js_1.withTimeout)({
64
+ desc: "canReaddir()",
65
+ promise: _canReaddir(dir),
66
+ timeoutMs,
67
+ });
68
+ }
69
+ async function _canReaddir(dir) {
70
+ let d = undefined;
71
+ try {
72
+ d = await (0, promises_1.opendir)(dir);
73
+ await d.read();
74
+ return true;
75
+ }
76
+ finally {
77
+ if (d != null)
78
+ void d.close();
79
+ }
80
+ }
81
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":";AAAA,YAAY;;AAgBZ,8BAKC;AAED,oCAMC;AAKD,kCAMC;AAKD,0CAaC;AAED,gCAEC;AAMD,gCASC;AA3ED,qCAMiB;AACjB,+CAAiD;AACjD,yCAA0C;AAC1C,yCAAyC;AAEzC;;GAEG;AACI,KAAK,UAAU,SAAS,CAC7B,IAAc,EACd,OAA0C;IAE1C,OAAO,IAAA,eAAI,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7B,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,IAAY;IAEZ,GAAG,GAAG,IAAA,mBAAO,EAAC,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC,MAAM,EAAE;YAAE,OAAO,GAAG,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,mBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,IAAA,kBAAQ,EAAC,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,SAAiB;IAEjB,OAAO,IAAA,sBAAW,EAAC;QACjB,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC;QACzB,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,IAAI,CAAC,GAAoB,SAAS,CAAC;IACnC,IAAI,CAAC;QACH,CAAC,GAAG,MAAM,IAAA,kBAAO,EAAC,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,IAAI,IAAI;YAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ // src/glob.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NeverMatchRE = exports.AlwaysMatchRE = void 0;
5
+ exports.compileGlob = compileGlob;
6
+ const platform_js_1 = require("./platform.cjs");
7
+ const string_js_1 = require("./string.cjs");
8
+ const cache = new Map();
9
+ /**
10
+ * Compiles an array of glob patterns into a single regular expression.
11
+ *
12
+ * The function supports the following patterns:
13
+ * - `**` matches any number of directories.
14
+ * - `*` matches any number of characters except for `/`.
15
+ * - `?` matches exactly one character except for `/`.
16
+ * - `.` is escaped to match a literal period.
17
+ * - `/` at the end of the pattern matches either a slash or the end of the string.
18
+ * - Other regex special characters are escaped.
19
+ *
20
+ * @param patterns - An array of glob patterns to compile.
21
+ * @returns A `RegExp` object that matches any of the provided patterns.
22
+ */
23
+ function compileGlob(patterns) {
24
+ if (patterns == null || patterns.length === 0) {
25
+ return exports.NeverMatchRE;
26
+ }
27
+ const patternsKey = JSON.stringify(patterns);
28
+ {
29
+ const prior = cache.get(patternsKey);
30
+ if (prior != null) {
31
+ return prior;
32
+ }
33
+ }
34
+ const sorted = patterns.slice().filter(string_js_1.isNotBlank).sort();
35
+ const sortedKey = JSON.stringify(sorted);
36
+ {
37
+ const prior = cache.get(sortedKey);
38
+ if (prior != null) {
39
+ cache.set(patternsKey, prior);
40
+ return prior;
41
+ }
42
+ }
43
+ const result = _compileGlob(sorted);
44
+ if (cache.size > 256) {
45
+ // avoid unbounded memory usage
46
+ cache.clear();
47
+ }
48
+ cache.set(patternsKey, result);
49
+ cache.set(sortedKey, result);
50
+ return result;
51
+ }
52
+ function _compileGlob(patterns) {
53
+ const regexPatterns = patterns.map((pattern) => {
54
+ let regex = "";
55
+ let i = 0;
56
+ while (i < pattern.length) {
57
+ // Handle '**' pattern
58
+ if (pattern[i] === "*" && pattern[i + 1] === "*") {
59
+ regex += ".*";
60
+ i += 2;
61
+ if (pattern[i] === "/") {
62
+ i++; // Skip the slash after **
63
+ }
64
+ continue;
65
+ }
66
+ // Handle single '*' pattern
67
+ if (pattern[i] === "*") {
68
+ regex += "[^/]*";
69
+ i++;
70
+ continue;
71
+ }
72
+ // Handle '?' pattern
73
+ if (pattern[i] === "?") {
74
+ regex += "[^/]";
75
+ i++;
76
+ continue;
77
+ }
78
+ // Handle period
79
+ if (pattern[i] === ".") {
80
+ regex += "\\.";
81
+ i++;
82
+ continue;
83
+ }
84
+ // Handle end of directory pattern
85
+ if (pattern[i] === "/") {
86
+ if (i === pattern.length - 1) {
87
+ regex += "(?:/|$)";
88
+ i++;
89
+ continue;
90
+ }
91
+ else if (platform_js_1.isWindows) {
92
+ regex += "[\\/\\\\]";
93
+ i++;
94
+ continue;
95
+ }
96
+ }
97
+ // Escape other regex special characters
98
+ if (/[+^${}()|[\]\\]/.test(pattern[i])) {
99
+ regex += "\\" + pattern[i];
100
+ i++;
101
+ continue;
102
+ }
103
+ // Add other characters as-is
104
+ regex += pattern[i];
105
+ i++;
106
+ }
107
+ return regex;
108
+ });
109
+ const final = regexPatterns.filter((ea) => ea.length > 0);
110
+ return final.length === 0
111
+ ? // Empty pattern matches nothing
112
+ exports.NeverMatchRE // Case insensitive for Windows paths
113
+ : new RegExp(`^(?:${final.join("|")})$`, "i");
114
+ }
115
+ exports.AlwaysMatchRE = /(?:)/;
116
+ exports.NeverMatchRE = /(?!)/;
117
+ //# sourceMappingURL=glob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/glob.ts"],"names":[],"mappings":"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"}