@gesslar/toolkit 3.30.0 → 3.32.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.
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "name": "gesslar",
6
6
  "url": "https://gesslar.dev"
7
7
  },
8
- "version": "3.30.0",
8
+ "version": "3.32.0",
9
9
  "license": "Unlicense",
10
10
  "homepage": "https://github.com/gesslar/toolkit#readme",
11
11
  "repository": {
@@ -462,7 +462,7 @@ export default class FileObject extends FS {
462
462
  * @returns {Promise<object>} The file contents as a module.
463
463
  */
464
464
  async import() {
465
- const filePath = this.path
465
+ const filePath = this.url
466
466
 
467
467
  if(!(await this.exists))
468
468
  throw Sass.new(`No such file '${filePath}'`)
@@ -11,13 +11,13 @@
11
11
  import path from "node:path"
12
12
  import url from "node:url"
13
13
 
14
- import Collection from "../../browser/lib/Collection.js"
15
14
  import Data from "../../browser/lib/Data.js"
16
15
  import Valid from "./Valid.js"
17
- import Sass from "./Sass.js"
16
+ import Collection from "../../browser/lib/Collection.js"
18
17
 
19
- /** @typedef {import("./FileObject.js").default} FileObject */
20
- /** @typedef {import("./DirectoryObject.js").default} DirectoryObject */
18
+ /**
19
+ * @import {Sass} from "./Sass.js"
20
+ */
21
21
 
22
22
  const fdTypes = Object.freeze(["file", "directory"])
23
23
  const upperFdTypes = Object.freeze(fdTypes.map(type => type.toUpperCase()))
@@ -39,7 +39,7 @@ export default class FileSystem {
39
39
  * If the target is outside the source (i.e., the relative path starts with ".."),
40
40
  * returns the absolute path to this instance instead.
41
41
  *
42
- * @param {FileObject|DirectoryObject} fileOrDirectoryObject - The source file or directory object
42
+ * @param {import("./FileObject.js").default|import("./DirectoryObject.js").default} fileOrDirectoryObject - The source file or directory object
43
43
  * @returns {string} The relative path from the source to this instance, or the absolute path if not reachable
44
44
  * @throws {Sass} If the parameter is not a FileObject or DirectoryObject
45
45
  */
@@ -103,8 +103,8 @@ export default class FileSystem {
103
103
  * ".."), returns the absolute path to the target instead.
104
104
  *
105
105
  * @static
106
- * @param {FileObject|DirectoryObject} from - The source file or directory object
107
- * @param {FileObject|DirectoryObject} to - The target file or directory object
106
+ * @param {import("./FileObject.js").default|import("./DirectoryObject.js").default} from - The source file or directory object
107
+ * @param {import("./FileObject.js").default|import("./DirectoryObject.js").default} to - The target file or directory object
108
108
  * @returns {string} The relative path from `from` to `to`, or the absolute path if not reachable
109
109
  */
110
110
  static relativeOrAbsolute(from, to) {
@@ -115,7 +115,7 @@ export default class FileSystem {
115
115
  const relative = path.relative(fromBasePath, to.path)
116
116
 
117
117
  return relative.startsWith("..")
118
- ? to.path
118
+ ? path.resolve(to.path)
119
119
  : relative
120
120
  }
121
121
 
@@ -134,7 +134,7 @@ export default class FileSystem {
134
134
  const relative = path.relative(from, to)
135
135
 
136
136
  return relative.startsWith("..")
137
- ? to
137
+ ? path.resolve(to)
138
138
  : relative
139
139
  }
140
140
 
@@ -165,9 +165,13 @@ export default class FileSystem {
165
165
  const result = path.join(...prefix, ...to)
166
166
 
167
167
  // If original path1 was absolute, ensure result is also absolute
168
- return isAbsolutePath1 && !path.isAbsolute(result)
169
- ? path.sep + result
170
- : result
168
+ if(isAbsolutePath1 && !path.isAbsolute(result)) {
169
+ const root = path.parse(path1).root || path.sep
170
+
171
+ return path.join(root, result)
172
+ }
173
+
174
+ return result
171
175
  }
172
176
 
173
177
  // If no overlap, just join the paths
@@ -235,7 +239,7 @@ export default class FileSystem {
235
239
  Valid.type(container, "String", {allowEmpty: false})
236
240
  Valid.type(candidate, "String", {allowEmpty: false})
237
241
 
238
- const realPath = Data.append(container, "/") // bookend this mofo
242
+ const realPath = Data.append(container, path.sep) // bookend this mofo
239
243
 
240
244
  return candidate.startsWith(realPath)
241
245
  }
@@ -603,7 +603,7 @@ export default class Term {
603
603
 
604
604
  // Spinner frames - using Braille patterns (widely supported)
605
605
  // Falls back to ASCII when spinimate is implemented with proper detection
606
- static #spinFrames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
606
+ static spinFrames = Object.freeze(["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"])
607
607
 
608
608
  // static async spinimate(delay=300, options = {position: {x: 0,y: 0}}) {
609
609
  // const spinFrames = await this.#spinFrames
@@ -615,4 +615,37 @@ export default class Term {
615
615
  // })
616
616
  // }
617
617
  // }
618
+
619
+ /**
620
+ * Pause stdin, preventing it from emitting data events.
621
+ *
622
+ * @returns {typeof Term} The Term class for chaining.
623
+ */
624
+ static pause() {
625
+ process.stdin.pause()
626
+
627
+ return this
628
+ }
629
+
630
+ /**
631
+ * Resume stdin so it can emit data events.
632
+ *
633
+ * @returns {typeof Term} The Term class for chaining.
634
+ */
635
+ static resume() {
636
+ process.stdin.resume()
637
+
638
+ return this
639
+ }
640
+
641
+ /**
642
+ * Set stdin encoding to UTF-8.
643
+ *
644
+ * @returns {typeof Term} The Term class for chaining.
645
+ */
646
+ static utf8() {
647
+ process.stdin.setEncoding("utf8")
648
+
649
+ return this
650
+ }
618
651
  }
@@ -38,11 +38,11 @@ export default class FileSystem {
38
38
  * ".."), returns the absolute path to the target instead.
39
39
  *
40
40
  * @static
41
- * @param {FileObject|DirectoryObject} from - The source file or directory object
42
- * @param {FileObject|DirectoryObject} to - The target file or directory object
41
+ * @param {import("./FileObject.js").default|import("./DirectoryObject.js").default} from - The source file or directory object
42
+ * @param {import("./FileObject.js").default|import("./DirectoryObject.js").default} to - The target file or directory object
43
43
  * @returns {string} The relative path from `from` to `to`, or the absolute path if not reachable
44
44
  */
45
- static relativeOrAbsolute(from: FileObject | DirectoryObject, to: FileObject | DirectoryObject): string;
45
+ static relativeOrAbsolute(from: import("./FileObject.js").default | import("./DirectoryObject.js").default, to: import("./FileObject.js").default | import("./DirectoryObject.js").default): string;
46
46
  /**
47
47
  * Computes the relative path from one file or directory to another.
48
48
  *
@@ -192,12 +192,10 @@ export default class FileSystem {
192
192
  * If the target is outside the source (i.e., the relative path starts with ".."),
193
193
  * returns the absolute path to this instance instead.
194
194
  *
195
- * @param {FileObject|DirectoryObject} fileOrDirectoryObject - The source file or directory object
195
+ * @param {import("./FileObject.js").default|import("./DirectoryObject.js").default} fileOrDirectoryObject - The source file or directory object
196
196
  * @returns {string} The relative path from the source to this instance, or the absolute path if not reachable
197
197
  * @throws {Sass} If the parameter is not a FileObject or DirectoryObject
198
198
  */
199
- relativeTo(fileOrDirectoryObject: FileObject | DirectoryObject): string;
199
+ relativeTo(fileOrDirectoryObject: import("./FileObject.js").default | import("./DirectoryObject.js").default): string;
200
200
  }
201
- export type FileObject = import("./FileObject.js").default;
202
- export type DirectoryObject = import("./DirectoryObject.js").default;
203
201
  //# sourceMappingURL=FileSystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileSystem.d.ts","sourceRoot":"","sources":["../../../src/node/lib/FileSystem.js"],"names":[],"mappings":"AA2BA;;GAEG;AACH;IACE,kCAAwB;IACxB,uCAAkC;IAClC,mBAAsB;IAsBtB;;;;;;OAMG;IACH,4BAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,2BAHW,MAAM,GACJ,MAAM,CAQlB;IAED;;;;;;;;OAQG;IACH,0BALW,MAAM,GACJ,MAAM,CAUlB;IAED;;;;;;;;;;OAUG;IACH,gCAJW,UAAU,GAAC,eAAe,MAC1B,UAAU,GAAC,eAAe,GACxB,MAAM,CAYlB;IAED;;;;;;;;;;OAUG;IACH,oCAJW,MAAM,MACN,MAAM,GACJ,MAAM,CAQlB;IAED;;;;;;;;;OASG;IACH,oCALW,MAAM,SACN,MAAM,QACN,MAAM,GACJ,MAAM,CA0BlB;IAED;;;;;;;;OAQG;IACH,6BAJW,MAAM,UACN,MAAM,GACJ,MAAM,CAmClB;IAED;;;;;;;;;;;;OAYG;IACH,+BATW,MAAM,aACN,MAAM,GACJ,OAAO,CAcnB;IAED;;;;;;;;;;;;;;OAcG;IACH,iCATW,MAAM,MACN,MAAM,QACN,MAAM,GACJ,MAAM,GAAC,IAAI,CAwBvB;IAED;;;;;;;;;;;;;;OAcG;IACH,4BARW,MAAM,MACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,+BAXW,MAAM,MACN,MAAM,QACN,MAAM,GACJ,MAAM,GAAC,IAAI,CA+BvB;IAED;;;;;;;OAOG;IAEH;;;;;;;OAOG;IACH,2BAJW,MAAM;;;;cAXH,MAAM;;;;aACN,MAAM;;;;aACN,MAAM;;;;cACN,MAAM;;;;cACN,MAAM;MAenB;IAED;;;;OAIG;IACH,kBAFa,MAAM,CAIlB;IAnVD;;;;;;;;;OASG;IACH,kCAJW,UAAU,GAAC,eAAe,GACxB,MAAM,CAWlB;CAkUF;yBArWa,OAAO,iBAAiB,EAAE,OAAO;8BACjC,OAAO,sBAAsB,EAAE,OAAO"}
1
+ {"version":3,"file":"FileSystem.d.ts","sourceRoot":"","sources":["../../../src/node/lib/FileSystem.js"],"names":[],"mappings":"AA2BA;;GAEG;AACH;IACE,kCAAwB;IACxB,uCAAkC;IAClC,mBAAsB;IAsBtB;;;;;;OAMG;IACH,4BAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,2BAHW,MAAM,GACJ,MAAM,CAQlB;IAED;;;;;;;;OAQG;IACH,0BALW,MAAM,GACJ,MAAM,CAUlB;IAED;;;;;;;;;;OAUG;IACH,gCAJW,OAAO,iBAAiB,EAAE,OAAO,GAAC,OAAO,sBAAsB,EAAE,OAAO,MACxE,OAAO,iBAAiB,EAAE,OAAO,GAAC,OAAO,sBAAsB,EAAE,OAAO,GACtE,MAAM,CAYlB;IAED;;;;;;;;;;OAUG;IACH,oCAJW,MAAM,MACN,MAAM,GACJ,MAAM,CAQlB;IAED;;;;;;;;;OASG;IACH,oCALW,MAAM,SACN,MAAM,QACN,MAAM,GACJ,MAAM,CA8BlB;IAED;;;;;;;;OAQG;IACH,6BAJW,MAAM,UACN,MAAM,GACJ,MAAM,CAmClB;IAED;;;;;;;;;;;;OAYG;IACH,+BATW,MAAM,aACN,MAAM,GACJ,OAAO,CAcnB;IAED;;;;;;;;;;;;;;OAcG;IACH,iCATW,MAAM,MACN,MAAM,QACN,MAAM,GACJ,MAAM,GAAC,IAAI,CAwBvB;IAED;;;;;;;;;;;;;;OAcG;IACH,4BARW,MAAM,MACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,+BAXW,MAAM,MACN,MAAM,QACN,MAAM,GACJ,MAAM,GAAC,IAAI,CA+BvB;IAED;;;;;;;OAOG;IAEH;;;;;;;OAOG;IACH,2BAJW,MAAM;;;;cAXH,MAAM;;;;aACN,MAAM;;;;aACN,MAAM;;;;cACN,MAAM;;;;cACN,MAAM;MAenB;IAED;;;;OAIG;IACH,kBAFa,MAAM,CAIlB;IAvVD;;;;;;;;;OASG;IACH,kCAJW,OAAO,iBAAiB,EAAE,OAAO,GAAC,OAAO,sBAAsB,EAAE,OAAO,GACtE,MAAM,CAWlB;CAsUF"}
@@ -282,6 +282,24 @@ export default class Term {
282
282
  * @returns {Promise<void>} Resolves when write completes.
283
283
  */
284
284
  static directWrite(output: string): Promise<void>;
285
- static "__#private@#spinFrames": string[];
285
+ static spinFrames: readonly string[];
286
+ /**
287
+ * Pause stdin, preventing it from emitting data events.
288
+ *
289
+ * @returns {typeof Term} The Term class for chaining.
290
+ */
291
+ static pause(): typeof Term;
292
+ /**
293
+ * Resume stdin so it can emit data events.
294
+ *
295
+ * @returns {typeof Term} The Term class for chaining.
296
+ */
297
+ static resume(): typeof Term;
298
+ /**
299
+ * Set stdin encoding to UTF-8.
300
+ *
301
+ * @returns {typeof Term} The Term class for chaining.
302
+ */
303
+ static utf8(): typeof Term;
286
304
  }
287
305
  //# sourceMappingURL=Term.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Term.d.ts","sourceRoot":"","sources":["../../../src/node/lib/Term.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Term.d.ts","sourceRoot":"","sources":["../../../src/node/lib/Term.js"],"names":[],"mappings":"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"}