@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.
@@ -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;IA6B5D;;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;IAetD;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW;IAiBrC;;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"}
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
- let instance = this.#parent?.maybeGet(type);
77
+ const instance = this.#parent?.maybeGet(type);
78
78
  if (instance !== void 0 && instance !== null) {
79
79
  return instance;
80
80
  }
81
- if (type[import_Environmental.Environmental.create]) {
82
- instance = type[import_Environmental.Environmental.create](this);
83
- if (!(instance instanceof type)) {
84
- throw new import_MatterError.InternalError(`Service creation did not produce instance of ${type.name}`);
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
- if (instance !== void 0 && this.#services?.get(type) !== instance) {
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
- this.#services?.delete(type);
111
- this.#parent?.delete(type);
112
- this.#deleted.emit(type, instance);
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(instance);
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": "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",
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;IA6B5D;;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;IAetD;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW;IAiBrC;;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"}
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
- let instance = this.#parent?.maybeGet(type);
54
+ const instance = this.#parent?.maybeGet(type);
55
55
  if (instance !== void 0 && instance !== null) {
56
56
  return instance;
57
57
  }
58
- if (type[Environmental.create]) {
59
- instance = type[Environmental.create](this);
60
- if (!(instance instanceof type)) {
61
- throw new InternalError(`Service creation did not produce instance of ${type.name}`);
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
- if (instance !== void 0 && this.#services?.get(type) !== instance) {
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
- this.#services?.delete(type);
88
- this.#parent?.delete(type);
89
- this.#deleted.emit(type, instance);
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(instance);
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": "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",
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-20251011-d8942d7d5",
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-20251011-d8942d7d5"
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
- let instance = this.#parent?.maybeGet(type);
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
- // ... otherwise try to create it
87
- if ((type as Environmental.Factory<T>)[Environmental.create]) {
88
- instance = (type as any)[Environmental.create](this) as T;
89
- if (!(instance instanceof type)) {
90
- throw new InternalError(`Service creation did not produce instance of ${type.name}`);
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
- if (instance !== undefined && this.#services?.get(type) !== instance) {
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, instance);
127
+ this.#deleted.emit(type, localInstance);
123
128
 
124
129
  const serviceEvents = this.#serviceEvents.get(type);
125
130
  if (serviceEvents) {
126
- serviceEvents.deleted.emit(instance);
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;