@e280/stz 0.0.0-38 → 0.0.0-39

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.0.0-38",
3
+ "version": "0.0.0-39",
4
4
  "description": "everyday ts fns for everything",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
package/s/constructor.ts CHANGED
@@ -1,3 +1,15 @@
1
1
 
2
2
  export type Constructor<T extends {} = {}> = new(...args: any[]) => T
3
3
 
4
+ export type Ctor<
5
+ Params extends any[] = any[],
6
+ Instance extends {} = {},
7
+ > = new(...params: Params) => Instance
8
+
9
+ export function denew<
10
+ Params extends any[] = any[],
11
+ Instance extends {} = {},
12
+ >(C: Ctor<Params, Instance>) {
13
+ return (...p: Params) => new C(...p)
14
+ }
15
+
package/s/scope.ts CHANGED
@@ -1,11 +1,8 @@
1
1
 
2
- export type Scoped<Item> = [item: Item, dispose: () => void]
3
- export abstract class Disposable { abstract dispose(): void }
2
+ import {Constructor} from "./constructor.js"
4
3
 
5
- export type DisposableClass = {
6
- new(...p: any[]): any
7
- dispose(): void
8
- }
4
+ export type Scoped<Item> = [item: Item, dispose: () => void]
5
+ export type Disposable = {dispose(): void}
9
6
 
10
7
  export function scoped<Item>(item: Item, dispose: () => void) {
11
8
  return [item, dispose] as Scoped<Item>
@@ -17,7 +14,7 @@ export function scoped<Item>(item: Item, dispose: () => void) {
17
14
  * - `keep` methods are for dealing with disposable objects (with a dispose method)
18
15
  * - `sub` for creating nested sub-scopes
19
16
  */
20
- export class Scope extends Disposable {
17
+ export class Scope implements Disposable {
21
18
  #disposers: (() => void)[] = []
22
19
 
23
20
  /** add disposer fn */
@@ -85,14 +82,14 @@ export class Scope extends Disposable {
85
82
  }
86
83
 
87
84
  /** wrap a constructor, auto-add returned disposables */
88
- keepConstructor<C extends DisposableClass>(Ctor: C) {
85
+ keepConstructor<C extends Constructor<Disposable>>(Ctor: C) {
89
86
  const scope = this
90
87
  return class extends Ctor {
91
88
  constructor(...p: any[]) {
92
89
  super(...p)
93
- scope.keep(this as any)
90
+ scope.keep(this)
94
91
  }
95
- }
92
+ } as C
96
93
  }
97
94
 
98
95
  /** create a subscope, child gets disposed when parent does */
@@ -1 +1,3 @@
1
1
  export type Constructor<T extends {} = {}> = new (...args: any[]) => T;
2
+ export type Ctor<Params extends any[] = any[], Instance extends {} = {}> = new (...params: Params) => Instance;
3
+ export declare function denew<Params extends any[] = any[], Instance extends {} = {}>(C: Ctor<Params, Instance>): (...p: Params) => Instance;
package/x/constructor.js CHANGED
@@ -1,2 +1,4 @@
1
- export {};
1
+ export function denew(C) {
2
+ return (...p) => new C(...p);
3
+ }
2
4
  //# sourceMappingURL=constructor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constructor.js","sourceRoot":"","sources":["../s/constructor.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"constructor.js","sourceRoot":"","sources":["../s/constructor.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,KAAK,CAGlB,CAAyB;IAC3B,OAAO,CAAC,GAAG,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AACrC,CAAC"}
package/x/scope.d.ts CHANGED
@@ -1,9 +1,6 @@
1
+ import { Constructor } from "./constructor.js";
1
2
  export type Scoped<Item> = [item: Item, dispose: () => void];
2
- export declare abstract class Disposable {
3
- abstract dispose(): void;
4
- }
5
- export type DisposableClass = {
6
- new (...p: any[]): any;
3
+ export type Disposable = {
7
4
  dispose(): void;
8
5
  };
9
6
  export declare function scoped<Item>(item: Item, dispose: () => void): Scoped<Item>;
@@ -13,7 +10,7 @@ export declare function scoped<Item>(item: Item, dispose: () => void): Scoped<It
13
10
  * - `keep` methods are for dealing with disposable objects (with a dispose method)
14
11
  * - `sub` for creating nested sub-scopes
15
12
  */
16
- export declare class Scope extends Disposable {
13
+ export declare class Scope implements Disposable {
17
14
  #private;
18
15
  /** add disposer fn */
19
16
  add(dispose: () => void): this;
@@ -32,12 +29,7 @@ export declare class Scope extends Disposable {
32
29
  /** wrap an async fn, auto-add returned disposables */
33
30
  keepFnAsync<Params extends any[], D extends Disposable>(fn: (...params: Params) => Promise<D>): (...a: Params) => Promise<D>;
34
31
  /** wrap a constructor, auto-add returned disposables */
35
- keepConstructor<C extends DisposableClass>(Ctor: C): {
36
- new (...p: any[]): {
37
- [x: string]: any;
38
- };
39
- dispose(): void;
40
- } & C;
32
+ keepConstructor<C extends Constructor<Disposable>>(Ctor: C): C;
41
33
  /** create a subscope, child gets disposed when parent does */
42
34
  sub(): Scope;
43
35
  /** dispose everything in this scope, in reverse order */
package/x/scope.js CHANGED
@@ -1,5 +1,3 @@
1
- export class Disposable {
2
- }
3
1
  export function scoped(item, dispose) {
4
2
  return [item, dispose];
5
3
  }
@@ -9,7 +7,7 @@ export function scoped(item, dispose) {
9
7
  * - `keep` methods are for dealing with disposable objects (with a dispose method)
10
8
  * - `sub` for creating nested sub-scopes
11
9
  */
12
- export class Scope extends Disposable {
10
+ export class Scope {
13
11
  #disposers = [];
14
12
  /** add disposer fn */
15
13
  add(dispose) {
package/x/scope.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../s/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../s/scope.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,MAAM,CAAO,IAAU,EAAE,OAAmB;IAC3D,OAAO,CAAC,IAAI,EAAE,OAAO,CAAiB,CAAA;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,KAAK;IACjB,UAAU,GAAmB,EAAE,CAAA;IAE/B,sBAAsB;IACtB,GAAG,CAAC,OAAmB;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC7B,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAO,IAAU,EAAE,OAAmB;QACzC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACjB,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,uCAAuC;IACvC,MAAM,CAAO,CAAC,IAAI,EAAE,OAAO,CAAe;QACzC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACjB,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAuB,UAAa;QACvC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA;QACpC,OAAO,UAAU,CAAA;IAClB,CAAC;IAED,6CAA6C;IAC7C,QAAQ,CACN,EAAuC;QAExC,OAAO,CAAC,GAAG,CAAS,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YACvB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC,CAAA;IACF,CAAC;IAED,oDAAoD;IACpD,aAAa,CACX,EAAgD;QAEjD,OAAO,KAAK,EAAC,GAAG,CAAS,EAAE,EAAE;YAC5B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC,CAAA;IACF,CAAC;IAED,+CAA+C;IAC/C,MAAM,CACJ,EAA4B;QAE7B,OAAO,CAAC,GAAG,CAAS,EAAE,EAAE;YACvB,MAAM,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7B,CAAC,CAAA;IACF,CAAC;IAED,sDAAsD;IACtD,WAAW,CACT,EAAqC;QAEtC,OAAO,KAAK,EAAC,GAAG,CAAS,EAAE,EAAE;YAC5B,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YACjC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7B,CAAC,CAAA;IACF,CAAC;IAED,wDAAwD;IACxD,eAAe,CAAoC,IAAO;QACzD,MAAM,KAAK,GAAG,IAAI,CAAA;QAClB,OAAO,KAAM,SAAQ,IAAI;YACxB,YAAY,GAAG,CAAQ;gBACtB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;gBACX,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjB,CAAC;SACI,CAAA;IACP,CAAC;IAED,8DAA8D;IAC9D,GAAG;QACF,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAA;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,yDAAyD;IACzD,OAAO;QACN,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YACzC,EAAE,EAAE,CAAA;QACL,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;IACrB,CAAC;CACD"}