@e280/stz 0.2.4 → 0.2.6

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.4",
3
+ "version": "0.2.6",
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/dispenser.ts CHANGED
@@ -4,7 +4,7 @@ export class Dispenser<T> {
4
4
  #content: T[] = []
5
5
 
6
6
  constructor(private getRefill: () => T[]) {
7
- this.#content = [...getRefill()]
7
+ this.#refillWhenEmpty()
8
8
  }
9
9
 
10
10
  /** see what's currently available in the dispenser */
@@ -15,6 +15,8 @@ export class Dispenser<T> {
15
15
  #refillWhenEmpty() {
16
16
  if (this.#content.length === 0)
17
17
  this.#content = [...this.getRefill()]
18
+ if (this.#content.length === 0)
19
+ throw new Error("dispenser's getRefill returned an empty array")
18
20
  }
19
21
 
20
22
  /** take everything that's left, and refill */
@@ -35,13 +37,13 @@ export class Dispenser<T> {
35
37
  /** take out the first item */
36
38
  takeFirst() {
37
39
  this.#refillWhenEmpty()
38
- return this.#content.shift()
40
+ return this.#content.shift()! as T
39
41
  }
40
42
 
41
43
  /** take out the last item */
42
44
  takeLast() {
43
45
  this.#refillWhenEmpty()
44
- return this.#content.pop()
46
+ return this.#content.pop()! as T
45
47
  }
46
48
 
47
49
  /** @alias takeFirst */
package/s/index.ts CHANGED
@@ -42,4 +42,5 @@ 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"
45
46
 
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/x/dispenser.d.ts CHANGED
@@ -10,11 +10,11 @@ export declare class Dispenser<T> {
10
10
  /** take a random item out of the dispenser */
11
11
  takeRandom(): T;
12
12
  /** take out the first item */
13
- takeFirst(): T | undefined;
13
+ takeFirst(): T;
14
14
  /** take out the last item */
15
- takeLast(): T | undefined;
15
+ takeLast(): T;
16
16
  /** @alias takeFirst */
17
- shift: () => T | undefined;
17
+ shift: () => T;
18
18
  /** @alias takeLast */
19
- pop: () => T | undefined;
19
+ pop: () => T;
20
20
  }
package/x/dispenser.js CHANGED
@@ -4,7 +4,7 @@ export class Dispenser {
4
4
  #content = [];
5
5
  constructor(getRefill) {
6
6
  this.getRefill = getRefill;
7
- this.#content = [...getRefill()];
7
+ this.#refillWhenEmpty();
8
8
  }
9
9
  /** see what's currently available in the dispenser */
10
10
  get currentStock() {
@@ -13,6 +13,8 @@ export class Dispenser {
13
13
  #refillWhenEmpty() {
14
14
  if (this.#content.length === 0)
15
15
  this.#content = [...this.getRefill()];
16
+ if (this.#content.length === 0)
17
+ throw new Error("dispenser's getRefill returned an empty array");
16
18
  }
17
19
  /** take everything that's left, and refill */
18
20
  takeAll() {
@@ -1 +1 @@
1
- {"version":3,"file":"dispenser.js","sourceRoot":"","sources":["../s/dispenser.ts"],"names":[],"mappings":"AACA,uDAAuD;AACvD,MAAM,OAAO,SAAS;IAGD;IAFpB,QAAQ,GAAQ,EAAE,CAAA;IAElB,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QACvC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,SAAS,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,sDAAsD;IACtD,IAAI,YAAY;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1B,CAAC;IAED,gBAAgB;QACf,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,8CAA8C;IAC9C,OAAO;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QACrC,OAAO,OAAO,CAAA;IACf,CAAC;IAED,8CAA8C;IAC9C,UAAU;QACT,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,8BAA8B;IAC9B,SAAS;QACR,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IAED,6BAA6B;IAC7B,QAAQ;QACP,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED,uBAAuB;IACvB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEjC,sBAAsB;IACtB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;CAC9B"}
1
+ {"version":3,"file":"dispenser.js","sourceRoot":"","sources":["../s/dispenser.ts"],"names":[],"mappings":"AACA,uDAAuD;AACvD,MAAM,OAAO,SAAS;IAGD;IAFpB,QAAQ,GAAQ,EAAE,CAAA;IAElB,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QACvC,IAAI,CAAC,gBAAgB,EAAE,CAAA;IACxB,CAAC;IAED,sDAAsD;IACtD,IAAI,YAAY;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1B,CAAC;IAED,gBAAgB;QACf,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IAED,8CAA8C;IAC9C,OAAO;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QACrC,OAAO,OAAO,CAAA;IACf,CAAC;IAED,8CAA8C;IAC9C,UAAU;QACT,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,8BAA8B;IAC9B,SAAS;QACR,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAQ,CAAA;IACnC,CAAC;IAED,6BAA6B;IAC7B,QAAQ;QACP,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAQ,CAAA;IACjC,CAAC;IAED,uBAAuB;IACvB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEjC,sBAAsB;IACtB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;CAC9B"}
package/x/index.d.ts CHANGED
@@ -37,3 +37,4 @@ 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";
package/x/index.js CHANGED
@@ -37,4 +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";
40
41
  //# 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"}
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":""}