@e280/stz 0.2.5 → 0.2.7

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e280/stz",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "description": "everyday ts fns for everything",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "devDependencies": {
30
30
  "@e280/science": "^0.1.2",
31
- "@types/node": "^24.3.1",
31
+ "@types/node": "^24.5.2",
32
32
  "npm-run-all": "^4.1.5",
33
33
  "typescript": "^5.9.2"
34
34
  },
package/s/index.ts CHANGED
@@ -42,4 +42,6 @@ export * from "./set-g.js"
42
42
  export * from "./templating.js"
43
43
  export * from "./time.js"
44
44
  export * from "./trash.js"
45
+ export * from "./types.js"
46
+ export * from "./untab.js"
45
47
 
package/s/set-g.ts CHANGED
@@ -17,5 +17,10 @@ export class SetG<T> extends Set<T> {
17
17
  for (const item of items) this.delete(item)
18
18
  return this
19
19
  }
20
+
21
+ clear() {
22
+ super.clear()
23
+ return this
24
+ }
20
25
  }
21
26
 
package/s/types.ts ADDED
@@ -0,0 +1,17 @@
1
+
2
+ export type First<A extends any[]> = (
3
+ A extends [infer X, ...any[]]
4
+ ? X
5
+ : never
6
+ )
7
+
8
+ export type DropFirst<A extends any[]> = (
9
+ A extends [any, ...infer X]
10
+ ? X
11
+ : never
12
+ )
13
+
14
+ export type DropFirstParam<Fn extends (...params: any[]) => any> = (
15
+ (...params: DropFirst<Parameters<Fn>>) => ReturnType<Fn>
16
+ )
17
+
package/s/untab.ts ADDED
@@ -0,0 +1,30 @@
1
+
2
+ export function untab(code: string) {
3
+ const lines = code.split(/\r|\n/)
4
+ let baseTabLevel: number | undefined
5
+
6
+ for (const line of lines) {
7
+ const isOnlyWhitespace = /^\s+$/.test(line)
8
+ if (!isOnlyWhitespace) {
9
+ const tabMatch = line.match(/^(\t+).+/)
10
+ if (tabMatch) {
11
+ const tabCount = tabMatch[1].length
12
+ baseTabLevel = baseTabLevel === undefined
13
+ ? tabCount
14
+ : tabCount < baseTabLevel
15
+ ? tabCount
16
+ : baseTabLevel
17
+ if (baseTabLevel === 0)
18
+ break
19
+ }
20
+ }
21
+ }
22
+
23
+ const rebaseTabRegex = new RegExp(`^\\t{${baseTabLevel}}`)
24
+
25
+ return lines
26
+ .map(line => /^\s+$/.test(line) ? "" : line)
27
+ .map(line => line.replace(rebaseTabRegex, ""))
28
+ .join("\n")
29
+ }
30
+
package/x/index.d.ts CHANGED
@@ -37,3 +37,5 @@ export * from "./set-g.js";
37
37
  export * from "./templating.js";
38
38
  export * from "./time.js";
39
39
  export * from "./trash.js";
40
+ export * from "./types.js";
41
+ export * from "./untab.js";
package/x/index.js CHANGED
@@ -37,4 +37,6 @@ export * from "./set-g.js";
37
37
  export * from "./templating.js";
38
38
  export * from "./time.js";
39
39
  export * from "./trash.js";
40
+ export * from "./types.js";
41
+ export * from "./untab.js";
40
42
  //# sourceMappingURL=index.js.map
package/x/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
package/x/set-g.d.ts CHANGED
@@ -3,4 +3,5 @@ export declare class SetG<T> extends Set<T> {
3
3
  hasAll(...items: T[]): boolean;
4
4
  adds(...items: T[]): this;
5
5
  deletes(...items: T[]): this;
6
+ clear(): this;
6
7
  }
package/x/set-g.js CHANGED
@@ -15,5 +15,9 @@ export class SetG extends Set {
15
15
  this.delete(item);
16
16
  return this;
17
17
  }
18
+ clear() {
19
+ super.clear();
20
+ return this;
21
+ }
18
22
  }
19
23
  //# sourceMappingURL=set-g.js.map
package/x/set-g.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"set-g.js","sourceRoot":"","sources":["../s/set-g.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,IAAQ,SAAQ,GAAM;IAClC,KAAK;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,CAAC,GAAG,KAAU;QACnB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,CAAC,GAAG,KAAU;QACjB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO,CAAC,GAAG,KAAU;QACpB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAA;IACZ,CAAC;CACD"}
1
+ {"version":3,"file":"set-g.js","sourceRoot":"","sources":["../s/set-g.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,IAAQ,SAAQ,GAAM;IAClC,KAAK;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,CAAC,GAAG,KAAU;QACnB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,CAAC,GAAG,KAAU;QACjB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO,CAAC,GAAG,KAAU;QACpB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,KAAK;QACJ,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,OAAO,IAAI,CAAA;IACZ,CAAC;CACD"}
package/x/types.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export type First<A extends any[]> = (A extends [infer X, ...any[]] ? X : never);
2
+ export type DropFirst<A extends any[]> = (A extends [any, ...infer X] ? X : never);
3
+ export type DropFirstParam<Fn extends (...params: any[]) => any> = ((...params: DropFirst<Parameters<Fn>>) => ReturnType<Fn>);
package/x/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
package/x/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../s/types.ts"],"names":[],"mappings":""}
package/x/untab.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function untab(code: string): string;
package/x/untab.js ADDED
@@ -0,0 +1,26 @@
1
+ export function untab(code) {
2
+ const lines = code.split(/\r|\n/);
3
+ let baseTabLevel;
4
+ for (const line of lines) {
5
+ const isOnlyWhitespace = /^\s+$/.test(line);
6
+ if (!isOnlyWhitespace) {
7
+ const tabMatch = line.match(/^(\t+).+/);
8
+ if (tabMatch) {
9
+ const tabCount = tabMatch[1].length;
10
+ baseTabLevel = baseTabLevel === undefined
11
+ ? tabCount
12
+ : tabCount < baseTabLevel
13
+ ? tabCount
14
+ : baseTabLevel;
15
+ if (baseTabLevel === 0)
16
+ break;
17
+ }
18
+ }
19
+ }
20
+ const rebaseTabRegex = new RegExp(`^\\t{${baseTabLevel}}`);
21
+ return lines
22
+ .map(line => /^\s+$/.test(line) ? "" : line)
23
+ .map(line => line.replace(rebaseTabRegex, ""))
24
+ .join("\n");
25
+ }
26
+ //# sourceMappingURL=untab.js.map
package/x/untab.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"untab.js","sourceRoot":"","sources":["../s/untab.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,KAAK,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACjC,IAAI,YAAgC,CAAA;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YACvC,IAAI,QAAQ,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;gBACnC,YAAY,GAAG,YAAY,KAAK,SAAS;oBACxC,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,QAAQ,GAAG,YAAY;wBACxB,CAAC,CAAC,QAAQ;wBACV,CAAC,CAAC,YAAY,CAAA;gBAChB,IAAI,YAAY,KAAK,CAAC;oBACrB,MAAK;YACP,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,QAAQ,YAAY,GAAG,CAAC,CAAA;IAE1D,OAAO,KAAK;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAC3C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;SAC7C,IAAI,CAAC,IAAI,CAAC,CAAA;AACb,CAAC"}