@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 +1 -1
- package/s/constructor.ts +12 -0
- package/s/scope.ts +7 -10
- package/x/constructor.d.ts +2 -0
- package/x/constructor.js +3 -1
- package/x/constructor.js.map +1 -1
- package/x/scope.d.ts +4 -12
- package/x/scope.js +1 -3
- package/x/scope.js.map +1 -1
package/package.json
CHANGED
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
|
-
|
|
3
|
-
export abstract class Disposable { abstract dispose(): void }
|
|
2
|
+
import {Constructor} from "./constructor.js"
|
|
4
3
|
|
|
5
|
-
export type
|
|
6
|
-
|
|
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
|
|
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
|
|
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
|
|
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 */
|
package/x/constructor.d.ts
CHANGED
|
@@ -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
package/x/constructor.js.map
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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":"
|
|
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"}
|