@typed/async-data 0.12.0 → 0.13.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 (75) hide show
  1. package/.nvmrc +1 -0
  2. package/biome.json +36 -0
  3. package/dist/AsyncData.d.ts +203 -0
  4. package/dist/AsyncData.js +294 -0
  5. package/dist/AsyncData.js.map +1 -0
  6. package/dist/LazyRef.d.ts +22 -0
  7. package/dist/LazyRef.js +28 -0
  8. package/dist/LazyRef.js.map +1 -0
  9. package/dist/Progress.d.ts +25 -0
  10. package/dist/Progress.js +22 -0
  11. package/dist/Progress.js.map +1 -0
  12. package/dist/{dts/TypeId.d.ts → TypeId.d.ts} +0 -1
  13. package/dist/TypeId.js +8 -0
  14. package/dist/TypeId.js.map +1 -0
  15. package/dist/_internal.d.ts +20 -0
  16. package/dist/_internal.js +58 -0
  17. package/dist/_internal.js.map +1 -0
  18. package/dist/index.d.ts +4 -0
  19. package/dist/index.js +5 -0
  20. package/dist/index.js.map +1 -0
  21. package/package.json +31 -49
  22. package/readme.md +218 -0
  23. package/src/AsyncData.test.ts +89 -0
  24. package/src/AsyncData.ts +552 -595
  25. package/src/LazyRef.ts +89 -0
  26. package/src/Progress.ts +20 -66
  27. package/src/TypeId.ts +1 -1
  28. package/src/_internal.ts +111 -0
  29. package/src/index.ts +4 -0
  30. package/tsconfig.json +27 -0
  31. package/AsyncData/package.json +0 -6
  32. package/LICENSE +0 -21
  33. package/Progress/package.json +0 -6
  34. package/README.md +0 -5
  35. package/Schema/package.json +0 -6
  36. package/TypeId/package.json +0 -6
  37. package/dist/cjs/AsyncData.js +0 -399
  38. package/dist/cjs/AsyncData.js.map +0 -1
  39. package/dist/cjs/Progress.js +0 -62
  40. package/dist/cjs/Progress.js.map +0 -1
  41. package/dist/cjs/Schema.js +0 -539
  42. package/dist/cjs/Schema.js.map +0 -1
  43. package/dist/cjs/TypeId.js +0 -14
  44. package/dist/cjs/TypeId.js.map +0 -1
  45. package/dist/cjs/internal/async-data.js +0 -94
  46. package/dist/cjs/internal/async-data.js.map +0 -1
  47. package/dist/cjs/internal/tag.js +0 -12
  48. package/dist/cjs/internal/tag.js.map +0 -1
  49. package/dist/dts/AsyncData.d.ts +0 -386
  50. package/dist/dts/AsyncData.d.ts.map +0 -1
  51. package/dist/dts/Progress.d.ts +0 -43
  52. package/dist/dts/Progress.d.ts.map +0 -1
  53. package/dist/dts/Schema.d.ts +0 -78
  54. package/dist/dts/Schema.d.ts.map +0 -1
  55. package/dist/dts/TypeId.d.ts.map +0 -1
  56. package/dist/dts/internal/async-data.d.ts +0 -43
  57. package/dist/dts/internal/async-data.d.ts.map +0 -1
  58. package/dist/dts/internal/tag.d.ts +0 -6
  59. package/dist/dts/internal/tag.d.ts.map +0 -1
  60. package/dist/esm/AsyncData.js +0 -372
  61. package/dist/esm/AsyncData.js.map +0 -1
  62. package/dist/esm/Progress.js +0 -49
  63. package/dist/esm/Progress.js.map +0 -1
  64. package/dist/esm/Schema.js +0 -500
  65. package/dist/esm/Schema.js.map +0 -1
  66. package/dist/esm/TypeId.js +0 -8
  67. package/dist/esm/TypeId.js.map +0 -1
  68. package/dist/esm/internal/async-data.js +0 -91
  69. package/dist/esm/internal/async-data.js.map +0 -1
  70. package/dist/esm/internal/tag.js +0 -6
  71. package/dist/esm/internal/tag.js.map +0 -1
  72. package/dist/esm/package.json +0 -4
  73. package/src/Schema.ts +0 -754
  74. package/src/internal/async-data.ts +0 -114
  75. package/src/internal/tag.ts +0 -9
@@ -1,114 +0,0 @@
1
- // Internal
2
-
3
- import type * as Cause from "effect/Cause"
4
- import * as Effect from "effect/Effect"
5
- import * as Effectable from "effect/Effectable"
6
- import * as Equal from "effect/Equal"
7
- import { constant, pipe } from "effect/Function"
8
- import * as Hash from "effect/Hash"
9
- import type * as Option from "effect/Option"
10
- import { hasProperty } from "effect/Predicate"
11
- import type { AsyncData, Failure, Loading, Optimistic, Success } from "../AsyncData.js"
12
- import { AsyncDataTypeId } from "../TypeId.js"
13
- import { FAILURE_TAG, OPTIMISTIC_TAG, SUCCESS_TAG } from "./tag.js"
14
-
15
- // @ts-expect-error
16
- export class FailureImpl<E> extends Effectable.Class<never, E, never> implements Failure<E> {
17
- readonly [AsyncDataTypeId]: AsyncDataTypeId = AsyncDataTypeId
18
- readonly _tag = FAILURE_TAG
19
-
20
- commit: () => Effect.Effect<never, E, never>
21
-
22
- constructor(readonly cause: Cause.Cause<E>, readonly timestamp: number, readonly refreshing: Option.Option<Loading>) {
23
- super()
24
-
25
- this.commit = constant(Effect.failCause(cause))
26
- }
27
-
28
- [Equal.symbol](that: unknown) {
29
- if (this === that) return true
30
-
31
- if (!isAsyncData(that) || that._tag !== FAILURE_TAG) return false
32
-
33
- return Equal.equals(this.cause, that.cause)
34
- && this.timestamp === that.timestamp
35
- && Equal.equals(this.refreshing, that.refreshing)
36
- }
37
-
38
- [Hash.symbol]() {
39
- return pipe(
40
- Hash.string(this._tag),
41
- Hash.combine(Hash.hash(this.cause)),
42
- Hash.combine(Hash.hash(this.timestamp)),
43
- Hash.combine(Hash.hash(this.refreshing))
44
- )
45
- }
46
- }
47
-
48
- // @ts-expect-error
49
- export class SuccessImpl<A> extends Effectable.Class<A> implements Success<A> {
50
- readonly [AsyncDataTypeId]: AsyncDataTypeId = AsyncDataTypeId
51
- readonly _tag = SUCCESS_TAG
52
-
53
- commit: () => Effect.Effect<A>
54
-
55
- constructor(readonly value: A, readonly timestamp: number, readonly refreshing: Option.Option<Loading>) {
56
- super()
57
-
58
- this.commit = constant(Effect.succeed(value))
59
- }
60
-
61
- [Equal.symbol](that: unknown) {
62
- return isAsyncData(that) && that._tag === SUCCESS_TAG
63
- && Equal.equals(this.value, that.value)
64
- && Equal.equals(this.timestamp, that.timestamp)
65
- && Equal.equals(this.refreshing, that.refreshing)
66
- }
67
-
68
- [Hash.symbol]() {
69
- return pipe(
70
- Hash.string(this._tag),
71
- Hash.combine(Hash.hash(this.value)),
72
- Hash.combine(Hash.hash(this.timestamp)),
73
- Hash.combine(Hash.hash(this.refreshing))
74
- )
75
- }
76
- }
77
-
78
- // @ts-expect-error
79
- export class OptimisticImpl<A, E> extends Effectable.Class<A> implements Optimistic<A, E> {
80
- readonly [AsyncDataTypeId]: AsyncDataTypeId = AsyncDataTypeId
81
- readonly _tag = OPTIMISTIC_TAG
82
-
83
- commit: () => Effect.Effect<A>
84
-
85
- constructor(
86
- readonly value: A,
87
- readonly timestamp: number,
88
- readonly previous: AsyncData<A, E>
89
- ) {
90
- super()
91
-
92
- this.commit = constant(Effect.succeed(value))
93
- }
94
-
95
- [Equal.symbol](that: unknown) {
96
- return isAsyncData(that) && that._tag === OPTIMISTIC_TAG
97
- && Equal.equals(this.value, that.value)
98
- && Equal.equals(this.timestamp, that.timestamp)
99
- && Equal.equals(this.previous, that.previous)
100
- }
101
-
102
- [Hash.symbol]() {
103
- return pipe(
104
- Hash.string(this._tag),
105
- Hash.combine(Hash.hash(this.value)),
106
- Hash.combine(Hash.hash(this.timestamp)),
107
- Hash.combine(Hash.hash(this.previous))
108
- )
109
- }
110
- }
111
-
112
- export function isAsyncData<E, A>(u: unknown): u is AsyncData<E, A> {
113
- return hasProperty(u, AsyncDataTypeId)
114
- }
@@ -1,9 +0,0 @@
1
- export const NO_DATA_TAG = "NoData" as const
2
-
3
- export const LOADING_TAG = "Loading" as const
4
-
5
- export const FAILURE_TAG = "Failure" as const
6
-
7
- export const SUCCESS_TAG = "Success" as const
8
-
9
- export const OPTIMISTIC_TAG = "Optimistic" as const