@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.
Files changed (61) hide show
  1. package/dist/action/common/action.d.ts +75 -0
  2. package/dist/action/common/action.d.ts.map +1 -0
  3. package/dist/action/common/action.js +17 -0
  4. package/dist/action/common/action.js.map +1 -0
  5. package/dist/action/common/actionCommonCategories.d.ts +9 -0
  6. package/dist/action/common/actionCommonCategories.d.ts.map +1 -0
  7. package/dist/action/common/actionCommonCategories.js +14 -0
  8. package/dist/action/common/actionCommonCategories.js.map +1 -0
  9. package/dist/commands/common/commands.d.ts +52 -0
  10. package/dist/commands/common/commands.d.ts.map +1 -0
  11. package/dist/commands/common/commands.js +79 -0
  12. package/dist/commands/common/commands.js.map +1 -0
  13. package/dist/contextkey/common/contextkey.d.ts +439 -0
  14. package/dist/contextkey/common/contextkey.d.ts.map +1 -0
  15. package/dist/contextkey/common/contextkey.js +1729 -0
  16. package/dist/contextkey/common/contextkey.js.map +1 -0
  17. package/dist/contextkey/common/scanner.d.ts +142 -0
  18. package/dist/contextkey/common/scanner.d.ts.map +1 -0
  19. package/dist/contextkey/common/scanner.js +311 -0
  20. package/dist/contextkey/common/scanner.js.map +1 -0
  21. package/dist/environment/common/argv.d.ts +173 -0
  22. package/dist/environment/common/argv.d.ts.map +1 -0
  23. package/dist/environment/common/argv.js +6 -0
  24. package/dist/environment/common/argv.js.map +1 -0
  25. package/dist/environment/common/environment.d.ts +113 -0
  26. package/dist/environment/common/environment.d.ts.map +1 -0
  27. package/dist/environment/common/environment.js +9 -0
  28. package/dist/environment/common/environment.js.map +1 -0
  29. package/dist/environment/common/environmentService.d.ts +91 -0
  30. package/dist/environment/common/environmentService.d.ts.map +1 -0
  31. package/dist/environment/common/environmentService.js +278 -0
  32. package/dist/environment/common/environmentService.js.map +1 -0
  33. package/dist/instantiation/common/descriptors.d.ts +10 -0
  34. package/dist/instantiation/common/descriptors.d.ts.map +1 -0
  35. package/dist/instantiation/common/descriptors.js +15 -0
  36. package/dist/instantiation/common/descriptors.js.map +1 -0
  37. package/dist/instantiation/common/graph.d.ts +26 -0
  38. package/dist/instantiation/common/graph.d.ts.map +1 -0
  39. package/dist/instantiation/common/graph.js +96 -0
  40. package/dist/instantiation/common/graph.js.map +1 -0
  41. package/dist/instantiation/common/instantiation.d.ts +76 -0
  42. package/dist/instantiation/common/instantiation.d.ts.map +1 -0
  43. package/dist/instantiation/common/instantiation.js +49 -0
  44. package/dist/instantiation/common/instantiation.js.map +1 -0
  45. package/dist/instantiation/common/instantiationService.d.ts +56 -0
  46. package/dist/instantiation/common/instantiationService.d.ts.map +1 -0
  47. package/dist/instantiation/common/instantiationService.js +415 -0
  48. package/dist/instantiation/common/instantiationService.js.map +1 -0
  49. package/dist/instantiation/common/serviceCollection.d.ts +10 -0
  50. package/dist/instantiation/common/serviceCollection.d.ts.map +1 -0
  51. package/dist/instantiation/common/serviceCollection.js +25 -0
  52. package/dist/instantiation/common/serviceCollection.js.map +1 -0
  53. package/dist/log/common/log.d.ts +297 -0
  54. package/dist/log/common/log.d.ts.map +1 -0
  55. package/dist/log/common/log.js +668 -0
  56. package/dist/log/common/log.js.map +1 -0
  57. package/dist/registry/common/platform.d.ts +21 -0
  58. package/dist/registry/common/platform.d.ts.map +1 -0
  59. package/dist/registry/common/platform.js +31 -0
  60. package/dist/registry/common/platform.js.map +1 -0
  61. 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":"AAQA,OAAO,EAAE,eAAe,EAAyD,MAAM,oCAAoC,CAAC;AAE5H,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,wBAAwB,EAAE,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAS,MAAM,oBAAoB,CAAC;AAChJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAc3D,qBAAa,oBAAqB,YAAW,qBAAqB;IAW1D,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAbnC,SAAiB,aAAa,EAAE,SAAS,CAAC;IAE1C,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,CAAC,8BAA8B,CAAC,CAAS;IAEhD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;gBAGxC,SAAS,GAAE,iBAA2C,EACtD,OAAO,GAAE,OAAe,EACxB,OAAO,CAAC,EAAE,oBAAoB,YAAA,EAC9B,cAAc,GAAE,OAA2B;IAMhE,OAAO,IAAI,IAAI;IAiBf,OAAO,CAAC,gBAAgB;IAMxB,WAAW,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,eAAe,GAAG,qBAAqB;IAgBxF,cAAc,CAAC,CAAC,EAAE,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC;IA0B5G,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,cAAc,CAAC,IAAI,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,EAAE,CAAC,SAAS,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,wBAAwB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;IAiBzK,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,+BAA+B;IASvC,SAAS,CAAC,2BAA2B,CAAC,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC;IAapF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqC;IAE3E,OAAO,CAAC,kCAAkC;IAY1C,OAAO,CAAC,8BAA8B;IAoEtC,OAAO,CAAC,+BAA+B;IAUvC,OAAO,CAAC,sBAAsB;IA6F9B,OAAO,CAAC,cAAc;CAQzB;AAID,mBAAW,SAAS;IAChB,IAAI,IAAI;IACR,QAAQ,IAAI;IACZ,UAAU,IAAI;IACd,MAAM,IAAI;CACb;AAED,qBAAa,KAAK;IA2BV,QAAQ,CAAC,IAAI,EAAE,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IA3BhC,MAAM,CAAC,GAAG,cAAqB;IAE/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CASzB;IAEJ,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,KAAK;IAIjE,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,KAAK;IAI/D,OAAO,CAAC,MAAM,CAAC,OAAO,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmD;IAExE,OAAO;IAKP,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK;IAMzD,IAAI;CAkCP"}
@@ -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":"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"}
@@ -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"}