effect-app 4.0.0 → 4.0.1

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 (74) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/Array.d.ts +0 -17
  3. package/dist/Array.d.ts.map +1 -1
  4. package/dist/Array.js +2 -26
  5. package/dist/Chunk.d.ts +3 -27
  6. package/dist/Chunk.d.ts.map +1 -1
  7. package/dist/Chunk.js +4 -39
  8. package/dist/DateTime.d.ts +33 -0
  9. package/dist/DateTime.d.ts.map +1 -0
  10. package/dist/DateTime.js +18 -0
  11. package/dist/Effect.d.ts +0 -11
  12. package/dist/Effect.d.ts.map +1 -1
  13. package/dist/Effect.js +3 -18
  14. package/dist/Function.d.ts +0 -4
  15. package/dist/Function.d.ts.map +1 -1
  16. package/dist/Function.js +1 -7
  17. package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
  18. package/dist/Model/Repository/internal/internal.js +4 -5
  19. package/dist/Model/dsl.d.ts +4 -3
  20. package/dist/Model/dsl.d.ts.map +1 -1
  21. package/dist/Model/dsl.js +6 -4
  22. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -1
  23. package/dist/Model/query/new-kid-interpreter.js +5 -6
  24. package/dist/Option.d.ts +0 -2
  25. package/dist/Option.d.ts.map +1 -1
  26. package/dist/Option.js +1 -7
  27. package/dist/Pure.d.ts +4 -4
  28. package/dist/Pure.d.ts.map +1 -1
  29. package/dist/Pure.js +16 -16
  30. package/dist/Schema/ext.d.ts +0 -21
  31. package/dist/Schema/ext.d.ts.map +1 -1
  32. package/dist/Schema/ext.js +4 -10
  33. package/dist/Schema.d.ts +1 -1
  34. package/dist/Schema.d.ts.map +1 -1
  35. package/dist/Schema.js +2 -2
  36. package/dist/Set.d.ts.map +1 -1
  37. package/dist/Set.js +6 -5
  38. package/dist/client/apiClientFactory.d.ts.map +1 -1
  39. package/dist/client/apiClientFactory.js +7 -6
  40. package/dist/migration/nativeEffect.d.ts +21 -0
  41. package/dist/migration/nativeEffect.d.ts.map +1 -0
  42. package/dist/migration/nativeEffect.js +598 -0
  43. package/dist/utils.d.ts +0 -6
  44. package/dist/utils.d.ts.map +1 -1
  45. package/dist/utils.js +1 -13
  46. package/package.json +1 -2
  47. package/src/Array.ts +4 -36
  48. package/src/Chunk.ts +4 -53
  49. package/src/DateTime.ts +473 -0
  50. package/src/Effect.ts +3 -22
  51. package/src/Function.ts +0 -7
  52. package/src/Model/Repository/internal/internal.ts +3 -4
  53. package/src/Model/dsl.ts +5 -4
  54. package/src/Model/query/new-kid-interpreter.ts +4 -5
  55. package/src/Option.ts +1 -8
  56. package/src/Pure.ts +15 -15
  57. package/src/Schema/ext.ts +3 -10
  58. package/src/Schema.ts +1 -1
  59. package/src/Set.ts +5 -4
  60. package/src/client/apiClientFactory.ts +8 -7
  61. package/src/migration/nativeEffect.ts +645 -0
  62. package/src/utils.ts +0 -17
  63. package/test/dateTimeLocal.test.ts +55 -0
  64. package/test/dist/dateTimeLocal.test.d.ts.map +1 -0
  65. package/test/dist/nativeEffectMigration.test.d.ts.map +1 -0
  66. package/test/nativeEffectMigration.test.ts +77 -0
  67. package/dist/_ext/date.d.ts +0 -15
  68. package/dist/_ext/date.d.ts.map +0 -1
  69. package/dist/_ext/date.js +0 -16
  70. package/dist/_ext/misc.d.ts +0 -17
  71. package/dist/_ext/misc.d.ts.map +0 -1
  72. package/dist/_ext/misc.js +0 -19
  73. package/src/_ext/date.ts +0 -27
  74. package/src/_ext/misc.ts +0 -49
@@ -0,0 +1,598 @@
1
+ /**
2
+ * Rewrites source that imported effect-app helpers now provided by Effect.
3
+ *
4
+ * The rewrite is textual and keeps the rest of the file. It understands named
5
+ * imports, aliases, and `import * as` namespaces from the effect-app entry points
6
+ * listed in {@link nativeEffectReplacements}.
7
+ */
8
+ const struct = [["Struct", "effect/Struct"]];
9
+ const record = [["Record", "effect/Record"]];
10
+ const str = [["String", "effect/String"]];
11
+ const option = [["Option", "effect/Option"]];
12
+ const array = [["Array", "effect/Array"]];
13
+ const chunk = [["Chunk", "effect/Chunk"]];
14
+ const tuple = [["Tuple", "effect/Tuple"]];
15
+ const effect = [["Effect", "effect/Effect"]];
16
+ const dateTime = [["DateTime", "effect/DateTime"], ["pipeZonedLocal", "effect-app/DateTime"]];
17
+ const deferred = [["Deferred", "effect/Deferred"]];
18
+ const result = [["Result", "effect/Result"]];
19
+ const absurd = [["absurd", "effect/Function"]];
20
+ export const nativeEffectReplacements = [
21
+ {
22
+ module: "effect-app/utils",
23
+ name: "typedKeysOf",
24
+ expression: "Struct.keys",
25
+ imports: struct,
26
+ note: "Struct.keys returns `(keyof T & string)[]`."
27
+ },
28
+ {
29
+ module: "effect-app/utils",
30
+ name: "typedValuesOf",
31
+ expression: "Record.values",
32
+ imports: record,
33
+ note: "Record.values reads a record with one value type. When each value's type depends on its key, use Object.values."
34
+ },
35
+ {
36
+ module: "effect-app/utils",
37
+ name: "capitalize",
38
+ expression: "String.capitalize",
39
+ imports: str,
40
+ note: "Same first-character capitalization, including the empty string."
41
+ },
42
+ {
43
+ module: "effect-app/utils",
44
+ name: "uncapitalize",
45
+ expression: "String.uncapitalize",
46
+ imports: str,
47
+ note: "Same first-character uncapitalization, including the empty string."
48
+ },
49
+ {
50
+ module: "effect-app/utils",
51
+ name: "assertUnreachable",
52
+ expression: "absurd",
53
+ imports: absurd,
54
+ note: "absurd throws when an impossible value is reached. The error text no longer includes the value."
55
+ },
56
+ {
57
+ module: "effect-app/Function",
58
+ name: "tuple",
59
+ expression: "Tuple.make",
60
+ imports: tuple,
61
+ note: "Tuple.make returns a mutable tuple. It is assignable wherever a readonly tuple was expected."
62
+ },
63
+ {
64
+ module: "effect-app/Array",
65
+ name: "toNonEmptyArray",
66
+ expression: "Option.liftPredicate(Array.isReadonlyArrayNonEmpty)",
67
+ imports: [...option, ...array],
68
+ note: "Option of the same readonly array when it is non-empty."
69
+ },
70
+ {
71
+ module: "effect-app/Array",
72
+ name: "NEROArrayFromArray",
73
+ expression: "Option.liftPredicate(Array.isReadonlyArrayNonEmpty)",
74
+ imports: [...option, ...array],
75
+ note: "Same as toNonEmptyArray."
76
+ },
77
+ {
78
+ module: "effect-app/Array",
79
+ name: "NEAFromArray",
80
+ expression: "Option.liftPredicate(Array.isArrayNonEmpty)",
81
+ imports: [...option, ...array],
82
+ note: "Option of the same mutable array when it is non-empty."
83
+ },
84
+ {
85
+ module: "effect-app/Array",
86
+ name: "chunk_",
87
+ expression: "Array.chunksOf",
88
+ imports: [...array, ...chunk],
89
+ call: "chunk",
90
+ note: "Was a Chunk of mutable slices. Now a Chunk of Array.chunksOf groups. An empty input is an empty Chunk."
91
+ },
92
+ {
93
+ module: "effect-app/Array",
94
+ name: "_chunk_",
95
+ expression: "Array.chunksOf",
96
+ imports: array,
97
+ note: "The generator form is gone. Array.chunksOf returns the groups directly."
98
+ },
99
+ {
100
+ module: "effect-app/Option",
101
+ name: "toBool",
102
+ expression: "Option.isSome",
103
+ imports: option,
104
+ note: "isSome is the boolean test and also narrows to Some."
105
+ },
106
+ {
107
+ module: "effect-app/Effect",
108
+ name: "annotateLogscoped",
109
+ expression: "Effect.annotateLogsScoped",
110
+ imports: effect,
111
+ note: "The old name was a typo of Effect.annotateLogsScoped."
112
+ },
113
+ {
114
+ module: "effect-app/Effect",
115
+ name: "await_",
116
+ expression: "Deferred.await",
117
+ imports: deferred,
118
+ note: "Await a Deferred. Effect.await_ was Deferred.await."
119
+ },
120
+ {
121
+ module: "effect-app/Chunk",
122
+ name: "findFirstSimple",
123
+ expression: "Chunk.findFirst",
124
+ imports: chunk,
125
+ note: "The alias passed the chunk first. Chunk.findFirst is dual, so the data-first call still typechecks."
126
+ },
127
+ {
128
+ module: "effect-app/Chunk",
129
+ name: "findLastSimple",
130
+ expression: "Chunk.findLast",
131
+ imports: chunk,
132
+ note: "Alias of Chunk.findLast."
133
+ },
134
+ {
135
+ module: "effect-app/Chunk",
136
+ name: "ChunkPartition",
137
+ expression: "Chunk.partition",
138
+ imports: chunk,
139
+ note: "Alias of Chunk.partition."
140
+ },
141
+ {
142
+ module: "effect-app/Chunk",
143
+ name: "uniq",
144
+ expression: "(equivalence) => (self) => Chunk.fromIterable(Array.dedupeWith(Chunk.toReadonlyArray(self), equivalence))",
145
+ imports: [...chunk, ...array],
146
+ note: "Keeps the first match under a custom equivalence. Equal values can use Chunk.dedupe instead."
147
+ },
148
+ {
149
+ module: "effect-app/Chunk",
150
+ name: "elem",
151
+ expression: "(equivalence, value) => Chunk.containsWith(equivalence)(value)",
152
+ imports: chunk,
153
+ note: "Equivalence is treated as symmetric. containsWith applies it as equivalence(needle, element)."
154
+ },
155
+ {
156
+ module: "effect-app/Schema",
157
+ name: "DateValid",
158
+ expression: "Date",
159
+ imports: [["Date", "effect-app/Schema"]],
160
+ note: "DateValid was an alias of effect-app Schema.Date. Schema.Date already rejects invalid dates."
161
+ },
162
+ {
163
+ module: "effect-app/_ext/misc",
164
+ name: "encaseMaybeInEffect_",
165
+ expression: "Effect.fromOption",
166
+ imports: effect,
167
+ note: "Effect.fromOption(option, onNone) fails with the lazy error on None."
168
+ },
169
+ {
170
+ module: "effect-app/_ext/misc",
171
+ name: "encaseMaybeEither_",
172
+ expression: "Result.fromOption",
173
+ imports: result,
174
+ note: "Result.fromOption(option, onNone)."
175
+ },
176
+ {
177
+ module: "effect-app/_ext/misc",
178
+ name: "toNullable",
179
+ expression: "(effect) => Effect.map(effect, Option.getOrNull)",
180
+ imports: [...effect, ...option],
181
+ note: "Maps a successful Option to its value or null."
182
+ },
183
+ {
184
+ module: "effect-app/_ext/misc",
185
+ name: "flatMapScoped",
186
+ expression: "(scoped, f) => Effect.scoped(Effect.flatMap(scoped, f))",
187
+ imports: effect,
188
+ note: "Closes the scope after the continuation."
189
+ },
190
+ {
191
+ module: "effect-app/_ext/misc",
192
+ name: "scope",
193
+ expression: "(scoped, effect) => Effect.scoped(Effect.andThen(scoped, effect))",
194
+ imports: effect,
195
+ note: "Runs the second effect inside the first effect's scope, then closes it."
196
+ },
197
+ ...[
198
+ ["DateAddDays", "days", "date-add"],
199
+ ["DateAddHours", "hours", "date-add"],
200
+ ["DateAddMinutes", "minutes", "date-add"],
201
+ ["DateAddSeconds", "seconds", "date-add"],
202
+ ["DateAddWeeks", "weeks", "date-add"],
203
+ ["DateAddMonths", "months", "date-add"],
204
+ ["DateAddYears", "years", "date-add"],
205
+ ["DateSubDays", "days", "date-sub"],
206
+ ["DateSubHours", "hours", "date-sub"],
207
+ ["DateSubMinutes", "minutes", "date-sub"],
208
+ ["DateSubSeconds", "seconds", "date-sub"],
209
+ ["DateSubWeeks", "weeks", "date-sub"],
210
+ ["DateSubMonths", "months", "date-sub"],
211
+ ["DateSubYears", "years", "date-sub"]
212
+ ]
213
+ .map(([name, unit, call]) => ({
214
+ module: "effect-app/_ext/date",
215
+ name,
216
+ expression: unit,
217
+ imports: dateTime,
218
+ call,
219
+ note: "pipeZonedLocal attaches the process timezone, runs DateTime.add or DateTime.subtract, and returns the instant with toDateUtc."
220
+ }))
221
+ ];
222
+ const byModule = new Map();
223
+ for (const replacement of nativeEffectReplacements) {
224
+ const existing = byModule.get(replacement.module) ?? new Map();
225
+ existing.set(replacement.name, replacement);
226
+ byModule.set(replacement.module, existing);
227
+ }
228
+ const moduleNames = new Set(byModule.keys());
229
+ /** Rewrite one source file. `source` is the file text. */
230
+ export const migrateEffectAppSource = (source) => {
231
+ const imports = findImports(source);
232
+ const bindings = new Map();
233
+ const namespaceBindings = new Map();
234
+ const edits = [];
235
+ const needed = new Map();
236
+ const maskedSpans = [];
237
+ for (const statement of imports) {
238
+ const table = byModule.get(statement.module);
239
+ if (table === undefined)
240
+ continue;
241
+ maskedSpans.push({ start: statement.start, end: statement.end });
242
+ if (statement.namespace !== undefined) {
243
+ namespaceBindings.set(statement.namespace, table);
244
+ continue;
245
+ }
246
+ const removed = [];
247
+ for (const specifier of statement.specifiers) {
248
+ const replacement = table.get(specifier.imported);
249
+ if (replacement === undefined)
250
+ continue;
251
+ bindings.set(specifier.local, { replacement, local: specifier.local });
252
+ removed.push(specifier);
253
+ rememberImports(needed, replacement);
254
+ }
255
+ if (removed.length === 0)
256
+ continue;
257
+ if (removed.length === statement.specifiers.length) {
258
+ edits.push({ start: statement.start, end: statement.end, text: "" });
259
+ }
260
+ else {
261
+ const kept = statement.specifiers.filter((specifier) => !removed.includes(specifier));
262
+ edits.push({
263
+ start: statement.clauseStart,
264
+ end: statement.clauseEnd,
265
+ text: `{ ${kept.map((specifier) => specifier.text).join(", ")} }`
266
+ });
267
+ }
268
+ }
269
+ const mask = maskSpans(maskNonCode(source), maskedSpans);
270
+ for (const [local, binding] of bindings) {
271
+ for (const match of identifierSpans(mask, local)) {
272
+ const rendered = render(binding.replacement, source, match + local.length);
273
+ edits.push({ start: match, end: rendered.end, text: rendered.text });
274
+ }
275
+ }
276
+ for (const [namespace, table] of namespaceBindings) {
277
+ let used = false;
278
+ for (const match of identifierSpans(mask, namespace)) {
279
+ const after = skipSpaces(source, match + namespace.length);
280
+ if (source[after] !== ".")
281
+ continue;
282
+ const propertyStart = after + 1;
283
+ const property = readIdentifier(source, propertyStart);
284
+ if (property === undefined)
285
+ continue;
286
+ const replacement = table.get(property.name);
287
+ if (replacement === undefined) {
288
+ used = true;
289
+ continue;
290
+ }
291
+ rememberImports(needed, replacement);
292
+ const rendered = render(replacement, source, propertyStart + property.name.length);
293
+ edits.push({ start: match, end: rendered.end, text: rendered.text });
294
+ }
295
+ if (!used) {
296
+ const statement = imports.find((item) => item.namespace === namespace && byModule.has(item.module));
297
+ if (statement !== undefined)
298
+ edits.push({ start: statement.start, end: statement.end, text: "" });
299
+ }
300
+ }
301
+ return insertImports(applyEdits(source, edits), needed);
302
+ };
303
+ const render = (replacement, source, afterName) => {
304
+ const bare = { text: replacement.expression, end: afterName };
305
+ if (replacement.call === undefined)
306
+ return bare;
307
+ const open = skipSpaces(source, afterName);
308
+ if (source[open] !== "(")
309
+ return bare;
310
+ const args = splitArgs(source, open);
311
+ if (args === undefined)
312
+ return bare;
313
+ if (replacement.call === "chunk" && args.args.length === 2) {
314
+ return {
315
+ text: `Chunk.fromIterable(Array.chunksOf(${args.args[0]}, ${args.args[1]}))`,
316
+ end: args.end
317
+ };
318
+ }
319
+ if ((replacement.call === "date-add" || replacement.call === "date-sub") && args.args.length === 2) {
320
+ const method = replacement.call === "date-add" ? "add" : "subtract";
321
+ return {
322
+ text: `pipeZonedLocal(${args.args[0]}, DateTime.${method}({ ${replacement.expression}: ${args.args[1]} }))`,
323
+ end: args.end
324
+ };
325
+ }
326
+ return bare;
327
+ };
328
+ const rememberImports = (needed, replacement) => {
329
+ for (const [local, from] of replacement.imports) {
330
+ const names = needed.get(from) ?? new Set();
331
+ names.add(local);
332
+ needed.set(from, names);
333
+ }
334
+ };
335
+ const findImports = (source) => {
336
+ const found = [];
337
+ const pattern = /\bimport\s+(type\s+)?([\s\S]*?)\s+from\s+["']([^"']+)["']/g;
338
+ for (const match of source.matchAll(pattern)) {
339
+ const clause = match[2] ?? "";
340
+ const moduleName = match[3] ?? "";
341
+ if (!moduleNames.has(moduleName))
342
+ continue;
343
+ const start = lineStart(source, match.index ?? 0);
344
+ const end = lineEnd(source, (match.index ?? 0) + match[0].length);
345
+ const clauseStart = (match.index ?? 0) + match[0].indexOf(clause);
346
+ const namespace = /^\*\s+as\s+([A-Za-z_$][\w$]*)/.exec(clause.trim());
347
+ found.push({
348
+ start,
349
+ end,
350
+ clauseStart,
351
+ clauseEnd: clauseStart + clause.length,
352
+ module: moduleName,
353
+ ...(namespace?.[1] === undefined ? {} : { namespace: namespace[1] }),
354
+ specifiers: namespace === null ? parseSpecifiers(clause) : []
355
+ });
356
+ }
357
+ return found;
358
+ };
359
+ const parseSpecifiers = (clause) => {
360
+ const brace = clause.indexOf("{");
361
+ if (brace < 0)
362
+ return [];
363
+ const end = clause.lastIndexOf("}");
364
+ const body = clause.slice(brace + 1, end);
365
+ return body.split(",").flatMap((part) => {
366
+ const text = part.trim();
367
+ if (text === "" || text.startsWith("type "))
368
+ return [];
369
+ const alias = /^([A-Za-z_$][\w$]*)(?:\s+as\s+([A-Za-z_$][\w$]*))?$/.exec(text);
370
+ if (alias === null)
371
+ return [];
372
+ return [{ imported: alias[1], local: alias[2] ?? alias[1], text }];
373
+ });
374
+ };
375
+ const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
376
+ const identifierSpans = (mask, name) => {
377
+ const spans = [];
378
+ const pattern = new RegExp(`(?<![\\w$])${escapeRegExp(name)}(?![\\w$])`, "g");
379
+ for (const match of mask.matchAll(pattern))
380
+ spans.push(match.index ?? 0);
381
+ return spans;
382
+ };
383
+ const readIdentifier = (source, index) => {
384
+ const match = /^[A-Za-z_$][\w$]*/.exec(source.slice(index));
385
+ return match === null ? undefined : { name: match[0] };
386
+ };
387
+ const splitArgs = (source, open) => {
388
+ const balanced = readBalanced(source, open, "(", ")");
389
+ if (balanced === undefined)
390
+ return undefined;
391
+ const args = [];
392
+ let depth = 0;
393
+ let quote;
394
+ let start = 0;
395
+ const body = balanced.body;
396
+ for (let i = 0; i < body.length; i++) {
397
+ const char = body[i];
398
+ if (quote !== undefined) {
399
+ if (char === "\\") {
400
+ i++;
401
+ continue;
402
+ }
403
+ if (char === quote)
404
+ quote = undefined;
405
+ continue;
406
+ }
407
+ if (char === "'" || char === "\"" || char === "`") {
408
+ quote = char;
409
+ continue;
410
+ }
411
+ if (char === "(" || char === "[" || char === "{")
412
+ depth++;
413
+ if (char === ")" || char === "]" || char === "}")
414
+ depth--;
415
+ if (char === "," && depth === 0) {
416
+ args.push(body.slice(start, i).trim());
417
+ start = i + 1;
418
+ }
419
+ }
420
+ const last = body.slice(start).trim();
421
+ if (last !== "")
422
+ args.push(last);
423
+ return { args, end: balanced.end };
424
+ };
425
+ const readBalanced = (source, open, left, right) => {
426
+ if (source[open] !== left)
427
+ return undefined;
428
+ let depth = 0;
429
+ let quote;
430
+ for (let i = open; i < source.length; i++) {
431
+ const char = source[i];
432
+ if (quote !== undefined) {
433
+ if (char === "\\") {
434
+ i++;
435
+ continue;
436
+ }
437
+ if (char === quote)
438
+ quote = undefined;
439
+ continue;
440
+ }
441
+ if (char === "'" || char === "\"" || char === "`") {
442
+ quote = char;
443
+ continue;
444
+ }
445
+ if (char === left)
446
+ depth++;
447
+ if (char === right) {
448
+ depth--;
449
+ if (depth === 0)
450
+ return { body: source.slice(open + 1, i), end: i + 1 };
451
+ }
452
+ }
453
+ return undefined;
454
+ };
455
+ const maskSpans = (mask, spans) => {
456
+ const chars = [...mask];
457
+ for (const span of spans) {
458
+ for (let i = span.start; i < span.end && i < chars.length; i++) {
459
+ if (chars[i] !== "\n")
460
+ chars[i] = " ";
461
+ }
462
+ }
463
+ return chars.join("");
464
+ };
465
+ const skipSpaces = (source, index) => {
466
+ let i = index;
467
+ while (i < source.length && (source[i] === " " || source[i] === "\n" || source[i] === "\t"))
468
+ i++;
469
+ return i;
470
+ };
471
+ const lineStart = (source, index) => {
472
+ const start = source.lastIndexOf("\n", index - 1);
473
+ return start < 0 ? 0 : start + 1;
474
+ };
475
+ const lineEnd = (source, index) => {
476
+ const end = source.indexOf("\n", index);
477
+ return end < 0 ? source.length : end + 1;
478
+ };
479
+ const applyEdits = (source, edits) => {
480
+ const ordered = [...edits].sort((a, b) => b.start - a.start);
481
+ let next = source;
482
+ for (const edit of ordered)
483
+ next = next.slice(0, edit.start) + edit.text + next.slice(edit.end);
484
+ return next;
485
+ };
486
+ const insertImports = (source, needed) => {
487
+ const lines = [];
488
+ for (const [from, names] of needed) {
489
+ for (const name of names) {
490
+ if (hasImport(source, name, from))
491
+ continue;
492
+ lines.push(namedImportNames.has(name)
493
+ ? `import { ${name} } from "${from}"`
494
+ : `import * as ${name} from "${from}"`);
495
+ }
496
+ }
497
+ if (lines.length === 0)
498
+ return source.replace(/^\n+/, "");
499
+ const lastImport = lastImportEnd(source);
500
+ const block = `${lines.sort().join("\n")}\n`;
501
+ if (lastImport === 0)
502
+ return `${block}${source.replace(/^\n+/, "")}`;
503
+ return `${source.slice(0, lastImport)}${block}${source.slice(lastImport)}`.replace(/^\n+/, "");
504
+ };
505
+ const namedImportNames = new Set(["absurd", "Date", "pipeZonedLocal"]);
506
+ const hasImport = (source, name, from) => {
507
+ const fromPattern = from.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
508
+ const namespace = new RegExp(`import\\s+\\*\\s+as\\s+${name}\\s+from\\s+["']${fromPattern}["']`);
509
+ const named = new RegExp(`import\\s+(type\\s+)?\\{[^}]*\\b${name}\\b[^}]*}\\s+from\\s+["']${fromPattern}["']`);
510
+ const barrel = name === name[0]?.toUpperCase()
511
+ ? new RegExp(`import\\s+(type\\s+)?\\{[^}]*\\b${name}\\b[^}]*}\\s+from\\s+["']effect["']`)
512
+ : undefined;
513
+ return namespace.test(source) || named.test(source) || barrel?.test(source) === true;
514
+ };
515
+ const lastImportEnd = (source) => {
516
+ const pattern = /\bimport\s+(type\s+)?[\s\S]*?\s+from\s+["'][^"']+["']/g;
517
+ let end = 0;
518
+ for (const match of source.matchAll(pattern)) {
519
+ end = lineEnd(source, (match.index ?? 0) + match[0].length);
520
+ }
521
+ return end;
522
+ };
523
+ const maskNonCode = (source) => {
524
+ const chars = [...source];
525
+ let i = 0;
526
+ const blank = (from, to) => {
527
+ for (let j = from; j < to; j++) {
528
+ if (chars[j] !== "\n")
529
+ chars[j] = " ";
530
+ }
531
+ };
532
+ while (i < source.length) {
533
+ const two = source.slice(i, i + 2);
534
+ if (two === "//") {
535
+ const end = source.indexOf("\n", i);
536
+ blank(i, end < 0 ? source.length : end);
537
+ i = end < 0 ? source.length : end;
538
+ continue;
539
+ }
540
+ if (two === "/*") {
541
+ const end = source.indexOf("*/", i + 2);
542
+ const stop = end < 0 ? source.length : end + 2;
543
+ blank(i, stop);
544
+ i = stop;
545
+ continue;
546
+ }
547
+ const char = source[i];
548
+ if (char === "'" || char === "\"") {
549
+ const stop = scanQuoted(source, i, char);
550
+ blank(i, stop);
551
+ i = stop;
552
+ continue;
553
+ }
554
+ if (char === "`") {
555
+ const stop = scanTemplate(source, i);
556
+ blank(i, stop);
557
+ i = stop;
558
+ continue;
559
+ }
560
+ i++;
561
+ }
562
+ return chars.join("");
563
+ };
564
+ const scanQuoted = (source, start, quote) => {
565
+ for (let i = start + 1; i < source.length; i++) {
566
+ if (source[i] === "\\") {
567
+ i++;
568
+ continue;
569
+ }
570
+ if (source[i] === quote)
571
+ return i + 1;
572
+ }
573
+ return source.length;
574
+ };
575
+ const scanTemplate = (source, start) => {
576
+ for (let i = start + 1; i < source.length; i++) {
577
+ if (source[i] === "\\") {
578
+ i++;
579
+ continue;
580
+ }
581
+ if (source[i] === "`")
582
+ return i + 1;
583
+ if (source.slice(i, i + 2) === "${") {
584
+ let depth = 1;
585
+ i += 2;
586
+ while (i < source.length && depth > 0) {
587
+ if (source[i] === "{")
588
+ depth++;
589
+ else if (source[i] === "}")
590
+ depth--;
591
+ i++;
592
+ }
593
+ i--;
594
+ }
595
+ }
596
+ return source.length;
597
+ };
598
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlRWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZ3JhdGlvbi9uYXRpdmVFZmZlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBYUgsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBVSxDQUFBO0FBQ3JELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQVUsQ0FBQTtBQUNyRCxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFVLENBQUE7QUFDbEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBVSxDQUFBO0FBQ3JELE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQVUsQ0FBQTtBQUNsRCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFVLENBQUE7QUFDbEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBVSxDQUFBO0FBQ2xELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQVUsQ0FBQTtBQUNyRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFVLENBQUE7QUFDdEcsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFVLENBQUE7QUFDM0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBVSxDQUFBO0FBQ3JELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLENB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
package/dist/utils.d.ts CHANGED
@@ -16,9 +16,6 @@ export interface Clone {
16
16
  export declare const unsafeRight: <E, A>(ei: Result.Result<A, E>) => A;
17
17
  export declare const unsafeSome: (makeErrorMessage: () => string) => <A>(o: Option.Option<A>) => A;
18
18
  export declare function toString(v: unknown): string;
19
- export declare const typedKeysOf: <T extends {}>(obj: T) => (keyof T)[];
20
- export declare const typedValuesOf: <T extends {}>(obj: T) => ValueOf<T>[];
21
- type ValueOf<T> = T[keyof T];
22
19
  export type Constructor<T = any> = {
23
20
  new (...args: any[]): T;
24
21
  };
@@ -62,8 +59,6 @@ export declare const isOfType: <T extends {
62
59
  }>(tag: GetTag<T>) => (e: {
63
60
  _tag: string;
64
61
  }) => e is T;
65
- export declare function capitalize<T extends string>(string: T): Capitalize<T>;
66
- export declare function uncapitalize<T extends string>(string: T): Uncapitalize<T>;
67
62
  export declare function pretty(o: unknown): string;
68
63
  export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
69
64
  export type IsUnion<T> = [T] extends [UnionToIntersection<T>] ? false : true;
@@ -134,7 +129,6 @@ export declare const LazySymbol: unique symbol;
134
129
  export declare function lazyGetter<T extends object, T2>(creator: (target: T) => T2): (target: T) => T2;
135
130
  export declare function exhaustiveMatch<T extends string>(): <Out extends Record<T, (t: T) => any>>(handlers: Out) => (t: T) => ReturnType<Out[keyof Out]>;
136
131
  export declare function exhaustiveMatch_<T extends string>(t: T): <Out extends Record<T, (t: T) => any>>(handlers: Out) => ReturnType<Out[keyof Out]>;
137
- export declare function assertUnreachable(x: never): never;
138
132
  export type OptPromise<T extends () => any> = (...args: Parameters<T>) => Promise<ReturnType<T>> | ReturnType<T>;
139
133
  export declare function access<T extends string, T2>(t: Record<T, T2>): (key: T) => Record<T, T2>[T];
140
134
  export declare function todayAtUTCNoon(): Date;