effect 4.0.0-beta.35 → 4.0.0-beta.37

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 (99) hide show
  1. package/dist/Cause.d.ts +31 -0
  2. package/dist/Cause.d.ts.map +1 -1
  3. package/dist/Cause.js +19 -0
  4. package/dist/Cause.js.map +1 -1
  5. package/dist/Channel.d.ts +2 -2
  6. package/dist/Channel.d.ts.map +1 -1
  7. package/dist/Channel.js +9 -7
  8. package/dist/Channel.js.map +1 -1
  9. package/dist/Cron.d.ts +7 -0
  10. package/dist/Cron.d.ts.map +1 -1
  11. package/dist/Cron.js +109 -45
  12. package/dist/Cron.js.map +1 -1
  13. package/dist/Effect.d.ts +1 -16
  14. package/dist/Effect.d.ts.map +1 -1
  15. package/dist/Effect.js.map +1 -1
  16. package/dist/Equivalence.d.ts +52 -0
  17. package/dist/Equivalence.d.ts.map +1 -1
  18. package/dist/Equivalence.js +52 -0
  19. package/dist/Equivalence.js.map +1 -1
  20. package/dist/LayerMap.d.ts +5 -4
  21. package/dist/LayerMap.d.ts.map +1 -1
  22. package/dist/LayerMap.js.map +1 -1
  23. package/dist/PubSub.d.ts.map +1 -1
  24. package/dist/PubSub.js +9 -3
  25. package/dist/PubSub.js.map +1 -1
  26. package/dist/Schedule.d.ts.map +1 -1
  27. package/dist/Schedule.js +19 -1
  28. package/dist/Schedule.js.map +1 -1
  29. package/dist/Schema.d.ts +37 -41
  30. package/dist/Schema.d.ts.map +1 -1
  31. package/dist/Schema.js +20 -0
  32. package/dist/Schema.js.map +1 -1
  33. package/dist/SchemaParser.d.ts +39 -54
  34. package/dist/SchemaParser.d.ts.map +1 -1
  35. package/dist/SchemaParser.js +38 -0
  36. package/dist/SchemaParser.js.map +1 -1
  37. package/dist/Sink.d.ts +5 -2
  38. package/dist/Sink.d.ts.map +1 -1
  39. package/dist/Sink.js.map +1 -1
  40. package/dist/Stream.d.ts +1 -1
  41. package/dist/Stream.d.ts.map +1 -1
  42. package/dist/internal/effect.js +18 -3
  43. package/dist/internal/effect.js.map +1 -1
  44. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  45. package/dist/unstable/ai/LanguageModel.js +15 -3
  46. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  47. package/dist/unstable/cli/Prompt.js +158 -15
  48. package/dist/unstable/cli/Prompt.js.map +1 -1
  49. package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
  50. package/dist/unstable/devtools/DevToolsClient.js +4 -3
  51. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  52. package/dist/unstable/devtools/DevToolsSchema.d.ts +2 -3
  53. package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
  54. package/dist/unstable/devtools/DevToolsSchema.js +11 -1
  55. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  56. package/dist/unstable/http/HttpClientRequest.d.ts +24 -2
  57. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  58. package/dist/unstable/http/HttpClientRequest.js +97 -0
  59. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  60. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  61. package/dist/unstable/http/HttpServerResponse.js +2 -1
  62. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  63. package/dist/unstable/httpapi/HttpApiEndpoint.js +2 -2
  64. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  65. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +15 -13
  66. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  67. package/dist/unstable/httpapi/HttpApiMiddleware.js +5 -3
  68. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  69. package/dist/unstable/sql/Migrator.d.ts.map +1 -1
  70. package/dist/unstable/sql/Migrator.js +2 -2
  71. package/dist/unstable/sql/Migrator.js.map +1 -1
  72. package/dist/unstable/sql/SqlError.d.ts +229 -9
  73. package/dist/unstable/sql/SqlError.d.ts.map +1 -1
  74. package/dist/unstable/sql/SqlError.js +256 -6
  75. package/dist/unstable/sql/SqlError.js.map +1 -1
  76. package/package.json +1 -1
  77. package/src/Cause.ts +35 -0
  78. package/src/Channel.ts +14 -12
  79. package/src/Cron.ts +142 -45
  80. package/src/Effect.ts +1 -16
  81. package/src/Equivalence.ts +56 -0
  82. package/src/LayerMap.ts +7 -5
  83. package/src/PubSub.ts +13 -5
  84. package/src/Schedule.ts +20 -8
  85. package/src/Schema.ts +38 -18
  86. package/src/SchemaParser.ts +74 -25
  87. package/src/Sink.ts +5 -2
  88. package/src/Stream.ts +1 -1
  89. package/src/internal/effect.ts +30 -4
  90. package/src/unstable/ai/LanguageModel.ts +17 -2
  91. package/src/unstable/cli/Prompt.ts +158 -16
  92. package/src/unstable/devtools/DevToolsClient.ts +23 -18
  93. package/src/unstable/devtools/DevToolsSchema.ts +13 -1
  94. package/src/unstable/http/HttpClientRequest.ts +104 -2
  95. package/src/unstable/http/HttpServerResponse.ts +8 -4
  96. package/src/unstable/httpapi/HttpApiEndpoint.ts +2 -2
  97. package/src/unstable/httpapi/HttpApiMiddleware.ts +36 -20
  98. package/src/unstable/sql/Migrator.ts +7 -5
  99. package/src/unstable/sql/SqlError.ts +360 -8
@@ -1,20 +1,274 @@
1
1
  /**
2
2
  * @since 4.0.0
3
3
  */
4
+ import * as Predicate from "../../Predicate.js";
4
5
  import * as Schema from "../../Schema.js";
5
6
  const TypeId = "~effect/sql/SqlError";
7
+ const ReasonTypeId = "~effect/sql/SqlError/Reason";
8
+ const ReasonFields = {
9
+ cause: Schema.Defect,
10
+ message: /*#__PURE__*/Schema.optional(Schema.String),
11
+ operation: /*#__PURE__*/Schema.optional(Schema.String)
12
+ };
13
+ /**
14
+ * @since 4.0.0
15
+ */
16
+ export class ConnectionError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError/ConnectionError")("ConnectionError", ReasonFields) {
17
+ /**
18
+ * @since 4.0.0
19
+ */
20
+ [ReasonTypeId] = ReasonTypeId;
21
+ /**
22
+ * @since 4.0.0
23
+ */
24
+ get isRetryable() {
25
+ return true;
26
+ }
27
+ }
28
+ /**
29
+ * @since 4.0.0
30
+ */
31
+ export class AuthenticationError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError/AuthenticationError")("AuthenticationError", ReasonFields) {
32
+ /**
33
+ * @since 4.0.0
34
+ */
35
+ [ReasonTypeId] = ReasonTypeId;
36
+ /**
37
+ * @since 4.0.0
38
+ */
39
+ get isRetryable() {
40
+ return false;
41
+ }
42
+ }
43
+ /**
44
+ * @since 4.0.0
45
+ */
46
+ export class AuthorizationError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError/AuthorizationError")("AuthorizationError", ReasonFields) {
47
+ /**
48
+ * @since 4.0.0
49
+ */
50
+ [ReasonTypeId] = ReasonTypeId;
51
+ /**
52
+ * @since 4.0.0
53
+ */
54
+ get isRetryable() {
55
+ return false;
56
+ }
57
+ }
58
+ /**
59
+ * @since 4.0.0
60
+ */
61
+ export class SqlSyntaxError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError/SqlSyntaxError")("SqlSyntaxError", ReasonFields) {
62
+ /**
63
+ * @since 4.0.0
64
+ */
65
+ [ReasonTypeId] = ReasonTypeId;
66
+ /**
67
+ * @since 4.0.0
68
+ */
69
+ get isRetryable() {
70
+ return false;
71
+ }
72
+ }
73
+ /**
74
+ * @since 4.0.0
75
+ */
76
+ export class ConstraintError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError/ConstraintError")("ConstraintError", ReasonFields) {
77
+ /**
78
+ * @since 4.0.0
79
+ */
80
+ [ReasonTypeId] = ReasonTypeId;
81
+ /**
82
+ * @since 4.0.0
83
+ */
84
+ get isRetryable() {
85
+ return false;
86
+ }
87
+ }
88
+ /**
89
+ * @since 4.0.0
90
+ */
91
+ export class DeadlockError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError/DeadlockError")("DeadlockError", ReasonFields) {
92
+ /**
93
+ * @since 4.0.0
94
+ */
95
+ [ReasonTypeId] = ReasonTypeId;
96
+ /**
97
+ * @since 4.0.0
98
+ */
99
+ get isRetryable() {
100
+ return true;
101
+ }
102
+ }
103
+ /**
104
+ * @since 4.0.0
105
+ */
106
+ export class SerializationError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError/SerializationError")("SerializationError", ReasonFields) {
107
+ /**
108
+ * @since 4.0.0
109
+ */
110
+ [ReasonTypeId] = ReasonTypeId;
111
+ /**
112
+ * @since 4.0.0
113
+ */
114
+ get isRetryable() {
115
+ return true;
116
+ }
117
+ }
118
+ /**
119
+ * @since 4.0.0
120
+ */
121
+ export class LockTimeoutError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError/LockTimeoutError")("LockTimeoutError", ReasonFields) {
122
+ /**
123
+ * @since 4.0.0
124
+ */
125
+ [ReasonTypeId] = ReasonTypeId;
126
+ /**
127
+ * @since 4.0.0
128
+ */
129
+ get isRetryable() {
130
+ return true;
131
+ }
132
+ }
133
+ /**
134
+ * @since 4.0.0
135
+ */
136
+ export class StatementTimeoutError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError/StatementTimeoutError")("StatementTimeoutError", ReasonFields) {
137
+ /**
138
+ * @since 4.0.0
139
+ */
140
+ [ReasonTypeId] = ReasonTypeId;
141
+ /**
142
+ * @since 4.0.0
143
+ */
144
+ get isRetryable() {
145
+ return true;
146
+ }
147
+ }
148
+ /**
149
+ * @since 4.0.0
150
+ */
151
+ export class UnknownError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError/UnknownError")("UnknownError", ReasonFields) {
152
+ /**
153
+ * @since 4.0.0
154
+ */
155
+ [ReasonTypeId] = ReasonTypeId;
156
+ /**
157
+ * @since 4.0.0
158
+ */
159
+ get isRetryable() {
160
+ return false;
161
+ }
162
+ }
163
+ /**
164
+ * @since 4.0.0
165
+ */
166
+ export const SqlErrorReason = /*#__PURE__*/Schema.Union([ConnectionError, AuthenticationError, AuthorizationError, SqlSyntaxError, ConstraintError, DeadlockError, SerializationError, LockTimeoutError, StatementTimeoutError, UnknownError]);
6
167
  /**
7
168
  * @since 4.0.0
8
169
  */
9
170
  export class SqlError extends /*#__PURE__*/Schema.TaggedErrorClass("effect/sql/SqlError")("SqlError", {
10
- cause: Schema.Defect,
11
- message: /*#__PURE__*/Schema.optional(Schema.String)
171
+ reason: SqlErrorReason
12
172
  }) {
13
173
  /**
14
174
  * @since 4.0.0
15
175
  */
16
176
  [TypeId] = TypeId;
177
+ /**
178
+ * @since 4.0.0
179
+ */
180
+ cause = this.reason;
181
+ /**
182
+ * @since 4.0.0
183
+ */
184
+ get message() {
185
+ return this.reason.message || this.reason._tag;
186
+ }
187
+ /**
188
+ * @since 4.0.0
189
+ */
190
+ get isRetryable() {
191
+ return this.reason.isRetryable;
192
+ }
17
193
  }
194
+ /**
195
+ * @since 4.0.0
196
+ */
197
+ export const isSqlError = u => Predicate.hasProperty(u, TypeId);
198
+ /**
199
+ * @since 4.0.0
200
+ */
201
+ export const isSqlErrorReason = u => Predicate.hasProperty(u, ReasonTypeId);
202
+ const sqliteCodeFromCause = cause => {
203
+ if (!Predicate.hasProperty(cause, "code")) {
204
+ return undefined;
205
+ }
206
+ const code = cause.code;
207
+ return typeof code === "string" || typeof code === "number" ? code : undefined;
208
+ };
209
+ const sqliteNumericCodeFromCause = cause => {
210
+ const code = sqliteCodeFromCause(cause);
211
+ if (typeof code === "number") {
212
+ return code;
213
+ }
214
+ if (!Predicate.hasProperty(cause, "errno")) {
215
+ return undefined;
216
+ }
217
+ const errno = cause.errno;
218
+ return typeof errno === "number" ? errno : undefined;
219
+ };
220
+ const matchesSqliteCode = (code, expected) => code === expected || code.startsWith(expected + "_");
221
+ /**
222
+ * @since 4.0.0
223
+ */
224
+ export const classifySqliteError = (cause, {
225
+ message,
226
+ operation
227
+ } = {}) => {
228
+ const props = {
229
+ cause,
230
+ message,
231
+ operation
232
+ };
233
+ const code = sqliteCodeFromCause(cause);
234
+ if (typeof code === "string") {
235
+ if (matchesSqliteCode(code, "SQLITE_AUTH")) {
236
+ return new AuthenticationError(props);
237
+ }
238
+ if (matchesSqliteCode(code, "SQLITE_PERM")) {
239
+ return new AuthorizationError(props);
240
+ }
241
+ if (matchesSqliteCode(code, "SQLITE_CONSTRAINT")) {
242
+ return new ConstraintError(props);
243
+ }
244
+ if (matchesSqliteCode(code, "SQLITE_BUSY") || matchesSqliteCode(code, "SQLITE_LOCKED")) {
245
+ return new LockTimeoutError(props);
246
+ }
247
+ if (matchesSqliteCode(code, "SQLITE_CANTOPEN")) {
248
+ return new ConnectionError(props);
249
+ }
250
+ }
251
+ const numericCode = sqliteNumericCodeFromCause(cause);
252
+ if (typeof numericCode === "number") {
253
+ const code = numericCode & 0xff;
254
+ switch (code) {
255
+ case 23:
256
+ return new AuthenticationError(props);
257
+ case 3:
258
+ return new AuthorizationError(props);
259
+ case 19:
260
+ return new ConstraintError(props);
261
+ case 5:
262
+ case 6:
263
+ return new LockTimeoutError(props);
264
+ case 14:
265
+ return new ConnectionError(props);
266
+ default:
267
+ return new UnknownError(props);
268
+ }
269
+ }
270
+ return new UnknownError(props);
271
+ };
18
272
  /**
19
273
  * @since 4.0.0
20
274
  */
@@ -22,10 +276,6 @@ export class ResultLengthMismatch extends /*#__PURE__*/Schema.TaggedErrorClass("
22
276
  expected: Schema.Number,
23
277
  actual: Schema.Number
24
278
  }) {
25
- /**
26
- * @since 4.0.0
27
- */
28
- [TypeId] = TypeId;
29
279
  /**
30
280
  * @since 4.0.0
31
281
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SqlError.js","names":["Schema","TypeId","SqlError","TaggedErrorClass","cause","Defect","message","optional","String","ResultLengthMismatch","expected","Number","actual"],"sources":["../../../src/unstable/sql/SqlError.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,MAAM,MAAM,iBAAiB;AAEzC,MAAMC,MAAM,GAAG,sBAAsB;AAErC;;;AAGA,OAAM,MAAOC,QAAS,sBAAQF,MAAM,CAACG,gBAAgB,CAAW,qBAAqB,CAAC,CAAC,UAAU,EAAE;EACjGC,KAAK,EAAEJ,MAAM,CAACK,MAAM;EACpBC,OAAO,eAAEN,MAAM,CAACO,QAAQ,CAACP,MAAM,CAACQ,MAAM;CACvC,CAAC;EACA;;;EAGS,CAACP,MAAM,IAAIA,MAAM;;AAG5B;;;AAGA,OAAM,MAAOQ,oBACX,sBAAQT,MAAM,CAACG,gBAAgB,CAAuB,iCAAiC,CAAC,CAAC,sBAAsB,EAAE;EAC/GO,QAAQ,EAAEV,MAAM,CAACW,MAAM;EACvBC,MAAM,EAAEZ,MAAM,CAACW;CAChB,CAAC;EAEF;;;EAGS,CAACV,MAAM,IAAIA,MAAM;EAE1B;;;EAGA,IAAaK,OAAOA,CAAA;IAClB,OAAO,YAAY,IAAI,CAACI,QAAQ,oBAAoB,IAAI,CAACE,MAAM,EAAE;EACnE","ignoreList":[]}
1
+ {"version":3,"file":"SqlError.js","names":["Predicate","Schema","TypeId","ReasonTypeId","ReasonFields","cause","Defect","message","optional","String","operation","ConnectionError","TaggedErrorClass","isRetryable","AuthenticationError","AuthorizationError","SqlSyntaxError","ConstraintError","DeadlockError","SerializationError","LockTimeoutError","StatementTimeoutError","UnknownError","SqlErrorReason","Union","SqlError","reason","_tag","isSqlError","u","hasProperty","isSqlErrorReason","sqliteCodeFromCause","undefined","code","sqliteNumericCodeFromCause","errno","matchesSqliteCode","expected","startsWith","classifySqliteError","props","numericCode","ResultLengthMismatch","Number","actual"],"sources":["../../../src/unstable/sql/SqlError.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "effect",
3
3
  "type": "module",
4
- "version": "4.0.0-beta.35",
4
+ "version": "4.0.0-beta.37",
5
5
  "license": "MIT",
6
6
  "description": "The missing standard library for TypeScript, for writing production-grade software.",
7
7
  "homepage": "https://effect.website",
package/src/Cause.ts CHANGED
@@ -79,6 +79,7 @@
79
79
  */
80
80
  import type * as Effect from "./Effect.ts"
81
81
  import type { Equal } from "./Equal.ts"
82
+ import type { Fiber } from "./Fiber.ts"
82
83
  import type { Inspectable } from "./Inspectable.ts"
83
84
  import * as core from "./internal/core.ts"
84
85
  import * as effect from "./internal/effect.ts"
@@ -1565,6 +1566,40 @@ export interface ExceededCapacityError extends YieldableError {
1565
1566
  */
1566
1567
  export const ExceededCapacityError: new(message?: string) => ExceededCapacityError = effect.ExceededCapacityError
1567
1568
 
1569
+ /**
1570
+ * Unique brand for {@link AsyncFiberError}.
1571
+ *
1572
+ * @since 4.0.0
1573
+ * @category symbols
1574
+ */
1575
+ export const AsyncFiberErrorTypeId: "~effect/Cause/AsyncFiberError" = effect.AsyncFiberErrorTypeId
1576
+
1577
+ /**
1578
+ * @category guards
1579
+ * @since 4.0.0
1580
+ */
1581
+ export const isAsyncFiberError: (u: unknown) => u is AsyncFiberError = effect.isAsyncFiberError
1582
+
1583
+ /**
1584
+ * An error that occurs when trying to run an async fiber with Effect.runSync.
1585
+ *
1586
+ * @since 4.0.0
1587
+ * @category errors
1588
+ */
1589
+ export interface AsyncFiberError extends YieldableError {
1590
+ readonly [AsyncFiberErrorTypeId]: typeof AsyncFiberErrorTypeId
1591
+ readonly _tag: "AsyncFiberError"
1592
+ readonly fiber: Fiber<unknown, unknown>
1593
+ }
1594
+
1595
+ /**
1596
+ * An error that occurs when trying to run an async fiber with Effect.runSync.
1597
+ *
1598
+ * @category constructors
1599
+ * @since 4.0.0
1600
+ */
1601
+ export const AsyncFiberError: new(fiber: Fiber<unknown, unknown>) => AsyncFiberError = effect.AsyncFiberError
1602
+
1568
1603
  /**
1569
1604
  * Unique brand for {@link UnknownError}.
1570
1605
  *
package/src/Channel.ts CHANGED
@@ -200,8 +200,8 @@ export interface ChannelUnify<A extends { [Unify.typeSymbol]?: any }> extends Ef
200
200
  * @category models
201
201
  * @since 2.0.0
202
202
  */
203
- export interface ChannelUnifyIgnore extends Effect.EffectUnifyIgnore {
204
- Channel?: true
203
+ export interface ChannelUnifyIgnore {
204
+ Effect?: true
205
205
  }
206
206
 
207
207
  type TagsWithReason<E> = {
@@ -4590,17 +4590,19 @@ export const scanEffect: {
4590
4590
  Effect.map(toTransform(self)(upstream, scope), (pull) => {
4591
4591
  let state = initial
4592
4592
  let isFirst = true
4593
- if (isFirst) {
4594
- isFirst = false
4595
- return Effect.succeed(state)
4596
- }
4597
- return Effect.map(
4598
- Effect.flatMap(pull, (a) => f(state, a)),
4599
- (newState) => {
4600
- state = newState
4601
- return state
4593
+ return Effect.suspend(() => {
4594
+ if (isFirst) {
4595
+ isFirst = false
4596
+ return Effect.succeed(state)
4602
4597
  }
4603
- )
4598
+ return Effect.map(
4599
+ Effect.flatMap(pull, (a) => f(state, a)),
4600
+ (newState) => {
4601
+ state = newState
4602
+ return state
4603
+ }
4604
+ )
4605
+ })
4604
4606
  })
4605
4607
  ))
4606
4608