@hamak/shared-utils 0.4.2 → 0.4.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.
@@ -81,4 +81,31 @@ export declare class Pathway {
81
81
  static asString(path: Path): string;
82
82
  static getName(path: string | string[] | Pathway): string;
83
83
  }
84
+ /**
85
+ * Converts a path (string or string array) to an array of path segments.
86
+ * If already an array, returns it as-is.
87
+ * If a string, splits by '/' and filters out empty segments.
88
+ *
89
+ * @param path - The path to convert to segments
90
+ * @returns Array of path segments
91
+ *
92
+ * @example
93
+ * pathSteps('/foo/bar/baz') // ['foo', 'bar', 'baz']
94
+ * pathSteps(['foo', 'bar']) // ['foo', 'bar']
95
+ * pathSteps('foo//bar/') // ['foo', 'bar']
96
+ */
97
+ export declare function pathSteps(path: string | string[]): string[];
98
+ /**
99
+ * Returns the parent path segments by removing the last segment.
100
+ * Uses pathSteps internally to normalize the input path.
101
+ *
102
+ * @param path - The path to get parent segments from
103
+ * @returns Array of parent path segments (all but last segment)
104
+ *
105
+ * @example
106
+ * parentPathSteps('/foo/bar/baz') // ['foo', 'bar']
107
+ * parentPathSteps(['foo', 'bar']) // ['foo']
108
+ * parentPathSteps(['foo']) // []
109
+ */
110
+ export declare function parentPathSteps(path: string | string[]): string[];
84
111
  //# sourceMappingURL=core-utils-pathway.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core-utils-pathway.d.ts","sourceRoot":"","sources":["../src/core-utils-pathway.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAA;AAC9C;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,cAAc,CAAU;IAEhC;;;;OAIG;gBACS,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS;IAUtD;;;;OAIG;WACW,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO;IAQ/E;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;OAGG;IACI,WAAW,IAAI,MAAM,EAAE;IAIvB,YAAY;IAInB;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAIzB;;;OAGG;IACI,UAAU,IAAI,OAAO;IAI5B;;;OAGG;IACI,UAAU,IAAI,OAAO;IAI5B;;;;OAIG;IACI,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAuB/D;;;OAGG;IACI,SAAS,IAAI,OAAO;IAQ3B;;;OAGG;IACI,mBAAmB,IAAI,MAAM;IAOpC;;;OAGG;WACW,MAAM,IAAI,OAAO;IAI/B;;;;OAIG;IACI,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAsBlE;;;;OAIG;IACI,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAiBpE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAG,IAAI,GAAI,OAAO;IAK5C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,IAAI,GAAI,MAAM;IASrC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;CAgBjD"}
1
+ {"version":3,"file":"core-utils-pathway.d.ts","sourceRoot":"","sources":["../src/core-utils-pathway.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAA;AAC9C;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,cAAc,CAAU;IAEhC;;;;OAIG;gBACS,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS;IAUtD;;;;OAIG;WACW,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO;IAQ/E;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;OAGG;IACI,WAAW,IAAI,MAAM,EAAE;IAIvB,YAAY;IAInB;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAIzB;;;OAGG;IACI,UAAU,IAAI,OAAO;IAI5B;;;OAGG;IACI,UAAU,IAAI,OAAO;IAI5B;;;;OAIG;IACI,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAuB/D;;;OAGG;IACI,SAAS,IAAI,OAAO;IAQ3B;;;OAGG;IACI,mBAAmB,IAAI,MAAM;IAOpC;;;OAGG;WACW,MAAM,IAAI,OAAO;IAI/B;;;;OAIG;IACI,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAsBlE;;;;OAIG;IACI,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAiBpE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAG,IAAI,GAAI,OAAO;IAK5C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,IAAI,GAAI,MAAM;IASrC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;CAgBjD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAM3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAGjE"}
@@ -204,3 +204,38 @@ export class Pathway {
204
204
  return name;
205
205
  }
206
206
  }
207
+ /**
208
+ * Converts a path (string or string array) to an array of path segments.
209
+ * If already an array, returns it as-is.
210
+ * If a string, splits by '/' and filters out empty segments.
211
+ *
212
+ * @param path - The path to convert to segments
213
+ * @returns Array of path segments
214
+ *
215
+ * @example
216
+ * pathSteps('/foo/bar/baz') // ['foo', 'bar', 'baz']
217
+ * pathSteps(['foo', 'bar']) // ['foo', 'bar']
218
+ * pathSteps('foo//bar/') // ['foo', 'bar']
219
+ */
220
+ export function pathSteps(path) {
221
+ if (Array.isArray(path)) {
222
+ return path;
223
+ }
224
+ return path.split('/').filter(s => s.trim().length > 0);
225
+ }
226
+ /**
227
+ * Returns the parent path segments by removing the last segment.
228
+ * Uses pathSteps internally to normalize the input path.
229
+ *
230
+ * @param path - The path to get parent segments from
231
+ * @returns Array of parent path segments (all but last segment)
232
+ *
233
+ * @example
234
+ * parentPathSteps('/foo/bar/baz') // ['foo', 'bar']
235
+ * parentPathSteps(['foo', 'bar']) // ['foo']
236
+ * parentPathSteps(['foo']) // []
237
+ */
238
+ export function parentPathSteps(path) {
239
+ const steps = pathSteps(path);
240
+ return steps.length > 0 ? steps.slice(0, steps.length - 1) : steps;
241
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Pathway = void 0;
3
+ exports.parentPathSteps = exports.pathSteps = exports.Pathway = void 0;
4
4
  /**
5
5
  * Class representing a normalized pathway.
6
6
  */
@@ -208,3 +208,40 @@ class Pathway {
208
208
  }
209
209
  }
210
210
  exports.Pathway = Pathway;
211
+ /**
212
+ * Converts a path (string or string array) to an array of path segments.
213
+ * If already an array, returns it as-is.
214
+ * If a string, splits by '/' and filters out empty segments.
215
+ *
216
+ * @param path - The path to convert to segments
217
+ * @returns Array of path segments
218
+ *
219
+ * @example
220
+ * pathSteps('/foo/bar/baz') // ['foo', 'bar', 'baz']
221
+ * pathSteps(['foo', 'bar']) // ['foo', 'bar']
222
+ * pathSteps('foo//bar/') // ['foo', 'bar']
223
+ */
224
+ function pathSteps(path) {
225
+ if (Array.isArray(path)) {
226
+ return path;
227
+ }
228
+ return path.split('/').filter(s => s.trim().length > 0);
229
+ }
230
+ exports.pathSteps = pathSteps;
231
+ /**
232
+ * Returns the parent path segments by removing the last segment.
233
+ * Uses pathSteps internally to normalize the input path.
234
+ *
235
+ * @param path - The path to get parent segments from
236
+ * @returns Array of parent path segments (all but last segment)
237
+ *
238
+ * @example
239
+ * parentPathSteps('/foo/bar/baz') // ['foo', 'bar']
240
+ * parentPathSteps(['foo', 'bar']) // ['foo']
241
+ * parentPathSteps(['foo']) // []
242
+ */
243
+ function parentPathSteps(path) {
244
+ const steps = pathSteps(path);
245
+ return steps.length > 0 ? steps.slice(0, steps.length - 1) : steps;
246
+ }
247
+ exports.parentPathSteps = parentPathSteps;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hamak/shared-utils",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Shared utilities for path navigation, filesystem operations, and common helpers",
@@ -230,3 +230,41 @@ export class Pathway {
230
230
  }
231
231
 
232
232
  }
233
+
234
+ /**
235
+ * Converts a path (string or string array) to an array of path segments.
236
+ * If already an array, returns it as-is.
237
+ * If a string, splits by '/' and filters out empty segments.
238
+ *
239
+ * @param path - The path to convert to segments
240
+ * @returns Array of path segments
241
+ *
242
+ * @example
243
+ * pathSteps('/foo/bar/baz') // ['foo', 'bar', 'baz']
244
+ * pathSteps(['foo', 'bar']) // ['foo', 'bar']
245
+ * pathSteps('foo//bar/') // ['foo', 'bar']
246
+ */
247
+ export function pathSteps(path: string | string[]): string[] {
248
+ if (Array.isArray(path)) {
249
+ return path;
250
+ }
251
+
252
+ return path.split('/').filter(s => s.trim().length > 0);
253
+ }
254
+
255
+ /**
256
+ * Returns the parent path segments by removing the last segment.
257
+ * Uses pathSteps internally to normalize the input path.
258
+ *
259
+ * @param path - The path to get parent segments from
260
+ * @returns Array of parent path segments (all but last segment)
261
+ *
262
+ * @example
263
+ * parentPathSteps('/foo/bar/baz') // ['foo', 'bar']
264
+ * parentPathSteps(['foo', 'bar']) // ['foo']
265
+ * parentPathSteps(['foo']) // []
266
+ */
267
+ export function parentPathSteps(path: string | string[]): string[] {
268
+ const steps = pathSteps(path);
269
+ return steps.length > 0 ? steps.slice(0, steps.length - 1) : steps;
270
+ }