@namzu/sdk 1.2.0 → 1.3.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d7c683e: Add lazy provider registration: `ProviderRegistry.registerLazy(type, loader, options?)` plus async construction via `ProviderRegistry.createAsync()` / `createProviderAsync()`.
8
+
9
+ Hosts that must not bundle every provider client into every entrypoint can now register a dynamic-import loader instead of an eagerly imported class — no more hand-rolled construction switches outside the registry. Registration never invokes the loader; the first `createAsync()` awaits it, validates the resolved `{ create }` module, and caches the factory. Concurrent first-creates share a single in-flight load, and only success is cached: a rejected load surfaces as the new `LazyProviderLoadError` (original failure on `cause`) and the next create retries.
10
+
11
+ Capabilities integrate with capability negotiation: an optional `options.capabilities` hint lets `getCapabilities(type)` answer before the provider is loaded (no hint ⇒ permissive default), the loaded module's declared capabilities replace the hint, and the constructed instance's own `LLMProvider.capabilities` remain what the query runtime negotiates against.
12
+
13
+ Lazy types are deliberately not constructible through the sync `create()` / `createProvider()` — those throw the new `LazyProviderSyncCreateError` deterministically so sync behavior never depends on load timing. Existing eager `register()` / `create()` behavior is unchanged.
14
+
3
15
  ## 1.2.0
4
16
 
5
17
  ### Minor Changes
@@ -2,9 +2,14 @@ interface TestProviderConfig {
2
2
  type: 'test';
3
3
  value?: string;
4
4
  }
5
+ interface LazyTestProviderConfig {
6
+ type: 'lazytest';
7
+ value?: string;
8
+ }
5
9
  declare module '../../types/provider/config.js' {
6
10
  interface ProviderConfigRegistry {
7
11
  test: TestProviderConfig;
12
+ lazytest: LazyTestProviderConfig;
8
13
  }
9
14
  }
10
15
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../../src/provider/__tests__/registry.test.ts"],"names":[],"mappings":"AAaA,UAAU,kBAAkB;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,OAAO,QAAQ,gCAAgC,CAAC;IAC/C,UAAU,sBAAsB;QAC/B,IAAI,EAAE,kBAAkB,CAAA;KACxB;CACD"}
1
+ {"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../../src/provider/__tests__/registry.test.ts"],"names":[],"mappings":"AAoBA,UAAU,kBAAkB;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,UAAU,sBAAsB;IAC/B,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,OAAO,QAAQ,gCAAgC,CAAC;IAC/C,UAAU,sBAAsB;QAC/B,IAAI,EAAE,kBAAkB,CAAA;QACxB,QAAQ,EAAE,sBAAsB,CAAA;KAChC;CACD"}
@@ -1,7 +1,8 @@
1
1
  import { beforeEach, describe, expect, it } from 'vitest';
2
+ import { PERMISSIVE_PROVIDER_CAPABILITIES, resolveProviderCapabilities } from '../capabilities.js';
2
3
  import { registerMock } from '../mock-register.js';
3
4
  import { MockLLMProvider } from '../mock.js';
4
- import { DuplicateProviderError, ProviderRegistry, UnknownProviderError, __resetProviderRegistryInternal, } from '../registry.js';
5
+ import { DuplicateProviderError, LazyProviderLoadError, LazyProviderSyncCreateError, ProviderRegistry, UnknownProviderError, __resetProviderRegistryInternal, } from '../registry.js';
5
6
  class TestProvider {
6
7
  config;
7
8
  id = 'test';
@@ -33,6 +34,39 @@ const TEST_CAPS = {
33
34
  supportsStreaming: true,
34
35
  supportsFunctionCalling: false,
35
36
  };
37
+ class LazyTestProvider {
38
+ config;
39
+ capabilities;
40
+ id = 'lazytest';
41
+ name = 'Lazy Test';
42
+ constructor(config, capabilities) {
43
+ this.config = config;
44
+ this.capabilities = capabilities;
45
+ }
46
+ async *chatStream() {
47
+ yield { id: 'x', delta: { content: 'ok' } };
48
+ }
49
+ }
50
+ const HINT_CAPS = {
51
+ supportsTools: false,
52
+ supportsStreaming: false,
53
+ supportsFunctionCalling: false,
54
+ };
55
+ const MODULE_CAPS = {
56
+ supportsTools: true,
57
+ supportsStreaming: true,
58
+ supportsFunctionCalling: true,
59
+ supportsVision: false,
60
+ };
61
+ function deferred() {
62
+ let resolve;
63
+ let reject;
64
+ const promise = new Promise((res, rej) => {
65
+ resolve = res;
66
+ reject = rej;
67
+ });
68
+ return { promise, resolve, reject };
69
+ }
36
70
  describe('ProviderRegistry', () => {
37
71
  beforeEach(() => {
38
72
  __resetProviderRegistryInternal();
@@ -114,5 +148,156 @@ describe('ProviderRegistry', () => {
114
148
  expect(err.name).toBe('DuplicateProviderError');
115
149
  });
116
150
  });
151
+ describe('registerLazy', () => {
152
+ it('does not invoke the loader at registration time', () => {
153
+ let calls = 0;
154
+ ProviderRegistry.registerLazy('lazytest', async () => {
155
+ calls++;
156
+ return { create: (config) => new LazyTestProvider(config) };
157
+ });
158
+ expect(calls).toBe(0);
159
+ expect(ProviderRegistry.isSupported('lazytest')).toBe(true);
160
+ expect(ProviderRegistry.listTypes()).toContain('lazytest');
161
+ });
162
+ it('throws DuplicateProviderError over an existing eager registration', () => {
163
+ ProviderRegistry.register('test', TestProvider, TEST_CAPS);
164
+ expect(() => ProviderRegistry.registerLazy('test', async () => ({
165
+ create: (config) => new TestProvider(config),
166
+ }))).toThrowError(DuplicateProviderError);
167
+ });
168
+ it('throws DuplicateProviderError over an existing lazy registration', () => {
169
+ const loader = async () => ({
170
+ create: (config) => new LazyTestProvider(config),
171
+ });
172
+ ProviderRegistry.registerLazy('lazytest', loader);
173
+ expect(() => ProviderRegistry.registerLazy('lazytest', loader)).toThrowError(DuplicateProviderError);
174
+ });
175
+ it('replace: true swaps between eager and lazy registrations', async () => {
176
+ ProviderRegistry.register('lazytest', LazyTestProvider, TEST_CAPS);
177
+ ProviderRegistry.registerLazy('lazytest', async () => ({ create: (config) => new LazyTestProvider(config) }), { replace: true });
178
+ expect(() => ProviderRegistry.createProvider({ type: 'lazytest' })).toThrowError(LazyProviderSyncCreateError);
179
+ ProviderRegistry.register('lazytest', LazyTestProvider, TEST_CAPS, { replace: true });
180
+ expect(ProviderRegistry.createProvider({ type: 'lazytest' })).toBeInstanceOf(LazyTestProvider);
181
+ });
182
+ it('sync create()/createProvider() always throws for lazy types, even after load', async () => {
183
+ ProviderRegistry.registerLazy('lazytest', async () => ({
184
+ create: (config) => new LazyTestProvider(config),
185
+ }));
186
+ expect(() => ProviderRegistry.create({ type: 'lazytest' })).toThrowError(LazyProviderSyncCreateError);
187
+ await ProviderRegistry.createAsync({ type: 'lazytest' });
188
+ expect(() => ProviderRegistry.createProvider({ type: 'lazytest' })).toThrowError(LazyProviderSyncCreateError);
189
+ });
190
+ it('unregister removes a lazy registration', () => {
191
+ ProviderRegistry.registerLazy('lazytest', async () => ({
192
+ create: (config) => new LazyTestProvider(config),
193
+ }));
194
+ expect(ProviderRegistry.unregister('lazytest')).toBe(true);
195
+ expect(ProviderRegistry.isSupported('lazytest')).toBe(false);
196
+ });
197
+ });
198
+ describe('createAsync', () => {
199
+ it('first create invokes the loader once; subsequent creates reuse the cached factory', async () => {
200
+ let calls = 0;
201
+ ProviderRegistry.registerLazy('lazytest', async () => {
202
+ calls++;
203
+ return { create: (config) => new LazyTestProvider(config) };
204
+ });
205
+ const first = await ProviderRegistry.createAsync({ type: 'lazytest', value: 'a' });
206
+ const second = await ProviderRegistry.createAsync({ type: 'lazytest', value: 'b' });
207
+ expect(calls).toBe(1);
208
+ expect(first.provider).toBeInstanceOf(LazyTestProvider);
209
+ expect(second.provider).toBeInstanceOf(LazyTestProvider);
210
+ expect(second.provider.config.value).toBe('b');
211
+ });
212
+ it('concurrent first-creates share a single loader invocation', async () => {
213
+ let calls = 0;
214
+ const gate = deferred();
215
+ ProviderRegistry.registerLazy('lazytest', async () => {
216
+ calls++;
217
+ await gate.promise;
218
+ return { create: (config) => new LazyTestProvider(config) };
219
+ });
220
+ const a = ProviderRegistry.createAsync({ type: 'lazytest' });
221
+ const b = ProviderRegistry.createAsync({ type: 'lazytest' });
222
+ gate.resolve();
223
+ const [ra, rb] = await Promise.all([a, b]);
224
+ expect(calls).toBe(1);
225
+ expect(ra.provider).toBeInstanceOf(LazyTestProvider);
226
+ expect(rb.provider).toBeInstanceOf(LazyTestProvider);
227
+ });
228
+ it('loader rejection surfaces as LazyProviderLoadError and the next create retries', async () => {
229
+ let calls = 0;
230
+ ProviderRegistry.registerLazy('lazytest', async () => {
231
+ calls++;
232
+ if (calls === 1) {
233
+ throw new Error('transient network failure');
234
+ }
235
+ return { create: (config) => new LazyTestProvider(config) };
236
+ });
237
+ const failure = await ProviderRegistry.createAsync({ type: 'lazytest' }).catch((err) => err);
238
+ expect(failure).toBeInstanceOf(LazyProviderLoadError);
239
+ expect(failure.providerType).toBe('lazytest');
240
+ expect(failure.cause.message).toBe('transient network failure');
241
+ const { provider } = await ProviderRegistry.createAsync({ type: 'lazytest' });
242
+ expect(calls).toBe(2);
243
+ expect(provider).toBeInstanceOf(LazyTestProvider);
244
+ });
245
+ it('rejects with LazyProviderLoadError when the loader resolves an invalid module shape', async () => {
246
+ ProviderRegistry.registerLazy('lazytest', async () => ({}));
247
+ await expect(ProviderRegistry.createAsync({ type: 'lazytest' })).rejects.toThrowError(LazyProviderLoadError);
248
+ });
249
+ it('works for eagerly registered types too', async () => {
250
+ const { provider, capabilities } = await ProviderRegistry.createAsync({
251
+ type: 'mock',
252
+ model: 'test-model',
253
+ });
254
+ expect(provider).toBeInstanceOf(MockLLMProvider);
255
+ expect(capabilities.supportsStreaming).toBe(true);
256
+ });
257
+ it('rejects with UnknownProviderError for unregistered types', async () => {
258
+ await expect(ProviderRegistry.createAsync({ type: 'nonexistent' })).rejects.toThrowError(UnknownProviderError);
259
+ });
260
+ });
261
+ describe('lazy capabilities', () => {
262
+ it('answers with the registration hint before load, without invoking the loader', () => {
263
+ let calls = 0;
264
+ ProviderRegistry.registerLazy('lazytest', async () => {
265
+ calls++;
266
+ return { create: (config) => new LazyTestProvider(config) };
267
+ }, { capabilities: HINT_CAPS });
268
+ expect(ProviderRegistry.getCapabilities('lazytest')).toEqual(HINT_CAPS);
269
+ expect(calls).toBe(0);
270
+ });
271
+ it('answers permissively before load when no hint was given', () => {
272
+ ProviderRegistry.registerLazy('lazytest', async () => ({
273
+ create: (config) => new LazyTestProvider(config),
274
+ }));
275
+ expect(ProviderRegistry.getCapabilities('lazytest')).toEqual(PERMISSIVE_PROVIDER_CAPABILITIES);
276
+ });
277
+ it('module capabilities replace the hint after load', async () => {
278
+ ProviderRegistry.registerLazy('lazytest', async () => ({
279
+ create: (config) => new LazyTestProvider(config),
280
+ capabilities: MODULE_CAPS,
281
+ }), { capabilities: HINT_CAPS });
282
+ const { capabilities } = await ProviderRegistry.createAsync({ type: 'lazytest' });
283
+ expect(capabilities).toEqual(MODULE_CAPS);
284
+ expect(ProviderRegistry.getCapabilities('lazytest')).toEqual(MODULE_CAPS);
285
+ });
286
+ it('the constructed instance own capabilities win at run time over any hint', async () => {
287
+ const instanceCaps = {
288
+ supportsTools: true,
289
+ supportsStreaming: true,
290
+ supportsFunctionCalling: false,
291
+ supportsVision: false,
292
+ };
293
+ ProviderRegistry.registerLazy('lazytest', async () => ({ create: (config) => new LazyTestProvider(config, instanceCaps) }), { capabilities: HINT_CAPS });
294
+ const { provider } = await ProviderRegistry.createAsync({ type: 'lazytest' });
295
+ // The query runtime negotiates against the instance, not the registry:
296
+ const resolved = resolveProviderCapabilities(provider);
297
+ expect(resolved.supportsTools).toBe(true);
298
+ expect(resolved.supportsFunctionCalling).toBe(false);
299
+ expect(resolved.supportsVision).toBe(false);
300
+ });
301
+ });
117
302
  });
118
303
  //# sourceMappingURL=registry.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../src/provider/__tests__/registry.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../src/provider/__tests__/registry.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { ProviderRegistry, UnknownProviderError, DuplicateProviderError } from './registry.js';
1
+ export { ProviderRegistry, UnknownProviderError, DuplicateProviderError, LazyProviderLoadError, LazyProviderSyncCreateError, } from './registry.js';
2
2
  export { MockLLMProvider } from './mock.js';
3
3
  export { registerMock, MOCK_CAPABILITIES } from './mock-register.js';
4
4
  export { PERMISSIVE_PROVIDER_CAPABILITIES, resolveProviderCapabilities, } from './capabilities.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EACN,gCAAgC,EAChC,2BAA2B,GAC3B,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,GAC3B,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EACN,gCAAgC,EAChC,2BAA2B,GAC3B,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA"}
@@ -1,4 +1,4 @@
1
- export { ProviderRegistry, UnknownProviderError, DuplicateProviderError } from './registry.js';
1
+ export { ProviderRegistry, UnknownProviderError, DuplicateProviderError, LazyProviderLoadError, LazyProviderSyncCreateError, } from './registry.js';
2
2
  export { MockLLMProvider } from './mock.js';
3
3
  export { registerMock, MOCK_CAPABILITIES } from './mock-register.js';
4
4
  export { PERMISSIVE_PROVIDER_CAPABILITIES, resolveProviderCapabilities, } from './capabilities.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EACN,gCAAgC,EAChC,2BAA2B,GAC3B,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,GAC3B,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EACN,gCAAgC,EAChC,2BAA2B,GAC3B,MAAM,mBAAmB,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { LLMProvider, LLMProviderConstructor, ProviderCapabilities, ProviderConfigRegistry, ProviderFactoryConfig, ProviderFactoryResult, ProviderType, RegisterOptions } from '../types/provider/index.js';
1
+ import type { LLMProvider, LLMProviderConstructor, LazyProviderLoader, ProviderCapabilities, ProviderConfigRegistry, ProviderFactoryConfig, ProviderFactoryResult, ProviderType, RegisterLazyOptions, RegisterOptions } from '../types/provider/index.js';
2
2
  export declare class UnknownProviderError extends Error {
3
3
  readonly providerType: string;
4
4
  constructor(providerType: string);
@@ -7,6 +7,28 @@ export declare class DuplicateProviderError extends Error {
7
7
  readonly providerType: string;
8
8
  constructor(providerType: string);
9
9
  }
10
+ /**
11
+ * The loader passed to `ProviderRegistry.registerLazy()` rejected (or
12
+ * resolved to something without a `create(config)` function). Wraps the
13
+ * original failure as `cause`. The failed load is NOT cached — the next
14
+ * `createAsync()` for the type re-invokes the loader, so a transient
15
+ * failure (network hiccup during a dynamic import) does not permanently
16
+ * poison the type.
17
+ */
18
+ export declare class LazyProviderLoadError extends Error {
19
+ readonly providerType: string;
20
+ constructor(providerType: string, cause: unknown);
21
+ }
22
+ /**
23
+ * A synchronous `create()`/`createProvider()` was called for a type
24
+ * registered via `registerLazy()`. Lazy types are only constructible
25
+ * through the async path — deterministically, even after the loader has
26
+ * resolved, so calling code never depends on load-order timing.
27
+ */
28
+ export declare class LazyProviderSyncCreateError extends Error {
29
+ readonly providerType: string;
30
+ constructor(providerType: string);
31
+ }
10
32
  /**
11
33
  * Central registry for LLM providers.
12
34
  *
@@ -28,11 +50,69 @@ export declare class DuplicateProviderError extends Error {
28
50
  * region: 'us-east-1',
29
51
  * })
30
52
  * ```
53
+ *
54
+ * Hosts that must not eagerly bundle every provider client register a
55
+ * LOADER instead and construct through the async path:
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * ProviderRegistry.registerLazy(
60
+ * 'anthropic',
61
+ * async () => {
62
+ * const m = await import('@namzu/anthropic')
63
+ * return { create: (c) => new m.AnthropicProvider(c), capabilities: m.ANTHROPIC_CAPABILITIES }
64
+ * },
65
+ * { capabilities: { supportsTools: true, supportsStreaming: true, supportsFunctionCalling: true } },
66
+ * )
67
+ *
68
+ * const { provider } = await ProviderRegistry.createAsync({ type: 'anthropic', apiKey })
69
+ * ```
31
70
  */
32
71
  export declare class ProviderRegistry {
33
72
  static register<K extends ProviderType>(type: K, ctor: LLMProviderConstructor<ProviderConfigRegistry[K]>, caps: ProviderCapabilities, options?: RegisterOptions): void;
73
+ /**
74
+ * Register a provider type WITHOUT importing its implementation. The
75
+ * loader is not invoked here; the first `createAsync()` for the type
76
+ * awaits it, validates the resolved `{ create }` module, and caches it.
77
+ * Subsequent creates reuse the cached factory. Only SUCCESS is cached:
78
+ * a rejected load surfaces as `LazyProviderLoadError` and the next
79
+ * `createAsync()` retries the loader. Concurrent first-creates share a
80
+ * single in-flight load.
81
+ *
82
+ * Capability precedence (weakest first):
83
+ * 1. `options.capabilities` — pre-load HINT so `getCapabilities(type)`
84
+ * answers without loading (absent hint ⇒ permissive default, matching
85
+ * `resolveProviderCapabilities`'s treatment of undeclared providers).
86
+ * 2. the loaded module's `capabilities` — replaces the hint on load.
87
+ * 3. the constructed instance's own `LLMProvider.capabilities` — the
88
+ * query runtime negotiates against the INSTANCE
89
+ * (`resolveProviderCapabilities(provider)`), so if it differs from
90
+ * both of the above, the instance wins where it matters.
91
+ *
92
+ * Lazy types are deliberately NOT constructible via the sync
93
+ * `create()`/`createProvider()` (throws `LazyProviderSyncCreateError`),
94
+ * even after the loader has resolved — sync behavior must not depend on
95
+ * whether some earlier call happened to load the module.
96
+ */
97
+ static registerLazy<K extends ProviderType>(type: K, loader: LazyProviderLoader<ProviderConfigRegistry[K]>, options?: RegisterLazyOptions): void;
34
98
  static create(config: ProviderFactoryConfig): ProviderFactoryResult;
99
+ /**
100
+ * Async twin of `create()`. Works for BOTH eager and lazy registrations,
101
+ * so hosts can use one code path; for lazy types it performs the
102
+ * load-on-first-use described on `registerLazy()`.
103
+ */
104
+ static createAsync(config: ProviderFactoryConfig): Promise<ProviderFactoryResult>;
35
105
  static createProvider(config: ProviderFactoryConfig): LLMProvider;
106
+ static createProviderAsync(config: ProviderFactoryConfig): Promise<LLMProvider>;
107
+ /**
108
+ * Type-level capabilities. For a lazily-registered type this answers
109
+ * WITHOUT invoking the loader: the registration hint if one was given,
110
+ * otherwise the permissive default (assume everything — consistent with
111
+ * how `resolveProviderCapabilities` treats an undeclared provider). Once
112
+ * loaded, a module-shipped declaration replaces the hint. Note the query
113
+ * runtime negotiates against the constructed INSTANCE's own
114
+ * `capabilities`, which wins over anything stored here.
115
+ */
36
116
  static getCapabilities(type: string): ProviderCapabilities;
37
117
  static isSupported(type: string): type is ProviderType;
38
118
  static unregister(type: ProviderType): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/provider/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,MAAM,4BAA4B,CAAA;AAEnC,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;gBAEjB,YAAY,EAAE,MAAM;CAKhC;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;gBAEjB,YAAY,EAAE,MAAM;CAOhC;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,gBAAgB;IAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,YAAY,EACrC,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EACvD,IAAI,EAAE,oBAAoB,EAC1B,OAAO,CAAC,EAAE,eAAe,GACvB,IAAI;IAQP,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB;IAMnE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,WAAW;IAQjE,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAQ1D,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY;IAItD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAK9C,MAAM,CAAC,SAAS,IAAI,YAAY,EAAE;CAGlC;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,IAAI,CAGtD"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/provider/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAElB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,MAAM,4BAA4B,CAAA;AAGnC,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;gBAEjB,YAAY,EAAE,MAAM;CAKhC;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;gBAEjB,YAAY,EAAE,MAAM;CAOhC;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;gBAEjB,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAMhD;AAED;;;;;GAKG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACrD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;gBAEjB,YAAY,EAAE,MAAM;CAOhC;AA2DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,gBAAgB;IAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,YAAY,EACrC,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EACvD,IAAI,EAAE,oBAAoB,EAC1B,OAAO,CAAC,EAAE,eAAe,GACvB,IAAI;IASP;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,YAAY,EACzC,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EACrD,OAAO,CAAC,EAAE,mBAAmB,GAC3B,IAAI;IAYP,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB;IAMnE;;;;OAIG;WACU,WAAW,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQvF,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,WAAW;WAWpD,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;IAarF;;;;;;;;OAQG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAW1D,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY;IAItD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAM9C,MAAM,CAAC,SAAS,IAAI,YAAY,EAAE;CAGlC;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,IAAI,CAItD"}