@xyo-network/xl1-browser-system 5.8.3 → 5.8.4

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.
@@ -1,5 +1,5 @@
1
1
  import type { BrowserActorSelection, BrowserSystemConfig } from '@ariestools/browser-kit';
2
- import type { ChainId, LocatorConfig, PrimeCachesMode, RestGatewayConfig } from '@xyo-network/xl1-sdk';
2
+ import type { ChainId, ConnectionsConfig, LocatorConfig, PrimeCachesMode, ProviderBindingsConfig, RestGatewayConfig } from '@xyo-network/xl1-sdk';
3
3
  /** Authored XL1 locator fields plus browser actor selections. */
4
4
  export interface Xl1BrowserSystemConfig extends LocatorConfig {
5
5
  readonly actors: readonly BrowserActorSelection[];
@@ -7,6 +7,13 @@ export interface Xl1BrowserSystemConfig extends LocatorConfig {
7
7
  /** Options for a standard REST-backed XL1 browser system. */
8
8
  export interface CreateXl1RestBrowserSystemConfigOptions {
9
9
  readonly actors?: readonly BrowserActorSelection[];
10
+ /**
11
+ * Extra connection profiles merged after the deprecated `dataLakeEndpoint` adapter.
12
+ * A lake URL belongs on a `rest` connection, not on a second gateway field.
13
+ */
14
+ readonly additionalConnections?: ConnectionsConfig;
15
+ /** Extra provider bindings merged after the deprecated `dataLakeEndpoint` adapter. Bind `DataLakeViewer` and `DataLakeRunner` here. */
16
+ readonly additionalProviderBindings?: ProviderBindingsConfig;
10
17
  /**
11
18
  * RestBlockViewer read-ahead (`readStep`) and per-block cache size (`maxCacheSize`), merged into the
12
19
  * BlockViewer binding's `options`; the provider validates them in its actor realm.
@@ -14,6 +21,11 @@ export interface CreateXl1RestBrowserSystemConfigOptions {
14
21
  readonly blockViewerOptions?: RestGatewayConfig['blockViewerOptions'];
15
22
  /** Optional staking-contract address pin; otherwise the finalized chain head supplies it. */
16
23
  readonly chainId?: ChainId;
24
+ /**
25
+ * @deprecated Build the lake with `createRestDataLakeViewer(url)` and
26
+ * `createRestDataLakeRunner(url)`. Bind `DataLakeViewer` and `DataLakeRunner`
27
+ * through the locator. This field/method/option is removed in 6.0.
28
+ */
17
29
  readonly dataLakeEndpoint?: string;
18
30
  readonly endpoint: string;
19
31
  readonly host?: string;
@@ -25,6 +37,15 @@ export interface CreateXl1RestBrowserSystemConfigOptions {
25
37
  /** Options for a standard RPC-backed XL1 browser system. */
26
38
  export interface CreateXl1RpcBrowserSystemConfigOptions {
27
39
  readonly actors?: readonly BrowserActorSelection[];
40
+ /** Extra connection profiles merged after the deprecated `dataLakeEndpoint` adapter. */
41
+ readonly additionalConnections?: ConnectionsConfig;
42
+ /** Extra provider bindings merged after the deprecated `dataLakeEndpoint` adapter. Bind `DataLakeViewer` and `DataLakeRunner` here. */
43
+ readonly additionalProviderBindings?: ProviderBindingsConfig;
44
+ /**
45
+ * @deprecated Build the lake with `createRestDataLakeViewer(url)` and
46
+ * `createRestDataLakeRunner(url)`. Bind `DataLakeViewer` and `DataLakeRunner`
47
+ * through the locator. This field/method/option is removed in 6.0.
48
+ */
28
49
  readonly dataLakeEndpoint?: string;
29
50
  readonly endpoint: string;
30
51
  readonly host?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Xl1BrowserConfig.d.ts","sourceRoot":"","sources":["../../src/Xl1BrowserConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EACV,OAAO,EAEP,aAAa,EACb,eAAe,EAEf,iBAAiB,EAClB,MAAM,sBAAsB,CAAA;AAqC7B,iEAAiE;AACjE,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,QAAQ,CAAC,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAA;CAClD;AAED,6DAA6D;AAC7D,MAAM,WAAW,uCAAuC;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAA;IAClD;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAA;IACrE,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAA;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAA;CACzC;AAED,4DAA4D;AAC5D,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAA;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAA;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAA;CACzC;AAED,gFAAgF;AAChF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB;AAED,2EAA2E;AAC3E,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAC1B;AAED,oFAAoF;AACpF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CACrB;AAED,wEAAwE;AACxE,MAAM,MAAM,sBAAsB,GAC5B,6BAA6B,GAC7B,8BAA8B,GAC9B,yBAAyB,CAAA;AAE/B,mGAAmG;AACnG,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,WAAW,CAAA;AAExD,iGAAiG;AACjG,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAWlF;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,sBAAsB,GAC7B,mBAAmB,CAMrB;AAED,iGAAiG;AACjG,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,uCAAuC,GAC/C,sBAAsB,CAsExB;AAED,gGAAgG;AAChG,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,sCAAsC,GAC9C,sBAAsB,CA4CxB"}
1
+ {"version":3,"file":"Xl1BrowserConfig.d.ts","sourceRoot":"","sources":["../../src/Xl1BrowserConfig.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { compileBrowserSystem } from "@ariestools/browser-kit";
4
4
  // src/Xl1BrowserConfig.ts
5
5
  import { parseBrowserSystemConfig } from "@ariestools/browser-kit";
6
6
  import {
7
+ applyRestDataLakeEndpoint,
7
8
  BlockViewerMoniker,
8
9
  ChainContractViewerMoniker,
9
10
  ChainStateViewerMoniker,
@@ -307,13 +308,9 @@ function createXl1RestBrowserSystemConfig(options) {
307
308
  [XyoConnectionMoniker]: { provider: SimpleXyoConnectionViewerProviderId },
308
309
  [XyoGatewayMoniker2]: { provider: SimpleXyoGatewayProviderId }
309
310
  };
310
- if (options.dataLakeEndpoint !== void 0) {
311
- connections["rest-data-lake"] = {
312
- baseUrl: options.dataLakeEndpoint,
313
- type: "rest"
314
- };
315
- providerBindings[DataLakeViewerMoniker2] = { connection: "rest-data-lake" };
316
- }
311
+ applyRestDataLakeEndpoint(connections, providerBindings, dataLakeEndpointAdapter(options), [DataLakeViewerMoniker2]);
312
+ Object.assign(connections, options.additionalConnections);
313
+ Object.assign(providerBindings, options.additionalProviderBindings);
317
314
  if (options.signer !== void 0) {
318
315
  if (options.rpcUrl === void 0) {
319
316
  throw new Error("XL1 REST runner browser system requires rpcUrl");
@@ -322,8 +319,7 @@ function createXl1RestBrowserSystemConfig(options) {
322
319
  connections,
323
320
  providerBindings,
324
321
  options.rpcUrl,
325
- options.signer,
326
- options.dataLakeEndpoint !== void 0
322
+ options.signer
327
323
  );
328
324
  }
329
325
  if (options.primeCaches !== void 0) {
@@ -344,7 +340,7 @@ function createXl1RestBrowserSystemConfig(options) {
344
340
  host: options.host,
345
341
  type: xl1BrowserSystemActorType(
346
342
  options.signer !== void 0,
347
- options.dataLakeEndpoint !== void 0
343
+ hasBoundDataLake(providerBindings)
348
344
  )
349
345
  }],
350
346
  chain: { id: options.chainId },
@@ -365,20 +361,15 @@ function createXl1RpcBrowserSystemConfig(options) {
365
361
  [XyoConnectionMoniker]: { provider: SimpleXyoConnectionViewerProviderId },
366
362
  [XyoGatewayMoniker2]: { provider: SimpleXyoGatewayProviderId }
367
363
  };
368
- if (options.dataLakeEndpoint !== void 0) {
369
- connections["rest-data-lake"] = {
370
- baseUrl: options.dataLakeEndpoint,
371
- type: "rest"
372
- };
373
- providerBindings[DataLakeViewerMoniker2] = { connection: "rest-data-lake" };
374
- }
364
+ applyRestDataLakeEndpoint(connections, providerBindings, dataLakeEndpointAdapter(options), [DataLakeViewerMoniker2]);
365
+ Object.assign(connections, options.additionalConnections);
366
+ Object.assign(providerBindings, options.additionalProviderBindings);
375
367
  if (options.signer !== void 0) {
376
368
  addRunnerBindings(
377
369
  connections,
378
370
  providerBindings,
379
371
  options.endpoint,
380
- options.signer,
381
- options.dataLakeEndpoint !== void 0
372
+ options.signer
382
373
  );
383
374
  }
384
375
  if (options.primeCaches !== void 0) {
@@ -389,14 +380,17 @@ function createXl1RpcBrowserSystemConfig(options) {
389
380
  host: options.host,
390
381
  type: xl1BrowserSystemActorType(
391
382
  options.signer !== void 0,
392
- options.dataLakeEndpoint !== void 0
383
+ hasBoundDataLake(providerBindings)
393
384
  )
394
385
  }],
395
386
  connections,
396
387
  providerBindings
397
388
  });
398
389
  }
399
- function addRunnerBindings(connections, providerBindings, rpcUrl, signer, hasDataLake) {
390
+ function dataLakeEndpointAdapter(options) {
391
+ return options.dataLakeEndpoint;
392
+ }
393
+ function addRunnerBindings(connections, providerBindings, rpcUrl, signer) {
400
394
  connections["default-rpc"] = {
401
395
  protocol: "http",
402
396
  type: "rpc",
@@ -413,9 +407,10 @@ function addRunnerBindings(connections, providerBindings, rpcUrl, signer, hasDat
413
407
  providerBindings[XyoConnectionMoniker] = { provider: "SimpleXyoConnectionRunner" };
414
408
  providerBindings[XyoGatewayMoniker2] = { provider: "SimpleXyoGatewayRunner" };
415
409
  providerBindings[XyoGatewayRunnerMoniker2] = { provider: "SimpleXyoGatewayRunner" };
416
- if (hasDataLake) {
410
+ const viewerConnection = providerBindings[DataLakeViewerMoniker2]?.connection;
411
+ if (viewerConnection !== void 0 && providerBindings[DataLakeRunnerMoniker2] === void 0) {
417
412
  providerBindings[DataLakeRunnerMoniker2] = {
418
- connection: "rest-data-lake",
413
+ connection: viewerConnection,
419
414
  provider: "RestDataLakeRunner"
420
415
  };
421
416
  }
@@ -443,6 +438,9 @@ function definedOptions(options) {
443
438
  const entries = Object.entries(options).filter(([, value]) => value !== void 0);
444
439
  return entries.length === 0 ? void 0 : Object.fromEntries(entries);
445
440
  }
441
+ function hasBoundDataLake(providerBindings) {
442
+ return providerBindings[DataLakeViewerMoniker2]?.connection !== void 0 || providerBindings[DataLakeRunnerMoniker2]?.connection !== void 0;
443
+ }
446
444
  function xl1BrowserSystemActorType(isRunner, hasDataLake) {
447
445
  if (isRunner) {
448
446
  return hasDataLake ? Xl1BrowserRunnerSystemWithDataLakeActorType : Xl1BrowserRunnerSystemActorType;
@@ -540,10 +538,13 @@ async function launchXl1BrowserSystem(options) {
540
538
  // src/launchXl1BrowserGatewaySystem.ts
541
539
  async function launchXl1BrowserGatewaySystem(options) {
542
540
  const signing = browserSignerRuntime(options);
541
+ const dataLakeEndpoint = dataLakeEndpointAdapter2(options);
543
542
  const config = options.transport === "rest" ? createXl1RestBrowserSystemConfig({
543
+ additionalConnections: options.additionalConnections,
544
+ additionalProviderBindings: options.additionalProviderBindings,
544
545
  blockViewerOptions: options.blockViewerOptions,
545
546
  chainId: options.chainId,
546
- dataLakeEndpoint: options.dataLakeEndpoint,
547
+ dataLakeEndpoint,
547
548
  endpoint: options.endpoint,
548
549
  host: options.host,
549
550
  layout: options.layout,
@@ -551,7 +552,9 @@ async function launchXl1BrowserGatewaySystem(options) {
551
552
  rpcUrl: options.rpcUrl,
552
553
  signer: signing.config
553
554
  }) : createXl1RpcBrowserSystemConfig({
554
- dataLakeEndpoint: options.dataLakeEndpoint,
555
+ additionalConnections: options.additionalConnections,
556
+ additionalProviderBindings: options.additionalProviderBindings,
557
+ dataLakeEndpoint,
555
558
  endpoint: options.endpoint,
556
559
  host: options.host,
557
560
  primeCaches: options.primeCaches,
@@ -612,6 +615,9 @@ async function launchXl1BrowserGatewaySystem(options) {
612
615
  throw launchError;
613
616
  }
614
617
  }
618
+ function dataLakeEndpointAdapter2(options) {
619
+ return options.dataLakeEndpoint;
620
+ }
615
621
  async function stopSessionAndHandles(session, handles) {
616
622
  const [stopResult] = await Promise.allSettled([session.stop()]);
617
623
  const [closeResult] = await Promise.allSettled([handles?.close?.()]);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/compileXl1BrowserSystem.ts", "../../src/Xl1BrowserConfig.ts", "../../src/Xl1BrowserProvider.ts", "../../src/Xl1BrowserSystemActor.ts", "../../src/launchCompiledXl1BrowserSystem.ts", "../../src/launchXl1BrowserGatewaySystem.ts", "../../src/launchXl1BrowserSystem.ts", "../../src/Xl1FinalizedBlockActor.ts"],
4
- "sourcesContent": ["import type {\n BrowserActor,\n BrowserActorCatalog,\n CompiledBrowserSystem,\n} from '@ariestools/browser-kit'\nimport { compileBrowserSystem } from '@ariestools/browser-kit'\nimport type {\n ProviderDescriptor as Xl1ProviderDescriptor,\n ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\n\nimport type { Xl1BrowserSystemConfig } from './Xl1BrowserConfig.ts'\nimport {\n parseXl1BrowserSystemConfig,\n toBrowserSystemConfig,\n} from './Xl1BrowserConfig.ts'\nimport {\n captureXl1BrowserProviderRegistration,\n xl1BrowserProviderCandidates,\n type Xl1BrowserProviderDeclaration,\n xl1BrowserProviderDeclarations,\n type Xl1BrowserProviderRegistration,\n} from './Xl1BrowserProvider.ts'\nimport { createXl1BrowserActorCatalog } from './Xl1BrowserSystemActor.ts'\n\n/** Inputs that deterministically compile one XL1 browser system. */\nexport interface CompileXl1BrowserSystemOptions<TActor extends BrowserActor = BrowserActor> {\n readonly actorCatalog?: BrowserActorCatalog<TActor, ProviderFactoryLocatorInstance>\n readonly config: unknown\n readonly providerCandidates?: readonly Xl1ProviderDescriptor[]\n readonly providerRegistrations?: readonly Xl1BrowserProviderRegistration[]\n}\n\n/**\n * One owner-local XL1 browser plan before providers or actors are created.\n *\n * The catalog and provider registrations retain executable factories and must\n * not cross a structured-clone boundary.\n */\nexport interface CompiledXl1BrowserSystem<TActor extends BrowserActor = BrowserActor> {\n readonly actorCatalog: BrowserActorCatalog<TActor, ProviderFactoryLocatorInstance>\n readonly browserSystem: CompiledBrowserSystem<Xl1BrowserProviderDeclaration>\n readonly config: Xl1BrowserSystemConfig\n readonly providerRegistrations: readonly Xl1BrowserProviderRegistration[]\n}\n\n/** Parses and resolves one XL1 browser system without acquiring runtime resources. */\nexport function compileXl1BrowserSystem<TActor extends BrowserActor = BrowserActor>(\n options: CompileXl1BrowserSystemOptions<TActor>,\n): CompiledXl1BrowserSystem<TActor> {\n const config = parseXl1BrowserSystemConfig(options.config)\n const actorCatalog = options.actorCatalog\n ?? createXl1BrowserActorCatalog() as BrowserActorCatalog<\n TActor,\n ProviderFactoryLocatorInstance\n >\n const providerRegistrations = Object.freeze((options.providerRegistrations ?? []).map(captureXl1BrowserProviderRegistration))\n const providerCandidates = mergedProviderCandidates(\n options.providerCandidates ?? xl1BrowserProviderCandidates(),\n providerRegistrations,\n )\n const browserSystem = compileBrowserSystem<\n TActor,\n ProviderFactoryLocatorInstance,\n Xl1BrowserProviderDeclaration\n >({\n actorCatalog,\n config: toBrowserSystemConfig(config),\n providerDescriptors: xl1BrowserProviderDeclarations(providerCandidates),\n })\n return Object.freeze({\n actorCatalog,\n browserSystem,\n config,\n providerRegistrations,\n })\n}\n\nfunction mergedProviderCandidates(\n candidates: readonly Xl1ProviderDescriptor[],\n registrations: readonly Xl1BrowserProviderRegistration[],\n): Xl1ProviderDescriptor[] {\n const result = new Map(candidates.map(candidate => [candidate.id, candidate]))\n for (const registration of registrations) {\n result.set(registration.descriptor.id, registration.descriptor)\n }\n return result.values().toArray()\n}\n", "import type {\n BrowserActorSelection,\n BrowserSystemConfig,\n} from '@ariestools/browser-kit'\nimport { parseBrowserSystemConfig } from '@ariestools/browser-kit'\nimport type {\n ChainId,\n ConnectionsConfig,\n LocatorConfig,\n PrimeCachesMode,\n ProviderBindingsConfig,\n RestGatewayConfig,\n} from '@xyo-network/xl1-sdk'\nimport {\n BlockViewerMoniker,\n ChainContractViewerMoniker,\n ChainStateViewerMoniker,\n DataLakeRunnerMoniker,\n DataLakeViewerMoniker,\n FinalizationViewerMoniker,\n IndexViewerMoniker,\n MempoolRunnerMoniker,\n NetworkStakeStepRewardsByPositionViewerMoniker,\n parseLocatorConfigFields,\n restConnectionFromS3Bucket,\n restGatewayConfigFromEndpoint,\n SIGNER_RPC_CONNECTION,\n StakeEventsViewerMoniker,\n StakeViewerMoniker,\n synthesizeRpcConnectionBindings,\n XyoConnectionMoniker,\n XyoGatewayMoniker,\n XyoGatewayRunnerMoniker,\n XyoRunnerMoniker,\n XyoSignerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nimport {\n BrowserSimpleXyoSignerProviderId,\n SimpleXyoConnectionViewerProviderId,\n SimpleXyoGatewayProviderId,\n} from './Xl1BrowserProvider.ts'\nimport {\n Xl1BrowserRunnerSystemActorType,\n Xl1BrowserRunnerSystemWithDataLakeActorType,\n Xl1BrowserSystemActorType,\n Xl1BrowserSystemWithDataLakeActorType,\n} from './Xl1BrowserSystemActor.ts'\n\n/** Authored XL1 locator fields plus browser actor selections. */\nexport interface Xl1BrowserSystemConfig extends LocatorConfig {\n readonly actors: readonly BrowserActorSelection[]\n}\n\n/** Options for a standard REST-backed XL1 browser system. */\nexport interface CreateXl1RestBrowserSystemConfigOptions {\n readonly actors?: readonly BrowserActorSelection[]\n /**\n * RestBlockViewer read-ahead (`readStep`) and per-block cache size (`maxCacheSize`), merged into the\n * BlockViewer binding's `options`; the provider validates them in its actor realm.\n */\n readonly blockViewerOptions?: RestGatewayConfig['blockViewerOptions']\n /** Optional staking-contract address pin; otherwise the finalized chain head supplies it. */\n readonly chainId?: ChainId\n readonly dataLakeEndpoint?: string\n readonly endpoint: string\n readonly host?: string\n readonly layout?: Xl1RestEndpointLayout\n readonly primeCaches?: PrimeCachesMode\n readonly rpcUrl?: string\n readonly signer?: Xl1BrowserSignerConfig\n}\n\n/** Options for a standard RPC-backed XL1 browser system. */\nexport interface CreateXl1RpcBrowserSystemConfigOptions {\n readonly actors?: readonly BrowserActorSelection[]\n readonly dataLakeEndpoint?: string\n readonly endpoint: string\n readonly host?: string\n readonly primeCaches?: PrimeCachesMode\n readonly signer?: Xl1BrowserSignerConfig\n}\n\n/** Selects the built-in account signer supplied through the runtime context. */\nexport interface Xl1BrowserAccountSignerConfig {\n readonly type: 'account'\n}\n\n/** Selects a connectionless signer factory supplied by the owner realm. */\nexport interface Xl1BrowserProviderSignerConfig {\n readonly provider: string\n readonly type: 'provider'\n}\n\n/** Selects a JsonRpc signer whose transport is supplied through runtime handles. */\nexport interface Xl1BrowserRpcSignerConfig {\n readonly type: 'rpc'\n}\n\n/** Serializable signer selection for a write-capable browser system. */\nexport type Xl1BrowserSignerConfig\n = | Xl1BrowserAccountSignerConfig\n | Xl1BrowserProviderSignerConfig\n | Xl1BrowserRpcSignerConfig\n\n/** How the REST gateway's finalized, chain-state, and index URLs are derived from its endpoint. */\nexport type Xl1RestEndpointLayout = 'path' | 'subdomain'\n\n/** Parses XL1 locator fields and browser actor selections without importing code from config. */\nexport function parseXl1BrowserSystemConfig(input: unknown): Xl1BrowserSystemConfig {\n const locatorConfig = parseLocatorConfigFields(input)\n const browserConfig = parseBrowserSystemConfig({\n actors: isRecord(input) ? input.actors : undefined,\n connections: locatorConfig.connections,\n providerBindings: toBrowserProviderBindings(locatorConfig.providerBindings),\n })\n return Object.freeze({\n ...locatorConfig,\n actors: Object.freeze([...(browserConfig.actors ?? [])]),\n })\n}\n\n/** Projects the XL1 config onto the neutral fields browser-kit compiles. */\nexport function toBrowserSystemConfig(\n config: Xl1BrowserSystemConfig,\n): BrowserSystemConfig {\n return {\n actors: config.actors,\n connections: config.connections,\n providerBindings: toBrowserProviderBindings(config.providerBindings),\n }\n}\n\n/** Creates explicit REST connections and provider bindings for one XL1 browser gateway actor. */\nexport function createXl1RestBrowserSystemConfig(\n options: CreateXl1RestBrowserSystemConfigOptions,\n): Xl1BrowserSystemConfig {\n const buckets = options.layout === 'path'\n ? restGatewayConfigFromPathEndpoint(options.endpoint)\n : restGatewayConfigFromEndpoint(options.endpoint)\n const finalized = buckets.finalized\n if (finalized === undefined) throw new Error('XL1 REST gateway has no finalized bucket')\n\n const connections: ConnectionsConfig = {\n 'rest-chain-state': restConnectionFromS3Bucket(buckets.chainState ?? finalized),\n 'rest-finalized': restConnectionFromS3Bucket(finalized),\n 'rest-index': restConnectionFromS3Bucket(buckets.index ?? finalized),\n }\n const providerBindings: ProviderBindingsConfig = {\n [BlockViewerMoniker]: { connection: 'rest-finalized' },\n [ChainContractViewerMoniker]: { connection: 'rest-chain-state' },\n [ChainStateViewerMoniker]: { connection: 'rest-chain-state' },\n [FinalizationViewerMoniker]: { connection: 'rest-finalized' },\n [IndexViewerMoniker]: { connection: 'rest-index' },\n [NetworkStakeStepRewardsByPositionViewerMoniker]: { connection: 'rest-index' },\n [StakeEventsViewerMoniker]: { connection: 'rest-index' },\n [StakeViewerMoniker]: { connection: 'rest-index' },\n [XyoConnectionMoniker]: { provider: SimpleXyoConnectionViewerProviderId },\n [XyoGatewayMoniker]: { provider: SimpleXyoGatewayProviderId },\n }\n if (options.dataLakeEndpoint !== undefined) {\n connections['rest-data-lake'] = {\n baseUrl: options.dataLakeEndpoint,\n type: 'rest',\n }\n providerBindings[DataLakeViewerMoniker] = { connection: 'rest-data-lake' }\n }\n if (options.signer !== undefined) {\n if (options.rpcUrl === undefined) {\n throw new Error('XL1 REST runner browser system requires rpcUrl')\n }\n addRunnerBindings(\n connections,\n providerBindings,\n options.rpcUrl,\n options.signer,\n options.dataLakeEndpoint !== undefined,\n )\n }\n if (options.primeCaches !== undefined) {\n providerBindings[NetworkStakeStepRewardsByPositionViewerMoniker] = {\n ...providerBindings[NetworkStakeStepRewardsByPositionViewerMoniker],\n primeCaches: options.primeCaches,\n }\n }\n // block read-ahead / cache sizing rides the binding as provider options\n const blockViewerOptions = definedOptions(options.blockViewerOptions)\n if (blockViewerOptions !== undefined) {\n providerBindings[BlockViewerMoniker] = {\n ...providerBindings[BlockViewerMoniker],\n options: { ...providerBindings[BlockViewerMoniker]?.options, ...blockViewerOptions },\n }\n }\n\n return parseXl1BrowserSystemConfig({\n actors: options.actors ?? [{\n host: options.host,\n type: xl1BrowserSystemActorType(\n options.signer !== undefined,\n options.dataLakeEndpoint !== undefined,\n ),\n }],\n chain: { id: options.chainId },\n connections,\n providerBindings,\n })\n}\n\n/** Creates explicit RPC connections and provider bindings for one XL1 browser gateway actor. */\nexport function createXl1RpcBrowserSystemConfig(\n options: CreateXl1RpcBrowserSystemConfigOptions,\n): Xl1BrowserSystemConfig {\n const connections: ConnectionsConfig = {\n 'default-rpc': {\n protocol: 'http',\n type: 'rpc',\n url: options.endpoint,\n },\n }\n const providerBindings: ProviderBindingsConfig = {\n ...synthesizeRpcConnectionBindings(),\n [XyoConnectionMoniker]: { provider: SimpleXyoConnectionViewerProviderId },\n [XyoGatewayMoniker]: { provider: SimpleXyoGatewayProviderId },\n }\n if (options.dataLakeEndpoint !== undefined) {\n connections['rest-data-lake'] = {\n baseUrl: options.dataLakeEndpoint,\n type: 'rest',\n }\n providerBindings[DataLakeViewerMoniker] = { connection: 'rest-data-lake' }\n }\n if (options.signer !== undefined) {\n addRunnerBindings(\n connections,\n providerBindings,\n options.endpoint,\n options.signer,\n options.dataLakeEndpoint !== undefined,\n )\n }\n if (options.primeCaches !== undefined) {\n providerBindings[NetworkStakeStepRewardsByPositionViewerMoniker] = { primeCaches: options.primeCaches }\n }\n\n return parseXl1BrowserSystemConfig({\n actors: options.actors ?? [{\n host: options.host,\n type: xl1BrowserSystemActorType(\n options.signer !== undefined,\n options.dataLakeEndpoint !== undefined,\n ),\n }],\n connections,\n providerBindings,\n })\n}\n\nfunction addRunnerBindings(\n connections: ConnectionsConfig,\n providerBindings: ProviderBindingsConfig,\n rpcUrl: string,\n signer: Xl1BrowserSignerConfig,\n hasDataLake: boolean,\n): void {\n connections['default-rpc'] = {\n protocol: 'http',\n type: 'rpc',\n url: rpcUrl,\n }\n providerBindings[MempoolRunnerMoniker] = {\n connection: 'default-rpc',\n provider: 'JsonRpcMempoolRunner',\n }\n providerBindings[XyoRunnerMoniker] = {\n connection: 'default-rpc',\n provider: 'JsonRpcXyoRunner',\n }\n providerBindings[XyoConnectionMoniker] = { provider: 'SimpleXyoConnectionRunner' }\n providerBindings[XyoGatewayMoniker] = { provider: 'SimpleXyoGatewayRunner' }\n providerBindings[XyoGatewayRunnerMoniker] = { provider: 'SimpleXyoGatewayRunner' }\n if (hasDataLake) {\n providerBindings[DataLakeRunnerMoniker] = {\n connection: 'rest-data-lake',\n provider: 'RestDataLakeRunner',\n }\n }\n\n switch (signer.type) {\n case 'account': {\n providerBindings[XyoSignerMoniker] = { provider: BrowserSimpleXyoSignerProviderId }\n break\n }\n case 'provider': {\n providerBindings[XyoSignerMoniker] = { provider: signer.provider }\n break\n }\n case 'rpc': {\n connections[SIGNER_RPC_CONNECTION] = { protocol: 'http', type: 'rpc' }\n providerBindings[XyoSignerMoniker] = {\n connection: SIGNER_RPC_CONNECTION,\n provider: 'JsonRpcXyoSigner',\n }\n break\n }\n }\n}\n\n/** Drops undefined-valued keys; undefined when nothing remains (keeps bindings exactly `{ connection }` when unset). */\nfunction definedOptions(options: object | undefined): Record<string, unknown> | undefined {\n if (options === undefined) return undefined\n const entries = Object.entries(options).filter(([, value]) => value !== undefined)\n return entries.length === 0 ? undefined : Object.fromEntries(entries)\n}\n\nfunction xl1BrowserSystemActorType(\n isRunner: boolean,\n hasDataLake: boolean,\n): typeof Xl1BrowserSystemActorType\n | typeof Xl1BrowserSystemWithDataLakeActorType\n | typeof Xl1BrowserRunnerSystemActorType\n | typeof Xl1BrowserRunnerSystemWithDataLakeActorType {\n if (isRunner) {\n return hasDataLake\n ? Xl1BrowserRunnerSystemWithDataLakeActorType\n : Xl1BrowserRunnerSystemActorType\n }\n return hasDataLake\n ? Xl1BrowserSystemWithDataLakeActorType\n : Xl1BrowserSystemActorType\n}\n\nfunction restGatewayConfigFromPathEndpoint(\n endpoint: string,\n): Required<Pick<RestGatewayConfig, 'chainState' | 'finalized' | 'index'>> {\n const baseUrl = endpoint.endsWith('/') ? endpoint.slice(0, -1) : endpoint\n return {\n chainState: { readUrl: `${baseUrl}/state` },\n finalized: { readUrl: `${baseUrl}/blocks` },\n index: { readUrl: `${baseUrl}/indexes` },\n }\n}\n\nfunction toBrowserProviderBindings(\n bindings: ProviderBindingsConfig,\n): NonNullable<BrowserSystemConfig['providerBindings']> {\n return Object.fromEntries(Object.entries(bindings).map(([moniker, binding]) => [\n moniker,\n binding === undefined\n ? {}\n : {\n connection: binding.connection,\n options: binding.options,\n provider: binding.provider,\n },\n ]))\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n", "import type { BrowserSystemProvisioner } from '@ariestools/browser-kit'\nimport { createResolvedBrowserProviderPlan } from '@ariestools/browser-kit'\nimport { createResolvedProviderSystem } from '@ariestools/provider-model'\nimport type {\n ConnectionsConfig,\n CreatableProviderContext,\n CreatableProviderFactory,\n ProviderBindingsConfig,\n ProviderDescriptor as Xl1ProviderDescriptor,\n ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\nimport {\n allProviderCandidates,\n captureCreatableProviderFactory,\n compileLocatorConfig,\n providerCandidateFromClass,\n ProviderFactoryLocator,\n releaseProviderFactoryLocator,\n SimpleXyoConnectionViewer,\n SimpleXyoGateway,\n SimpleXyoSigner,\n} from '@xyo-network/xl1-sdk'\n\nimport type { Xl1BrowserSystemConfig } from './Xl1BrowserConfig.ts'\n\n/** Stable browser-provider identifier retained across production minification. */\nexport const SimpleXyoConnectionViewerProviderId = 'SimpleXyoConnectionViewer'\n/** Stable browser-provider identifier retained across production minification. */\nexport const SimpleXyoGatewayProviderId = 'SimpleXyoGateway'\n/** Stable id for the account-backed signer adapted to a browser runtime home. */\nexport const BrowserSimpleXyoSignerProviderId = 'BrowserSimpleXyoSigner'\n\n/** Exact runtime factory paired with the descriptor used during config resolution. */\nexport interface Xl1BrowserProviderRegistration {\n readonly descriptor: Xl1ProviderDescriptor\n readonly factory: CreatableProviderFactory\n}\n\n/** Browser-kit plan metadata retaining the XL1 provider class used by the provisioner. */\nexport interface Xl1BrowserProviderDeclaration {\n readonly connectionTypes: readonly string[]\n readonly dependencies: readonly string[]\n readonly id: string\n readonly monikers: readonly string[]\n readonly optionalDependencies?: readonly string[]\n readonly xl1: Xl1ProviderDescriptor\n}\n\n/** Non-serializable XL1 runtime homes supplied by the realm that owns the system. */\nexport type Xl1BrowserProviderRuntimeContext = Omit<\n CreatableProviderContext,\n 'config' | 'locator'\n>\n\n/** Options captured by the XL1 browser-system provisioner. */\nexport interface CreateXl1BrowserSystemProvisionerOptions {\n readonly config: Xl1BrowserSystemConfig\n readonly context?: Xl1BrowserProviderRuntimeContext\n readonly providerRegistrations?: readonly Xl1BrowserProviderRegistration[]\n}\n\n/** Adapts one XL1 provider candidate into neutral browser-kit plan metadata. */\nexport function xl1BrowserProviderDeclaration(\n descriptor: Xl1ProviderDescriptor,\n): Xl1BrowserProviderDeclaration {\n const captured = Object.freeze({\n ...descriptor,\n connectionTypes: Object.freeze([...descriptor.connectionTypes]),\n dependencies: Object.freeze([...(descriptor.dependencies ?? descriptor.creatableProvider.dependencies)]),\n optionalDependencies: Object.freeze([...(descriptor.optionalDependencies ?? descriptor.creatableProvider.optionalDependencies ?? [])]),\n satisfies: Object.freeze([...descriptor.satisfies]),\n })\n return Object.freeze({\n connectionTypes: captured.connectionTypes,\n dependencies: captured.dependencies,\n id: captured.id,\n monikers: captured.satisfies,\n optionalDependencies: captured.optionalDependencies,\n xl1: captured,\n })\n}\n\n/** Returns the XL1 provider catalog available to browser-system configuration. */\nexport function xl1BrowserProviderCandidates(): Xl1ProviderDescriptor[] {\n return [\n ...allProviderCandidates(),\n browserRuntimeProviderCandidateFromClass(SimpleXyoSigner, BrowserSimpleXyoSignerProviderId),\n providerCandidateFromClass(SimpleXyoConnectionViewer, SimpleXyoConnectionViewerProviderId),\n providerCandidateFromClass(SimpleXyoGateway, SimpleXyoGatewayProviderId),\n ]\n}\n\n/**\n * Adapts an exact factory supplied by the owner realm into plan metadata.\n *\n * The factory is a runtime home, so its provider is intentionally presented as\n * connectionless to the serializable planner. The exact factory is restored by\n * the provisioner after resolution rather than reconstructed from its class.\n * `id` defaults to the provider class's own `static providerId`; when it\n * declares none, pass a bundle-stable id explicitly.\n * @throws MissingProviderIdError when no `id` is passed and the class declares no `providerId`\n */\nexport function xl1BrowserProviderRegistrationFromFactory(\n factory: CreatableProviderFactory,\n id?: string,\n): Xl1BrowserProviderRegistration {\n return {\n descriptor: {\n ...providerCandidateFromClass(factory.creatableProvider, id),\n connectionTypes: ['none'],\n dependencies: [...factory.dependencies],\n optionalDependencies: [...factory.optionalDependencies ?? factory.creatableProvider.optionalDependencies ?? []],\n },\n factory,\n }\n}\n\n/** Captures and checks exact runtime factory metadata before any resource acquisition. */\nexport function captureXl1BrowserProviderRegistration(\n registration: Xl1BrowserProviderRegistration,\n): Xl1BrowserProviderRegistration {\n const factory = captureCreatableProviderFactory(registration.factory)\n const descriptor = xl1BrowserProviderDeclaration(registration.descriptor).xl1\n if (factory.scope === 'global') throw new Error(`Browser provider [${descriptor.id}] cannot use global factory scope`)\n const same = (left: readonly string[], right: readonly string[]) => {\n const leftSet = new Set(left)\n const rightSet = new Set(right)\n return leftSet.size === rightSet.size && left.every(value => rightSet.has(value))\n }\n if (!same(descriptor.satisfies, factory.monikers)\n || !same(descriptor.dependencies ?? [], factory.dependencies)\n || !same(descriptor.optionalDependencies ?? [], factory.optionalDependencies ?? [])) {\n throw new Error(`Browser provider [${descriptor.id}] descriptor differs from its exact factory dependencies or monikers`)\n }\n return Object.freeze({ descriptor, factory })\n}\n\n/** Adapts an XL1 provider catalog for browser-kit planning. */\nexport function xl1BrowserProviderDeclarations(\n candidates: readonly Xl1ProviderDescriptor[] = xl1BrowserProviderCandidates(),\n): Xl1BrowserProviderDeclaration[] {\n return candidates.map(xl1BrowserProviderDeclaration)\n}\n\n/** Creates the owner-realm provisioner that instantiates one resolved XL1 locator. */\nexport function createXl1BrowserSystemProvisioner(\n options: CreateXl1BrowserSystemProvisionerOptions,\n): BrowserSystemProvisioner<ProviderFactoryLocatorInstance> {\n const registeredFactories = new Map(\n options.providerRegistrations?.map((registration) => {\n const captured = captureXl1BrowserProviderRegistration(registration)\n return [captured.descriptor.id, captured.factory]\n }),\n )\n return async (input) => {\n const providerBindings = mergeResolvedProviderBindings(\n options.config.providerBindings,\n input.compiled.config.providerBindings,\n )\n const locatorConfig = compileLocatorConfig({\n ...options.config,\n connections: input.compiled.config.connections as ConnectionsConfig,\n providerBindings,\n })\n const locator = new ProviderFactoryLocator({\n caches: {},\n singletons: {},\n ...options.context,\n config: locatorConfig,\n }, {}, false, { dependencyAccess: 'declared' })\n try {\n for (const selected of input.compiled.resolution.selected) {\n const declaration = selected as unknown as Xl1BrowserProviderDeclaration\n const descriptor = declaration.xl1\n const factory = registeredFactories.get(descriptor.id)\n ?? descriptor.creatableProvider.factory([...declaration.dependencies], {}, declaration.optionalDependencies ?? [])\n locator.register(captureXl1BrowserProviderRegistration({ descriptor, factory }).factory)\n }\n locator.freeze()\n for (const moniker of input.compiled.declaration.dependencies) {\n await locator.getInstance(moniker)\n }\n } catch (startError) {\n let releaseError: unknown\n try {\n await releaseProviderFactoryLocator(locator)\n } catch (error: unknown) {\n releaseError = error\n }\n if (releaseError !== undefined) {\n throw new AggregateError(\n [startError, releaseError],\n 'XL1 browser provider provisioning and cleanup both failed',\n { cause: startError },\n )\n }\n throw startError\n }\n\n const resolvedConfig = Object.freeze({\n ...options.config,\n actors: input.config.actors,\n connections: input.compiled.config.connections as ConnectionsConfig,\n providerBindings,\n })\n const system = createResolvedProviderSystem({\n config: resolvedConfig,\n locator,\n resolution: createResolvedBrowserProviderPlan(input.compiled.resolution),\n })\n let releasePromise: Promise<void> | undefined\n return {\n release: () => {\n releasePromise ??= releaseProviderFactoryLocator(locator)\n return releasePromise\n },\n system,\n }\n }\n}\n\nfunction browserRuntimeProviderCandidateFromClass(\n creatableProvider: Parameters<typeof providerCandidateFromClass>[0],\n id: string,\n): Xl1ProviderDescriptor {\n return {\n ...providerCandidateFromClass(creatableProvider, id),\n connectionTypes: ['none'],\n }\n}\n\nfunction mergeResolvedProviderBindings(\n authored: ProviderBindingsConfig,\n resolved: Readonly<Record<string, {\n readonly connection?: string\n readonly options?: Readonly<Record<string, unknown>>\n readonly provider?: string\n } | undefined>>,\n): ProviderBindingsConfig {\n return Object.fromEntries(Object.entries(resolved).map(([moniker, binding]) => [\n moniker,\n {\n ...authored[moniker],\n ...binding,\n },\n ]))\n}\n", "import type {\n ProviderActorContext,\n ProviderActorParams,\n} from '@ariestools/actor'\nimport { ProviderActor } from '@ariestools/actor'\nimport type { RawInstanceLocator } from '@ariestools/actor-model'\nimport type {\n BrowserActor,\n ResolvedBrowserProviderPlan,\n ResolvedBrowserSystemConfig,\n} from '@ariestools/browser-kit'\nimport { BrowserActorCatalog as BrowserActorCatalogInstance } from '@ariestools/browser-kit'\nimport type { CreatableName } from '@ariestools/sdk'\nimport type {\n ProviderFactoryLocatorInstance,\n XyoGateway,\n XyoGatewayRunner,\n} from '@xyo-network/xl1-sdk'\nimport {\n DataLakeRunnerMoniker,\n DataLakeViewerMoniker,\n XyoGatewayMoniker,\n XyoGatewayRunnerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nexport const Xl1BrowserSystemActorType = 'xl1-system' as const\nexport const Xl1BrowserSystemWithDataLakeActorType = 'xl1-system-with-data-lake' as const\nexport const Xl1BrowserRunnerSystemActorType = 'xl1-runner-system' as const\nexport const Xl1BrowserRunnerSystemWithDataLakeActorType = 'xl1-runner-system-with-data-lake' as const\n\nexport interface Xl1BrowserSystemActorParams extends ProviderActorParams<\n RawInstanceLocator,\n ResolvedBrowserSystemConfig,\n unknown,\n ResolvedBrowserProviderPlan\n> {\n /** Fixed by the catalog entry; a sibling Runner does not upgrade a Viewer. */\n readonly gatewayMoniker?: typeof XyoGatewayMoniker | typeof XyoGatewayRunnerMoniker\n}\n\n/** Matches Actor dependency scoping: a Viewer catalog entry never declares the Runner capability. */\nclass Xl1BrowserActorDependencyError extends Error {\n readonly code = 'dependency-undeclared'\n override readonly name = 'Xl1BrowserActorDependencyError'\n}\n\n/** Resident actor representing one configured XL1 gateway system. */\nexport class Xl1BrowserSystemActor extends ProviderActor<Xl1BrowserSystemActorParams> {\n private _gatewayMoniker: typeof XyoGatewayMoniker | typeof XyoGatewayRunnerMoniker = XyoGatewayMoniker\n\n override async createHandler(): Promise<void> {\n this._gatewayMoniker = this.params.gatewayMoniker ?? XyoGatewayMoniker\n await super.createHandler()\n }\n\n /** Resolves the gateway owned by this actor's immutable provider system. */\n async getGateway(): Promise<XyoGateway | XyoGatewayRunner> {\n if (this.status !== 'started') {\n throw new Error(`XL1 browser system actor is not running (status: ${this.status})`)\n }\n return this._gatewayMoniker === XyoGatewayRunnerMoniker ? (await this.getProvider<XyoGatewayRunner>(XyoGatewayRunnerMoniker)) : (await this.getProvider<XyoGateway>(XyoGatewayMoniker))\n }\n\n /** Resolves the required write-capable gateway from a runner-system actor. */\n async getGatewayRunner(): Promise<XyoGatewayRunner> {\n if (this.status !== 'started') {\n throw new Error(`XL1 browser system actor is not running (status: ${this.status})`)\n }\n if (this._gatewayMoniker !== XyoGatewayRunnerMoniker) {\n throw new Xl1BrowserActorDependencyError(`XL1 browser system actor [${this.name}] does not declare ${XyoGatewayRunnerMoniker}`)\n }\n return await this.getProvider<XyoGatewayRunner>(XyoGatewayRunnerMoniker)\n }\n}\n\nexport const Xl1BrowserSystemActorDependencies = [XyoGatewayMoniker] as const\nexport const Xl1BrowserSystemWithDataLakeActorDependencies = [\n XyoGatewayMoniker,\n DataLakeViewerMoniker,\n] as const\nexport const Xl1BrowserRunnerSystemActorDependencies = [XyoGatewayRunnerMoniker] as const\nexport const Xl1BrowserRunnerSystemWithDataLakeActorDependencies = [\n XyoGatewayRunnerMoniker,\n DataLakeRunnerMoniker,\n DataLakeViewerMoniker,\n] as const\n\n/** Creates the default actor catalog and optionally installs app actors. */\nexport function createXl1BrowserActorCatalog() {\n const catalog = new BrowserActorCatalogInstance<BrowserActor, ProviderFactoryLocatorInstance>()\n const create = async (\n id: string,\n providerContext: ProviderActorContext<\n RawInstanceLocator,\n ResolvedBrowserSystemConfig,\n unknown,\n ResolvedBrowserProviderPlan\n >,\n gatewayMoniker: typeof XyoGatewayMoniker | typeof XyoGatewayRunnerMoniker,\n ) => await Xl1BrowserSystemActor.create({\n gatewayMoniker,\n name: id as CreatableName,\n providerContext,\n })\n catalog.register({\n create: async ({ id, providerContext }) => await create(id, providerContext, XyoGatewayMoniker),\n dependencies: Xl1BrowserSystemActorDependencies,\n type: Xl1BrowserSystemActorType,\n })\n catalog.register({\n create: async ({ id, providerContext }) => await create(id, providerContext, XyoGatewayMoniker),\n dependencies: Xl1BrowserSystemWithDataLakeActorDependencies,\n type: Xl1BrowserSystemWithDataLakeActorType,\n })\n catalog.register({\n create: async ({ id, providerContext }) => await create(id, providerContext, XyoGatewayRunnerMoniker),\n dependencies: Xl1BrowserRunnerSystemActorDependencies,\n type: Xl1BrowserRunnerSystemActorType,\n })\n catalog.register({\n create: async ({ id, providerContext }) => await create(id, providerContext, XyoGatewayRunnerMoniker),\n dependencies: Xl1BrowserRunnerSystemWithDataLakeActorDependencies,\n type: Xl1BrowserRunnerSystemWithDataLakeActorType,\n })\n return catalog\n}\n", "import type {\n BrowserActor,\n BrowserSystemIdentity,\n BrowserSystemSession,\n} from '@ariestools/browser-kit'\nimport { launchCompiledBrowserSystem } from '@ariestools/browser-kit'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nimport type { CompiledXl1BrowserSystem } from './compileXl1BrowserSystem.ts'\nimport {\n createXl1BrowserSystemProvisioner,\n type Xl1BrowserProviderDeclaration,\n type Xl1BrowserProviderRuntimeContext,\n} from './Xl1BrowserProvider.ts'\n\n/** Runtime-only options applied to an already-compiled XL1 browser system. */\nexport interface LaunchCompiledXl1BrowserSystemOptions<\n TActor extends BrowserActor = BrowserActor,\n> {\n readonly compiled: CompiledXl1BrowserSystem<TActor>\n readonly context?: Xl1BrowserProviderRuntimeContext\n readonly host?: string\n readonly identity?: BrowserSystemIdentity\n readonly readyTimeoutMs?: number\n}\n\n/** Provisions and starts one compiled XL1 browser system without resolving it again. */\nexport async function launchCompiledXl1BrowserSystem<\n TActor extends BrowserActor = BrowserActor,\n>(\n options: LaunchCompiledXl1BrowserSystemOptions<TActor>,\n): Promise<BrowserSystemSession<TActor, ProviderFactoryLocatorInstance>> {\n return await launchCompiledBrowserSystem<\n TActor,\n ProviderFactoryLocatorInstance,\n Xl1BrowserProviderDeclaration\n >({\n actorCatalog: options.compiled.actorCatalog,\n compiled: options.compiled.browserSystem,\n ...options.host !== undefined && { host: options.host },\n ...options.identity !== undefined && { identity: options.identity },\n provision: createXl1BrowserSystemProvisioner({\n config: options.compiled.config,\n ...options.context !== undefined && { context: options.context },\n providerRegistrations: options.compiled.providerRegistrations,\n }),\n ...options.readyTimeoutMs !== undefined && { readyTimeoutMs: options.readyTimeoutMs },\n })\n}\n", "import type {\n BrowserSystemIdentity,\n BrowserSystemSession,\n} from '@ariestools/browser-kit'\nimport type {\n ChainId,\n ConnectionHandleCache,\n CreatableProviderFactory,\n PrimeCachesMode,\n ProviderDescriptor as Xl1ProviderDescriptor,\n ProviderFactoryLocatorInstance,\n RestGatewayConfig,\n RpcTransport,\n XyoGateway,\n XyoGatewayRunner,\n XyoSignerRpcSchemas,\n} from '@xyo-network/xl1-sdk'\nimport {\n DefaultAccountKey,\n SimpleConnectionHandleCache,\n XyoSignerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nimport { launchXl1BrowserSystem } from './launchXl1BrowserSystem.ts'\nimport type {\n Xl1BrowserSignerConfig,\n Xl1RestEndpointLayout,\n} from './Xl1BrowserConfig.ts'\nimport {\n createXl1RestBrowserSystemConfig,\n createXl1RpcBrowserSystemConfig,\n} from './Xl1BrowserConfig.ts'\nimport type {\n Xl1BrowserProviderRegistration,\n Xl1BrowserProviderRuntimeContext,\n} from './Xl1BrowserProvider.ts'\nimport { xl1BrowserProviderRegistrationFromFactory } from './Xl1BrowserProvider.ts'\nimport { Xl1BrowserSystemActor } from './Xl1BrowserSystemActor.ts'\n\n/** How a browser gateway reads XL1 chain data. */\nexport type Xl1BrowserGatewayTransport = 'rest' | 'rpc'\n\n/** Account instance accepted by the browser provider runtime home. */\nexport type Xl1BrowserSignerAccount = NonNullable<\n Xl1BrowserProviderRuntimeContext['accounts']\n>[string]\n\n/** Inputs for launching one standard browser-owned XL1 gateway system. */\nexport interface LaunchXl1BrowserGatewaySystemOptions {\n /** RestBlockViewer read-ahead and cache sizing (`readStep`, `maxCacheSize`). REST transport only; ignored for RPC systems. */\n readonly blockViewerOptions?: RestGatewayConfig['blockViewerOptions']\n /** Staking contract address required by finalized REST stake readers. */\n readonly chainId?: ChainId\n readonly context?: Xl1BrowserProviderRuntimeContext\n readonly dataLakeEndpoint?: string\n /** REST root for REST mode, or the complete RPC URL for RPC mode. */\n readonly endpoint: string\n readonly host?: string\n readonly identity?: BrowserSystemIdentity\n readonly layout?: Xl1RestEndpointLayout\n readonly primeCaches?: PrimeCachesMode\n readonly providerCandidates?: readonly Xl1ProviderDescriptor[]\n readonly readyTimeoutMs?: number\n /** Required for a signed REST system; ignored for RPC systems. */\n readonly rpcUrl?: string\n readonly signerAccount?: Xl1BrowserSignerAccount\n readonly signerFactory?: CreatableProviderFactory\n /** Stable config identifier for signerFactory; defaults to its provider class's `providerId`. */\n readonly signerProviderId?: string\n readonly signerTransport?: RpcTransport<XyoSignerRpcSchemas>\n readonly transport: Xl1BrowserGatewayTransport\n}\n\n/** Running stock XL1 browser system with its actor and gateway exposed. */\nexport interface Xl1BrowserGatewaySystemSession\n extends BrowserSystemSession<Xl1BrowserSystemActor, ProviderFactoryLocatorInstance> {\n readonly actor: Xl1BrowserSystemActor\n readonly gateway: XyoGateway | XyoGatewayRunner\n}\n\n/**\n * Launches a read-only or signed REST/RPC gateway through one browser-kit\n * provider system. Signing precedence is factory, account, then RPC transport.\n */\nexport async function launchXl1BrowserGatewaySystem(\n options: LaunchXl1BrowserGatewaySystemOptions,\n): Promise<Xl1BrowserGatewaySystemSession> {\n const signing = browserSignerRuntime(options)\n const config = options.transport === 'rest'\n ? createXl1RestBrowserSystemConfig({\n blockViewerOptions: options.blockViewerOptions,\n chainId: options.chainId,\n dataLakeEndpoint: options.dataLakeEndpoint,\n endpoint: options.endpoint,\n host: options.host,\n layout: options.layout,\n primeCaches: options.primeCaches,\n rpcUrl: options.rpcUrl,\n signer: signing.config,\n })\n : createXl1RpcBrowserSystemConfig({\n dataLakeEndpoint: options.dataLakeEndpoint,\n endpoint: options.endpoint,\n host: options.host,\n primeCaches: options.primeCaches,\n signer: signing.config,\n })\n const ownedHandles = signing.ownedConnectionHandles\n let session: BrowserSystemSession<Xl1BrowserSystemActor, ProviderFactoryLocatorInstance>\n try {\n session = await launchXl1BrowserSystem<Xl1BrowserSystemActor>({\n config,\n context: signing.context,\n host: options.host,\n identity: options.identity,\n providerCandidates: options.providerCandidates,\n providerRegistrations: signing.registrations,\n readyTimeoutMs: options.readyTimeoutMs,\n })\n } catch (launchError) {\n const [closeResult] = await Promise.allSettled([ownedHandles?.close?.()])\n if (closeResult.status === 'rejected') {\n throw new AggregateError(\n [launchError, closeResult.reason],\n 'XL1 browser system failed to launch and close its connection handles',\n { cause: launchError },\n )\n }\n throw launchError\n }\n\n try {\n const actor = session.actors.find(candidate => candidate instanceof Xl1BrowserSystemActor)\n if (actor === undefined) throw new Error('XL1 browser system actor was not created')\n const gateway = await actor.getGateway()\n return {\n actor,\n actors: session.actors,\n gateway,\n identity: session.identity,\n stop: async () => {\n const errors = await stopSessionAndHandles(session, ownedHandles)\n if (errors.length === 1) throw errors[0]\n if (errors.length > 1) {\n throw new AggregateError(errors, 'XL1 browser system and its connection handles failed to stop', { cause: errors[0] })\n }\n },\n system: session.system,\n whenFailed: () => session.whenFailed(),\n whenTerminal: () => session.whenTerminal(),\n }\n } catch (launchError) {\n const cleanupErrors = await stopSessionAndHandles(session, ownedHandles)\n if (cleanupErrors.length > 0) {\n throw new AggregateError(\n [launchError, ...cleanupErrors],\n 'XL1 browser system failed to expose a gateway and stop cleanly',\n { cause: launchError },\n )\n }\n throw launchError\n }\n}\n\n/** Stops the session first, then closes a launcher-created cache; returns every failure. */\nasync function stopSessionAndHandles(\n session: { stop(): Promise<void> },\n handles: ConnectionHandleCache | undefined,\n): Promise<unknown[]> {\n const [stopResult] = await Promise.allSettled([session.stop()])\n const [closeResult] = await Promise.allSettled([handles?.close?.()])\n return [stopResult, closeResult].flatMap(result => result.status === 'rejected' ? [result.reason as unknown] : [])\n}\n\ninterface BrowserSignerRuntime {\n readonly config?: Xl1BrowserSignerConfig\n readonly context?: Xl1BrowserProviderRuntimeContext\n /** A cache this launcher created; the locator borrows it, so the launcher closes it. */\n readonly ownedConnectionHandles?: ConnectionHandleCache\n readonly registrations?: readonly Xl1BrowserProviderRegistration[]\n}\n\nfunction browserSignerRuntime(\n options: LaunchXl1BrowserGatewaySystemOptions,\n): BrowserSignerRuntime {\n if (options.signerFactory !== undefined) {\n const registration = xl1BrowserProviderRegistrationFromFactory(\n options.signerFactory,\n options.signerProviderId,\n )\n return {\n config: { provider: registration.descriptor.id, type: 'provider' },\n context: options.context,\n registrations: [registration],\n }\n }\n if (options.signerAccount !== undefined) {\n return {\n config: { type: 'account' },\n context: {\n caches: {},\n singletons: {},\n ...options.context,\n accounts: {\n ...options.context?.accounts,\n [DefaultAccountKey]: options.signerAccount,\n },\n },\n }\n }\n if (options.signerTransport !== undefined) {\n const suppliedHandles = options.context?.connectionHandles\n const connectionHandles = suppliedHandles ?? new SimpleConnectionHandleCache()\n connectionHandles.set(`rpc-transport:${XyoSignerMoniker}`, options.signerTransport)\n return {\n config: { type: 'rpc' },\n context: {\n caches: {},\n singletons: {},\n ...options.context,\n connectionHandles,\n },\n ...(suppliedHandles === undefined && { ownedConnectionHandles: connectionHandles }),\n }\n }\n return { context: options.context }\n}\n", "import type {\n BrowserActor,\n BrowserSystemIdentity,\n BrowserSystemSession,\n} from '@ariestools/browser-kit'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nimport type { CompileXl1BrowserSystemOptions } from './compileXl1BrowserSystem.ts'\nimport { compileXl1BrowserSystem } from './compileXl1BrowserSystem.ts'\nimport {\n launchCompiledXl1BrowserSystem,\n type LaunchCompiledXl1BrowserSystemOptions,\n} from './launchCompiledXl1BrowserSystem.ts'\nimport type { Xl1BrowserProviderRuntimeContext } from './Xl1BrowserProvider.ts'\n\n/** Inputs for launching one owner-resolved XL1 browser provider system. */\nexport interface LaunchXl1BrowserSystemOptions<TActor extends BrowserActor = BrowserActor>\n extends CompileXl1BrowserSystemOptions<TActor> {\n readonly context?: Xl1BrowserProviderRuntimeContext\n readonly host?: string\n readonly identity?: BrowserSystemIdentity\n readonly readyTimeoutMs?: number\n}\n\n/** Parses, resolves, provisions, and starts one XL1 system from browser-safe config. */\nexport async function launchXl1BrowserSystem<TActor extends BrowserActor = BrowserActor>(\n options: LaunchXl1BrowserSystemOptions<TActor>,\n): Promise<BrowserSystemSession<TActor, ProviderFactoryLocatorInstance>> {\n const compiled = compileXl1BrowserSystem(options)\n const runtimeOptions: LaunchCompiledXl1BrowserSystemOptions<TActor> = {\n compiled,\n ...options.context !== undefined && { context: options.context },\n ...options.host !== undefined && { host: options.host },\n ...options.identity !== undefined && { identity: options.identity },\n ...options.readyTimeoutMs !== undefined && { readyTimeoutMs: options.readyTimeoutMs },\n }\n return await launchCompiledXl1BrowserSystem(runtimeOptions)\n}\n", "import type { PeriodicPassContext } from '@ariestools/actor'\nimport { ProviderActor } from '@ariestools/actor'\nimport type {\n BlockViewer, FinalizationViewer,\n FinalizedBlockStreamCursor, FinalizedBlockStreamNextBlockEvent, FinalizedBlockWalk,\n} from '@xyo-network/xl1-sdk'\nimport {\n advanceFinalizedBlockCursor, BlockViewerMoniker, createFinalizedBlockWalk, FinalizationViewerMoniker, finalizedBlockCursor,\n FinalizedBlockStreamDesyncError,\n} from '@xyo-network/xl1-sdk'\n\nimport type { Xl1BrowserSystemActorParams } from './Xl1BrowserSystemActor.ts'\n\n/** Only these two providers are required; no stream provider or nested graph. */\nexport const Xl1FinalizedBlockActorDependencies = [BlockViewerMoniker, FinalizationViewerMoniker] as const\n\n/** Consumer-owned resume checkpoint and bounded read controls. */\nexport interface Xl1FinalizedBlockActorParams extends Xl1BrowserSystemActorParams {\n readonly after?: FinalizedBlockStreamCursor['hash']\n readonly fetchWindow?: number\n}\n\n/**\n * Gapless Actor-owned catch-up and polling over the shared resolved SDK graph.\n * Hosts opt into inherited periodic scheduling or explicitly call runOnce/wake.\n * Acknowledgement precedes cursor advancement; durable checkpoints belong to the\n * consumer, which must tolerate redelivery after a failed handler or process loss.\n */\nexport abstract class Xl1FinalizedBlockActor extends ProviderActor<Xl1FinalizedBlockActorParams> {\n private _after?: FinalizedBlockStreamCursor['hash']\n private _cursor?: FinalizedBlockStreamCursor\n private _desync?: FinalizedBlockStreamDesyncError\n private _fetchWindow?: number\n private _initialHead?: FinalizedBlockStreamNextBlockEvent\n private _walk?: FinalizedBlockWalk\n private _walkSignal?: AbortSignal\n\n /** Last successfully acknowledged position, copied so callers cannot move it. */\n get cursor(): FinalizedBlockStreamCursor | undefined {\n return this._cursor === undefined ? undefined : { ...this._cursor }\n }\n\n override async createHandler(): Promise<void> {\n this._after = this.params.after\n this._fetchWindow = this.params.fetchWindow\n await super.createHandler()\n }\n\n protected override isFatalError(error: Error): boolean {\n return error instanceof FinalizedBlockStreamDesyncError\n }\n\n protected override async run(context: PeriodicPassContext): Promise<void> {\n if (this._desync !== undefined) throw this._desync\n try {\n await this.walkPass(context)\n } catch (error) {\n if (error instanceof FinalizedBlockStreamDesyncError) this._desync = error\n throw error\n }\n }\n\n private async walkPass(context: PeriodicPassContext): Promise<void> {\n const { signal } = context\n signal.throwIfAborted()\n if (this._walk === undefined || this._walkSignal !== signal) {\n const blocks = await this.getProvider<BlockViewer>(BlockViewerMoniker)\n signal.throwIfAborted()\n const finalization = await this.getProvider<FinalizationViewer>(FinalizationViewerMoniker)\n signal.throwIfAborted()\n this._walk = createFinalizedBlockWalk({ blocks, finalization }, { fetchWindow: this._fetchWindow }, signal)\n this._walkSignal = signal\n }\n const walk = this._walk\n if (this._cursor === undefined && this._after !== undefined) this._cursor = await walk.checkpoint(this._after)\n if (this._cursor === undefined) {\n if (this._initialHead === undefined) {\n const head = await walk.head()\n this._initialHead = { block: head, head: head[0].block }\n }\n const next = finalizedBlockCursor(this._initialHead.block)\n await this.onBlock(this._initialHead, context)\n signal.throwIfAborted()\n this._cursor = next\n this._initialHead = undefined\n return\n }\n const head = await walk.head()\n const headNumber = head[0].block\n while (this._cursor.block < headNumber) {\n const window = await walk.next(this._cursor, headNumber)\n for (const block of window) {\n signal.throwIfAborted()\n const next = advanceFinalizedBlockCursor(this._cursor, block)\n await this.onBlock({ block, head: headNumber }, context)\n signal.throwIfAborted()\n this._cursor = next\n }\n }\n }\n\n /** Await durable/idempotent consumer work here; never call and await own stop. */\n protected abstract onBlock(event: FinalizedBlockStreamNextBlockEvent, context: PeriodicPassContext): Promise<void>\n}\n"],
5
- "mappings": "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",
6
- "names": ["DataLakeRunnerMoniker", "DataLakeViewerMoniker", "XyoGatewayMoniker", "XyoGatewayRunnerMoniker", "XyoGatewayMoniker", "DataLakeViewerMoniker", "XyoGatewayRunnerMoniker", "DataLakeRunnerMoniker", "XyoSignerMoniker", "XyoSignerMoniker", "ProviderActor", "BlockViewerMoniker", "FinalizationViewerMoniker", "head"]
4
+ "sourcesContent": ["import type {\n BrowserActor,\n BrowserActorCatalog,\n CompiledBrowserSystem,\n} from '@ariestools/browser-kit'\nimport { compileBrowserSystem } from '@ariestools/browser-kit'\nimport type {\n ProviderDescriptor as Xl1ProviderDescriptor,\n ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\n\nimport type { Xl1BrowserSystemConfig } from './Xl1BrowserConfig.ts'\nimport {\n parseXl1BrowserSystemConfig,\n toBrowserSystemConfig,\n} from './Xl1BrowserConfig.ts'\nimport {\n captureXl1BrowserProviderRegistration,\n xl1BrowserProviderCandidates,\n type Xl1BrowserProviderDeclaration,\n xl1BrowserProviderDeclarations,\n type Xl1BrowserProviderRegistration,\n} from './Xl1BrowserProvider.ts'\nimport { createXl1BrowserActorCatalog } from './Xl1BrowserSystemActor.ts'\n\n/** Inputs that deterministically compile one XL1 browser system. */\nexport interface CompileXl1BrowserSystemOptions<TActor extends BrowserActor = BrowserActor> {\n readonly actorCatalog?: BrowserActorCatalog<TActor, ProviderFactoryLocatorInstance>\n readonly config: unknown\n readonly providerCandidates?: readonly Xl1ProviderDescriptor[]\n readonly providerRegistrations?: readonly Xl1BrowserProviderRegistration[]\n}\n\n/**\n * One owner-local XL1 browser plan before providers or actors are created.\n *\n * The catalog and provider registrations retain executable factories and must\n * not cross a structured-clone boundary.\n */\nexport interface CompiledXl1BrowserSystem<TActor extends BrowserActor = BrowserActor> {\n readonly actorCatalog: BrowserActorCatalog<TActor, ProviderFactoryLocatorInstance>\n readonly browserSystem: CompiledBrowserSystem<Xl1BrowserProviderDeclaration>\n readonly config: Xl1BrowserSystemConfig\n readonly providerRegistrations: readonly Xl1BrowserProviderRegistration[]\n}\n\n/** Parses and resolves one XL1 browser system without acquiring runtime resources. */\nexport function compileXl1BrowserSystem<TActor extends BrowserActor = BrowserActor>(\n options: CompileXl1BrowserSystemOptions<TActor>,\n): CompiledXl1BrowserSystem<TActor> {\n const config = parseXl1BrowserSystemConfig(options.config)\n const actorCatalog = options.actorCatalog\n ?? createXl1BrowserActorCatalog() as BrowserActorCatalog<\n TActor,\n ProviderFactoryLocatorInstance\n >\n const providerRegistrations = Object.freeze((options.providerRegistrations ?? []).map(captureXl1BrowserProviderRegistration))\n const providerCandidates = mergedProviderCandidates(\n options.providerCandidates ?? xl1BrowserProviderCandidates(),\n providerRegistrations,\n )\n const browserSystem = compileBrowserSystem<\n TActor,\n ProviderFactoryLocatorInstance,\n Xl1BrowserProviderDeclaration\n >({\n actorCatalog,\n config: toBrowserSystemConfig(config),\n providerDescriptors: xl1BrowserProviderDeclarations(providerCandidates),\n })\n return Object.freeze({\n actorCatalog,\n browserSystem,\n config,\n providerRegistrations,\n })\n}\n\nfunction mergedProviderCandidates(\n candidates: readonly Xl1ProviderDescriptor[],\n registrations: readonly Xl1BrowserProviderRegistration[],\n): Xl1ProviderDescriptor[] {\n const result = new Map(candidates.map(candidate => [candidate.id, candidate]))\n for (const registration of registrations) {\n result.set(registration.descriptor.id, registration.descriptor)\n }\n return result.values().toArray()\n}\n", "import type {\n BrowserActorSelection,\n BrowserSystemConfig,\n} from '@ariestools/browser-kit'\nimport { parseBrowserSystemConfig } from '@ariestools/browser-kit'\nimport type {\n ChainId,\n ConnectionsConfig,\n LocatorConfig,\n PrimeCachesMode,\n ProviderBindingsConfig,\n RestGatewayConfig,\n} from '@xyo-network/xl1-sdk'\nimport {\n applyRestDataLakeEndpoint,\n BlockViewerMoniker,\n ChainContractViewerMoniker,\n ChainStateViewerMoniker,\n DataLakeRunnerMoniker,\n DataLakeViewerMoniker,\n FinalizationViewerMoniker,\n IndexViewerMoniker,\n MempoolRunnerMoniker,\n NetworkStakeStepRewardsByPositionViewerMoniker,\n parseLocatorConfigFields,\n restConnectionFromS3Bucket,\n restGatewayConfigFromEndpoint,\n SIGNER_RPC_CONNECTION,\n StakeEventsViewerMoniker,\n StakeViewerMoniker,\n synthesizeRpcConnectionBindings,\n XyoConnectionMoniker,\n XyoGatewayMoniker,\n XyoGatewayRunnerMoniker,\n XyoRunnerMoniker,\n XyoSignerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nimport {\n BrowserSimpleXyoSignerProviderId,\n SimpleXyoConnectionViewerProviderId,\n SimpleXyoGatewayProviderId,\n} from './Xl1BrowserProvider.ts'\nimport {\n Xl1BrowserRunnerSystemActorType,\n Xl1BrowserRunnerSystemWithDataLakeActorType,\n Xl1BrowserSystemActorType,\n Xl1BrowserSystemWithDataLakeActorType,\n} from './Xl1BrowserSystemActor.ts'\n\n/** Authored XL1 locator fields plus browser actor selections. */\nexport interface Xl1BrowserSystemConfig extends LocatorConfig {\n readonly actors: readonly BrowserActorSelection[]\n}\n\n/** Options for a standard REST-backed XL1 browser system. */\nexport interface CreateXl1RestBrowserSystemConfigOptions {\n readonly actors?: readonly BrowserActorSelection[]\n /**\n * Extra connection profiles merged after the deprecated `dataLakeEndpoint` adapter.\n * A lake URL belongs on a `rest` connection, not on a second gateway field.\n */\n readonly additionalConnections?: ConnectionsConfig\n /** Extra provider bindings merged after the deprecated `dataLakeEndpoint` adapter. Bind `DataLakeViewer` and `DataLakeRunner` here. */\n readonly additionalProviderBindings?: ProviderBindingsConfig\n /**\n * RestBlockViewer read-ahead (`readStep`) and per-block cache size (`maxCacheSize`), merged into the\n * BlockViewer binding's `options`; the provider validates them in its actor realm.\n */\n readonly blockViewerOptions?: RestGatewayConfig['blockViewerOptions']\n /** Optional staking-contract address pin; otherwise the finalized chain head supplies it. */\n readonly chainId?: ChainId\n /**\n * @deprecated Build the lake with `createRestDataLakeViewer(url)` and\n * `createRestDataLakeRunner(url)`. Bind `DataLakeViewer` and `DataLakeRunner`\n * through the locator. This field/method/option is removed in 6.0.\n */\n readonly dataLakeEndpoint?: string\n readonly endpoint: string\n readonly host?: string\n readonly layout?: Xl1RestEndpointLayout\n readonly primeCaches?: PrimeCachesMode\n readonly rpcUrl?: string\n readonly signer?: Xl1BrowserSignerConfig\n}\n\n/** Options for a standard RPC-backed XL1 browser system. */\nexport interface CreateXl1RpcBrowserSystemConfigOptions {\n readonly actors?: readonly BrowserActorSelection[]\n /** Extra connection profiles merged after the deprecated `dataLakeEndpoint` adapter. */\n readonly additionalConnections?: ConnectionsConfig\n /** Extra provider bindings merged after the deprecated `dataLakeEndpoint` adapter. Bind `DataLakeViewer` and `DataLakeRunner` here. */\n readonly additionalProviderBindings?: ProviderBindingsConfig\n /**\n * @deprecated Build the lake with `createRestDataLakeViewer(url)` and\n * `createRestDataLakeRunner(url)`. Bind `DataLakeViewer` and `DataLakeRunner`\n * through the locator. This field/method/option is removed in 6.0.\n */\n readonly dataLakeEndpoint?: string\n readonly endpoint: string\n readonly host?: string\n readonly primeCaches?: PrimeCachesMode\n readonly signer?: Xl1BrowserSignerConfig\n}\n\n/** Selects the built-in account signer supplied through the runtime context. */\nexport interface Xl1BrowserAccountSignerConfig {\n readonly type: 'account'\n}\n\n/** Selects a connectionless signer factory supplied by the owner realm. */\nexport interface Xl1BrowserProviderSignerConfig {\n readonly provider: string\n readonly type: 'provider'\n}\n\n/** Selects a JsonRpc signer whose transport is supplied through runtime handles. */\nexport interface Xl1BrowserRpcSignerConfig {\n readonly type: 'rpc'\n}\n\n/** Serializable signer selection for a write-capable browser system. */\nexport type Xl1BrowserSignerConfig\n = | Xl1BrowserAccountSignerConfig\n | Xl1BrowserProviderSignerConfig\n | Xl1BrowserRpcSignerConfig\n\n/** How the REST gateway's finalized, chain-state, and index URLs are derived from its endpoint. */\nexport type Xl1RestEndpointLayout = 'path' | 'subdomain'\n\n/** Parses XL1 locator fields and browser actor selections without importing code from config. */\nexport function parseXl1BrowserSystemConfig(input: unknown): Xl1BrowserSystemConfig {\n const locatorConfig = parseLocatorConfigFields(input)\n const browserConfig = parseBrowserSystemConfig({\n actors: isRecord(input) ? input.actors : undefined,\n connections: locatorConfig.connections,\n providerBindings: toBrowserProviderBindings(locatorConfig.providerBindings),\n })\n return Object.freeze({\n ...locatorConfig,\n actors: Object.freeze([...(browserConfig.actors ?? [])]),\n })\n}\n\n/** Projects the XL1 config onto the neutral fields browser-kit compiles. */\nexport function toBrowserSystemConfig(\n config: Xl1BrowserSystemConfig,\n): BrowserSystemConfig {\n return {\n actors: config.actors,\n connections: config.connections,\n providerBindings: toBrowserProviderBindings(config.providerBindings),\n }\n}\n\n/** Creates explicit REST connections and provider bindings for one XL1 browser gateway actor. */\nexport function createXl1RestBrowserSystemConfig(\n options: CreateXl1RestBrowserSystemConfigOptions,\n): Xl1BrowserSystemConfig {\n const buckets = options.layout === 'path'\n ? restGatewayConfigFromPathEndpoint(options.endpoint)\n : restGatewayConfigFromEndpoint(options.endpoint)\n const finalized = buckets.finalized\n if (finalized === undefined) throw new Error('XL1 REST gateway has no finalized bucket')\n\n const connections: ConnectionsConfig = {\n 'rest-chain-state': restConnectionFromS3Bucket(buckets.chainState ?? finalized),\n 'rest-finalized': restConnectionFromS3Bucket(finalized),\n 'rest-index': restConnectionFromS3Bucket(buckets.index ?? finalized),\n }\n const providerBindings: ProviderBindingsConfig = {\n [BlockViewerMoniker]: { connection: 'rest-finalized' },\n [ChainContractViewerMoniker]: { connection: 'rest-chain-state' },\n [ChainStateViewerMoniker]: { connection: 'rest-chain-state' },\n [FinalizationViewerMoniker]: { connection: 'rest-finalized' },\n [IndexViewerMoniker]: { connection: 'rest-index' },\n [NetworkStakeStepRewardsByPositionViewerMoniker]: { connection: 'rest-index' },\n [StakeEventsViewerMoniker]: { connection: 'rest-index' },\n [StakeViewerMoniker]: { connection: 'rest-index' },\n [XyoConnectionMoniker]: { provider: SimpleXyoConnectionViewerProviderId },\n [XyoGatewayMoniker]: { provider: SimpleXyoGatewayProviderId },\n }\n applyRestDataLakeEndpoint(connections, providerBindings, dataLakeEndpointAdapter(options), [DataLakeViewerMoniker])\n Object.assign(connections, options.additionalConnections)\n Object.assign(providerBindings, options.additionalProviderBindings)\n if (options.signer !== undefined) {\n if (options.rpcUrl === undefined) {\n throw new Error('XL1 REST runner browser system requires rpcUrl')\n }\n addRunnerBindings(\n connections,\n providerBindings,\n options.rpcUrl,\n options.signer,\n )\n }\n if (options.primeCaches !== undefined) {\n providerBindings[NetworkStakeStepRewardsByPositionViewerMoniker] = {\n ...providerBindings[NetworkStakeStepRewardsByPositionViewerMoniker],\n primeCaches: options.primeCaches,\n }\n }\n // block read-ahead / cache sizing rides the binding as provider options\n const blockViewerOptions = definedOptions(options.blockViewerOptions)\n if (blockViewerOptions !== undefined) {\n providerBindings[BlockViewerMoniker] = {\n ...providerBindings[BlockViewerMoniker],\n options: { ...providerBindings[BlockViewerMoniker]?.options, ...blockViewerOptions },\n }\n }\n\n return parseXl1BrowserSystemConfig({\n actors: options.actors ?? [{\n host: options.host,\n type: xl1BrowserSystemActorType(\n options.signer !== undefined,\n hasBoundDataLake(providerBindings),\n ),\n }],\n chain: { id: options.chainId },\n connections,\n providerBindings,\n })\n}\n\n/** Creates explicit RPC connections and provider bindings for one XL1 browser gateway actor. */\nexport function createXl1RpcBrowserSystemConfig(\n options: CreateXl1RpcBrowserSystemConfigOptions,\n): Xl1BrowserSystemConfig {\n const connections: ConnectionsConfig = {\n 'default-rpc': {\n protocol: 'http',\n type: 'rpc',\n url: options.endpoint,\n },\n }\n const providerBindings: ProviderBindingsConfig = {\n ...synthesizeRpcConnectionBindings(),\n [XyoConnectionMoniker]: { provider: SimpleXyoConnectionViewerProviderId },\n [XyoGatewayMoniker]: { provider: SimpleXyoGatewayProviderId },\n }\n applyRestDataLakeEndpoint(connections, providerBindings, dataLakeEndpointAdapter(options), [DataLakeViewerMoniker])\n Object.assign(connections, options.additionalConnections)\n Object.assign(providerBindings, options.additionalProviderBindings)\n if (options.signer !== undefined) {\n addRunnerBindings(\n connections,\n providerBindings,\n options.endpoint,\n options.signer,\n )\n }\n if (options.primeCaches !== undefined) {\n providerBindings[NetworkStakeStepRewardsByPositionViewerMoniker] = { primeCaches: options.primeCaches }\n }\n\n return parseXl1BrowserSystemConfig({\n actors: options.actors ?? [{\n host: options.host,\n type: xl1BrowserSystemActorType(\n options.signer !== undefined,\n hasBoundDataLake(providerBindings),\n ),\n }],\n connections,\n providerBindings,\n })\n}\n\nfunction dataLakeEndpointAdapter(options: { readonly dataLakeEndpoint?: string }): string | undefined {\n return options.dataLakeEndpoint\n}\n\nfunction addRunnerBindings(\n connections: ConnectionsConfig,\n providerBindings: ProviderBindingsConfig,\n rpcUrl: string,\n signer: Xl1BrowserSignerConfig,\n): void {\n connections['default-rpc'] = {\n protocol: 'http',\n type: 'rpc',\n url: rpcUrl,\n }\n providerBindings[MempoolRunnerMoniker] = {\n connection: 'default-rpc',\n provider: 'JsonRpcMempoolRunner',\n }\n providerBindings[XyoRunnerMoniker] = {\n connection: 'default-rpc',\n provider: 'JsonRpcXyoRunner',\n }\n providerBindings[XyoConnectionMoniker] = { provider: 'SimpleXyoConnectionRunner' }\n providerBindings[XyoGatewayMoniker] = { provider: 'SimpleXyoGatewayRunner' }\n providerBindings[XyoGatewayRunnerMoniker] = { provider: 'SimpleXyoGatewayRunner' }\n const viewerConnection = providerBindings[DataLakeViewerMoniker]?.connection\n if (viewerConnection !== undefined && providerBindings[DataLakeRunnerMoniker] === undefined) {\n providerBindings[DataLakeRunnerMoniker] = {\n connection: viewerConnection,\n provider: 'RestDataLakeRunner',\n }\n }\n\n switch (signer.type) {\n case 'account': {\n providerBindings[XyoSignerMoniker] = { provider: BrowserSimpleXyoSignerProviderId }\n break\n }\n case 'provider': {\n providerBindings[XyoSignerMoniker] = { provider: signer.provider }\n break\n }\n case 'rpc': {\n connections[SIGNER_RPC_CONNECTION] = { protocol: 'http', type: 'rpc' }\n providerBindings[XyoSignerMoniker] = {\n connection: SIGNER_RPC_CONNECTION,\n provider: 'JsonRpcXyoSigner',\n }\n break\n }\n }\n}\n\n/** Drops undefined-valued keys; undefined when nothing remains (keeps bindings exactly `{ connection }` when unset). */\nfunction definedOptions(options: object | undefined): Record<string, unknown> | undefined {\n if (options === undefined) return undefined\n const entries = Object.entries(options).filter(([, value]) => value !== undefined)\n return entries.length === 0 ? undefined : Object.fromEntries(entries)\n}\n\nfunction hasBoundDataLake(providerBindings: ProviderBindingsConfig): boolean {\n return providerBindings[DataLakeViewerMoniker]?.connection !== undefined\n || providerBindings[DataLakeRunnerMoniker]?.connection !== undefined\n}\n\nfunction xl1BrowserSystemActorType(\n isRunner: boolean,\n hasDataLake: boolean,\n): typeof Xl1BrowserSystemActorType\n | typeof Xl1BrowserSystemWithDataLakeActorType\n | typeof Xl1BrowserRunnerSystemActorType\n | typeof Xl1BrowserRunnerSystemWithDataLakeActorType {\n if (isRunner) {\n return hasDataLake\n ? Xl1BrowserRunnerSystemWithDataLakeActorType\n : Xl1BrowserRunnerSystemActorType\n }\n return hasDataLake\n ? Xl1BrowserSystemWithDataLakeActorType\n : Xl1BrowserSystemActorType\n}\n\nfunction restGatewayConfigFromPathEndpoint(\n endpoint: string,\n): Required<Pick<RestGatewayConfig, 'chainState' | 'finalized' | 'index'>> {\n const baseUrl = endpoint.endsWith('/') ? endpoint.slice(0, -1) : endpoint\n return {\n chainState: { readUrl: `${baseUrl}/state` },\n finalized: { readUrl: `${baseUrl}/blocks` },\n index: { readUrl: `${baseUrl}/indexes` },\n }\n}\n\nfunction toBrowserProviderBindings(\n bindings: ProviderBindingsConfig,\n): NonNullable<BrowserSystemConfig['providerBindings']> {\n return Object.fromEntries(Object.entries(bindings).map(([moniker, binding]) => [\n moniker,\n binding === undefined\n ? {}\n : {\n connection: binding.connection,\n options: binding.options,\n provider: binding.provider,\n },\n ]))\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n", "import type { BrowserSystemProvisioner } from '@ariestools/browser-kit'\nimport { createResolvedBrowserProviderPlan } from '@ariestools/browser-kit'\nimport { createResolvedProviderSystem } from '@ariestools/provider-model'\nimport type {\n ConnectionsConfig,\n CreatableProviderContext,\n CreatableProviderFactory,\n ProviderBindingsConfig,\n ProviderDescriptor as Xl1ProviderDescriptor,\n ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\nimport {\n allProviderCandidates,\n captureCreatableProviderFactory,\n compileLocatorConfig,\n providerCandidateFromClass,\n ProviderFactoryLocator,\n releaseProviderFactoryLocator,\n SimpleXyoConnectionViewer,\n SimpleXyoGateway,\n SimpleXyoSigner,\n} from '@xyo-network/xl1-sdk'\n\nimport type { Xl1BrowserSystemConfig } from './Xl1BrowserConfig.ts'\n\n/** Stable browser-provider identifier retained across production minification. */\nexport const SimpleXyoConnectionViewerProviderId = 'SimpleXyoConnectionViewer'\n/** Stable browser-provider identifier retained across production minification. */\nexport const SimpleXyoGatewayProviderId = 'SimpleXyoGateway'\n/** Stable id for the account-backed signer adapted to a browser runtime home. */\nexport const BrowserSimpleXyoSignerProviderId = 'BrowserSimpleXyoSigner'\n\n/** Exact runtime factory paired with the descriptor used during config resolution. */\nexport interface Xl1BrowserProviderRegistration {\n readonly descriptor: Xl1ProviderDescriptor\n readonly factory: CreatableProviderFactory\n}\n\n/** Browser-kit plan metadata retaining the XL1 provider class used by the provisioner. */\nexport interface Xl1BrowserProviderDeclaration {\n readonly connectionTypes: readonly string[]\n readonly dependencies: readonly string[]\n readonly id: string\n readonly monikers: readonly string[]\n readonly optionalDependencies?: readonly string[]\n readonly xl1: Xl1ProviderDescriptor\n}\n\n/** Non-serializable XL1 runtime homes supplied by the realm that owns the system. */\nexport type Xl1BrowserProviderRuntimeContext = Omit<\n CreatableProviderContext,\n 'config' | 'locator'\n>\n\n/** Options captured by the XL1 browser-system provisioner. */\nexport interface CreateXl1BrowserSystemProvisionerOptions {\n readonly config: Xl1BrowserSystemConfig\n readonly context?: Xl1BrowserProviderRuntimeContext\n readonly providerRegistrations?: readonly Xl1BrowserProviderRegistration[]\n}\n\n/** Adapts one XL1 provider candidate into neutral browser-kit plan metadata. */\nexport function xl1BrowserProviderDeclaration(\n descriptor: Xl1ProviderDescriptor,\n): Xl1BrowserProviderDeclaration {\n const captured = Object.freeze({\n ...descriptor,\n connectionTypes: Object.freeze([...descriptor.connectionTypes]),\n dependencies: Object.freeze([...(descriptor.dependencies ?? descriptor.creatableProvider.dependencies)]),\n optionalDependencies: Object.freeze([...(descriptor.optionalDependencies ?? descriptor.creatableProvider.optionalDependencies ?? [])]),\n satisfies: Object.freeze([...descriptor.satisfies]),\n })\n return Object.freeze({\n connectionTypes: captured.connectionTypes,\n dependencies: captured.dependencies,\n id: captured.id,\n monikers: captured.satisfies,\n optionalDependencies: captured.optionalDependencies,\n xl1: captured,\n })\n}\n\n/** Returns the XL1 provider catalog available to browser-system configuration. */\nexport function xl1BrowserProviderCandidates(): Xl1ProviderDescriptor[] {\n return [\n ...allProviderCandidates(),\n browserRuntimeProviderCandidateFromClass(SimpleXyoSigner, BrowserSimpleXyoSignerProviderId),\n providerCandidateFromClass(SimpleXyoConnectionViewer, SimpleXyoConnectionViewerProviderId),\n providerCandidateFromClass(SimpleXyoGateway, SimpleXyoGatewayProviderId),\n ]\n}\n\n/**\n * Adapts an exact factory supplied by the owner realm into plan metadata.\n *\n * The factory is a runtime home, so its provider is intentionally presented as\n * connectionless to the serializable planner. The exact factory is restored by\n * the provisioner after resolution rather than reconstructed from its class.\n * `id` defaults to the provider class's own `static providerId`; when it\n * declares none, pass a bundle-stable id explicitly.\n * @throws MissingProviderIdError when no `id` is passed and the class declares no `providerId`\n */\nexport function xl1BrowserProviderRegistrationFromFactory(\n factory: CreatableProviderFactory,\n id?: string,\n): Xl1BrowserProviderRegistration {\n return {\n descriptor: {\n ...providerCandidateFromClass(factory.creatableProvider, id),\n connectionTypes: ['none'],\n dependencies: [...factory.dependencies],\n optionalDependencies: [...factory.optionalDependencies ?? factory.creatableProvider.optionalDependencies ?? []],\n },\n factory,\n }\n}\n\n/** Captures and checks exact runtime factory metadata before any resource acquisition. */\nexport function captureXl1BrowserProviderRegistration(\n registration: Xl1BrowserProviderRegistration,\n): Xl1BrowserProviderRegistration {\n const factory = captureCreatableProviderFactory(registration.factory)\n const descriptor = xl1BrowserProviderDeclaration(registration.descriptor).xl1\n if (factory.scope === 'global') throw new Error(`Browser provider [${descriptor.id}] cannot use global factory scope`)\n const same = (left: readonly string[], right: readonly string[]) => {\n const leftSet = new Set(left)\n const rightSet = new Set(right)\n return leftSet.size === rightSet.size && left.every(value => rightSet.has(value))\n }\n if (!same(descriptor.satisfies, factory.monikers)\n || !same(descriptor.dependencies ?? [], factory.dependencies)\n || !same(descriptor.optionalDependencies ?? [], factory.optionalDependencies ?? [])) {\n throw new Error(`Browser provider [${descriptor.id}] descriptor differs from its exact factory dependencies or monikers`)\n }\n return Object.freeze({ descriptor, factory })\n}\n\n/** Adapts an XL1 provider catalog for browser-kit planning. */\nexport function xl1BrowserProviderDeclarations(\n candidates: readonly Xl1ProviderDescriptor[] = xl1BrowserProviderCandidates(),\n): Xl1BrowserProviderDeclaration[] {\n return candidates.map(xl1BrowserProviderDeclaration)\n}\n\n/** Creates the owner-realm provisioner that instantiates one resolved XL1 locator. */\nexport function createXl1BrowserSystemProvisioner(\n options: CreateXl1BrowserSystemProvisionerOptions,\n): BrowserSystemProvisioner<ProviderFactoryLocatorInstance> {\n const registeredFactories = new Map(\n options.providerRegistrations?.map((registration) => {\n const captured = captureXl1BrowserProviderRegistration(registration)\n return [captured.descriptor.id, captured.factory]\n }),\n )\n return async (input) => {\n const providerBindings = mergeResolvedProviderBindings(\n options.config.providerBindings,\n input.compiled.config.providerBindings,\n )\n const locatorConfig = compileLocatorConfig({\n ...options.config,\n connections: input.compiled.config.connections as ConnectionsConfig,\n providerBindings,\n })\n const locator = new ProviderFactoryLocator({\n caches: {},\n singletons: {},\n ...options.context,\n config: locatorConfig,\n }, {}, false, { dependencyAccess: 'declared' })\n try {\n for (const selected of input.compiled.resolution.selected) {\n const declaration = selected as unknown as Xl1BrowserProviderDeclaration\n const descriptor = declaration.xl1\n const factory = registeredFactories.get(descriptor.id)\n ?? descriptor.creatableProvider.factory([...declaration.dependencies], {}, declaration.optionalDependencies ?? [])\n locator.register(captureXl1BrowserProviderRegistration({ descriptor, factory }).factory)\n }\n locator.freeze()\n for (const moniker of input.compiled.declaration.dependencies) {\n await locator.getInstance(moniker)\n }\n } catch (startError) {\n let releaseError: unknown\n try {\n await releaseProviderFactoryLocator(locator)\n } catch (error: unknown) {\n releaseError = error\n }\n if (releaseError !== undefined) {\n throw new AggregateError(\n [startError, releaseError],\n 'XL1 browser provider provisioning and cleanup both failed',\n { cause: startError },\n )\n }\n throw startError\n }\n\n const resolvedConfig = Object.freeze({\n ...options.config,\n actors: input.config.actors,\n connections: input.compiled.config.connections as ConnectionsConfig,\n providerBindings,\n })\n const system = createResolvedProviderSystem({\n config: resolvedConfig,\n locator,\n resolution: createResolvedBrowserProviderPlan(input.compiled.resolution),\n })\n let releasePromise: Promise<void> | undefined\n return {\n release: () => {\n releasePromise ??= releaseProviderFactoryLocator(locator)\n return releasePromise\n },\n system,\n }\n }\n}\n\nfunction browserRuntimeProviderCandidateFromClass(\n creatableProvider: Parameters<typeof providerCandidateFromClass>[0],\n id: string,\n): Xl1ProviderDescriptor {\n return {\n ...providerCandidateFromClass(creatableProvider, id),\n connectionTypes: ['none'],\n }\n}\n\nfunction mergeResolvedProviderBindings(\n authored: ProviderBindingsConfig,\n resolved: Readonly<Record<string, {\n readonly connection?: string\n readonly options?: Readonly<Record<string, unknown>>\n readonly provider?: string\n } | undefined>>,\n): ProviderBindingsConfig {\n return Object.fromEntries(Object.entries(resolved).map(([moniker, binding]) => [\n moniker,\n {\n ...authored[moniker],\n ...binding,\n },\n ]))\n}\n", "import type {\n ProviderActorContext,\n ProviderActorParams,\n} from '@ariestools/actor'\nimport { ProviderActor } from '@ariestools/actor'\nimport type { RawInstanceLocator } from '@ariestools/actor-model'\nimport type {\n BrowserActor,\n ResolvedBrowserProviderPlan,\n ResolvedBrowserSystemConfig,\n} from '@ariestools/browser-kit'\nimport { BrowserActorCatalog as BrowserActorCatalogInstance } from '@ariestools/browser-kit'\nimport type { CreatableName } from '@ariestools/sdk'\nimport type {\n ProviderFactoryLocatorInstance,\n XyoGateway,\n XyoGatewayRunner,\n} from '@xyo-network/xl1-sdk'\nimport {\n DataLakeRunnerMoniker,\n DataLakeViewerMoniker,\n XyoGatewayMoniker,\n XyoGatewayRunnerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nexport const Xl1BrowserSystemActorType = 'xl1-system' as const\nexport const Xl1BrowserSystemWithDataLakeActorType = 'xl1-system-with-data-lake' as const\nexport const Xl1BrowserRunnerSystemActorType = 'xl1-runner-system' as const\nexport const Xl1BrowserRunnerSystemWithDataLakeActorType = 'xl1-runner-system-with-data-lake' as const\n\nexport interface Xl1BrowserSystemActorParams extends ProviderActorParams<\n RawInstanceLocator,\n ResolvedBrowserSystemConfig,\n unknown,\n ResolvedBrowserProviderPlan\n> {\n /** Fixed by the catalog entry; a sibling Runner does not upgrade a Viewer. */\n readonly gatewayMoniker?: typeof XyoGatewayMoniker | typeof XyoGatewayRunnerMoniker\n}\n\n/** Matches Actor dependency scoping: a Viewer catalog entry never declares the Runner capability. */\nclass Xl1BrowserActorDependencyError extends Error {\n readonly code = 'dependency-undeclared'\n override readonly name = 'Xl1BrowserActorDependencyError'\n}\n\n/** Resident actor representing one configured XL1 gateway system. */\nexport class Xl1BrowserSystemActor extends ProviderActor<Xl1BrowserSystemActorParams> {\n private _gatewayMoniker: typeof XyoGatewayMoniker | typeof XyoGatewayRunnerMoniker = XyoGatewayMoniker\n\n override async createHandler(): Promise<void> {\n this._gatewayMoniker = this.params.gatewayMoniker ?? XyoGatewayMoniker\n await super.createHandler()\n }\n\n /** Resolves the gateway owned by this actor's immutable provider system. */\n async getGateway(): Promise<XyoGateway | XyoGatewayRunner> {\n if (this.status !== 'started') {\n throw new Error(`XL1 browser system actor is not running (status: ${this.status})`)\n }\n return this._gatewayMoniker === XyoGatewayRunnerMoniker ? (await this.getProvider<XyoGatewayRunner>(XyoGatewayRunnerMoniker)) : (await this.getProvider<XyoGateway>(XyoGatewayMoniker))\n }\n\n /** Resolves the required write-capable gateway from a runner-system actor. */\n async getGatewayRunner(): Promise<XyoGatewayRunner> {\n if (this.status !== 'started') {\n throw new Error(`XL1 browser system actor is not running (status: ${this.status})`)\n }\n if (this._gatewayMoniker !== XyoGatewayRunnerMoniker) {\n throw new Xl1BrowserActorDependencyError(`XL1 browser system actor [${this.name}] does not declare ${XyoGatewayRunnerMoniker}`)\n }\n return await this.getProvider<XyoGatewayRunner>(XyoGatewayRunnerMoniker)\n }\n}\n\nexport const Xl1BrowserSystemActorDependencies = [XyoGatewayMoniker] as const\nexport const Xl1BrowserSystemWithDataLakeActorDependencies = [\n XyoGatewayMoniker,\n DataLakeViewerMoniker,\n] as const\nexport const Xl1BrowserRunnerSystemActorDependencies = [XyoGatewayRunnerMoniker] as const\nexport const Xl1BrowserRunnerSystemWithDataLakeActorDependencies = [\n XyoGatewayRunnerMoniker,\n DataLakeRunnerMoniker,\n DataLakeViewerMoniker,\n] as const\n\n/** Creates the default actor catalog and optionally installs app actors. */\nexport function createXl1BrowserActorCatalog() {\n const catalog = new BrowserActorCatalogInstance<BrowserActor, ProviderFactoryLocatorInstance>()\n const create = async (\n id: string,\n providerContext: ProviderActorContext<\n RawInstanceLocator,\n ResolvedBrowserSystemConfig,\n unknown,\n ResolvedBrowserProviderPlan\n >,\n gatewayMoniker: typeof XyoGatewayMoniker | typeof XyoGatewayRunnerMoniker,\n ) => await Xl1BrowserSystemActor.create({\n gatewayMoniker,\n name: id as CreatableName,\n providerContext,\n })\n catalog.register({\n create: async ({ id, providerContext }) => await create(id, providerContext, XyoGatewayMoniker),\n dependencies: Xl1BrowserSystemActorDependencies,\n type: Xl1BrowserSystemActorType,\n })\n catalog.register({\n create: async ({ id, providerContext }) => await create(id, providerContext, XyoGatewayMoniker),\n dependencies: Xl1BrowserSystemWithDataLakeActorDependencies,\n type: Xl1BrowserSystemWithDataLakeActorType,\n })\n catalog.register({\n create: async ({ id, providerContext }) => await create(id, providerContext, XyoGatewayRunnerMoniker),\n dependencies: Xl1BrowserRunnerSystemActorDependencies,\n type: Xl1BrowserRunnerSystemActorType,\n })\n catalog.register({\n create: async ({ id, providerContext }) => await create(id, providerContext, XyoGatewayRunnerMoniker),\n dependencies: Xl1BrowserRunnerSystemWithDataLakeActorDependencies,\n type: Xl1BrowserRunnerSystemWithDataLakeActorType,\n })\n return catalog\n}\n", "import type {\n BrowserActor,\n BrowserSystemIdentity,\n BrowserSystemSession,\n} from '@ariestools/browser-kit'\nimport { launchCompiledBrowserSystem } from '@ariestools/browser-kit'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nimport type { CompiledXl1BrowserSystem } from './compileXl1BrowserSystem.ts'\nimport {\n createXl1BrowserSystemProvisioner,\n type Xl1BrowserProviderDeclaration,\n type Xl1BrowserProviderRuntimeContext,\n} from './Xl1BrowserProvider.ts'\n\n/** Runtime-only options applied to an already-compiled XL1 browser system. */\nexport interface LaunchCompiledXl1BrowserSystemOptions<\n TActor extends BrowserActor = BrowserActor,\n> {\n readonly compiled: CompiledXl1BrowserSystem<TActor>\n readonly context?: Xl1BrowserProviderRuntimeContext\n readonly host?: string\n readonly identity?: BrowserSystemIdentity\n readonly readyTimeoutMs?: number\n}\n\n/** Provisions and starts one compiled XL1 browser system without resolving it again. */\nexport async function launchCompiledXl1BrowserSystem<\n TActor extends BrowserActor = BrowserActor,\n>(\n options: LaunchCompiledXl1BrowserSystemOptions<TActor>,\n): Promise<BrowserSystemSession<TActor, ProviderFactoryLocatorInstance>> {\n return await launchCompiledBrowserSystem<\n TActor,\n ProviderFactoryLocatorInstance,\n Xl1BrowserProviderDeclaration\n >({\n actorCatalog: options.compiled.actorCatalog,\n compiled: options.compiled.browserSystem,\n ...options.host !== undefined && { host: options.host },\n ...options.identity !== undefined && { identity: options.identity },\n provision: createXl1BrowserSystemProvisioner({\n config: options.compiled.config,\n ...options.context !== undefined && { context: options.context },\n providerRegistrations: options.compiled.providerRegistrations,\n }),\n ...options.readyTimeoutMs !== undefined && { readyTimeoutMs: options.readyTimeoutMs },\n })\n}\n", "import type {\n BrowserSystemIdentity,\n BrowserSystemSession,\n} from '@ariestools/browser-kit'\nimport type {\n ChainId,\n ConnectionHandleCache,\n ConnectionsConfig,\n CreatableProviderFactory,\n PrimeCachesMode,\n ProviderBindingsConfig,\n ProviderDescriptor as Xl1ProviderDescriptor,\n ProviderFactoryLocatorInstance,\n RestGatewayConfig,\n RpcTransport,\n XyoGateway,\n XyoGatewayRunner,\n XyoSignerRpcSchemas,\n} from '@xyo-network/xl1-sdk'\nimport {\n DefaultAccountKey,\n SimpleConnectionHandleCache,\n XyoSignerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nimport { launchXl1BrowserSystem } from './launchXl1BrowserSystem.ts'\nimport type {\n Xl1BrowserSignerConfig,\n Xl1RestEndpointLayout,\n} from './Xl1BrowserConfig.ts'\nimport {\n createXl1RestBrowserSystemConfig,\n createXl1RpcBrowserSystemConfig,\n} from './Xl1BrowserConfig.ts'\nimport type {\n Xl1BrowserProviderRegistration,\n Xl1BrowserProviderRuntimeContext,\n} from './Xl1BrowserProvider.ts'\nimport { xl1BrowserProviderRegistrationFromFactory } from './Xl1BrowserProvider.ts'\nimport { Xl1BrowserSystemActor } from './Xl1BrowserSystemActor.ts'\n\n/** How a browser gateway reads XL1 chain data. */\nexport type Xl1BrowserGatewayTransport = 'rest' | 'rpc'\n\n/** Account instance accepted by the browser provider runtime home. */\nexport type Xl1BrowserSignerAccount = NonNullable<\n Xl1BrowserProviderRuntimeContext['accounts']\n>[string]\n\n/** Inputs for launching one standard browser-owned XL1 gateway system. */\nexport interface LaunchXl1BrowserGatewaySystemOptions {\n /** Extra connection profiles merged after the deprecated `dataLakeEndpoint` adapter. */\n readonly additionalConnections?: ConnectionsConfig\n /** Extra provider bindings merged after the deprecated `dataLakeEndpoint` adapter. Bind `DataLakeViewer` and `DataLakeRunner` here. */\n readonly additionalProviderBindings?: ProviderBindingsConfig\n /** RestBlockViewer read-ahead and cache sizing (`readStep`, `maxCacheSize`). REST transport only; ignored for RPC systems. */\n readonly blockViewerOptions?: RestGatewayConfig['blockViewerOptions']\n /** Staking contract address required by finalized REST stake readers. */\n readonly chainId?: ChainId\n readonly context?: Xl1BrowserProviderRuntimeContext\n /**\n * @deprecated Build the lake with `createRestDataLakeViewer(url)` and\n * `createRestDataLakeRunner(url)`. Bind `DataLakeViewer` and `DataLakeRunner`\n * through the locator. This field/method/option is removed in 6.0.\n */\n readonly dataLakeEndpoint?: string\n /** REST root for REST mode, or the complete RPC URL for RPC mode. */\n readonly endpoint: string\n readonly host?: string\n readonly identity?: BrowserSystemIdentity\n readonly layout?: Xl1RestEndpointLayout\n readonly primeCaches?: PrimeCachesMode\n readonly providerCandidates?: readonly Xl1ProviderDescriptor[]\n readonly readyTimeoutMs?: number\n /** Required for a signed REST system; ignored for RPC systems. */\n readonly rpcUrl?: string\n readonly signerAccount?: Xl1BrowserSignerAccount\n readonly signerFactory?: CreatableProviderFactory\n /** Stable config identifier for signerFactory; defaults to its provider class's `providerId`. */\n readonly signerProviderId?: string\n readonly signerTransport?: RpcTransport<XyoSignerRpcSchemas>\n readonly transport: Xl1BrowserGatewayTransport\n}\n\n/** Running stock XL1 browser system with its actor and gateway exposed. */\nexport interface Xl1BrowserGatewaySystemSession\n extends BrowserSystemSession<Xl1BrowserSystemActor, ProviderFactoryLocatorInstance> {\n readonly actor: Xl1BrowserSystemActor\n readonly gateway: XyoGateway | XyoGatewayRunner\n}\n\n/**\n * Launches a read-only or signed REST/RPC gateway through one browser-kit\n * provider system. Signing precedence is factory, account, then RPC transport.\n */\nexport async function launchXl1BrowserGatewaySystem(\n options: LaunchXl1BrowserGatewaySystemOptions,\n): Promise<Xl1BrowserGatewaySystemSession> {\n const signing = browserSignerRuntime(options)\n const dataLakeEndpoint = dataLakeEndpointAdapter(options)\n const config = options.transport === 'rest'\n ? createXl1RestBrowserSystemConfig({\n additionalConnections: options.additionalConnections,\n additionalProviderBindings: options.additionalProviderBindings,\n blockViewerOptions: options.blockViewerOptions,\n chainId: options.chainId,\n dataLakeEndpoint,\n endpoint: options.endpoint,\n host: options.host,\n layout: options.layout,\n primeCaches: options.primeCaches,\n rpcUrl: options.rpcUrl,\n signer: signing.config,\n })\n : createXl1RpcBrowserSystemConfig({\n additionalConnections: options.additionalConnections,\n additionalProviderBindings: options.additionalProviderBindings,\n dataLakeEndpoint,\n endpoint: options.endpoint,\n host: options.host,\n primeCaches: options.primeCaches,\n signer: signing.config,\n })\n const ownedHandles = signing.ownedConnectionHandles\n let session: BrowserSystemSession<Xl1BrowserSystemActor, ProviderFactoryLocatorInstance>\n try {\n session = await launchXl1BrowserSystem<Xl1BrowserSystemActor>({\n config,\n context: signing.context,\n host: options.host,\n identity: options.identity,\n providerCandidates: options.providerCandidates,\n providerRegistrations: signing.registrations,\n readyTimeoutMs: options.readyTimeoutMs,\n })\n } catch (launchError) {\n const [closeResult] = await Promise.allSettled([ownedHandles?.close?.()])\n if (closeResult.status === 'rejected') {\n throw new AggregateError(\n [launchError, closeResult.reason],\n 'XL1 browser system failed to launch and close its connection handles',\n { cause: launchError },\n )\n }\n throw launchError\n }\n\n try {\n const actor = session.actors.find(candidate => candidate instanceof Xl1BrowserSystemActor)\n if (actor === undefined) throw new Error('XL1 browser system actor was not created')\n const gateway = await actor.getGateway()\n return {\n actor,\n actors: session.actors,\n gateway,\n identity: session.identity,\n stop: async () => {\n const errors = await stopSessionAndHandles(session, ownedHandles)\n if (errors.length === 1) throw errors[0]\n if (errors.length > 1) {\n throw new AggregateError(errors, 'XL1 browser system and its connection handles failed to stop', { cause: errors[0] })\n }\n },\n system: session.system,\n whenFailed: () => session.whenFailed(),\n whenTerminal: () => session.whenTerminal(),\n }\n } catch (launchError) {\n const cleanupErrors = await stopSessionAndHandles(session, ownedHandles)\n if (cleanupErrors.length > 0) {\n throw new AggregateError(\n [launchError, ...cleanupErrors],\n 'XL1 browser system failed to expose a gateway and stop cleanly',\n { cause: launchError },\n )\n }\n throw launchError\n }\n}\n\nfunction dataLakeEndpointAdapter(options: { readonly dataLakeEndpoint?: string }): string | undefined {\n return options.dataLakeEndpoint\n}\n\n/** Stops the session first, then closes a launcher-created cache; returns every failure. */\nasync function stopSessionAndHandles(\n session: { stop(): Promise<void> },\n handles: ConnectionHandleCache | undefined,\n): Promise<unknown[]> {\n const [stopResult] = await Promise.allSettled([session.stop()])\n const [closeResult] = await Promise.allSettled([handles?.close?.()])\n return [stopResult, closeResult].flatMap(result => result.status === 'rejected' ? [result.reason as unknown] : [])\n}\n\ninterface BrowserSignerRuntime {\n readonly config?: Xl1BrowserSignerConfig\n readonly context?: Xl1BrowserProviderRuntimeContext\n /** A cache this launcher created; the locator borrows it, so the launcher closes it. */\n readonly ownedConnectionHandles?: ConnectionHandleCache\n readonly registrations?: readonly Xl1BrowserProviderRegistration[]\n}\n\nfunction browserSignerRuntime(\n options: LaunchXl1BrowserGatewaySystemOptions,\n): BrowserSignerRuntime {\n if (options.signerFactory !== undefined) {\n const registration = xl1BrowserProviderRegistrationFromFactory(\n options.signerFactory,\n options.signerProviderId,\n )\n return {\n config: { provider: registration.descriptor.id, type: 'provider' },\n context: options.context,\n registrations: [registration],\n }\n }\n if (options.signerAccount !== undefined) {\n return {\n config: { type: 'account' },\n context: {\n caches: {},\n singletons: {},\n ...options.context,\n accounts: {\n ...options.context?.accounts,\n [DefaultAccountKey]: options.signerAccount,\n },\n },\n }\n }\n if (options.signerTransport !== undefined) {\n const suppliedHandles = options.context?.connectionHandles\n const connectionHandles = suppliedHandles ?? new SimpleConnectionHandleCache()\n connectionHandles.set(`rpc-transport:${XyoSignerMoniker}`, options.signerTransport)\n return {\n config: { type: 'rpc' },\n context: {\n caches: {},\n singletons: {},\n ...options.context,\n connectionHandles,\n },\n ...(suppliedHandles === undefined && { ownedConnectionHandles: connectionHandles }),\n }\n }\n return { context: options.context }\n}\n", "import type {\n BrowserActor,\n BrowserSystemIdentity,\n BrowserSystemSession,\n} from '@ariestools/browser-kit'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nimport type { CompileXl1BrowserSystemOptions } from './compileXl1BrowserSystem.ts'\nimport { compileXl1BrowserSystem } from './compileXl1BrowserSystem.ts'\nimport {\n launchCompiledXl1BrowserSystem,\n type LaunchCompiledXl1BrowserSystemOptions,\n} from './launchCompiledXl1BrowserSystem.ts'\nimport type { Xl1BrowserProviderRuntimeContext } from './Xl1BrowserProvider.ts'\n\n/** Inputs for launching one owner-resolved XL1 browser provider system. */\nexport interface LaunchXl1BrowserSystemOptions<TActor extends BrowserActor = BrowserActor>\n extends CompileXl1BrowserSystemOptions<TActor> {\n readonly context?: Xl1BrowserProviderRuntimeContext\n readonly host?: string\n readonly identity?: BrowserSystemIdentity\n readonly readyTimeoutMs?: number\n}\n\n/** Parses, resolves, provisions, and starts one XL1 system from browser-safe config. */\nexport async function launchXl1BrowserSystem<TActor extends BrowserActor = BrowserActor>(\n options: LaunchXl1BrowserSystemOptions<TActor>,\n): Promise<BrowserSystemSession<TActor, ProviderFactoryLocatorInstance>> {\n const compiled = compileXl1BrowserSystem(options)\n const runtimeOptions: LaunchCompiledXl1BrowserSystemOptions<TActor> = {\n compiled,\n ...options.context !== undefined && { context: options.context },\n ...options.host !== undefined && { host: options.host },\n ...options.identity !== undefined && { identity: options.identity },\n ...options.readyTimeoutMs !== undefined && { readyTimeoutMs: options.readyTimeoutMs },\n }\n return await launchCompiledXl1BrowserSystem(runtimeOptions)\n}\n", "import type { PeriodicPassContext } from '@ariestools/actor'\nimport { ProviderActor } from '@ariestools/actor'\nimport type {\n BlockViewer, FinalizationViewer,\n FinalizedBlockStreamCursor, FinalizedBlockStreamNextBlockEvent, FinalizedBlockWalk,\n} from '@xyo-network/xl1-sdk'\nimport {\n advanceFinalizedBlockCursor, BlockViewerMoniker, createFinalizedBlockWalk, FinalizationViewerMoniker, finalizedBlockCursor,\n FinalizedBlockStreamDesyncError,\n} from '@xyo-network/xl1-sdk'\n\nimport type { Xl1BrowserSystemActorParams } from './Xl1BrowserSystemActor.ts'\n\n/** Only these two providers are required; no stream provider or nested graph. */\nexport const Xl1FinalizedBlockActorDependencies = [BlockViewerMoniker, FinalizationViewerMoniker] as const\n\n/** Consumer-owned resume checkpoint and bounded read controls. */\nexport interface Xl1FinalizedBlockActorParams extends Xl1BrowserSystemActorParams {\n readonly after?: FinalizedBlockStreamCursor['hash']\n readonly fetchWindow?: number\n}\n\n/**\n * Gapless Actor-owned catch-up and polling over the shared resolved SDK graph.\n * Hosts opt into inherited periodic scheduling or explicitly call runOnce/wake.\n * Acknowledgement precedes cursor advancement; durable checkpoints belong to the\n * consumer, which must tolerate redelivery after a failed handler or process loss.\n */\nexport abstract class Xl1FinalizedBlockActor extends ProviderActor<Xl1FinalizedBlockActorParams> {\n private _after?: FinalizedBlockStreamCursor['hash']\n private _cursor?: FinalizedBlockStreamCursor\n private _desync?: FinalizedBlockStreamDesyncError\n private _fetchWindow?: number\n private _initialHead?: FinalizedBlockStreamNextBlockEvent\n private _walk?: FinalizedBlockWalk\n private _walkSignal?: AbortSignal\n\n /** Last successfully acknowledged position, copied so callers cannot move it. */\n get cursor(): FinalizedBlockStreamCursor | undefined {\n return this._cursor === undefined ? undefined : { ...this._cursor }\n }\n\n override async createHandler(): Promise<void> {\n this._after = this.params.after\n this._fetchWindow = this.params.fetchWindow\n await super.createHandler()\n }\n\n protected override isFatalError(error: Error): boolean {\n return error instanceof FinalizedBlockStreamDesyncError\n }\n\n protected override async run(context: PeriodicPassContext): Promise<void> {\n if (this._desync !== undefined) throw this._desync\n try {\n await this.walkPass(context)\n } catch (error) {\n if (error instanceof FinalizedBlockStreamDesyncError) this._desync = error\n throw error\n }\n }\n\n private async walkPass(context: PeriodicPassContext): Promise<void> {\n const { signal } = context\n signal.throwIfAborted()\n if (this._walk === undefined || this._walkSignal !== signal) {\n const blocks = await this.getProvider<BlockViewer>(BlockViewerMoniker)\n signal.throwIfAborted()\n const finalization = await this.getProvider<FinalizationViewer>(FinalizationViewerMoniker)\n signal.throwIfAborted()\n this._walk = createFinalizedBlockWalk({ blocks, finalization }, { fetchWindow: this._fetchWindow }, signal)\n this._walkSignal = signal\n }\n const walk = this._walk\n if (this._cursor === undefined && this._after !== undefined) this._cursor = await walk.checkpoint(this._after)\n if (this._cursor === undefined) {\n if (this._initialHead === undefined) {\n const head = await walk.head()\n this._initialHead = { block: head, head: head[0].block }\n }\n const next = finalizedBlockCursor(this._initialHead.block)\n await this.onBlock(this._initialHead, context)\n signal.throwIfAborted()\n this._cursor = next\n this._initialHead = undefined\n return\n }\n const head = await walk.head()\n const headNumber = head[0].block\n while (this._cursor.block < headNumber) {\n const window = await walk.next(this._cursor, headNumber)\n for (const block of window) {\n signal.throwIfAborted()\n const next = advanceFinalizedBlockCursor(this._cursor, block)\n await this.onBlock({ block, head: headNumber }, context)\n signal.throwIfAborted()\n this._cursor = next\n }\n }\n }\n\n /** Await durable/idempotent consumer work here; never call and await own stop. */\n protected abstract onBlock(event: FinalizedBlockStreamNextBlockEvent, context: PeriodicPassContext): Promise<void>\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["DataLakeRunnerMoniker", "DataLakeViewerMoniker", "XyoGatewayMoniker", "XyoGatewayRunnerMoniker", "XyoGatewayMoniker", "DataLakeViewerMoniker", "XyoGatewayRunnerMoniker", "DataLakeRunnerMoniker", "XyoSignerMoniker", "dataLakeEndpointAdapter", "XyoSignerMoniker", "ProviderActor", "BlockViewerMoniker", "FinalizationViewerMoniker", "head"]
7
7
  }
@@ -1,5 +1,5 @@
1
1
  import type { BrowserSystemIdentity, BrowserSystemSession } from '@ariestools/browser-kit';
2
- import type { ChainId, CreatableProviderFactory, PrimeCachesMode, ProviderDescriptor as Xl1ProviderDescriptor, ProviderFactoryLocatorInstance, RestGatewayConfig, RpcTransport, XyoGateway, XyoGatewayRunner, XyoSignerRpcSchemas } from '@xyo-network/xl1-sdk';
2
+ import type { ChainId, ConnectionsConfig, CreatableProviderFactory, PrimeCachesMode, ProviderBindingsConfig, ProviderDescriptor as Xl1ProviderDescriptor, ProviderFactoryLocatorInstance, RestGatewayConfig, RpcTransport, XyoGateway, XyoGatewayRunner, XyoSignerRpcSchemas } from '@xyo-network/xl1-sdk';
3
3
  import type { Xl1RestEndpointLayout } from './Xl1BrowserConfig.ts';
4
4
  import type { Xl1BrowserProviderRuntimeContext } from './Xl1BrowserProvider.ts';
5
5
  import { Xl1BrowserSystemActor } from './Xl1BrowserSystemActor.ts';
@@ -9,11 +9,20 @@ export type Xl1BrowserGatewayTransport = 'rest' | 'rpc';
9
9
  export type Xl1BrowserSignerAccount = NonNullable<Xl1BrowserProviderRuntimeContext['accounts']>[string];
10
10
  /** Inputs for launching one standard browser-owned XL1 gateway system. */
11
11
  export interface LaunchXl1BrowserGatewaySystemOptions {
12
+ /** Extra connection profiles merged after the deprecated `dataLakeEndpoint` adapter. */
13
+ readonly additionalConnections?: ConnectionsConfig;
14
+ /** Extra provider bindings merged after the deprecated `dataLakeEndpoint` adapter. Bind `DataLakeViewer` and `DataLakeRunner` here. */
15
+ readonly additionalProviderBindings?: ProviderBindingsConfig;
12
16
  /** RestBlockViewer read-ahead and cache sizing (`readStep`, `maxCacheSize`). REST transport only; ignored for RPC systems. */
13
17
  readonly blockViewerOptions?: RestGatewayConfig['blockViewerOptions'];
14
18
  /** Staking contract address required by finalized REST stake readers. */
15
19
  readonly chainId?: ChainId;
16
20
  readonly context?: Xl1BrowserProviderRuntimeContext;
21
+ /**
22
+ * @deprecated Build the lake with `createRestDataLakeViewer(url)` and
23
+ * `createRestDataLakeRunner(url)`. Bind `DataLakeViewer` and `DataLakeRunner`
24
+ * through the locator. This field/method/option is removed in 6.0.
25
+ */
17
26
  readonly dataLakeEndpoint?: string;
18
27
  /** REST root for REST mode, or the complete RPC URL for RPC mode. */
19
28
  readonly endpoint: string;
@@ -1 +1 @@
1
- {"version":3,"file":"launchXl1BrowserGatewaySystem.d.ts","sourceRoot":"","sources":["../../src/launchXl1BrowserGatewaySystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EACV,OAAO,EAEP,wBAAwB,EACxB,eAAe,EACf,kBAAkB,IAAI,qBAAqB,EAC3C,8BAA8B,EAC9B,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,sBAAsB,CAAA;AAQ7B,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,uBAAuB,CAAA;AAK9B,OAAO,KAAK,EAEV,gCAAgC,EACjC,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE,kDAAkD;AAClD,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,KAAK,CAAA;AAEvD,sEAAsE;AACtE,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAC/C,gCAAgC,CAAC,UAAU,CAAC,CAC7C,CAAC,MAAM,CAAC,CAAA;AAET,0EAA0E;AAC1E,MAAM,WAAW,oCAAoC;IACnD,8HAA8H;IAC9H,QAAQ,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAA;IACrE,yEAAyE;IACzE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,gCAAgC,CAAA;IACnD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAA;IACtC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAA;IAC9D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,uBAAuB,CAAA;IAChD,QAAQ,CAAC,aAAa,CAAC,EAAE,wBAAwB,CAAA;IACjD,iGAAiG;IACjG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAA;IAC5D,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAA;CAC/C;AAED,2EAA2E;AAC3E,MAAM,WAAW,8BACf,SAAQ,oBAAoB,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;IACnF,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAAA;CAChD;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,8BAA8B,CAAC,CA4EzC"}
1
+ {"version":3,"file":"launchXl1BrowserGatewaySystem.d.ts","sourceRoot":"","sources":["../../src/launchXl1BrowserGatewaySystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EACV,OAAO,EAEP,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EACf,sBAAsB,EACtB,kBAAkB,IAAI,qBAAqB,EAC3C,8BAA8B,EAC9B,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,sBAAsB,CAAA;AAQ7B,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,uBAAuB,CAAA;AAK9B,OAAO,KAAK,EAEV,gCAAgC,EACjC,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE,kDAAkD;AAClD,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,KAAK,CAAA;AAEvD,sEAAsE;AACtE,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAC/C,gCAAgC,CAAC,UAAU,CAAC,CAC7C,CAAC,MAAM,CAAC,CAAA;AAET,0EAA0E;AAC1E,MAAM,WAAW,oCAAoC;IACnD,wFAAwF;IACxF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,iBAAiB,CAAA;IAClD,uIAAuI;IACvI,QAAQ,CAAC,0BAA0B,CAAC,EAAE,sBAAsB,CAAA;IAC5D,8HAA8H;IAC9H,QAAQ,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAA;IACrE,yEAAyE;IACzE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,gCAAgC,CAAA;IACnD;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAA;IACtC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAA;IAC9D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,uBAAuB,CAAA;IAChD,QAAQ,CAAC,aAAa,CAAC,EAAE,wBAAwB,CAAA;IACjD,iGAAiG;IACjG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAA;IAC5D,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAA;CAC/C;AAED,2EAA2E;AAC3E,MAAM,WAAW,8BACf,SAAQ,oBAAoB,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;IACnF,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAAA;CAChD;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,8BAA8B,CAAC,CAiFzC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/xl1-browser-system",
4
- "version": "5.8.3",
4
+ "version": "5.8.4",
5
5
  "description": "Config-driven XL1 provider actor systems for browser runtimes",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -41,7 +41,7 @@
41
41
  ],
42
42
  "dependencies": {
43
43
  "@ariestools/provider-model": "~2.0.0",
44
- "@xyo-network/xl1-sdk": "~5.8.3"
44
+ "@xyo-network/xl1-sdk": "~5.8.4"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@ariestools/actor": "~2.0.0",
@@ -54,21 +54,21 @@
54
54
  "@ariestools/browser-kit-worker": "~2.0.0",
55
55
  "@ariestools/provider": "~2.0.0",
56
56
  "@ariestools/sdk": "~9.0.1",
57
- "@ariestools/toolchain": "~10.1.1",
58
- "@ariestools/tsconfig": "~10.1.1",
59
- "@ariestools/tsconfig-dom": "~10.1.1",
60
- "@ariestools/vitest-config": "~10.1.1",
57
+ "@ariestools/toolchain": "~10.1.5",
58
+ "@ariestools/tsconfig": "~10.1.5",
59
+ "@ariestools/tsconfig-dom": "~10.1.5",
60
+ "@ariestools/vitest-config": "~10.1.5",
61
61
  "@opentelemetry/api": "~1.9.1",
62
62
  "@vitest/browser-playwright": "~5.0.3",
63
- "@xyo-network/sdk": "~8.0.3",
64
- "@xyo-network/sdk-protocol": "~8.0.2",
63
+ "@xyo-network/sdk": "~8.1.0",
64
+ "@xyo-network/sdk-protocol": "~8.0.3",
65
65
  "ajv": "~8.20.0",
66
66
  "async-mutex": "~0.5.0",
67
67
  "eslint": "~10.12.0",
68
68
  "ethers": "~6.17.0",
69
69
  "playwright": "~1.64.0",
70
70
  "typescript": "~6.0.3",
71
- "vite": "~8.3.3",
71
+ "vite": "~8.3.4",
72
72
  "vitest": "~5.0.3",
73
73
  "zod": "~4.6.5"
74
74
  },