effect 4.0.0-beta.33 → 4.0.0-beta.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Effect.d.ts +5 -3
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +4 -4
- package/dist/Effect.js.map +1 -1
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +2 -1
- package/dist/FileSystem.js.map +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +2 -1
- package/dist/Graph.js.map +1 -1
- package/dist/MutableHashMap.d.ts +7 -0
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js +8 -0
- package/dist/MutableHashMap.js.map +1 -1
- package/dist/MutableHashSet.d.ts +7 -0
- package/dist/MutableHashSet.d.ts.map +1 -1
- package/dist/MutableHashSet.js +8 -0
- package/dist/MutableHashSet.js.map +1 -1
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +2 -1
- package/dist/Resource.js.map +1 -1
- package/dist/SubscriptionRef.d.ts.map +1 -1
- package/dist/SubscriptionRef.js +2 -1
- package/dist/SubscriptionRef.js.map +1 -1
- package/dist/TxDeferred.d.ts.map +1 -1
- package/dist/TxDeferred.js +2 -1
- package/dist/TxDeferred.js.map +1 -1
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js +2 -1
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts +1 -1
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js +2 -1
- package/dist/TxHashSet.js.map +1 -1
- package/dist/TxPriorityQueue.d.ts +1 -1
- package/dist/TxPriorityQueue.d.ts.map +1 -1
- package/dist/TxPriorityQueue.js +2 -1
- package/dist/TxPriorityQueue.js.map +1 -1
- package/dist/TxSemaphore.d.ts.map +1 -1
- package/dist/TxSemaphore.js +2 -1
- package/dist/TxSemaphore.js.map +1 -1
- package/dist/internal/effect.js +1 -1
- package/dist/internal/effect.js.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +1 -3
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +1 -3
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/EmbeddingModel.d.ts +130 -0
- package/dist/unstable/ai/EmbeddingModel.d.ts.map +1 -0
- package/dist/unstable/ai/EmbeddingModel.js +127 -0
- package/dist/unstable/ai/EmbeddingModel.js.map +1 -0
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +18 -8
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/ResponseIdTracker.js +3 -3
- package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
- package/dist/unstable/ai/Tool.d.ts +1 -1
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +1 -1
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/ai/index.d.ts +17 -0
- package/dist/unstable/ai/index.d.ts.map +1 -1
- package/dist/unstable/ai/index.js +17 -0
- package/dist/unstable/ai/index.js.map +1 -1
- package/dist/unstable/http/Url.d.ts +604 -0
- package/dist/unstable/http/Url.d.ts.map +1 -0
- package/dist/unstable/http/Url.js +256 -0
- package/dist/unstable/http/Url.js.map +1 -0
- package/dist/unstable/http/index.d.ts +4 -0
- package/dist/unstable/http/index.d.ts.map +1 -1
- package/dist/unstable/http/index.js +4 -0
- package/dist/unstable/http/index.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +30 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.js +27 -0
- package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
- package/package.json +1 -1
- package/src/Effect.ts +7 -6
- package/src/FileSystem.ts +2 -1
- package/src/Graph.ts +2 -1
- package/src/MutableHashMap.ts +9 -0
- package/src/MutableHashSet.ts +9 -0
- package/src/Resource.ts +2 -1
- package/src/SubscriptionRef.ts +2 -1
- package/src/TxDeferred.ts +2 -2
- package/src/TxHashMap.ts +2 -1
- package/src/TxHashSet.ts +2 -2
- package/src/TxPriorityQueue.ts +2 -3
- package/src/TxSemaphore.ts +2 -1
- package/src/internal/effect.ts +11 -4
- package/src/unstable/ai/AiError.ts +1 -3
- package/src/unstable/ai/EmbeddingModel.ts +209 -0
- package/src/unstable/ai/LanguageModel.ts +36 -4
- package/src/unstable/ai/ResponseIdTracker.ts +3 -3
- package/src/unstable/ai/Tool.ts +2 -2
- package/src/unstable/ai/index.ts +18 -0
- package/src/unstable/http/Url.ts +650 -0
- package/src/unstable/http/index.ts +5 -0
- package/src/unstable/httpapi/HttpApiMiddleware.ts +46 -1
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 4.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Cause from "../../Cause.js";
|
|
5
|
+
import { dual } from "../../Function.js";
|
|
6
|
+
import * as Redacted from "../../Redacted.js";
|
|
7
|
+
import * as Result from "../../Result.js";
|
|
8
|
+
import * as UrlParams from "./UrlParams.js";
|
|
9
|
+
/**
|
|
10
|
+
* Parses a URL string into a `URL` object, returning an `Result` type for safe
|
|
11
|
+
* error handling.
|
|
12
|
+
*
|
|
13
|
+
* **Details**
|
|
14
|
+
*
|
|
15
|
+
* This function converts a string into a `URL` object, enabling safe URL
|
|
16
|
+
* parsing with built-in error handling. If the string is invalid or fails to
|
|
17
|
+
* parse, this function does not throw an error; instead, it wraps the error in
|
|
18
|
+
* a `IllegalArgumentError` and returns it as the `Failure` value of an
|
|
19
|
+
* `Result`. The `Success` value contains the successfully parsed `URL`.
|
|
20
|
+
*
|
|
21
|
+
* An optional `base` parameter can be provided to resolve relative URLs. If
|
|
22
|
+
* specified, the function interprets the input `url` as relative to this
|
|
23
|
+
* `base`. This is especially useful when dealing with URLs that might not be
|
|
24
|
+
* fully qualified.
|
|
25
|
+
*
|
|
26
|
+
* **Example**
|
|
27
|
+
*
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { Url } from "effect/unstable/http"
|
|
30
|
+
* import { Result } from "effect"
|
|
31
|
+
*
|
|
32
|
+
* // Parse an absolute URL
|
|
33
|
+
* //
|
|
34
|
+
* // ┌─── Result<URL, IllegalArgumentError>
|
|
35
|
+
* // ▼
|
|
36
|
+
* const parsed = Url.fromString("https://example.com/path")
|
|
37
|
+
*
|
|
38
|
+
* if (Result.isSuccess(parsed)) {
|
|
39
|
+
* console.log("Parsed URL:", parsed.success.toString())
|
|
40
|
+
* } else {
|
|
41
|
+
* console.log("Error:", parsed.failure.message)
|
|
42
|
+
* }
|
|
43
|
+
* // Output: Parsed URL: https://example.com/path
|
|
44
|
+
*
|
|
45
|
+
* // Parse a relative URL with a base
|
|
46
|
+
* const relativeParsed = Url.fromString("/relative-path", "https://example.com")
|
|
47
|
+
*
|
|
48
|
+
* if (Result.isSuccess(relativeParsed)) {
|
|
49
|
+
* console.log("Parsed relative URL:", relativeParsed.success.toString())
|
|
50
|
+
* } else {
|
|
51
|
+
* console.log("Error:", relativeParsed.failure.message)
|
|
52
|
+
* }
|
|
53
|
+
* // Output: Parsed relative URL: https://example.com/relative-path
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @since 4.0.0
|
|
57
|
+
* @category Constructors
|
|
58
|
+
*/
|
|
59
|
+
export const fromString = (url, base) => Result.try({
|
|
60
|
+
try: () => new URL(url, base),
|
|
61
|
+
catch: () => new Cause.IllegalArgumentError(`Invalid URL: "${url}"${base !== undefined ? ` with base "${base}"` : ""}`)
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* This function clones the original `URL` object and applies a callback to the
|
|
65
|
+
* clone, allowing multiple updates at once.
|
|
66
|
+
*
|
|
67
|
+
* **Example**
|
|
68
|
+
*
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { Url } from "effect/unstable/http"
|
|
71
|
+
*
|
|
72
|
+
* const myUrl = new URL("https://example.com")
|
|
73
|
+
*
|
|
74
|
+
* const mutatedUrl = Url.mutate(myUrl, (url) => {
|
|
75
|
+
* url.username = "user"
|
|
76
|
+
* url.password = "pass"
|
|
77
|
+
* })
|
|
78
|
+
*
|
|
79
|
+
* console.log("Mutated:", mutatedUrl.toString())
|
|
80
|
+
* // Output: Mutated: https://user:pass@example.com/
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @since 4.0.0
|
|
84
|
+
* @category Modifiers
|
|
85
|
+
*/
|
|
86
|
+
export const mutate = /*#__PURE__*/dual(2, (self, f) => {
|
|
87
|
+
const copy = new URL(self);
|
|
88
|
+
f(copy);
|
|
89
|
+
return copy;
|
|
90
|
+
});
|
|
91
|
+
/** @internal */
|
|
92
|
+
const immutableURLSetter = property => dual(2, (url, value) => mutate(url, url => {
|
|
93
|
+
url[property] = value;
|
|
94
|
+
}));
|
|
95
|
+
/**
|
|
96
|
+
* Updates the hash fragment of the URL.
|
|
97
|
+
*
|
|
98
|
+
* @since 4.0.0
|
|
99
|
+
* @category Setters
|
|
100
|
+
*/
|
|
101
|
+
export const setHash = /*#__PURE__*/immutableURLSetter("hash");
|
|
102
|
+
/**
|
|
103
|
+
* Updates the host (domain and port) of the URL.
|
|
104
|
+
*
|
|
105
|
+
* @since 4.0.0
|
|
106
|
+
* @category Setters
|
|
107
|
+
*/
|
|
108
|
+
export const setHost = /*#__PURE__*/immutableURLSetter("host");
|
|
109
|
+
/**
|
|
110
|
+
* Updates the domain of the URL without modifying the port.
|
|
111
|
+
*
|
|
112
|
+
* @since 4.0.0
|
|
113
|
+
* @category Setters
|
|
114
|
+
*/
|
|
115
|
+
export const setHostname = /*#__PURE__*/immutableURLSetter("hostname");
|
|
116
|
+
/**
|
|
117
|
+
* Replaces the entire URL string.
|
|
118
|
+
*
|
|
119
|
+
* @since 4.0.0
|
|
120
|
+
* @category Setters
|
|
121
|
+
*/
|
|
122
|
+
export const setHref = /*#__PURE__*/immutableURLSetter("href");
|
|
123
|
+
/**
|
|
124
|
+
* Updates the password used for authentication.
|
|
125
|
+
*
|
|
126
|
+
* @since 4.0.0
|
|
127
|
+
* @category Setters
|
|
128
|
+
*/
|
|
129
|
+
export const setPassword = /*#__PURE__*/dual(2, (url, password) => mutate(url, url => {
|
|
130
|
+
url.password = typeof password === "string" ? password : Redacted.value(password);
|
|
131
|
+
}));
|
|
132
|
+
/**
|
|
133
|
+
* Updates the path of the URL.
|
|
134
|
+
*
|
|
135
|
+
* @since 4.0.0
|
|
136
|
+
* @category Setters
|
|
137
|
+
*/
|
|
138
|
+
export const setPathname = /*#__PURE__*/immutableURLSetter("pathname");
|
|
139
|
+
/**
|
|
140
|
+
* Updates the port of the URL.
|
|
141
|
+
*
|
|
142
|
+
* @since 4.0.0
|
|
143
|
+
* @category Setters
|
|
144
|
+
*/
|
|
145
|
+
export const setPort = /*#__PURE__*/immutableURLSetter("port");
|
|
146
|
+
/**
|
|
147
|
+
* Updates the protocol (e.g., `http`, `https`).
|
|
148
|
+
*
|
|
149
|
+
* @since 4.0.0
|
|
150
|
+
* @category Setters
|
|
151
|
+
*/
|
|
152
|
+
export const setProtocol = /*#__PURE__*/immutableURLSetter("protocol");
|
|
153
|
+
/**
|
|
154
|
+
* Updates the query string of the URL.
|
|
155
|
+
*
|
|
156
|
+
* @since 4.0.0
|
|
157
|
+
* @category Setters
|
|
158
|
+
*/
|
|
159
|
+
export const setSearch = /*#__PURE__*/immutableURLSetter("search");
|
|
160
|
+
/**
|
|
161
|
+
* Updates the username used for authentication.
|
|
162
|
+
*
|
|
163
|
+
* @since 4.0.0
|
|
164
|
+
* @category Setters
|
|
165
|
+
*/
|
|
166
|
+
export const setUsername = /*#__PURE__*/immutableURLSetter("username");
|
|
167
|
+
/**
|
|
168
|
+
* Updates the query parameters of a URL.
|
|
169
|
+
*
|
|
170
|
+
* **Details**
|
|
171
|
+
*
|
|
172
|
+
* This function allows you to set or replace the query parameters of a `URL`
|
|
173
|
+
* object using the provided `UrlParams`. It creates a new `URL` object with the
|
|
174
|
+
* updated parameters, leaving the original object unchanged.
|
|
175
|
+
*
|
|
176
|
+
* **Example**
|
|
177
|
+
*
|
|
178
|
+
* ```ts
|
|
179
|
+
* import { Url, UrlParams } from "effect/unstable/http"
|
|
180
|
+
*
|
|
181
|
+
* const myUrl = new URL("https://example.com?foo=bar")
|
|
182
|
+
*
|
|
183
|
+
* // Write parameters
|
|
184
|
+
* const updatedUrl = Url.setUrlParams(
|
|
185
|
+
* myUrl,
|
|
186
|
+
* UrlParams.fromInput([["key", "value"]])
|
|
187
|
+
* )
|
|
188
|
+
*
|
|
189
|
+
* console.log(updatedUrl.toString())
|
|
190
|
+
* // Output: https://example.com/?key=value
|
|
191
|
+
* ```
|
|
192
|
+
*
|
|
193
|
+
* @since 4.0.0
|
|
194
|
+
* @category Setters
|
|
195
|
+
*/
|
|
196
|
+
export const setUrlParams = /*#__PURE__*/dual(2, (url, searchParams) => mutate(url, url => {
|
|
197
|
+
url.search = UrlParams.toString(searchParams);
|
|
198
|
+
}));
|
|
199
|
+
/**
|
|
200
|
+
* Retrieves the query parameters from a URL.
|
|
201
|
+
*
|
|
202
|
+
* **Details**
|
|
203
|
+
*
|
|
204
|
+
* This function extracts the query parameters from a `URL` object and returns
|
|
205
|
+
* them as `UrlParams`. The resulting structure can be easily manipulated or
|
|
206
|
+
* inspected.
|
|
207
|
+
*
|
|
208
|
+
* **Example**
|
|
209
|
+
*
|
|
210
|
+
* ```ts
|
|
211
|
+
* import { Url } from "effect/unstable/http"
|
|
212
|
+
*
|
|
213
|
+
* const myUrl = new URL("https://example.com?foo=bar")
|
|
214
|
+
*
|
|
215
|
+
* // Read parameters
|
|
216
|
+
* const params = Url.urlParams(myUrl)
|
|
217
|
+
*
|
|
218
|
+
* console.log(params)
|
|
219
|
+
* // Output: [ [ 'foo', 'bar' ] ]
|
|
220
|
+
* ```
|
|
221
|
+
*
|
|
222
|
+
* @since 4.0.0
|
|
223
|
+
* @category Getters
|
|
224
|
+
*/
|
|
225
|
+
export const urlParams = url => UrlParams.fromInput(url.searchParams);
|
|
226
|
+
/**
|
|
227
|
+
* Reads, modifies, and updates the query parameters of a URL.
|
|
228
|
+
*
|
|
229
|
+
* **Details**
|
|
230
|
+
*
|
|
231
|
+
* This function provides a functional way to interact with query parameters by
|
|
232
|
+
* reading the current parameters, applying a transformation function, and then
|
|
233
|
+
* writing the updated parameters back to the URL. It returns a new `URL` object
|
|
234
|
+
* with the modified parameters, ensuring immutability.
|
|
235
|
+
*
|
|
236
|
+
* **Example**
|
|
237
|
+
*
|
|
238
|
+
* ```ts
|
|
239
|
+
* import { Url, UrlParams } from "effect/unstable/http"
|
|
240
|
+
*
|
|
241
|
+
* const myUrl = new URL("https://example.com?foo=bar")
|
|
242
|
+
*
|
|
243
|
+
* const changedUrl = Url.modifyUrlParams(myUrl, UrlParams.append("key", "value"))
|
|
244
|
+
*
|
|
245
|
+
* console.log(changedUrl.toString())
|
|
246
|
+
* // Output: https://example.com/?foo=bar&key=value
|
|
247
|
+
* ```
|
|
248
|
+
*
|
|
249
|
+
* @since 4.0.0
|
|
250
|
+
* @category Modifiers
|
|
251
|
+
*/
|
|
252
|
+
export const modifyUrlParams = /*#__PURE__*/dual(2, (url, f) => mutate(url, url => {
|
|
253
|
+
const params = f(UrlParams.fromInput(url.searchParams));
|
|
254
|
+
url.search = UrlParams.toString(params);
|
|
255
|
+
}));
|
|
256
|
+
//# sourceMappingURL=Url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Url.js","names":["Cause","dual","Redacted","Result","UrlParams","fromString","url","base","try","URL","catch","IllegalArgumentError","undefined","mutate","self","f","copy","immutableURLSetter","property","value","setHash","setHost","setHostname","setHref","setPassword","password","setPathname","setPort","setProtocol","setSearch","setUsername","setUrlParams","searchParams","search","toString","urlParams","fromInput","modifyUrlParams","params"],"sources":["../../../src/unstable/http/Url.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/unstable/http/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA;AAEnE;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/unstable/http/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA;AAEnE;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Cookies","Etag","FetchHttpClient","FindMyWay","Headers","HttpBody","HttpClient","HttpClientError","HttpClientRequest","HttpClientResponse","HttpEffect","HttpIncomingMessage","HttpMethod","HttpMiddleware","HttpPlatform","HttpRouter","HttpServer","HttpServerError","HttpServerRequest","HttpServerRespondable","HttpServerResponse","HttpStaticServer","HttpTraceContext","Multipart","Multipasta","Template","UrlParams"],"sources":["../../../src/unstable/http/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAKC,IAAI,MAAM,WAAW;AAEjC;;;AAGA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;AAGA,OAAO,KAAKC,iBAAiB,MAAM,wBAAwB;AAE3D;;;AAGA,OAAO,KAAKC,kBAAkB,MAAM,yBAAyB;AAE7D;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,mBAAmB,MAAM,0BAA0B;AAE/D;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;AAGA,OAAO,KAAKC,iBAAiB,MAAM,wBAAwB;AAE3D;;;AAGA,OAAO,KAAKC,qBAAqB,MAAM,4BAA4B;AAEnE;;;AAGA,OAAO,KAAKC,kBAAkB,MAAM,yBAAyB;AAE7D;;;AAGA,OAAO,KAAKC,gBAAgB,MAAM,uBAAuB;AAEzD;;;AAGA,OAAO,KAAKC,gBAAgB,MAAM,uBAAuB;AAEzD;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Cookies","Etag","FetchHttpClient","FindMyWay","Headers","HttpBody","HttpClient","HttpClientError","HttpClientRequest","HttpClientResponse","HttpEffect","HttpIncomingMessage","HttpMethod","HttpMiddleware","HttpPlatform","HttpRouter","HttpServer","HttpServerError","HttpServerRequest","HttpServerRespondable","HttpServerResponse","HttpStaticServer","HttpTraceContext","Multipart","Multipasta","Template","UrlParams","Url"],"sources":["../../../src/unstable/http/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAKC,IAAI,MAAM,WAAW;AAEjC;;;AAGA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;AAGA,OAAO,KAAKC,iBAAiB,MAAM,wBAAwB;AAE3D;;;AAGA,OAAO,KAAKC,kBAAkB,MAAM,yBAAyB;AAE7D;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,mBAAmB,MAAM,0BAA0B;AAE/D;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;AAGA,OAAO,KAAKC,iBAAiB,MAAM,wBAAwB;AAE3D;;;AAGA,OAAO,KAAKC,qBAAqB,MAAM,4BAA4B;AAEnE;;;AAGA,OAAO,KAAKC,kBAAkB,MAAM,yBAAyB;AAE7D;;;AAGA,OAAO,KAAKC,gBAAgB,MAAM,uBAAuB;AAEzD;;;AAGA,OAAO,KAAKC,gBAAgB,MAAM,uBAAuB;AAEzD;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,GAAG,MAAM,UAAU","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as Effect from "../../Effect.ts";
|
|
5
5
|
import * as Layer from "../../Layer.ts";
|
|
6
|
-
import
|
|
6
|
+
import * as Schema from "../../Schema.ts";
|
|
7
7
|
import { Scope } from "../../Scope.ts";
|
|
8
8
|
import * as ServiceMap from "../../ServiceMap.ts";
|
|
9
9
|
import type { unhandled } from "../../Types.ts";
|
|
@@ -212,6 +212,35 @@ export declare const Service: <Self, Config extends {
|
|
|
212
212
|
requiredForClient: RequiredForClient;
|
|
213
213
|
security: Security;
|
|
214
214
|
}>;
|
|
215
|
+
/**
|
|
216
|
+
* Implement a middleware Layer that transforms `SchemaError`'s.
|
|
217
|
+
*
|
|
218
|
+
* ```ts
|
|
219
|
+
* import { Effect, Schema } from "effect"
|
|
220
|
+
* import { HttpApiMiddleware } from "effect/unstable/httpapi"
|
|
221
|
+
*
|
|
222
|
+
* export class CustomError extends Schema.TaggedErrorClass<CustomError>()("CustomError", {}) {}
|
|
223
|
+
*
|
|
224
|
+
* export class ErrorHandler extends HttpApiMiddleware.Service<ErrorHandler>()("api/ErrorHandler", {
|
|
225
|
+
* error: CustomError
|
|
226
|
+
* }) {}
|
|
227
|
+
*
|
|
228
|
+
* export const ErrorHandlerLayer = HttpApiMiddleware.layerSchemaErrorTransform(
|
|
229
|
+
* ErrorHandler,
|
|
230
|
+
* (schemaError) =>
|
|
231
|
+
* Effect.log("Got SchemaError", schemaError).pipe(
|
|
232
|
+
* Effect.andThen(Effect.fail(new CustomError()))
|
|
233
|
+
* )
|
|
234
|
+
* )
|
|
235
|
+
* ```
|
|
236
|
+
*
|
|
237
|
+
* @since 4.0.0
|
|
238
|
+
* @category SchemaError transform
|
|
239
|
+
*/
|
|
240
|
+
export declare const layerSchemaErrorTransform: <Id, E extends Schema.Top, Requires>(service: ServiceMap.Service<Id, HttpApiMiddleware<never, E, Requires>>, transform: (error: Schema.SchemaError, context: {
|
|
241
|
+
readonly endpoint: HttpApiEndpoint.AnyWithProps;
|
|
242
|
+
readonly group: HttpApiGroup.AnyWithProps;
|
|
243
|
+
}) => Effect.Effect<HttpServerResponse, E["Type"] | Schema.SchemaError, Requires | HttpRouter.Provided>) => Layer.Layer<Id>;
|
|
215
244
|
/**
|
|
216
245
|
* @since 4.0.0
|
|
217
246
|
* @category client
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpApiMiddleware.d.ts","sourceRoot":"","sources":["../../../src/unstable/httpapi/HttpApiMiddleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAEvC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"HttpApiMiddleware.d.ts","sourceRoot":"","sources":["../../../src/unstable/httpapi/HttpApiMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import * as Effect from "../../Effect.js";
|
|
5
5
|
import * as Layer from "../../Layer.js";
|
|
6
6
|
import { hasProperty } from "../../Predicate.js";
|
|
7
|
+
import * as Schema from "../../Schema.js";
|
|
7
8
|
import { Scope } from "../../Scope.js";
|
|
8
9
|
import * as ServiceMap from "../../ServiceMap.js";
|
|
9
10
|
const TypeId = "~effect/httpapi/HttpApiMiddleware";
|
|
@@ -44,6 +45,32 @@ export const Service = () => (id, options) => {
|
|
|
44
45
|
}
|
|
45
46
|
return self;
|
|
46
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* Implement a middleware Layer that transforms `SchemaError`'s.
|
|
50
|
+
*
|
|
51
|
+
* ```ts
|
|
52
|
+
* import { Effect, Schema } from "effect"
|
|
53
|
+
* import { HttpApiMiddleware } from "effect/unstable/httpapi"
|
|
54
|
+
*
|
|
55
|
+
* export class CustomError extends Schema.TaggedErrorClass<CustomError>()("CustomError", {}) {}
|
|
56
|
+
*
|
|
57
|
+
* export class ErrorHandler extends HttpApiMiddleware.Service<ErrorHandler>()("api/ErrorHandler", {
|
|
58
|
+
* error: CustomError
|
|
59
|
+
* }) {}
|
|
60
|
+
*
|
|
61
|
+
* export const ErrorHandlerLayer = HttpApiMiddleware.layerSchemaErrorTransform(
|
|
62
|
+
* ErrorHandler,
|
|
63
|
+
* (schemaError) =>
|
|
64
|
+
* Effect.log("Got SchemaError", schemaError).pipe(
|
|
65
|
+
* Effect.andThen(Effect.fail(new CustomError()))
|
|
66
|
+
* )
|
|
67
|
+
* )
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* @since 4.0.0
|
|
71
|
+
* @category SchemaError transform
|
|
72
|
+
*/
|
|
73
|
+
export const layerSchemaErrorTransform = (service, transform) => Layer.succeed(service, (httpEffect, options) => Effect.catch(httpEffect, e => Schema.isSchemaError(e) ? transform(e, options) : Effect.fail(e)));
|
|
47
74
|
/**
|
|
48
75
|
* @since 4.0.0
|
|
49
76
|
* @category client
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpApiMiddleware.js","names":["Effect","Layer","hasProperty","Scope","ServiceMap","TypeId","SecurityTypeId","isSecurity","u","Service","id","options","Err","globalThis","Error","limit","stackTraceLimit","creationError","self","Object","defineProperty","get","stack","requiredForClient","error","undefined","security","keys","length","
|
|
1
|
+
{"version":3,"file":"HttpApiMiddleware.js","names":["Effect","Layer","hasProperty","Schema","Scope","ServiceMap","TypeId","SecurityTypeId","isSecurity","u","Service","id","options","Err","globalThis","Error","limit","stackTraceLimit","creationError","self","Object","defineProperty","get","stack","requiredForClient","error","undefined","security","keys","length","layerSchemaErrorTransform","service","transform","succeed","httpEffect","catch","e","isSchemaError","fail","layerClient","tag","effectServices","gen","services","pipe","omit","middleware","isEffect","makeUnsafe","Map","key","updateServices","requestContext","merge"],"sources":["../../../src/unstable/httpapi/HttpApiMiddleware.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
package/src/Effect.ts
CHANGED
|
@@ -372,7 +372,7 @@ export declare namespace Yieldable {
|
|
|
372
372
|
* @since 2.0.0
|
|
373
373
|
* @category Guards
|
|
374
374
|
*/
|
|
375
|
-
export const isEffect
|
|
375
|
+
export const isEffect: (u: unknown) => u is Effect<any, any, any> = core.isEffect
|
|
376
376
|
|
|
377
377
|
/**
|
|
378
378
|
* Iterator interface for Effect generators, enabling Effect values to work with generator functions.
|
|
@@ -4256,12 +4256,12 @@ export {
|
|
|
4256
4256
|
*
|
|
4257
4257
|
* **Details**
|
|
4258
4258
|
*
|
|
4259
|
-
* The `
|
|
4259
|
+
* The `catch` function catches any errors that may occur during the
|
|
4260
4260
|
* execution of an effect and allows you to handle them by specifying a fallback
|
|
4261
4261
|
* effect. This ensures that the program continues without failing by recovering
|
|
4262
4262
|
* from errors using the provided fallback logic.
|
|
4263
4263
|
*
|
|
4264
|
-
* **Note**: `
|
|
4264
|
+
* **Note**: `catch` only handles recoverable errors. It will not recover
|
|
4265
4265
|
* from unrecoverable defects.
|
|
4266
4266
|
*
|
|
4267
4267
|
* @see {@link catchCause} for a version that can recover from both recoverable and unrecoverable errors.
|
|
@@ -12001,8 +12001,9 @@ export const scopedWith: <A, E, R>(
|
|
|
12001
12001
|
*/
|
|
12002
12002
|
export const acquireRelease: <A, E, R>(
|
|
12003
12003
|
acquire: Effect<A, E, R>,
|
|
12004
|
-
release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect<unknown
|
|
12005
|
-
|
|
12004
|
+
release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect<unknown>,
|
|
12005
|
+
options?: { readonly interruptible?: boolean }
|
|
12006
|
+
) => Effect<A, E, Scope | R> = internal.acquireRelease
|
|
12006
12007
|
|
|
12007
12008
|
/**
|
|
12008
12009
|
* This function is used to ensure that an `Effect` value that represents the
|
|
@@ -21079,7 +21080,7 @@ export const annotateLogs = dual<
|
|
|
21079
21080
|
): Effect<A, E, R>;
|
|
21080
21081
|
}
|
|
21081
21082
|
>(
|
|
21082
|
-
(args) =>
|
|
21083
|
+
(args) => isEffect(args[0]),
|
|
21083
21084
|
<A, E, R>(
|
|
21084
21085
|
effect: Effect<A, E, R>,
|
|
21085
21086
|
...args: [Record<string, unknown>] | [key: string, value: unknown]
|
package/src/FileSystem.ts
CHANGED
|
@@ -43,6 +43,7 @@ import { pipe } from "./Function.ts"
|
|
|
43
43
|
import * as Layer from "./Layer.ts"
|
|
44
44
|
import * as Option from "./Option.ts"
|
|
45
45
|
import { badArgument, type PlatformError, systemError } from "./PlatformError.ts"
|
|
46
|
+
import { hasProperty } from "./Predicate.ts"
|
|
46
47
|
import type * as Pull from "./Pull.ts"
|
|
47
48
|
import type { Scope } from "./Scope.ts"
|
|
48
49
|
import * as ServiceMap from "./ServiceMap.ts"
|
|
@@ -999,7 +1000,7 @@ export const FileTypeId = "~effect/platform/FileSystem/File"
|
|
|
999
1000
|
* @since 4.0.0
|
|
1000
1001
|
* @category File
|
|
1001
1002
|
*/
|
|
1002
|
-
export const isFile = (u: unknown): u is File =>
|
|
1003
|
+
export const isFile = (u: unknown): u is File => hasProperty(u, FileTypeId)
|
|
1003
1004
|
|
|
1004
1005
|
/**
|
|
1005
1006
|
* Interface representing an open file handle.
|
package/src/Graph.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { NodeInspectSymbol } from "./Inspectable.ts"
|
|
|
11
11
|
import * as Option from "./Option.ts"
|
|
12
12
|
import type { Pipeable } from "./Pipeable.ts"
|
|
13
13
|
import { pipeArguments } from "./Pipeable.ts"
|
|
14
|
+
import { hasProperty } from "./Predicate.ts"
|
|
14
15
|
import type { Mutable } from "./Types.ts"
|
|
15
16
|
|
|
16
17
|
const TypeId = "~effect/collections/Graph"
|
|
@@ -222,7 +223,7 @@ const missingNode = (node: number) => new GraphError({ message: `Node ${node} do
|
|
|
222
223
|
* @since 4.0.0
|
|
223
224
|
* @category Guards
|
|
224
225
|
*/
|
|
225
|
-
export const isGraph = (u: unknown): u is Graph<unknown, unknown> =>
|
|
226
|
+
export const isGraph = (u: unknown): u is Graph<unknown, unknown> => hasProperty(u, TypeId)
|
|
226
227
|
|
|
227
228
|
/**
|
|
228
229
|
* Creates a directed graph, optionally with initial mutations.
|
package/src/MutableHashMap.ts
CHANGED
|
@@ -33,6 +33,7 @@ import { type Inspectable, NodeInspectSymbol, toJson } from "./Inspectable.ts"
|
|
|
33
33
|
import * as Option from "./Option.ts"
|
|
34
34
|
import type { Pipeable } from "./Pipeable.ts"
|
|
35
35
|
import { pipeArguments } from "./Pipeable.ts"
|
|
36
|
+
import { hasProperty } from "./Predicate.ts"
|
|
36
37
|
|
|
37
38
|
const TypeId = "~effect/collections/MutableHashMap"
|
|
38
39
|
|
|
@@ -71,6 +72,14 @@ export interface MutableHashMap<out K, out V> extends Iterable<[K, V]>, Pipeable
|
|
|
71
72
|
readonly buckets: Map<number, NonEmptyArray<K>>
|
|
72
73
|
}
|
|
73
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Checks if the specified value is a `MutableHashMap`, `false` otherwise.
|
|
77
|
+
*
|
|
78
|
+
* @category refinements
|
|
79
|
+
* @since 4.0.0
|
|
80
|
+
*/
|
|
81
|
+
export const isMutableHashMap = <K, V>(value: unknown): value is MutableHashMap<K, V> => hasProperty(value, TypeId)
|
|
82
|
+
|
|
74
83
|
const MutableHashMapProto: Omit<MutableHashMap<unknown, unknown>, "backing" | "buckets" | "bucketsSize"> = {
|
|
75
84
|
[TypeId]: TypeId,
|
|
76
85
|
[Symbol.iterator](this: MutableHashMap<unknown, unknown>): Iterator<[unknown, unknown]> {
|
package/src/MutableHashSet.ts
CHANGED
|
@@ -30,6 +30,7 @@ import { type Inspectable, NodeInspectSymbol, toJson } from "./Inspectable.ts"
|
|
|
30
30
|
import * as MutableHashMap from "./MutableHashMap.ts"
|
|
31
31
|
import type { Pipeable } from "./Pipeable.ts"
|
|
32
32
|
import { pipeArguments } from "./Pipeable.ts"
|
|
33
|
+
import { hasProperty } from "./Predicate.ts"
|
|
33
34
|
|
|
34
35
|
const TypeId = "~effect/collections/MutableHashSet"
|
|
35
36
|
|
|
@@ -68,6 +69,14 @@ export interface MutableHashSet<out V> extends Iterable<V>, Pipeable, Inspectabl
|
|
|
68
69
|
readonly keyMap: MutableHashMap.MutableHashMap<V, boolean>
|
|
69
70
|
}
|
|
70
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Checks if the specified value is a `MutableHashSet`, `false` otherwise.
|
|
74
|
+
*
|
|
75
|
+
* @category refinements
|
|
76
|
+
* @since 4.0.0
|
|
77
|
+
*/
|
|
78
|
+
export const isMutableHashSet = <V>(value: unknown): value is MutableHashSet<V> => hasProperty(value, TypeId)
|
|
79
|
+
|
|
71
80
|
const MutableHashSetProto: Omit<MutableHashSet<unknown>, "keyMap"> = {
|
|
72
81
|
[TypeId]: TypeId,
|
|
73
82
|
[Symbol.iterator](this: MutableHashSet<unknown>): Iterator<unknown> {
|
package/src/Resource.ts
CHANGED
|
@@ -6,6 +6,7 @@ import * as Exit from "./Exit.ts"
|
|
|
6
6
|
import { identity } from "./Function.ts"
|
|
7
7
|
import { PipeInspectableProto } from "./internal/core.ts"
|
|
8
8
|
import type { Pipeable } from "./Pipeable.ts"
|
|
9
|
+
import { hasProperty } from "./Predicate.ts"
|
|
9
10
|
import type * as Schedule from "./Schedule.ts"
|
|
10
11
|
import type * as Scope from "./Scope.ts"
|
|
11
12
|
import * as ScopedRef from "./ScopedRef.ts"
|
|
@@ -32,7 +33,7 @@ export interface Resource<in out A, in out E = never> extends Pipeable {
|
|
|
32
33
|
*/
|
|
33
34
|
export const isResource: (u: unknown) => u is Resource<unknown, unknown> = (
|
|
34
35
|
u: unknown
|
|
35
|
-
): u is Resource<unknown, unknown> =>
|
|
36
|
+
): u is Resource<unknown, unknown> => hasProperty(u, TypeId)
|
|
36
37
|
|
|
37
38
|
const Proto = {
|
|
38
39
|
...PipeInspectableProto,
|
package/src/SubscriptionRef.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { dual, identity } from "./Function.ts"
|
|
|
6
6
|
import { PipeInspectableProto } from "./internal/core.ts"
|
|
7
7
|
import * as Option from "./Option.ts"
|
|
8
8
|
import type { Pipeable } from "./Pipeable.ts"
|
|
9
|
+
import { hasProperty } from "./Predicate.ts"
|
|
9
10
|
import * as PubSub from "./PubSub.ts"
|
|
10
11
|
import * as Semaphore from "./Semaphore.ts"
|
|
11
12
|
import * as Stream from "./Stream.ts"
|
|
@@ -29,7 +30,7 @@ export interface SubscriptionRef<in out A> extends SubscriptionRef.Variance<A>,
|
|
|
29
30
|
*/
|
|
30
31
|
export const isSubscriptionRef: (u: unknown) => u is SubscriptionRef<unknown> = (
|
|
31
32
|
u: unknown
|
|
32
|
-
): u is SubscriptionRef<unknown> =>
|
|
33
|
+
): u is SubscriptionRef<unknown> => hasProperty(u, TypeId)
|
|
33
34
|
|
|
34
35
|
/**
|
|
35
36
|
* The `SynchronizedRef` namespace containing type definitions and utilities.
|
package/src/TxDeferred.ts
CHANGED
|
@@ -13,6 +13,7 @@ import type { Option } from "./Option.ts"
|
|
|
13
13
|
import * as O from "./Option.ts"
|
|
14
14
|
import type { Pipeable } from "./Pipeable.ts"
|
|
15
15
|
import { pipeArguments } from "./Pipeable.ts"
|
|
16
|
+
import { hasProperty } from "./Predicate.ts"
|
|
16
17
|
import type { Result } from "./Result.ts"
|
|
17
18
|
import * as Res from "./Result.ts"
|
|
18
19
|
import * as TxRef from "./TxRef.ts"
|
|
@@ -390,5 +391,4 @@ export const fail: {
|
|
|
390
391
|
* @since 4.0.0
|
|
391
392
|
* @category guards
|
|
392
393
|
*/
|
|
393
|
-
export const isTxDeferred = (u: unknown): u is TxDeferred<unknown, unknown> =>
|
|
394
|
-
typeof u === "object" && u !== null && TypeId in u
|
|
394
|
+
export const isTxDeferred = (u: unknown): u is TxDeferred<unknown, unknown> => hasProperty(u, TypeId)
|
package/src/TxHashMap.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { NodeInspectSymbol, toJson } from "./Inspectable.ts"
|
|
|
11
11
|
import * as Option from "./Option.ts"
|
|
12
12
|
import type { Pipeable } from "./Pipeable.ts"
|
|
13
13
|
import { pipeArguments } from "./Pipeable.ts"
|
|
14
|
+
import { hasProperty } from "./Predicate.ts"
|
|
14
15
|
import type { Result } from "./Result.ts"
|
|
15
16
|
import * as TxRef from "./TxRef.ts"
|
|
16
17
|
|
|
@@ -1882,7 +1883,7 @@ export const setMany: {
|
|
|
1882
1883
|
* @category guards
|
|
1883
1884
|
*/
|
|
1884
1885
|
export const isTxHashMap = <K, V>(value: unknown): value is TxHashMap<K, V> => {
|
|
1885
|
-
return
|
|
1886
|
+
return hasProperty(value, TypeId)
|
|
1886
1887
|
}
|
|
1887
1888
|
|
|
1888
1889
|
/**
|