@matter/general 0.16.0-alpha.0-20251011-d8942d7d5 → 0.16.0-alpha.0-20251013-89bb7099d
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/dist/cjs/environment/Environment.d.ts +1 -7
- package/dist/cjs/environment/Environment.d.ts.map +1 -1
- package/dist/cjs/environment/Environment.js +17 -32
- package/dist/cjs/environment/Environment.js.map +1 -1
- package/dist/esm/environment/Environment.d.ts +1 -7
- package/dist/esm/environment/Environment.d.ts.map +1 -1
- package/dist/esm/environment/Environment.js +17 -32
- package/dist/esm/environment/Environment.js.map +1 -1
- package/package.json +2 -2
- package/src/environment/Environment.ts +21 -38
|
@@ -42,18 +42,12 @@ export declare class Environment {
|
|
|
42
42
|
*/
|
|
43
43
|
maybeGet<T extends object>(type: Environmental.ServiceType<T>): T | undefined;
|
|
44
44
|
/**
|
|
45
|
-
* Remove an environmental service
|
|
45
|
+
* Remove an environmental service and block further inheritance
|
|
46
46
|
*
|
|
47
47
|
* @param type the class of the service to remove
|
|
48
48
|
* @param instance optional instance expected, if existing instance does not match it is not deleted
|
|
49
49
|
*/
|
|
50
50
|
delete(type: Environmental.ServiceType, instance?: any): void;
|
|
51
|
-
/**
|
|
52
|
-
* Prevent this environment from automatically instantiating or retrieving a service from parent environment.
|
|
53
|
-
*
|
|
54
|
-
* @param type the class of the service to block
|
|
55
|
-
*/
|
|
56
|
-
block(type: Environmental.ServiceType): void;
|
|
57
51
|
/**
|
|
58
52
|
* Remove and close an environmental service.
|
|
59
53
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Environment.d.ts","sourceRoot":"","sources":["../../../src/environment/Environment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;;gBAQR,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAK9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,GAAG,OAAO;IAU7C;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,GAAG,OAAO;IAI9C;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"Environment.d.ts","sourceRoot":"","sources":["../../../src/environment/Environment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;;gBAQR,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAK9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,GAAG,OAAO;IAU7C;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,GAAG,OAAO;IAI9C;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IA4B5D;;OAEG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAM7E;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG;IAqBtD;;OAEG;IACH,KAAK,CAAC,CAAC,SAAS,MAAM,EAClB,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,GACnC,CAAC,SAAS;QAAE,KAAK,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;IAU5E;;OAEG;IACG,IAAI,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAM1E;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;IAYjE;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED;;;;OAIG;IACH,IAAI,KAAK,8EAER;IAED;;;;OAIG;IACH,IAAI,OAAO,8EAEV;IAED;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,GASjC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAGnD;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,EACpB,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAClC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,EAC5D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC;IAmBlE;;;;OAIG;IACH,MAAM,KAAK,OAAO,IAOM,WAAW,CALlC;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,WAAW,EAYlC;IAED;;OAEG;IACH,IAAI,IAAI,oBAEP;IAED;;OAEG;IACH,IAAI,OAAO,mBAEV;IAED;;OAEG;IACH,QAAQ;IAUR,SAAS,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAGjD"}
|
|
@@ -74,18 +74,17 @@ class Environment {
|
|
|
74
74
|
return mine;
|
|
75
75
|
}
|
|
76
76
|
if (mine === void 0) {
|
|
77
|
-
|
|
77
|
+
const instance = this.#parent?.maybeGet(type);
|
|
78
78
|
if (instance !== void 0 && instance !== null) {
|
|
79
79
|
return instance;
|
|
80
80
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
this.set(type, instance);
|
|
87
|
-
return instance;
|
|
81
|
+
}
|
|
82
|
+
if (type[import_Environmental.Environmental.create]) {
|
|
83
|
+
const instance = type[import_Environmental.Environmental.create](this);
|
|
84
|
+
if (!(instance instanceof type)) {
|
|
85
|
+
throw new import_MatterError.InternalError(`Service creation did not produce instance of ${type.name}`);
|
|
88
86
|
}
|
|
87
|
+
return instance;
|
|
89
88
|
}
|
|
90
89
|
throw new import_Lifecycle.UnsupportedDependencyError(`Required dependency ${type.name}`, "is not available");
|
|
91
90
|
}
|
|
@@ -98,47 +97,33 @@ class Environment {
|
|
|
98
97
|
}
|
|
99
98
|
}
|
|
100
99
|
/**
|
|
101
|
-
* Remove an environmental service
|
|
100
|
+
* Remove an environmental service and block further inheritance
|
|
102
101
|
*
|
|
103
102
|
* @param type the class of the service to remove
|
|
104
103
|
* @param instance optional instance expected, if existing instance does not match it is not deleted
|
|
105
104
|
*/
|
|
106
105
|
delete(type, instance) {
|
|
107
|
-
|
|
106
|
+
const localInstance = this.#services?.get(type);
|
|
107
|
+
this.#services?.set(type, null);
|
|
108
|
+
if (localInstance === void 0 || localInstance === null) {
|
|
108
109
|
return;
|
|
109
110
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
if (instance !== void 0 && localInstance !== instance) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
this.#deleted.emit(type, localInstance);
|
|
113
115
|
const serviceEvents = this.#serviceEvents.get(type);
|
|
114
116
|
if (serviceEvents) {
|
|
115
|
-
serviceEvents.deleted.emit(
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Prevent this environment from automatically instantiating or retrieving a service from parent environment.
|
|
120
|
-
*
|
|
121
|
-
* @param type the class of the service to block
|
|
122
|
-
*/
|
|
123
|
-
block(type) {
|
|
124
|
-
const instance = this.#services?.get(type);
|
|
125
|
-
if (instance !== void 0 && instance !== null) {
|
|
126
|
-
this.#services?.delete(type);
|
|
127
|
-
this.#deleted.emit(type, instance);
|
|
128
|
-
const serviceEvents = this.#serviceEvents.get(type);
|
|
129
|
-
if (serviceEvents) {
|
|
130
|
-
serviceEvents.deleted.emit(instance);
|
|
131
|
-
}
|
|
117
|
+
serviceEvents.deleted.emit(localInstance);
|
|
132
118
|
}
|
|
133
|
-
this.#services?.set(type, null);
|
|
134
119
|
}
|
|
135
120
|
/**
|
|
136
121
|
* Remove and close an environmental service.
|
|
137
122
|
*/
|
|
138
123
|
close(type) {
|
|
139
124
|
const instance = this.maybeGet(type);
|
|
125
|
+
this.delete(type, instance);
|
|
140
126
|
if (instance !== void 0) {
|
|
141
|
-
this.delete(type, instance);
|
|
142
127
|
return instance.close?.();
|
|
143
128
|
}
|
|
144
129
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/environment/Environment.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAA8B;AAC9B,sBAAwB;AAExB,8BAAiC;AACjC,oBAAuB;AACvB,wBAAO;AACP,kBAAqB;AACrB,uBAAyD;AACzD,wBAA2B;AAC3B,2BAA8B;AAC9B,4BAA+B;AAC/B,6BAAgC;AAjBhC;AAAA;AAAA;AAAA;AAAA;AAmBA,MAAM,SAAS,qBAAO,IAAI,aAAa;AAehC,MAAM,YAAY;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAS,8BAA4D;AAAA,EACrE,eAAW,8BAA4D;AAAA,EACvE,iBAAiB,oBAAI,IAAiE;AAAA,EAEtF,YAAY,MAAc,QAAsB;AAC5C,SAAK,QAAQ;AACb,SAAK,UAAU;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAA0C;AAC1C,UAAM,OAAO,KAAK,WAAW,IAAI,IAAI;AAErC,QAAI,SAAS,MAAM;AACf,aAAO;AAAA,IACX;AAEA,WAAO,SAAS,WAAc,KAAK,SAAS,IAAI,IAAI,KAAK;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK,MAA0C;AAC3C,WAAO,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAsB,MAAuC;AACzD,UAAM,OAAO,KAAK,WAAW,IAAI,IAAI;AAErC,QAAI,SAAS,UAAa,SAAS,MAAM;AACrC,aAAO;AAAA,IACX;AAGA,QAAI,SAAS,QAAW;AACpB,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -42,18 +42,12 @@ export declare class Environment {
|
|
|
42
42
|
*/
|
|
43
43
|
maybeGet<T extends object>(type: Environmental.ServiceType<T>): T | undefined;
|
|
44
44
|
/**
|
|
45
|
-
* Remove an environmental service
|
|
45
|
+
* Remove an environmental service and block further inheritance
|
|
46
46
|
*
|
|
47
47
|
* @param type the class of the service to remove
|
|
48
48
|
* @param instance optional instance expected, if existing instance does not match it is not deleted
|
|
49
49
|
*/
|
|
50
50
|
delete(type: Environmental.ServiceType, instance?: any): void;
|
|
51
|
-
/**
|
|
52
|
-
* Prevent this environment from automatically instantiating or retrieving a service from parent environment.
|
|
53
|
-
*
|
|
54
|
-
* @param type the class of the service to block
|
|
55
|
-
*/
|
|
56
|
-
block(type: Environmental.ServiceType): void;
|
|
57
51
|
/**
|
|
58
52
|
* Remove and close an environmental service.
|
|
59
53
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Environment.d.ts","sourceRoot":"","sources":["../../../src/environment/Environment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;;gBAQR,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAK9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,GAAG,OAAO;IAU7C;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,GAAG,OAAO;IAI9C;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"Environment.d.ts","sourceRoot":"","sources":["../../../src/environment/Environment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;;gBAQR,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAK9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,GAAG,OAAO;IAU7C;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,GAAG,OAAO;IAI9C;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IA4B5D;;OAEG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAM7E;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG;IAqBtD;;OAEG;IACH,KAAK,CAAC,CAAC,SAAS,MAAM,EAClB,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,GACnC,CAAC,SAAS;QAAE,KAAK,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;IAU5E;;OAEG;IACG,IAAI,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAM1E;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;IAYjE;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED;;;;OAIG;IACH,IAAI,KAAK,8EAER;IAED;;;;OAIG;IACH,IAAI,OAAO,8EAEV;IAED;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,GASjC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAGnD;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,EACpB,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAClC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,EAC5D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC;IAmBlE;;;;OAIG;IACH,MAAM,KAAK,OAAO,IAOM,WAAW,CALlC;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,WAAW,EAYlC;IAED;;OAEG;IACH,IAAI,IAAI,oBAEP;IAED;;OAEG;IACH,IAAI,OAAO,mBAEV;IAED;;OAEG;IACH,QAAQ;IAUR,SAAS,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAGjD"}
|
|
@@ -51,18 +51,17 @@ class Environment {
|
|
|
51
51
|
return mine;
|
|
52
52
|
}
|
|
53
53
|
if (mine === void 0) {
|
|
54
|
-
|
|
54
|
+
const instance = this.#parent?.maybeGet(type);
|
|
55
55
|
if (instance !== void 0 && instance !== null) {
|
|
56
56
|
return instance;
|
|
57
57
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
this.set(type, instance);
|
|
64
|
-
return instance;
|
|
58
|
+
}
|
|
59
|
+
if (type[Environmental.create]) {
|
|
60
|
+
const instance = type[Environmental.create](this);
|
|
61
|
+
if (!(instance instanceof type)) {
|
|
62
|
+
throw new InternalError(`Service creation did not produce instance of ${type.name}`);
|
|
65
63
|
}
|
|
64
|
+
return instance;
|
|
66
65
|
}
|
|
67
66
|
throw new UnsupportedDependencyError(`Required dependency ${type.name}`, "is not available");
|
|
68
67
|
}
|
|
@@ -75,47 +74,33 @@ class Environment {
|
|
|
75
74
|
}
|
|
76
75
|
}
|
|
77
76
|
/**
|
|
78
|
-
* Remove an environmental service
|
|
77
|
+
* Remove an environmental service and block further inheritance
|
|
79
78
|
*
|
|
80
79
|
* @param type the class of the service to remove
|
|
81
80
|
* @param instance optional instance expected, if existing instance does not match it is not deleted
|
|
82
81
|
*/
|
|
83
82
|
delete(type, instance) {
|
|
84
|
-
|
|
83
|
+
const localInstance = this.#services?.get(type);
|
|
84
|
+
this.#services?.set(type, null);
|
|
85
|
+
if (localInstance === void 0 || localInstance === null) {
|
|
85
86
|
return;
|
|
86
87
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
if (instance !== void 0 && localInstance !== instance) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
this.#deleted.emit(type, localInstance);
|
|
90
92
|
const serviceEvents = this.#serviceEvents.get(type);
|
|
91
93
|
if (serviceEvents) {
|
|
92
|
-
serviceEvents.deleted.emit(
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Prevent this environment from automatically instantiating or retrieving a service from parent environment.
|
|
97
|
-
*
|
|
98
|
-
* @param type the class of the service to block
|
|
99
|
-
*/
|
|
100
|
-
block(type) {
|
|
101
|
-
const instance = this.#services?.get(type);
|
|
102
|
-
if (instance !== void 0 && instance !== null) {
|
|
103
|
-
this.#services?.delete(type);
|
|
104
|
-
this.#deleted.emit(type, instance);
|
|
105
|
-
const serviceEvents = this.#serviceEvents.get(type);
|
|
106
|
-
if (serviceEvents) {
|
|
107
|
-
serviceEvents.deleted.emit(instance);
|
|
108
|
-
}
|
|
94
|
+
serviceEvents.deleted.emit(localInstance);
|
|
109
95
|
}
|
|
110
|
-
this.#services?.set(type, null);
|
|
111
96
|
}
|
|
112
97
|
/**
|
|
113
98
|
* Remove and close an environmental service.
|
|
114
99
|
*/
|
|
115
100
|
close(type) {
|
|
116
101
|
const instance = this.maybeGet(type);
|
|
102
|
+
this.delete(type, instance);
|
|
117
103
|
if (instance !== void 0) {
|
|
118
|
-
this.delete(type, instance);
|
|
119
104
|
return instance.close?.();
|
|
120
105
|
}
|
|
121
106
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/environment/Environment.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AAExB,SAAS,wBAAwB;AACjC,SAAS,cAAc;AACvB,OAAO;AACP,SAAS,YAAY;AACrB,SAAuB,kCAAkC;AACzD,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAEhC,MAAM,SAAS,OAAO,IAAI,aAAa;AAehC,MAAM,YAAY;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,WAA4D;AAAA,EACrE,WAAW,WAA4D;AAAA,EACvE,iBAAiB,oBAAI,IAAiE;AAAA,EAEtF,YAAY,MAAc,QAAsB;AAC5C,SAAK,QAAQ;AACb,SAAK,UAAU;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAA0C;AAC1C,UAAM,OAAO,KAAK,WAAW,IAAI,IAAI;AAErC,QAAI,SAAS,MAAM;AACf,aAAO;AAAA,IACX;AAEA,WAAO,SAAS,WAAc,KAAK,SAAS,IAAI,IAAI,KAAK;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK,MAA0C;AAC3C,WAAO,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAsB,MAAuC;AACzD,UAAM,OAAO,KAAK,WAAW,IAAI,IAAI;AAErC,QAAI,SAAS,UAAa,SAAS,MAAM;AACrC,aAAO;AAAA,IACX;AAGA,QAAI,SAAS,QAAW;AACpB,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/general",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20251013-89bb7099d",
|
|
4
4
|
"description": "Non-Matter support for Matter.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@noble/curves": "^2.0.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@matter/testing": "0.16.0-alpha.0-
|
|
39
|
+
"@matter/testing": "0.16.0-alpha.0-20251013-89bb7099d"
|
|
40
40
|
},
|
|
41
41
|
"files": [
|
|
42
42
|
"dist/**/*",
|
|
@@ -77,21 +77,20 @@ export class Environment {
|
|
|
77
77
|
|
|
78
78
|
// When null then we do not have it and also do not want to inherit from parent
|
|
79
79
|
if (mine === undefined) {
|
|
80
|
-
|
|
80
|
+
const instance = this.#parent?.maybeGet(type);
|
|
81
81
|
if (instance !== undefined && instance !== null) {
|
|
82
82
|
// Parent has it, use it
|
|
83
83
|
return instance;
|
|
84
84
|
}
|
|
85
|
+
}
|
|
85
86
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
this.set(type, instance);
|
|
93
|
-
return instance;
|
|
87
|
+
// ... otherwise try to create it. The create method must install it in the environment if needed
|
|
88
|
+
if ((type as Environmental.Factory<T>)[Environmental.create]) {
|
|
89
|
+
const instance = (type as any)[Environmental.create](this) as T;
|
|
90
|
+
if (!(instance instanceof type)) {
|
|
91
|
+
throw new InternalError(`Service creation did not produce instance of ${type.name}`);
|
|
94
92
|
}
|
|
93
|
+
return instance;
|
|
95
94
|
}
|
|
96
95
|
|
|
97
96
|
throw new UnsupportedDependencyError(`Required dependency ${type.name}`, "is not available");
|
|
@@ -107,48 +106,32 @@ export class Environment {
|
|
|
107
106
|
}
|
|
108
107
|
|
|
109
108
|
/**
|
|
110
|
-
* Remove an environmental service
|
|
109
|
+
* Remove an environmental service and block further inheritance
|
|
111
110
|
*
|
|
112
111
|
* @param type the class of the service to remove
|
|
113
112
|
* @param instance optional instance expected, if existing instance does not match it is not deleted
|
|
114
113
|
*/
|
|
115
114
|
delete(type: Environmental.ServiceType, instance?: any) {
|
|
116
|
-
|
|
115
|
+
const localInstance = this.#services?.get(type);
|
|
116
|
+
|
|
117
|
+
// Remove instance and replace by null to prevent inheritance from parent
|
|
118
|
+
this.#services?.set(type, null);
|
|
119
|
+
|
|
120
|
+
if (localInstance === undefined || localInstance === null) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (instance !== undefined && localInstance !== instance) {
|
|
117
124
|
return;
|
|
118
125
|
}
|
|
119
|
-
this.#services?.delete(type);
|
|
120
|
-
this.#parent?.delete(type);
|
|
121
126
|
|
|
122
|
-
this.#deleted.emit(type,
|
|
127
|
+
this.#deleted.emit(type, localInstance);
|
|
123
128
|
|
|
124
129
|
const serviceEvents = this.#serviceEvents.get(type);
|
|
125
130
|
if (serviceEvents) {
|
|
126
|
-
serviceEvents.deleted.emit(
|
|
131
|
+
serviceEvents.deleted.emit(localInstance);
|
|
127
132
|
}
|
|
128
133
|
}
|
|
129
134
|
|
|
130
|
-
/**
|
|
131
|
-
* Prevent this environment from automatically instantiating or retrieving a service from parent environment.
|
|
132
|
-
*
|
|
133
|
-
* @param type the class of the service to block
|
|
134
|
-
*/
|
|
135
|
-
block(type: Environmental.ServiceType) {
|
|
136
|
-
const instance = this.#services?.get(type);
|
|
137
|
-
|
|
138
|
-
if (instance !== undefined && instance !== null) {
|
|
139
|
-
this.#services?.delete(type);
|
|
140
|
-
|
|
141
|
-
this.#deleted.emit(type, instance);
|
|
142
|
-
|
|
143
|
-
const serviceEvents = this.#serviceEvents.get(type);
|
|
144
|
-
if (serviceEvents) {
|
|
145
|
-
serviceEvents.deleted.emit(instance);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
this.#services?.set(type, null);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
135
|
/**
|
|
153
136
|
* Remove and close an environmental service.
|
|
154
137
|
*/
|
|
@@ -156,8 +139,8 @@ export class Environment {
|
|
|
156
139
|
type: Environmental.ServiceType<T>,
|
|
157
140
|
): T extends { close: () => MaybePromise<void> } ? MaybePromise<void> : void {
|
|
158
141
|
const instance = this.maybeGet(type);
|
|
142
|
+
this.delete(type, instance); // delete and block inheritance
|
|
159
143
|
if (instance !== undefined) {
|
|
160
|
-
this.delete(type, instance);
|
|
161
144
|
return (instance as Partial<Destructable>).close?.() as T extends { close: () => MaybePromise<void> }
|
|
162
145
|
? MaybePromise<void>
|
|
163
146
|
: void;
|