@delta-ai/platform 0.1.1
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/action/common/action.d.ts +75 -0
- package/dist/action/common/action.d.ts.map +1 -0
- package/dist/action/common/action.js +17 -0
- package/dist/action/common/action.js.map +1 -0
- package/dist/action/common/actionCommonCategories.d.ts +9 -0
- package/dist/action/common/actionCommonCategories.d.ts.map +1 -0
- package/dist/action/common/actionCommonCategories.js +14 -0
- package/dist/action/common/actionCommonCategories.js.map +1 -0
- package/dist/commands/common/commands.d.ts +52 -0
- package/dist/commands/common/commands.d.ts.map +1 -0
- package/dist/commands/common/commands.js +79 -0
- package/dist/commands/common/commands.js.map +1 -0
- package/dist/contextkey/common/contextkey.d.ts +439 -0
- package/dist/contextkey/common/contextkey.d.ts.map +1 -0
- package/dist/contextkey/common/contextkey.js +1729 -0
- package/dist/contextkey/common/contextkey.js.map +1 -0
- package/dist/contextkey/common/scanner.d.ts +142 -0
- package/dist/contextkey/common/scanner.d.ts.map +1 -0
- package/dist/contextkey/common/scanner.js +311 -0
- package/dist/contextkey/common/scanner.js.map +1 -0
- package/dist/environment/common/argv.d.ts +173 -0
- package/dist/environment/common/argv.d.ts.map +1 -0
- package/dist/environment/common/argv.js +6 -0
- package/dist/environment/common/argv.js.map +1 -0
- package/dist/environment/common/environment.d.ts +113 -0
- package/dist/environment/common/environment.d.ts.map +1 -0
- package/dist/environment/common/environment.js +9 -0
- package/dist/environment/common/environment.js.map +1 -0
- package/dist/environment/common/environmentService.d.ts +91 -0
- package/dist/environment/common/environmentService.d.ts.map +1 -0
- package/dist/environment/common/environmentService.js +278 -0
- package/dist/environment/common/environmentService.js.map +1 -0
- package/dist/instantiation/common/descriptors.d.ts +10 -0
- package/dist/instantiation/common/descriptors.d.ts.map +1 -0
- package/dist/instantiation/common/descriptors.js +15 -0
- package/dist/instantiation/common/descriptors.js.map +1 -0
- package/dist/instantiation/common/graph.d.ts +26 -0
- package/dist/instantiation/common/graph.d.ts.map +1 -0
- package/dist/instantiation/common/graph.js +96 -0
- package/dist/instantiation/common/graph.js.map +1 -0
- package/dist/instantiation/common/instantiation.d.ts +76 -0
- package/dist/instantiation/common/instantiation.d.ts.map +1 -0
- package/dist/instantiation/common/instantiation.js +49 -0
- package/dist/instantiation/common/instantiation.js.map +1 -0
- package/dist/instantiation/common/instantiationService.d.ts +56 -0
- package/dist/instantiation/common/instantiationService.d.ts.map +1 -0
- package/dist/instantiation/common/instantiationService.js +415 -0
- package/dist/instantiation/common/instantiationService.js.map +1 -0
- package/dist/instantiation/common/serviceCollection.d.ts +10 -0
- package/dist/instantiation/common/serviceCollection.d.ts.map +1 -0
- package/dist/instantiation/common/serviceCollection.js +25 -0
- package/dist/instantiation/common/serviceCollection.js.map +1 -0
- package/dist/log/common/log.d.ts +297 -0
- package/dist/log/common/log.d.ts.map +1 -0
- package/dist/log/common/log.js +668 -0
- package/dist/log/common/log.js.map +1 -0
- package/dist/registry/common/platform.d.ts +21 -0
- package/dist/registry/common/platform.d.ts.map +1 -0
- package/dist/registry/common/platform.js +31 -0
- package/dist/registry/common/platform.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { DisposableStore } from '@delta-ai/base/common/lifecycle.js';
|
|
2
|
+
import { type SyncDescriptor0 } from './descriptors.js';
|
|
3
|
+
import { Graph } from './graph.js';
|
|
4
|
+
import { type GetLeadingNonServiceArgs, IInstantiationService, type ServiceIdentifier, type ServicesAccessor } from './instantiation.js';
|
|
5
|
+
import { ServiceCollection } from './serviceCollection.js';
|
|
6
|
+
export declare class InstantiationService implements IInstantiationService {
|
|
7
|
+
private readonly _services;
|
|
8
|
+
private readonly _strict;
|
|
9
|
+
private readonly _parent?;
|
|
10
|
+
private readonly _enableTracing;
|
|
11
|
+
readonly _serviceBrand: undefined;
|
|
12
|
+
readonly _globalGraph?: Graph<string>;
|
|
13
|
+
private _globalGraphImplicitDependency?;
|
|
14
|
+
private _isDisposed;
|
|
15
|
+
private readonly _servicesToMaybeDispose;
|
|
16
|
+
private readonly _children;
|
|
17
|
+
constructor(_services?: ServiceCollection, _strict?: boolean, _parent?: InstantiationService | undefined, _enableTracing?: boolean);
|
|
18
|
+
dispose(): void;
|
|
19
|
+
private _throwIfDisposed;
|
|
20
|
+
createChild(services: ServiceCollection, store?: DisposableStore): IInstantiationService;
|
|
21
|
+
invokeFunction<R, TS extends any[] = []>(fn: (accessor: ServicesAccessor, ...args: TS) => R, ...args: TS): R;
|
|
22
|
+
createInstance<T>(descriptor: SyncDescriptor0<T>): T;
|
|
23
|
+
createInstance<Ctor extends new (...args: any[]) => unknown, R extends InstanceType<Ctor>>(ctor: Ctor, ...args: GetLeadingNonServiceArgs<ConstructorParameters<Ctor>>): R;
|
|
24
|
+
private _createInstance;
|
|
25
|
+
private _setCreatedServiceInstance;
|
|
26
|
+
private _getServiceInstanceOrDescriptor;
|
|
27
|
+
protected _getOrCreateServiceInstance<T>(id: ServiceIdentifier<T>, _trace: Trace): T;
|
|
28
|
+
private readonly _activeInstantiations;
|
|
29
|
+
private _safeCreateAndCacheServiceInstance;
|
|
30
|
+
private _createAndCacheServiceInstance;
|
|
31
|
+
private _createServiceInstanceWithOwner;
|
|
32
|
+
private _createServiceInstance;
|
|
33
|
+
private _throwIfStrict;
|
|
34
|
+
}
|
|
35
|
+
declare const enum TraceType {
|
|
36
|
+
None = 0,
|
|
37
|
+
Creation = 1,
|
|
38
|
+
Invocation = 2,
|
|
39
|
+
Branch = 3
|
|
40
|
+
}
|
|
41
|
+
export declare class Trace {
|
|
42
|
+
readonly type: TraceType;
|
|
43
|
+
readonly name: string | null;
|
|
44
|
+
static all: Set<string>;
|
|
45
|
+
private static readonly _None;
|
|
46
|
+
static traceInvocation(_enableTracing: boolean, ctor: any): Trace;
|
|
47
|
+
static traceCreation(_enableTracing: boolean, ctor: any): Trace;
|
|
48
|
+
private static _totals;
|
|
49
|
+
private readonly _start;
|
|
50
|
+
private readonly _dep;
|
|
51
|
+
private constructor();
|
|
52
|
+
branch(id: ServiceIdentifier<any>, first: boolean): Trace;
|
|
53
|
+
stop(): void;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=instantiationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instantiationService.d.ts","sourceRoot":"","sources":["../../../src/instantiation/common/instantiationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
/* ---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*-------------------------------------------------------------------------------------------- */
|
|
5
|
+
import { GlobalIdleValue } from '@delta-ai/base/common/async.js';
|
|
6
|
+
import { illegalState } from '@delta-ai/base/common/errors.js';
|
|
7
|
+
import { Event } from '@delta-ai/base/common/event.js';
|
|
8
|
+
import { DisposableStore, dispose, isDisposable, toDisposable } from '@delta-ai/base/common/lifecycle.js';
|
|
9
|
+
import { LinkedList } from '@delta-ai/base/common/linkedList.js';
|
|
10
|
+
import { SyncDescriptor } from './descriptors.js';
|
|
11
|
+
import { Graph } from './graph.js';
|
|
12
|
+
import { IInstantiationService, _util } from './instantiation.js';
|
|
13
|
+
import { ServiceCollection } from './serviceCollection.js';
|
|
14
|
+
// TRACING
|
|
15
|
+
const _enableAllTracing = false;
|
|
16
|
+
class CyclicDependencyError extends Error {
|
|
17
|
+
constructor(graph) {
|
|
18
|
+
super('cyclic dependency between services');
|
|
19
|
+
this.message = graph.findCycleSlow() ?? `UNABLE to detect cycle, dumping graph: \n${graph.toString()}`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class InstantiationService {
|
|
23
|
+
_services;
|
|
24
|
+
_strict;
|
|
25
|
+
_parent;
|
|
26
|
+
_enableTracing;
|
|
27
|
+
_globalGraph;
|
|
28
|
+
_globalGraphImplicitDependency;
|
|
29
|
+
_isDisposed = false;
|
|
30
|
+
_servicesToMaybeDispose = new Set();
|
|
31
|
+
_children = new Set();
|
|
32
|
+
constructor(_services = new ServiceCollection(), _strict = false, _parent, _enableTracing = _enableAllTracing) {
|
|
33
|
+
this._services = _services;
|
|
34
|
+
this._strict = _strict;
|
|
35
|
+
this._parent = _parent;
|
|
36
|
+
this._enableTracing = _enableTracing;
|
|
37
|
+
this._services.set(IInstantiationService, this);
|
|
38
|
+
this._globalGraph = _enableTracing ? _parent?._globalGraph ?? new Graph(e => e) : undefined;
|
|
39
|
+
}
|
|
40
|
+
dispose() {
|
|
41
|
+
if (!this._isDisposed) {
|
|
42
|
+
this._isDisposed = true;
|
|
43
|
+
// dispose all child services
|
|
44
|
+
dispose(this._children);
|
|
45
|
+
this._children.clear();
|
|
46
|
+
// dispose all services created by this service
|
|
47
|
+
for (const candidate of this._servicesToMaybeDispose) {
|
|
48
|
+
if (isDisposable(candidate)) {
|
|
49
|
+
candidate.dispose();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
this._servicesToMaybeDispose.clear();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
_throwIfDisposed() {
|
|
56
|
+
if (this._isDisposed) {
|
|
57
|
+
throw new Error('InstantiationService has been disposed');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
createChild(services, store) {
|
|
61
|
+
this._throwIfDisposed();
|
|
62
|
+
const that = this;
|
|
63
|
+
const result = new class extends InstantiationService {
|
|
64
|
+
dispose() {
|
|
65
|
+
that._children.delete(result);
|
|
66
|
+
super.dispose();
|
|
67
|
+
}
|
|
68
|
+
}(services, this._strict, this, this._enableTracing);
|
|
69
|
+
this._children.add(result);
|
|
70
|
+
store?.add(result);
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
invokeFunction(fn, ...args) {
|
|
74
|
+
this._throwIfDisposed();
|
|
75
|
+
const _trace = Trace.traceInvocation(this._enableTracing, fn);
|
|
76
|
+
let _done = false;
|
|
77
|
+
try {
|
|
78
|
+
const accessor = {
|
|
79
|
+
get: (id) => {
|
|
80
|
+
if (_done) {
|
|
81
|
+
throw illegalState('service accessor is only valid during the invocation of its target method');
|
|
82
|
+
}
|
|
83
|
+
const result = this._getOrCreateServiceInstance(id, _trace);
|
|
84
|
+
if (!result) {
|
|
85
|
+
this._throwIfStrict(`[invokeFunction] unknown service '${id}'`, false);
|
|
86
|
+
}
|
|
87
|
+
return result;
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
return fn(accessor, ...args);
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
_done = true;
|
|
94
|
+
_trace.stop();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
createInstance(ctorOrDescriptor, ...rest) {
|
|
98
|
+
this._throwIfDisposed();
|
|
99
|
+
let _trace;
|
|
100
|
+
let result;
|
|
101
|
+
if (ctorOrDescriptor instanceof SyncDescriptor) {
|
|
102
|
+
_trace = Trace.traceCreation(this._enableTracing, ctorOrDescriptor.ctor);
|
|
103
|
+
result = this._createInstance(ctorOrDescriptor.ctor, ctorOrDescriptor.staticArguments.concat(rest), _trace);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
_trace = Trace.traceCreation(this._enableTracing, ctorOrDescriptor);
|
|
107
|
+
result = this._createInstance(ctorOrDescriptor, rest, _trace);
|
|
108
|
+
}
|
|
109
|
+
_trace.stop();
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
_createInstance(ctor, args = [], _trace) {
|
|
113
|
+
// arguments defined by service decorators
|
|
114
|
+
const serviceDependencies = _util.getServiceDependencies(ctor).sort((a, b) => a.index - b.index);
|
|
115
|
+
const serviceArgs = [];
|
|
116
|
+
for (const dependency of serviceDependencies) {
|
|
117
|
+
const service = this._getOrCreateServiceInstance(dependency.id, _trace);
|
|
118
|
+
if (!service) {
|
|
119
|
+
this._throwIfStrict(`[createInstance] ${ctor.name} depends on UNKNOWN service ${dependency.id}.`, false);
|
|
120
|
+
}
|
|
121
|
+
serviceArgs.push(service);
|
|
122
|
+
}
|
|
123
|
+
const firstServiceArgPos = serviceDependencies.length > 0 ? serviceDependencies[0].index : args.length;
|
|
124
|
+
// check for argument mismatches, adjust static args if needed
|
|
125
|
+
if (args.length !== firstServiceArgPos) {
|
|
126
|
+
console.trace(`[createInstance] First service dependency of ${ctor.name} at position ${firstServiceArgPos + 1} conflicts with ${args.length} static arguments`);
|
|
127
|
+
const delta = firstServiceArgPos - args.length;
|
|
128
|
+
if (delta > 0) {
|
|
129
|
+
args = args.concat(new Array(delta));
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
args = args.slice(0, firstServiceArgPos);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// now create the instance
|
|
136
|
+
return Reflect.construct(ctor, args.concat(serviceArgs));
|
|
137
|
+
}
|
|
138
|
+
_setCreatedServiceInstance(id, instance) {
|
|
139
|
+
if (this._services.get(id) instanceof SyncDescriptor) {
|
|
140
|
+
this._services.set(id, instance);
|
|
141
|
+
}
|
|
142
|
+
else if (this._parent) {
|
|
143
|
+
this._parent._setCreatedServiceInstance(id, instance);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
throw new Error('illegalState - setting UNKNOWN service instance');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
_getServiceInstanceOrDescriptor(id) {
|
|
150
|
+
const instanceOrDesc = this._services.get(id);
|
|
151
|
+
if (!instanceOrDesc && this._parent) {
|
|
152
|
+
return this._parent._getServiceInstanceOrDescriptor(id);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
return instanceOrDesc;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
_getOrCreateServiceInstance(id, _trace) {
|
|
159
|
+
if (this._globalGraph && this._globalGraphImplicitDependency) {
|
|
160
|
+
this._globalGraph.insertEdge(this._globalGraphImplicitDependency, String(id));
|
|
161
|
+
}
|
|
162
|
+
const thing = this._getServiceInstanceOrDescriptor(id);
|
|
163
|
+
if (thing instanceof SyncDescriptor) {
|
|
164
|
+
return this._safeCreateAndCacheServiceInstance(id, thing, _trace.branch(id, true));
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
_trace.branch(id, false);
|
|
168
|
+
return thing;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
_activeInstantiations = new Set();
|
|
172
|
+
_safeCreateAndCacheServiceInstance(id, desc, _trace) {
|
|
173
|
+
if (this._activeInstantiations.has(id)) {
|
|
174
|
+
throw new Error(`illegal state - RECURSIVELY instantiating service '${id}'`);
|
|
175
|
+
}
|
|
176
|
+
this._activeInstantiations.add(id);
|
|
177
|
+
try {
|
|
178
|
+
return this._createAndCacheServiceInstance(id, desc, _trace);
|
|
179
|
+
}
|
|
180
|
+
finally {
|
|
181
|
+
this._activeInstantiations.delete(id);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
_createAndCacheServiceInstance(id, desc, _trace) {
|
|
185
|
+
const graph = new Graph(data => data.id.toString());
|
|
186
|
+
let cycleCount = 0;
|
|
187
|
+
const stack = [{ id, desc, _trace }];
|
|
188
|
+
const seen = new Set();
|
|
189
|
+
while (stack.length) {
|
|
190
|
+
const item = stack.pop();
|
|
191
|
+
if (seen.has(String(item.id))) {
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
seen.add(String(item.id));
|
|
195
|
+
graph.lookupOrInsertNode(item);
|
|
196
|
+
// a weak but working heuristic for cycle checks
|
|
197
|
+
if (cycleCount++ > 1000) {
|
|
198
|
+
throw new CyclicDependencyError(graph);
|
|
199
|
+
}
|
|
200
|
+
// check all dependencies for existence and if they need to be created first
|
|
201
|
+
for (const dependency of _util.getServiceDependencies(item.desc.ctor)) {
|
|
202
|
+
const instanceOrDesc = this._getServiceInstanceOrDescriptor(dependency.id);
|
|
203
|
+
if (!instanceOrDesc) {
|
|
204
|
+
this._throwIfStrict(`[createInstance] ${id} depends on ${dependency.id} which is NOT registered.`, true);
|
|
205
|
+
}
|
|
206
|
+
// take note of all service dependencies
|
|
207
|
+
this._globalGraph?.insertEdge(String(item.id), String(dependency.id));
|
|
208
|
+
if (instanceOrDesc instanceof SyncDescriptor) {
|
|
209
|
+
const d = { id: dependency.id, desc: instanceOrDesc, _trace: item._trace.branch(dependency.id, true) };
|
|
210
|
+
graph.insertEdge(item, d);
|
|
211
|
+
stack.push(d);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
while (true) {
|
|
216
|
+
const roots = graph.roots();
|
|
217
|
+
// if there is no more roots but still
|
|
218
|
+
// nodes in the graph we have a cycle
|
|
219
|
+
if (roots.length === 0) {
|
|
220
|
+
if (!graph.isEmpty()) {
|
|
221
|
+
throw new CyclicDependencyError(graph);
|
|
222
|
+
}
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
for (const { data } of roots) {
|
|
226
|
+
// Repeat the check for this still being a service sync descriptor. That's because
|
|
227
|
+
// instantiating a dependency might have side-effect and recursively trigger instantiation
|
|
228
|
+
// so that some dependencies are now fullfilled already.
|
|
229
|
+
const instanceOrDesc = this._getServiceInstanceOrDescriptor(data.id);
|
|
230
|
+
if (instanceOrDesc instanceof SyncDescriptor) {
|
|
231
|
+
// create instance and overwrite the service collections
|
|
232
|
+
const instance = this._createServiceInstanceWithOwner(data.id, data.desc.ctor, data.desc.staticArguments, data.desc.supportsDelayedInstantiation, data._trace);
|
|
233
|
+
this._setCreatedServiceInstance(data.id, instance);
|
|
234
|
+
}
|
|
235
|
+
graph.removeNode(data);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return this._getServiceInstanceOrDescriptor(id);
|
|
239
|
+
}
|
|
240
|
+
_createServiceInstanceWithOwner(id, ctor, args = [], supportsDelayedInstantiation, _trace) {
|
|
241
|
+
if (this._services.get(id) instanceof SyncDescriptor) {
|
|
242
|
+
return this._createServiceInstance(id, ctor, args, supportsDelayedInstantiation, _trace, this._servicesToMaybeDispose);
|
|
243
|
+
}
|
|
244
|
+
else if (this._parent) {
|
|
245
|
+
return this._parent._createServiceInstanceWithOwner(id, ctor, args, supportsDelayedInstantiation, _trace);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
throw new Error(`illegalState - creating UNKNOWN service instance ${ctor.name}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
_createServiceInstance(id, ctor, args = [], supportsDelayedInstantiation, _trace, disposeBucket) {
|
|
252
|
+
if (!supportsDelayedInstantiation) {
|
|
253
|
+
// eager instantiation
|
|
254
|
+
const result = this._createInstance(ctor, args, _trace);
|
|
255
|
+
disposeBucket.add(result);
|
|
256
|
+
return result;
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
const child = new InstantiationService(undefined, this._strict, this, this._enableTracing);
|
|
260
|
+
child._globalGraphImplicitDependency = String(id);
|
|
261
|
+
// Return a proxy object that's backed by an idle value. That
|
|
262
|
+
// strategy is to instantiate services in our idle time or when actually
|
|
263
|
+
// needed but not when injected into a consumer
|
|
264
|
+
// return "empty events" when the service isn't instantiated yet
|
|
265
|
+
const earlyListeners = new Map();
|
|
266
|
+
const idle = new GlobalIdleValue(() => {
|
|
267
|
+
const result = child._createInstance(ctor, args, _trace);
|
|
268
|
+
// early listeners that we kept are now being subscribed to
|
|
269
|
+
// the real service
|
|
270
|
+
for (const [key, values] of earlyListeners) {
|
|
271
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
272
|
+
const candidate = result[key];
|
|
273
|
+
if (typeof candidate === 'function') {
|
|
274
|
+
for (const value of values) {
|
|
275
|
+
value.disposable = candidate.apply(result, value.listener);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
earlyListeners.clear();
|
|
280
|
+
disposeBucket.add(result);
|
|
281
|
+
return result;
|
|
282
|
+
});
|
|
283
|
+
return new Proxy(Object.create(null), {
|
|
284
|
+
get(target, key) {
|
|
285
|
+
if (!idle.isInitialized) {
|
|
286
|
+
// looks like an event
|
|
287
|
+
if (typeof key === 'string' && (key.startsWith('onDid') || key.startsWith('onWill'))) {
|
|
288
|
+
let list = earlyListeners.get(key);
|
|
289
|
+
if (!list) {
|
|
290
|
+
list = new LinkedList();
|
|
291
|
+
earlyListeners.set(key, list);
|
|
292
|
+
}
|
|
293
|
+
const event = (callback, thisArg, disposables) => {
|
|
294
|
+
if (idle.isInitialized) {
|
|
295
|
+
return idle.value[key](callback, thisArg, disposables);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
const entry = { listener: [callback, thisArg, disposables], disposable: undefined };
|
|
299
|
+
const rm = list.push(entry);
|
|
300
|
+
const result = toDisposable(() => {
|
|
301
|
+
rm();
|
|
302
|
+
entry.disposable?.dispose();
|
|
303
|
+
});
|
|
304
|
+
return result;
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
return event;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// value already exists
|
|
311
|
+
if (key in target) {
|
|
312
|
+
return target[key];
|
|
313
|
+
}
|
|
314
|
+
// create value
|
|
315
|
+
const obj = idle.value;
|
|
316
|
+
let prop = obj[key];
|
|
317
|
+
if (typeof prop !== 'function') {
|
|
318
|
+
return prop;
|
|
319
|
+
}
|
|
320
|
+
prop = prop.bind(obj);
|
|
321
|
+
target[key] = prop;
|
|
322
|
+
return prop;
|
|
323
|
+
},
|
|
324
|
+
set(_target, p, value) {
|
|
325
|
+
idle.value[p] = value;
|
|
326
|
+
return true;
|
|
327
|
+
},
|
|
328
|
+
getPrototypeOf(_target) {
|
|
329
|
+
return ctor.prototype;
|
|
330
|
+
},
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
_throwIfStrict(msg, printWarning) {
|
|
335
|
+
if (printWarning) {
|
|
336
|
+
console.warn(msg);
|
|
337
|
+
}
|
|
338
|
+
if (this._strict) {
|
|
339
|
+
throw new Error(msg);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
// #region -- tracing ---
|
|
344
|
+
var TraceType;
|
|
345
|
+
(function (TraceType) {
|
|
346
|
+
TraceType[TraceType["None"] = 0] = "None";
|
|
347
|
+
TraceType[TraceType["Creation"] = 1] = "Creation";
|
|
348
|
+
TraceType[TraceType["Invocation"] = 2] = "Invocation";
|
|
349
|
+
TraceType[TraceType["Branch"] = 3] = "Branch";
|
|
350
|
+
})(TraceType || (TraceType = {}));
|
|
351
|
+
export class Trace {
|
|
352
|
+
type;
|
|
353
|
+
name;
|
|
354
|
+
static all = new Set();
|
|
355
|
+
static _None = new class extends Trace {
|
|
356
|
+
constructor() {
|
|
357
|
+
super(TraceType.None, null);
|
|
358
|
+
}
|
|
359
|
+
stop() { }
|
|
360
|
+
branch() {
|
|
361
|
+
return this;
|
|
362
|
+
}
|
|
363
|
+
}();
|
|
364
|
+
static traceInvocation(_enableTracing, ctor) {
|
|
365
|
+
return !_enableTracing ? Trace._None : new Trace(TraceType.Invocation, ctor.name || new Error().stack.split('\n').slice(3, 4).join('\n'));
|
|
366
|
+
}
|
|
367
|
+
static traceCreation(_enableTracing, ctor) {
|
|
368
|
+
return !_enableTracing ? Trace._None : new Trace(TraceType.Creation, ctor.name);
|
|
369
|
+
}
|
|
370
|
+
static _totals = 0;
|
|
371
|
+
_start = Date.now();
|
|
372
|
+
_dep = [];
|
|
373
|
+
constructor(type, name) {
|
|
374
|
+
this.type = type;
|
|
375
|
+
this.name = name;
|
|
376
|
+
}
|
|
377
|
+
branch(id, first) {
|
|
378
|
+
const child = new Trace(TraceType.Branch, id.toString());
|
|
379
|
+
this._dep.push([id, first, child]);
|
|
380
|
+
return child;
|
|
381
|
+
}
|
|
382
|
+
stop() {
|
|
383
|
+
const dur = Date.now() - this._start;
|
|
384
|
+
Trace._totals += dur;
|
|
385
|
+
let causedCreation = false;
|
|
386
|
+
function printChild(n, trace) {
|
|
387
|
+
const res = [];
|
|
388
|
+
const prefix = new Array(n + 1).join('\t');
|
|
389
|
+
for (const [id, first, child] of trace._dep) {
|
|
390
|
+
if (first && child) {
|
|
391
|
+
causedCreation = true;
|
|
392
|
+
res.push(`${prefix}CREATES -> ${id}`);
|
|
393
|
+
const nested = printChild(n + 1, child);
|
|
394
|
+
if (nested) {
|
|
395
|
+
res.push(nested);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
res.push(`${prefix}uses -> ${id}`);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
return res.join('\n');
|
|
403
|
+
}
|
|
404
|
+
const lines = [
|
|
405
|
+
`${this.type === TraceType.Creation ? 'CREATE' : 'CALL'} ${this.name}`,
|
|
406
|
+
`${printChild(1, this)}`,
|
|
407
|
+
`DONE, took ${dur.toFixed(2)}ms (grand total ${Trace._totals.toFixed(2)}ms)`,
|
|
408
|
+
];
|
|
409
|
+
if (dur > 2 || causedCreation) {
|
|
410
|
+
Trace.all.add(lines.join('\n'));
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
// #endregion
|
|
415
|
+
//# sourceMappingURL=instantiationService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instantiationService.js","sourceRoot":"","sources":["../../../src/instantiation/common/instantiationService.ts"],"names":[],"mappings":"AAAA;;;iGAGiG;AAEjG,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,OAAO,EAAoB,YAAY,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAC5H,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAwB,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAiC,qBAAqB,EAAiD,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,UAAU;AACV,MAAM,iBAAiB,GAAG,KAAK,CAE7B;AAEF,MAAM,qBAAsB,SAAQ,KAAK;IACrC,YAAY,KAAiB;QACzB,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,4CAA4C,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC3G,CAAC;CACJ;AAED,MAAM,OAAO,oBAAoB;IAWR;IACA;IACA;IACA;IAXZ,YAAY,CAAiB;IAC9B,8BAA8B,CAAU;IAExC,WAAW,GAAG,KAAK,CAAC;IACX,uBAAuB,GAAG,IAAI,GAAG,EAAO,CAAC;IACzC,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE7D,YACqB,YAA+B,IAAI,iBAAiB,EAAE,EACtD,UAAmB,KAAK,EACxB,OAA8B,EAC9B,iBAA0B,iBAAiB;QAH3C,cAAS,GAAT,SAAS,CAA6C;QACtD,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAuB;QAC9B,mBAAc,GAAd,cAAc,CAA6B;QAE5D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,CAAC;IAED,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,6BAA6B;YAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAEvB,+CAA+C;YAC/C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACnD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1B,SAAS,CAAC,OAAO,EAAE,CAAC;gBACxB,CAAC;YACL,CAAC;YACD,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC;IACL,CAAC;IAEO,gBAAgB;QACpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAED,WAAW,CAAC,QAA2B,EAAE,KAAuB;QAC5D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,IAAI,KAAM,SAAQ,oBAAoB;YACxC,OAAO;gBACZ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,KAAK,CAAC,OAAO,EAAE,CAAC;YACpB,CAAC;SACJ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE3B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,cAAc,CAA2B,EAAkD,EAAE,GAAG,IAAQ;QACpG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC;YACD,MAAM,QAAQ,GAAqB;gBAC/B,GAAG,EAAE,CAAI,EAAwB,EAAE,EAAE;oBACjC,IAAI,KAAK,EAAE,CAAC;wBACR,MAAM,YAAY,CAAC,2EAA2E,CAAC,CAAC;oBACpG,CAAC;oBAED,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oBAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;wBACV,IAAI,CAAC,cAAc,CAAC,qCAAqC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC3E,CAAC;oBACD,OAAO,MAAM,CAAC;gBAClB,CAAC;aACJ,CAAC;YACF,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACP,KAAK,GAAG,IAAI,CAAC;YACb,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;IAID,cAAc,CAAC,gBAA2C,EAAE,GAAG,IAAe;QAC1E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAe,CAAC;QACpB,IAAI,gBAAgB,YAAY,cAAc,EAAE,CAAC;YAC7C,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzE,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAChH,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;YACpE,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,eAAe,CAAI,IAAS,EAAE,OAAkB,EAAE,EAAE,MAAa;QACrE,0CAA0C;QAC1C,MAAM,mBAAmB,GAAG,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACjG,MAAM,WAAW,GAAc,EAAE,CAAC;QAClC,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,IAAI,CAAC,cAAc,CAAC,oBAAoB,IAAI,CAAC,IAAI,+BAA+B,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7G,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAEvG,8DAA8D;QAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,gDAAgD,IAAI,CAAC,IAAI,gBAAgB,kBAAkB,GAAG,CAAC,mBAAmB,IAAI,CAAC,MAAM,mBAAmB,CAAC,CAAC;YAEhK,MAAM,KAAK,GAAG,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC;YAC/C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACZ,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACJ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,OAAO,OAAO,CAAC,SAAS,CAAS,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,CAAC;IAEO,0BAA0B,CAAI,EAAwB,EAAE,QAAW;QACvE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,cAAc,EAAE,CAAC;YACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvE,CAAC;IACL,CAAC;IAEO,+BAA+B,CAAI,EAAwB;QAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,OAAO,cAAc,CAAC;QAC1B,CAAC;IACL,CAAC;IAES,2BAA2B,CAAI,EAAwB,EAAE,MAAa;QAC5E,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,8BAA8B,EAAE,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,kCAAkC,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEgB,qBAAqB,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEnE,kCAAkC,CAAI,EAAwB,EAAE,IAAuB,EAAE,MAAa;QAC1G,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,sDAAsD,EAAE,GAAG,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,8BAA8B,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACjE,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAEO,8BAA8B,CAAI,EAAwB,EAAE,IAAuB,EAAE,MAAa;QAEtG,MAAM,KAAK,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE5D,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;YAE1B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACb,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAE1B,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAE/B,gDAAgD;YAChD,IAAI,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC;gBACtB,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC3C,CAAC;YAED,4EAA4E;YAC5E,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,MAAM,cAAc,GAAG,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC3E,IAAI,CAAC,cAAc,EAAE,CAAC;oBAClB,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,eAAe,UAAU,CAAC,EAAE,2BAA2B,EAAE,IAAI,CAAC,CAAC;gBAC7G,CAAC;gBAED,wCAAwC;gBACxC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEtE,IAAI,cAAc,YAAY,cAAc,EAAE,CAAC;oBAC3C,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;oBACvG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC1B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAE5B,sCAAsC;YACtC,qCAAqC;YACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;oBACnB,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAC3C,CAAC;gBACD,MAAM;YACV,CAAC;YAED,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;gBAC3B,kFAAkF;gBAClF,0FAA0F;gBAC1F,wDAAwD;gBACxD,MAAM,cAAc,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrE,IAAI,cAAc,YAAY,cAAc,EAAE,CAAC;oBAC3C,wDAAwD;oBACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC/J,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACvD,CAAC;gBACD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;QACD,OAAW,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAEO,+BAA+B,CAAI,EAAwB,EAAE,IAAS,EAAE,OAAkB,EAAE,EAAE,4BAAqC,EAAE,MAAa;QACtJ,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,cAAc,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC3H,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,CAAC,CAAC;QAC9G,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,oDAAoD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAI,EAAwB,EAAE,IAAS,EAAE,OAAkB,EAAE,EAAE,4BAAqC,EAAE,MAAa,EAAE,aAAuB;QACtK,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAChC,sBAAsB;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3D,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,MAAM,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3F,KAAK,CAAC,8BAA8B,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YAOlD,6DAA6D;YAC7D,wEAAwE;YACxE,+CAA+C;YAE/C,gEAAgE;YAChE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAwC,CAAC;YAEvE,MAAM,IAAI,GAAG,IAAI,eAAe,CAAM,GAAG,EAAE;gBACvC,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAE5D,2DAA2D;gBAC3D,mBAAmB;gBACnB,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;oBACzC,mDAAmD;oBACnD,MAAM,SAAS,GAAqB,MAAO,CAAC,GAAG,CAAC,CAAC;oBACjD,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;wBAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;4BACzB,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;wBAC/D,CAAC;oBACL,CAAC;gBACL,CAAC;gBACD,cAAc,CAAC,KAAK,EAAE,CAAC;gBACvB,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1B,OAAO,MAAM,CAAC;YAClB,CAAC,CAAC,CAAC;YACH,OAAW,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACtC,GAAG,CAAC,MAAW,EAAE,GAAgB;oBAC7B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;wBACtB,sBAAsB;wBACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;4BACnF,IAAI,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;4BACnC,IAAI,CAAC,IAAI,EAAE,CAAC;gCACR,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;gCACxB,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;4BAClC,CAAC;4BACD,MAAM,KAAK,GAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;gCACzD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oCACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;gCAC3D,CAAC;qCAAM,CAAC;oCACJ,MAAM,KAAK,GAAqB,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;oCACtG,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oCAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE;wCAC7B,EAAE,EAAE,CAAC;wCACL,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;oCAChC,CAAC,CAAC,CAAC;oCACH,OAAO,MAAM,CAAC;gCAClB,CAAC;4BACL,CAAC,CAAC;4BACF,OAAO,KAAK,CAAC;wBACjB,CAAC;oBACL,CAAC;oBAED,uBAAuB;oBACvB,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;wBAChB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;oBACvB,CAAC;oBAED,eAAe;oBACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;oBACvB,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;oBACpB,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;wBAC7B,OAAO,IAAI,CAAC;oBAChB,CAAC;oBACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBACnB,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,GAAG,CAAC,OAAU,EAAE,CAAc,EAAE,KAAU;oBACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;oBACtB,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,cAAc,CAAC,OAAU;oBACrB,OAAO,IAAI,CAAC,SAAS,CAAC;gBAC1B,CAAC;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,GAAW,EAAE,YAAqB;QACrD,IAAI,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;CACJ;AAED,yBAAyB;AAEzB,IAAW,SAKV;AALD,WAAW,SAAS;IAChB,yCAAQ,CAAA;IACR,iDAAY,CAAA;IACZ,qDAAc,CAAA;IACd,6CAAU,CAAA;AACd,CAAC,EALU,SAAS,KAAT,SAAS,QAKnB;AAED,MAAM,OAAO,KAAK;IA2BD;IACA;IA3Bb,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvB,MAAM,CAAU,KAAK,GAAG,IAAI,KAAM,SAAQ,KAAK;QACnD;YACI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QAEQ,IAAI,KAAK,CAAC;QACV,MAAM;YACX,OAAO,IAAI,CAAC;QAChB,CAAC;KACJ,EAAE,CAAC;IAEJ,MAAM,CAAC,eAAe,CAAC,cAAuB,EAAE,IAAS;QACrD,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/I,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,cAAuB,EAAE,IAAS;QACnD,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC;IAEO,MAAM,CAAC,OAAO,GAAW,CAAC,CAAC;IAClB,MAAM,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5B,IAAI,GAAgD,EAAE,CAAC;IAExE,YACa,IAAe,EACf,IAAmB;QADnB,SAAI,GAAJ,IAAI,CAAW;QACf,SAAI,GAAJ,IAAI,CAAe;IAC5B,CAAC;IAEL,MAAM,CAAC,EAA0B,EAAE,KAAc;QAC7C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI;QACA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACrC,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC;QAErB,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,SAAS,UAAU,CAAC,CAAS,EAAE,KAAY;YACvC,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC1C,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;oBACjB,cAAc,GAAG,IAAI,CAAC;oBACtB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,cAAc,EAAE,EAAE,CAAC,CAAC;oBACtC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBACxC,IAAI,MAAM,EAAE,CAAC;wBACT,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACrB,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,WAAW,EAAE,EAAE,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC;YACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,KAAK,GAAG;YACV,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;YACtE,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE;YACxB,cAAc,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SAC/E,CAAC;QAEF,IAAI,GAAG,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;;AAGL,aAAa"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ServiceIdentifier } from './instantiation.js';
|
|
2
|
+
import { SyncDescriptor } from './descriptors.js';
|
|
3
|
+
export declare class ServiceCollection {
|
|
4
|
+
private _entries;
|
|
5
|
+
constructor(...entries: [ServiceIdentifier<any>, any][]);
|
|
6
|
+
set<T>(id: ServiceIdentifier<T>, instanceOrDescriptor: T | SyncDescriptor<T>): T | SyncDescriptor<T>;
|
|
7
|
+
has(id: ServiceIdentifier<any>): boolean;
|
|
8
|
+
get<T>(id: ServiceIdentifier<T>): T | SyncDescriptor<T>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=serviceCollection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceCollection.d.ts","sourceRoot":"","sources":["../../../src/instantiation/common/serviceCollection.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBAAa,iBAAiB;IAE7B,OAAO,CAAC,QAAQ,CAA0C;gBAE9C,GAAG,OAAO,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE;IAMvD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAMpG,GAAG,CAAC,EAAE,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,OAAO;IAIxC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;CAGvD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { SyncDescriptor } from './descriptors.js';
|
|
6
|
+
export class ServiceCollection {
|
|
7
|
+
_entries = new Map();
|
|
8
|
+
constructor(...entries) {
|
|
9
|
+
for (const [id, service] of entries) {
|
|
10
|
+
this.set(id, service);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
set(id, instanceOrDescriptor) {
|
|
14
|
+
const result = this._entries.get(id);
|
|
15
|
+
this._entries.set(id, instanceOrDescriptor);
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
has(id) {
|
|
19
|
+
return this._entries.has(id);
|
|
20
|
+
}
|
|
21
|
+
get(id) {
|
|
22
|
+
return this._entries.get(id);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=serviceCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceCollection.js","sourceRoot":"","sources":["../../../src/instantiation/common/serviceCollection.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,iBAAiB;IAErB,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IAE1D,YAAY,GAAG,OAAwC;QACtD,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACvB,CAAC;IACF,CAAC;IAED,GAAG,CAAI,EAAwB,EAAE,oBAA2C;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IACf,CAAC;IAED,GAAG,CAAC,EAA0B;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAI,EAAwB;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;CACD"}
|