@unconfirmed/sui-effect 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/AGENTS.md +209 -0
  2. package/LICENSE +21 -0
  3. package/LLMS.md +6707 -0
  4. package/README.md +300 -0
  5. package/dist/domain/bcs.d.ts +101 -0
  6. package/dist/domain/bcs.d.ts.map +1 -0
  7. package/dist/domain/bcs.js +183 -0
  8. package/dist/domain/bcs.js.map +1 -0
  9. package/dist/domain/errors.d.ts +595 -0
  10. package/dist/domain/errors.d.ts.map +1 -0
  11. package/dist/domain/errors.js +476 -0
  12. package/dist/domain/errors.js.map +1 -0
  13. package/dist/domain/executed.d.ts +325 -0
  14. package/dist/domain/executed.d.ts.map +1 -0
  15. package/dist/domain/executed.js +253 -0
  16. package/dist/domain/executed.js.map +1 -0
  17. package/dist/domain/journal-entry.d.ts +468 -0
  18. package/dist/domain/journal-entry.d.ts.map +1 -0
  19. package/dist/domain/journal-entry.js +63 -0
  20. package/dist/domain/journal-entry.js.map +1 -0
  21. package/dist/domain/schemas.d.ts +950 -0
  22. package/dist/domain/schemas.d.ts.map +1 -0
  23. package/dist/domain/schemas.js +571 -0
  24. package/dist/domain/schemas.js.map +1 -0
  25. package/dist/domain/sui-schema.d.ts +12 -0
  26. package/dist/domain/sui-schema.d.ts.map +1 -0
  27. package/dist/domain/sui-schema.js +12 -0
  28. package/dist/domain/sui-schema.js.map +1 -0
  29. package/dist/extension.d.ts +7 -0
  30. package/dist/extension.d.ts.map +1 -0
  31. package/dist/extension.js +7 -0
  32. package/dist/extension.js.map +1 -0
  33. package/dist/index.d.ts +31 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +31 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/internal.d.ts +18 -0
  38. package/dist/internal.d.ts.map +1 -0
  39. package/dist/internal.js +18 -0
  40. package/dist/internal.js.map +1 -0
  41. package/dist/journal.d.ts +51 -0
  42. package/dist/journal.d.ts.map +1 -0
  43. package/dist/journal.js +18 -0
  44. package/dist/journal.js.map +1 -0
  45. package/dist/script.d.ts +7 -0
  46. package/dist/script.d.ts.map +1 -0
  47. package/dist/script.js +7 -0
  48. package/dist/script.js.map +1 -0
  49. package/dist/services/Journal.d.ts +76 -0
  50. package/dist/services/Journal.d.ts.map +1 -0
  51. package/dist/services/Journal.js +70 -0
  52. package/dist/services/Journal.js.map +1 -0
  53. package/dist/services/JournalKeyValueStore.d.ts +73 -0
  54. package/dist/services/JournalKeyValueStore.d.ts.map +1 -0
  55. package/dist/services/JournalKeyValueStore.js +155 -0
  56. package/dist/services/JournalKeyValueStore.js.map +1 -0
  57. package/dist/services/Script.d.ts +210 -0
  58. package/dist/services/Script.d.ts.map +1 -0
  59. package/dist/services/Script.js +441 -0
  60. package/dist/services/Script.js.map +1 -0
  61. package/dist/services/Signer.d.ts +132 -0
  62. package/dist/services/Signer.d.ts.map +1 -0
  63. package/dist/services/Signer.js +158 -0
  64. package/dist/services/Signer.js.map +1 -0
  65. package/dist/services/SubmitConfig.d.ts +175 -0
  66. package/dist/services/SubmitConfig.d.ts.map +1 -0
  67. package/dist/services/SubmitConfig.js +52 -0
  68. package/dist/services/SubmitConfig.js.map +1 -0
  69. package/dist/services/Sui.d.ts +295 -0
  70. package/dist/services/Sui.d.ts.map +1 -0
  71. package/dist/services/Sui.js +414 -0
  72. package/dist/services/Sui.js.map +1 -0
  73. package/dist/services/SuiCore.d.ts +227 -0
  74. package/dist/services/SuiCore.d.ts.map +1 -0
  75. package/dist/services/SuiCore.js +400 -0
  76. package/dist/services/SuiCore.js.map +1 -0
  77. package/dist/services/SuiCoreFake.d.ts +278 -0
  78. package/dist/services/SuiCoreFake.d.ts.map +1 -0
  79. package/dist/services/SuiCoreFake.js +1003 -0
  80. package/dist/services/SuiCoreFake.js.map +1 -0
  81. package/dist/services/SuiExtension.d.ts +208 -0
  82. package/dist/services/SuiExtension.d.ts.map +1 -0
  83. package/dist/services/SuiExtension.js +355 -0
  84. package/dist/services/SuiExtension.js.map +1 -0
  85. package/dist/services/SuiGraphQL.d.ts +98 -0
  86. package/dist/services/SuiGraphQL.d.ts.map +1 -0
  87. package/dist/services/SuiGraphQL.js +118 -0
  88. package/dist/services/SuiGraphQL.js.map +1 -0
  89. package/dist/services/Tx.d.ts +687 -0
  90. package/dist/services/Tx.d.ts.map +1 -0
  91. package/dist/services/Tx.js +1224 -0
  92. package/dist/services/Tx.js.map +1 -0
  93. package/dist/testing.d.ts +88 -0
  94. package/dist/testing.d.ts.map +1 -0
  95. package/dist/testing.js +163 -0
  96. package/dist/testing.js.map +1 -0
  97. package/dist/tx.d.ts +24 -0
  98. package/dist/tx.d.ts.map +1 -0
  99. package/dist/tx.js +24 -0
  100. package/dist/tx.js.map +1 -0
  101. package/docs/extensions.md +1685 -0
  102. package/examples/extension-template/README.md +170 -0
  103. package/examples/extension-template/package.json +44 -0
  104. package/examples/extension-template/scripts/check-package.ts +147 -0
  105. package/examples/extension-template/src/Escrow.ts +445 -0
  106. package/examples/extension-template/src/Platform.ts +136 -0
  107. package/examples/extension-template/src/errors.ts +61 -0
  108. package/examples/extension-template/src/extension.ts +63 -0
  109. package/examples/extension-template/src/index.ts +34 -0
  110. package/examples/extension-template/src/schema.ts +158 -0
  111. package/examples/extension-template/src/upstream.ts +66 -0
  112. package/examples/extension-template/test/escrow.test.ts +559 -0
  113. package/examples/extension-template/tsconfig.build.json +26 -0
  114. package/examples/extension-template/tsconfig.json +35 -0
  115. package/package.json +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuiCoreFake.js","sourceRoot":"","sources":["../../src/services/SuiCoreFake.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * `SuiExtension.fromService`: one implementation, two faces.
3
+ *
4
+ * An extension is an Effect service built on `Sui` and `Tx`. Promise consumers
5
+ * — dapp-kit, third-party TypeScript, anything that has an SDK client and no
6
+ * Effect — reach the same implementation through `client.$extend(...)`, where
7
+ * every Effect member is a method returning a Promise and every Stream member
8
+ * is an `AsyncIterable`.
9
+ *
10
+ * This is the one place in `src/` that runs Effects: the `ManagedRuntime` here
11
+ * is the documented bridge between the Effect world and a Promise caller, and
12
+ * it is built lazily, on the first call rather than at registration, so that
13
+ * `$extend` stays synchronous and free.
14
+ *
15
+ * @since 0.1.0
16
+ */
17
+ import type { ClientWithCoreApi, SuiClientRegistration } from "@mysten/sui/client";
18
+ import type { Context } from "effect";
19
+ import { Effect, Layer, Stream } from "effect";
20
+ import type { Sui, SuiLayerOptions } from "./Sui.ts";
21
+ import { SuiCore } from "./SuiCore.ts";
22
+ /**
23
+ * The Promise face of a service interface.
24
+ *
25
+ * An `Effect` member becomes a zero-argument method returning a Promise, a
26
+ * function returning an `Effect` keeps its arguments and returns a Promise, a
27
+ * `Stream` member becomes an `AsyncIterable`, a nested plain object of members
28
+ * is mapped the same way (platform SDKs namespace their surface as
29
+ * `client.miso.protocol.*`), and anything else passes through untouched.
30
+ *
31
+ * **A synchronous member stays synchronous**: a recipe builder
32
+ * `(p: Params) => Recipe` is still `(p: Params) => Recipe` here, and a plain
33
+ * value is still that value. The type says so and, once the runtime exists, the
34
+ * runtime agrees — see `warm` and `$ready` on {@link fromService} for the
35
+ * window before it does.
36
+ *
37
+ * **A class instance is a leaf.** The recursion is into plain object literals
38
+ * only, which is what the runtime maps; a `BcsType`, a `Schema.Class` instance,
39
+ * a `Date`, anything with a prototype of its own passes through whole, in the
40
+ * type and at runtime alike. (An interface or class type is not assignable to
41
+ * `Record<string, unknown>`, which is what keeps the two in step.)
42
+ *
43
+ * **A plain-object *value* member is the one place the two faces cannot agree.**
44
+ * `{ packageId: "0x…" }` is indistinguishable from a namespace of members, so
45
+ * the type maps it as a value while the **cold** runtime treats it as a
46
+ * namespace and hands back a placeholder for each key. Reading one throws
47
+ * `ExtensionNotReady` naming the path (`deployment.packageId`) rather than
48
+ * returning something the type says cannot be awaited — so the disagreement is
49
+ * typed and named, not silent — but the cure is `warm` or `$ready()`, not a
50
+ * retry. An extension that is registered lazily should expose such a value
51
+ * through an `Effect` member instead.
52
+ */
53
+ export type PromiseFace<S> = {
54
+ readonly [K in keyof S]: S[K] extends Stream.Stream<infer A, infer _E, infer _R> ? AsyncIterable<A> : S[K] extends Effect.Effect<infer A, infer _E2, infer _R2> ? () => Promise<A> : S[K] extends (...args: infer Args) => Stream.Stream<infer A, infer _E3, infer _R3> ? (...args: Args) => AsyncIterable<A> : S[K] extends (...args: infer Args) => Effect.Effect<infer A, infer _E4, infer _R4> ? (...args: Args) => Promise<A> : S[K] extends Record<string, unknown> ? PromiseFace<S[K]> : S[K];
55
+ };
56
+ /**
57
+ * What every registration carries besides the service's own members, under
58
+ * `$`-prefixed names so an extension is free to call a member `ready` or
59
+ * `dispose` itself.
60
+ */
61
+ export interface ExtensionFace {
62
+ /**
63
+ * Builds the runtime and resolves the service, so every member afterwards is
64
+ * the real thing — synchronous members included.
65
+ *
66
+ * Call it once after `$extend` when the extension has synchronous members
67
+ * (recipe builders, ids, codecs) and the registration is not `warm`. It is
68
+ * idempotent and costs nothing after the first time.
69
+ */
70
+ readonly $ready: () => Promise<void>;
71
+ /**
72
+ * Releases everything the layer acquired and forgets the runtime. Not final:
73
+ * the next call builds a fresh one.
74
+ */
75
+ readonly $dispose: () => Promise<void>;
76
+ /** The name `$dispose` had first. The same function. */
77
+ readonly dispose: () => Promise<void>;
78
+ }
79
+ /** What `fromService` needs to know beyond the service key itself. */
80
+ export interface SuiExtensionOptions<Self, E, Name extends string = string> {
81
+ /**
82
+ * The property the extension takes on the client: `client.<name>`.
83
+ *
84
+ * It is inferred as a string **literal**, which is what makes
85
+ * `client.escrow` a property rather than an index signature. Widening it to
86
+ * `string` is why the registered member used to arrive as `T | undefined`
87
+ * under `noUncheckedIndexedAccess`.
88
+ */
89
+ readonly name: Name;
90
+ /**
91
+ * The extension's layer.
92
+ *
93
+ * The bound is `Layer<Self, E, Sui | SuiCore>`: it may require either tier,
94
+ * because this module builds both over the client `$extend` was called on,
95
+ * and **nothing else**. An extension with a dependency of its own — an
96
+ * `HttpClient`, a `SuiGraphQL` — provides it inside this layer
97
+ * (`Layer.provide(SuiGraphQL.layerConfig)`) or in the function that builds
98
+ * the registration. The rule is not "requires `Sui` and nothing else"; it is
99
+ * "requires nothing the consumer's client could have provided".
100
+ */
101
+ readonly layer: Layer.Layer<Self, E, Sui | SuiCore>;
102
+ /**
103
+ * Options for the `Sui` layer built under the extension's own.
104
+ *
105
+ * `sui.chainId` pins the chain identifier the node must report, overriding
106
+ * the built-in table for `mainnet` and `testnet` and asserting one where
107
+ * there is none — which is how an extension whose deployment names a custom
108
+ * network's `chainIdentifier` refuses to run against a different chain.
109
+ */
110
+ readonly sui?: SuiLayerOptions;
111
+ /**
112
+ * Build the runtime **inside `register`**, synchronously, instead of on the
113
+ * first call.
114
+ *
115
+ * Give it when the extension has synchronous members — recipe builders, a
116
+ * package id, a codec — that a consumer expects to read the moment it
117
+ * registers. Every member is then the real thing immediately, and
118
+ * `$ready()` has nothing left to do.
119
+ *
120
+ * Two conditions, both enforced:
121
+ *
122
+ * - **The layer must not perform an asynchronous step.** A layer that reads
123
+ * the network, opens a connection or awaits anything cannot be built
124
+ * synchronously and `register` throws. This is the documented contract of
125
+ * `warm`, not an accident: an extension that needs the network at build is
126
+ * registered without it.
127
+ * - **The chain identifier is not read — not at registration, and not
128
+ * later.** `Sui` normally calls `getChainIdentifier` at layer build, which
129
+ * is a round trip. A warm registration takes `warm.chainId` (or
130
+ * `sui.chainId`, or the entry in the built-in table for `mainnet` and
131
+ * `testnet`) as the chain's identifier and asks nothing. **The node is
132
+ * consulted for the first time when the extension itself makes a call**,
133
+ * and that call does not check the identifier either: the pinned id is what
134
+ * `Sui.chainId` reports for the life of the registration. A node on another
135
+ * chain is therefore never detected here — it is detected by the chain,
136
+ * because `Tx.build` stamps that id on the expiration and a validator
137
+ * refuses bytes signed for another chain. Register lazily when the
138
+ * assertion is what you want. On `devnet`, `localnet` or a custom network
139
+ * there is no table entry, so `warm` without a `chainId` throws rather than
140
+ * guess.
141
+ *
142
+ * A **lazy** registration that joins a chain id another registration already
143
+ * pinned still performs its own `getChainIdentifier` assertion — once, shared
144
+ * across every lazy registration on that base — so mixing the two on one
145
+ * client neither loses the check nor duplicates it.
146
+ */
147
+ readonly warm?: {
148
+ readonly chainId?: string;
149
+ };
150
+ }
151
+ /**
152
+ * Turns an Effect service into a `SuiClientRegistration` a Promise consumer
153
+ * passes to `client.$extend(...)`.
154
+ *
155
+ * `register(client)` does no work by default: the `ManagedRuntime` over
156
+ * `SuiCore.layerFromClient(client)`, a `Sui` for the client's effective chain
157
+ * id and the extension's own layer is built on the first call and shared by
158
+ * every call after it. The `Sui` and `SuiCore` underneath are shared with every
159
+ * other registration on that client that names the same chain id — one
160
+ * transport, one chain identity and one sender-lock map. A rejection carries
161
+ * the original tagged error instance, so a Promise consumer can still switch on
162
+ * `_tag`.
163
+ *
164
+ * `name` is generic in a string literal, so `client.escrow` is a property of
165
+ * the extended client's type and not an index lookup: no cast, and no
166
+ * `| undefined` under `noUncheckedIndexedAccess`.
167
+ *
168
+ * **The window before the runtime exists.** Until then nothing knows what a
169
+ * member *is*, so a member read off the face is a placeholder. An `Effect` or
170
+ * `Stream` member behaves exactly as its type says — the call returns a
171
+ * Promise, the iteration works — because that is what the face promises for
172
+ * them anyway. A **synchronous** member does not: `PromiseFace` types a recipe
173
+ * builder as returning a `Recipe` and a plain value as that value, and a
174
+ * placeholder has neither. So a synchronous member used in that window fails
175
+ * with `ExtensionNotReady` naming itself, rather than quietly handing back a
176
+ * Promise where the type says `Recipe` — which is a bug that only shows up on
177
+ * the *second* call, when the member has become real. Two cures:
178
+ *
179
+ * - `await client.<name>.$ready()` once after `$extend`, which builds the
180
+ * runtime and resolves the service; every member is real from then on;
181
+ * - register with `warm`, which does the same synchronously inside `register`,
182
+ * for a layer that needs no network.
183
+ *
184
+ * Two lifetimes worth knowing:
185
+ *
186
+ * - **`$dispose()` is not final.** It releases everything the layer acquired
187
+ * and forgets the runtime; the next call builds a fresh one. That is what a
188
+ * long-lived page wants (a disposed extension is usable again after a
189
+ * reconnect) and it does mean a `$dispose()` that races an in-flight call can
190
+ * leave the caller's Promise rejected while a new runtime starts behind it.
191
+ * Dispose when the consumer is done, not between calls. `dispose()` is the
192
+ * same function under the name it had first.
193
+ * - **Each `register` is independent.** Registering the same extension on two
194
+ * clients — or twice on one — gives two runtimes, two layer builds and two
195
+ * copies of whatever the layer holds (a cache, a connection). Register once
196
+ * per client and keep the extended client.
197
+ *
198
+ * Never fails, except a `warm` registration, which throws out of `register`
199
+ * when the layer needs an asynchronous step or when the network has no known
200
+ * chain identifier and none was given. Otherwise the layer's own failures
201
+ * surface as rejections of the first call that needs it.
202
+ */
203
+ export declare const fromService: <Self, Shape, E, const Name extends string>(service: Context.Key<Self, Shape>, options: SuiExtensionOptions<Self, E, Name>) => SuiClientRegistration<ClientWithCoreApi, Name, PromiseFace<Shape> & ExtensionFace>;
204
+ /** The namespace the spec spells: `SuiExtension.fromService(...)`. */
205
+ export declare const SuiExtension: {
206
+ readonly fromService: <Self, Shape, E, const Name extends string>(service: Context.Key<Self, Shape>, options: SuiExtensionOptions<Self, E, Name>) => SuiClientRegistration<ClientWithCoreApi, Name, PromiseFace<Shape> & ExtensionFace>;
207
+ };
208
+ //# sourceMappingURL=SuiExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuiExtension.d.ts","sourceRoot":"","sources":["../../src/services/SuiExtension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,355 @@
1
+ import { Effect, Layer, ManagedRuntime, Stream } from "effect";
2
+ import { ExtensionNotReady, NetworkMismatch } from "../domain/errors.js";
3
+ import { KNOWN_CHAIN_IDS } from "../domain/schemas.js";
4
+ import { Sui as SuiService } from "./Sui.js";
5
+ import { SuiCore } from "./SuiCore.js";
6
+ /** The names the face adds to every service, which a member cannot shadow. */
7
+ const RESERVED = ["$ready", "$dispose", "dispose"];
8
+ const isEffect = (value) => typeof value === "object" && value !== null && Effect.isEffect(value);
9
+ const isStream = (value) => typeof value === "object" && value !== null && Stream.isStream(value);
10
+ const isPlainObject = (value) => typeof value === "object" && value !== null &&
11
+ (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);
12
+ /**
13
+ * Keyed by the client's `core`, not by the client.
14
+ *
15
+ * `client.$extend(a).$extend(b)` hands each `register` a **different** object:
16
+ * the SDK's `$extend` returns a `Proxy` of the client, and the next `$extend`
17
+ * proxies that. Those proxies are not equal as `WeakMap` keys, so keying by the
18
+ * client meant two chained registrations shared nothing. Every one of them
19
+ * reads through to the same `core` object, which is what "the same transport"
20
+ * means here anyway.
21
+ */
22
+ const SHARED_BASES = new WeakMap();
23
+ const sharedBase = (client, key, build) => {
24
+ const identity = client.core;
25
+ let byKey = SHARED_BASES.get(identity);
26
+ if (byKey === undefined) {
27
+ byKey = new Map();
28
+ SHARED_BASES.set(identity, byKey);
29
+ }
30
+ const existing = byKey.get(key);
31
+ if (existing !== undefined)
32
+ return existing;
33
+ const raw = build();
34
+ // One memo map for this client and this key, shared by every registration:
35
+ // `Layer.effect` memoizes by layer identity, so building `raw` through it
36
+ // hands the second registration the `Sui` the first one built — one chain-id
37
+ // read, and one sender-lock map. The memo map is reference counted by Effect,
38
+ // so the base is released when the last registration that used it is disposed
39
+ // and rebuilt on the next call after that.
40
+ const memoMap = Layer.makeMemoMapUnsafe();
41
+ const entry = {
42
+ memoMap,
43
+ raw,
44
+ shared: Layer.fromBuild((_registrationMemo, scope) => Layer.buildWithMemoMap(raw, memoMap, scope))
45
+ };
46
+ byKey.set(key, entry);
47
+ return entry;
48
+ };
49
+ /**
50
+ * The chain-identifier check a **lazy** registration owes when it joins a base
51
+ * that was pinned rather than read.
52
+ *
53
+ * The shared base for a known chain id is `Sui.layerNoDepsPinned`, because a
54
+ * `warm` registration on that same id has to build it synchronously and cannot
55
+ * await a round trip. A lazy registration promises the opposite — that the node
56
+ * is asked once and a node on another chain fails the build — so it gets this
57
+ * alongside the base. It is one `Layer` value per shared base, built through the
58
+ * base's own memo map, so it runs **once** however many lazy registrations join.
59
+ *
60
+ * Fails with: `NetworkMismatch`, `TransportError`.
61
+ */
62
+ const assertChainId = (expected) => Layer.effectDiscard(Effect.gen(function* () {
63
+ const core = yield* SuiCore;
64
+ const { chainIdentifier } = yield* core.getChainIdentifier();
65
+ if (chainIdentifier !== expected) {
66
+ return yield* new NetworkMismatch({ expected, actual: chainIdentifier });
67
+ }
68
+ }));
69
+ /** The shared base with {@link assertChainId} attached, memoized on the entry. */
70
+ const assertedBase = (entry, chainId) => {
71
+ if (entry.asserted === undefined) {
72
+ const raw = Layer.merge(entry.raw, assertChainId(chainId).pipe(Layer.provide(entry.raw)));
73
+ entry.asserted = Layer.fromBuild((_registrationMemo, scope) => Layer.buildWithMemoMap(raw, entry.memoMap, scope));
74
+ }
75
+ return entry.asserted;
76
+ };
77
+ const mapMember = (value, bridge) => {
78
+ if (isStream(value))
79
+ return bridge.iterate(value);
80
+ if (isEffect(value))
81
+ return () => bridge.runPromise(value);
82
+ if (typeof value === "function") {
83
+ return (...args) => {
84
+ const result = value(...args);
85
+ if (isStream(result))
86
+ return bridge.iterate(result);
87
+ if (isEffect(result))
88
+ return bridge.runPromise(result);
89
+ return result;
90
+ };
91
+ }
92
+ if (isPlainObject(value)) {
93
+ const mapped = {};
94
+ for (const [key, member] of Object.entries(value))
95
+ mapped[key] = mapMember(member, bridge);
96
+ return mapped;
97
+ }
98
+ return value;
99
+ };
100
+ /**
101
+ * Turns an Effect service into a `SuiClientRegistration` a Promise consumer
102
+ * passes to `client.$extend(...)`.
103
+ *
104
+ * `register(client)` does no work by default: the `ManagedRuntime` over
105
+ * `SuiCore.layerFromClient(client)`, a `Sui` for the client's effective chain
106
+ * id and the extension's own layer is built on the first call and shared by
107
+ * every call after it. The `Sui` and `SuiCore` underneath are shared with every
108
+ * other registration on that client that names the same chain id — one
109
+ * transport, one chain identity and one sender-lock map. A rejection carries
110
+ * the original tagged error instance, so a Promise consumer can still switch on
111
+ * `_tag`.
112
+ *
113
+ * `name` is generic in a string literal, so `client.escrow` is a property of
114
+ * the extended client's type and not an index lookup: no cast, and no
115
+ * `| undefined` under `noUncheckedIndexedAccess`.
116
+ *
117
+ * **The window before the runtime exists.** Until then nothing knows what a
118
+ * member *is*, so a member read off the face is a placeholder. An `Effect` or
119
+ * `Stream` member behaves exactly as its type says — the call returns a
120
+ * Promise, the iteration works — because that is what the face promises for
121
+ * them anyway. A **synchronous** member does not: `PromiseFace` types a recipe
122
+ * builder as returning a `Recipe` and a plain value as that value, and a
123
+ * placeholder has neither. So a synchronous member used in that window fails
124
+ * with `ExtensionNotReady` naming itself, rather than quietly handing back a
125
+ * Promise where the type says `Recipe` — which is a bug that only shows up on
126
+ * the *second* call, when the member has become real. Two cures:
127
+ *
128
+ * - `await client.<name>.$ready()` once after `$extend`, which builds the
129
+ * runtime and resolves the service; every member is real from then on;
130
+ * - register with `warm`, which does the same synchronously inside `register`,
131
+ * for a layer that needs no network.
132
+ *
133
+ * Two lifetimes worth knowing:
134
+ *
135
+ * - **`$dispose()` is not final.** It releases everything the layer acquired
136
+ * and forgets the runtime; the next call builds a fresh one. That is what a
137
+ * long-lived page wants (a disposed extension is usable again after a
138
+ * reconnect) and it does mean a `$dispose()` that races an in-flight call can
139
+ * leave the caller's Promise rejected while a new runtime starts behind it.
140
+ * Dispose when the consumer is done, not between calls. `dispose()` is the
141
+ * same function under the name it had first.
142
+ * - **Each `register` is independent.** Registering the same extension on two
143
+ * clients — or twice on one — gives two runtimes, two layer builds and two
144
+ * copies of whatever the layer holds (a cache, a connection). Register once
145
+ * per client and keep the extended client.
146
+ *
147
+ * Never fails, except a `warm` registration, which throws out of `register`
148
+ * when the layer needs an asynchronous step or when the network has no known
149
+ * chain identifier and none was given. Otherwise the layer's own failures
150
+ * surface as rejections of the first call that needs it.
151
+ */
152
+ export const fromService = (service, options) => ({
153
+ name: options.name,
154
+ register: (client) => {
155
+ let runtime;
156
+ let instance;
157
+ /**
158
+ * The chain identifier this registration knows before it asks anyone: the
159
+ * one `warm` names, the one `sui` pins, or the built-in entry for the
160
+ * client's network. `undefined` on `devnet`, `localnet` or a custom network
161
+ * with neither, which is the only case where the base is keyed by "read".
162
+ */
163
+ const knownChainId = options.warm?.chainId ?? options.sui?.chainId ??
164
+ KNOWN_CHAIN_IDS[client.network];
165
+ /**
166
+ * The base every registration on this client and this chain shares.
167
+ *
168
+ * The key is the **effective chain id**, not the registration's own style,
169
+ * so a `warm` registration and a lazy one on the same chain get one `Sui`,
170
+ * one transport and — the reason this matters — one sender-lock map. When
171
+ * the id is known the base is pinned (a `warm` registration must build it
172
+ * synchronously and cannot await a round trip) and a lazy registration adds
173
+ * {@link assertChainId} on top, which asks the node once. Only a network
174
+ * with no known id at all falls back to a base that reads it.
175
+ */
176
+ const baseEntry = () => sharedBase(client, knownChainId === undefined ? "read" : `chain:${knownChainId}`, () =>
177
+ // `Sui` and `SuiCore` over the very client `$extend` was called on, so
178
+ // the extension and the consumer share one transport, one chain-id
179
+ // check and one sender-lock map.
180
+ (knownChainId === undefined
181
+ ? SuiService.layerNoDepsWith(options.sui ?? {})
182
+ : SuiService.layerNoDepsPinned(knownChainId)).pipe(Layer.provideMerge(SuiCore.layerFromClient(client))));
183
+ const baseOf = () => {
184
+ const entry = baseEntry();
185
+ return knownChainId === undefined ? entry.shared : assertedBase(entry, knownChainId);
186
+ };
187
+ const runtimeOf = () => {
188
+ if (runtime === undefined) {
189
+ runtime = ManagedRuntime.make(options.layer.pipe(Layer.provideMerge(baseOf())));
190
+ }
191
+ return runtime;
192
+ };
193
+ const bridge = {
194
+ runPromise: (effect) => runtimeOf().runPromise(effect),
195
+ iterate: (stream) => ({
196
+ async *[Symbol.asyncIterator]() {
197
+ const context = await runtimeOf().context();
198
+ yield* Stream.toAsyncIterableWith(stream, context);
199
+ }
200
+ })
201
+ };
202
+ /**
203
+ * The warm path: one synchronous build inside `register`.
204
+ *
205
+ * `ManagedRuntime.runSync` forces the layer and resolves the service in one
206
+ * go; a layer with an asynchronous step throws out of it, which is the
207
+ * documented contract. The chain identifier is taken, never read.
208
+ */
209
+ const warmUp = (_warm) => {
210
+ if (knownChainId === undefined) {
211
+ throw new Error(`${options.name}: a warm registration on network "${client.network}" needs an explicit ` +
212
+ "chain id (warm: { chainId }), because there is no built-in identifier for it and a " +
213
+ "warm build never asks the node");
214
+ }
215
+ // The **pinned** base, not the asserted one: a warm build is synchronous
216
+ // and `getChainIdentifier` is a round trip. It is the same base object a
217
+ // lazy registration on this chain joins.
218
+ const base = baseEntry().shared;
219
+ const warmRuntime = ManagedRuntime.make(options.layer.pipe(Layer.provideMerge(base)));
220
+ runtime = warmRuntime;
221
+ instance = warmRuntime.runSync(service);
222
+ };
223
+ const resolve = async () => {
224
+ if (instance === undefined) {
225
+ instance = await runtimeOf().runPromise(service);
226
+ }
227
+ return instance;
228
+ };
229
+ const notReady = (member) => new ExtensionNotReady({
230
+ extension: options.name,
231
+ member: member.length === 0 ? "<the service>" : member.join(".")
232
+ });
233
+ const lazy = (path) => {
234
+ const at = async () => {
235
+ const resolved = await resolve();
236
+ let current = resolved;
237
+ for (const key of path)
238
+ current = current[key];
239
+ return current;
240
+ };
241
+ const node = (...args) => {
242
+ const settled = at().then((member) => {
243
+ const mapped = mapMember(member, bridge);
244
+ if (typeof mapped !== "function") {
245
+ // The member was a plain value, and the caller used it as a
246
+ // function because nothing knew what it was yet.
247
+ throw notReady(path);
248
+ }
249
+ const result = mapped(...args);
250
+ // A member that returns an `Effect` or a `Stream` is typed as
251
+ // Promise-returning or as an `AsyncIterable`, so answering with
252
+ // either is the truth. A member that returns anything else is typed
253
+ // as **synchronous**, and a Promise of its value is not the value:
254
+ // say so instead of handing back something the type says cannot be
255
+ // awaited.
256
+ if (result instanceof Promise)
257
+ return result;
258
+ if (typeof result === "object" && result !== null && Symbol.asyncIterator in result) {
259
+ return result;
260
+ }
261
+ throw notReady(path);
262
+ });
263
+ // Both faces at once, because until the runtime exists nothing knows
264
+ // which one this member has. `PromiseFace` types an `Effect`-returning
265
+ // method as `Promise` and a `Stream`-returning one as `AsyncIterable`;
266
+ // a bare Promise of an `AsyncIterable` satisfies neither `for await`
267
+ // nor the declared type, which is what a cold Stream call used to hand
268
+ // back. So the returned value is a thenable **and** an async iterable:
269
+ // awaited it is the Promise, iterated it awaits the runtime and then
270
+ // delegates to the real stream.
271
+ return {
272
+ then: (onFulfilled, onRejected) => settled.then(onFulfilled, onRejected),
273
+ catch: (onRejected) => settled.catch(onRejected),
274
+ finally: (onFinally) => settled.finally(onFinally),
275
+ [Symbol.asyncIterator]: async function* () {
276
+ const value = await settled;
277
+ if (typeof value !== "object" || value === null || !(Symbol.asyncIterator in value)) {
278
+ throw notReady(path);
279
+ }
280
+ yield* value;
281
+ }
282
+ };
283
+ };
284
+ // Every synchronous use of a placeholder — a plain value read as a
285
+ // string, a number, a JSON payload — lands on one of these, and each one
286
+ // says the same thing: the runtime does not exist yet.
287
+ const guard = () => {
288
+ throw notReady(path);
289
+ };
290
+ return new Proxy(node, {
291
+ get: (target, key) => {
292
+ if (key === Symbol.asyncIterator) {
293
+ return async function* () {
294
+ const member = await at();
295
+ const mapped = mapMember(member, bridge);
296
+ yield* mapped;
297
+ };
298
+ }
299
+ // Every synchronous use lands on one of these: a coercion, a
300
+ // `JSON.stringify`, or an `await` of what the type says is a value.
301
+ if (key === Symbol.toPrimitive || key === "toJSON" || key === "valueOf" ||
302
+ key === "then") {
303
+ return guard();
304
+ }
305
+ if (typeof key !== "string")
306
+ return Reflect.get(target, key);
307
+ return lazy([...path, key]);
308
+ }
309
+ });
310
+ };
311
+ const ready = async () => {
312
+ await resolve();
313
+ };
314
+ const dispose = async () => {
315
+ if (runtime !== undefined)
316
+ await runtime.dispose();
317
+ runtime = undefined;
318
+ instance = undefined;
319
+ };
320
+ if (options.warm !== undefined)
321
+ warmUp(options.warm);
322
+ const own = (key) => {
323
+ if (key === "$ready")
324
+ return ready;
325
+ if (key === "$dispose" || key === "dispose")
326
+ return dispose;
327
+ return undefined;
328
+ };
329
+ return new Proxy({}, {
330
+ get: (_target, key) => {
331
+ if (typeof key !== "string")
332
+ return undefined;
333
+ const reserved = own(key);
334
+ if (reserved !== undefined)
335
+ return reserved;
336
+ if (instance !== undefined) {
337
+ const member = instance[key];
338
+ return member === undefined ? undefined : mapMember(member, bridge);
339
+ }
340
+ return lazy([key]);
341
+ },
342
+ has: (_target, key) => key === "$ready" || key === "$dispose" || key === "dispose" ||
343
+ (instance !== undefined && typeof key === "string" && key in instance),
344
+ ownKeys: () => instance === undefined
345
+ ? [...RESERVED]
346
+ // A `Proxy` refuses duplicate keys, so a service member that happens
347
+ // to be called `dispose` must not be listed twice.
348
+ : [...new Set([...Object.keys(instance), ...RESERVED])],
349
+ getOwnPropertyDescriptor: () => ({ configurable: true, enumerable: true })
350
+ });
351
+ }
352
+ });
353
+ /** The namespace the spec spells: `SuiExtension.fromService(...)`. */
354
+ export const SuiExtension = { fromService };
355
+ //# sourceMappingURL=SuiExtension.js.map