@typed/async-data 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.
- package/LICENSE +21 -0
- package/README.md +5 -0
- package/dist/cjs/AsyncData.js +225 -0
- package/dist/cjs/AsyncData.js.map +1 -0
- package/dist/cjs/Progress.js +47 -0
- package/dist/cjs/Progress.js.map +1 -0
- package/dist/cjs/Schema.js +104 -0
- package/dist/cjs/Schema.js.map +1 -0
- package/dist/cjs/internal/async-data.js +91 -0
- package/dist/cjs/internal/async-data.js.map +1 -0
- package/dist/cjs/internal/tag.js +11 -0
- package/dist/cjs/internal/tag.js.map +1 -0
- package/dist/dts/AsyncData.d.ts +288 -0
- package/dist/dts/AsyncData.d.ts.map +1 -0
- package/dist/dts/Progress.d.ts +38 -0
- package/dist/dts/Progress.d.ts.map +1 -0
- package/dist/dts/Schema.d.ts +15 -0
- package/dist/dts/Schema.d.ts.map +1 -0
- package/dist/dts/internal/async-data.d.ts +34 -0
- package/dist/dts/internal/async-data.d.ts.map +1 -0
- package/dist/dts/internal/tag.d.ts +5 -0
- package/dist/dts/internal/tag.d.ts.map +1 -0
- package/dist/esm/AsyncData.js +203 -0
- package/dist/esm/AsyncData.js.map +1 -0
- package/dist/esm/Progress.js +38 -0
- package/dist/esm/Progress.js.map +1 -0
- package/dist/esm/Schema.js +93 -0
- package/dist/esm/Schema.js.map +1 -0
- package/dist/esm/internal/async-data.js +85 -0
- package/dist/esm/internal/async-data.js.map +1 -0
- package/dist/esm/internal/tag.js +5 -0
- package/dist/esm/internal/tag.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +48 -0
- package/src/AsyncData.ts +434 -0
- package/src/Progress.ts +65 -0
- package/src/Schema.ts +166 -0
- package/src/internal/async-data.ts +101 -0
- package/src/internal/tag.ts +7 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Arbitrary from "@effect/schema/Arbitrary";
|
|
5
|
+
import * as AST from "@effect/schema/AST";
|
|
6
|
+
import * as ParseResult from "@effect/schema/ParseResult";
|
|
7
|
+
import * as Pretty from "@effect/schema/Pretty";
|
|
8
|
+
import * as Schema from "@effect/schema/Schema";
|
|
9
|
+
import * as AsyncData from "@typed/async-data/AsyncData";
|
|
10
|
+
import { Cause, Chunk, Effect, FiberId, HashSet } from "effect";
|
|
11
|
+
import * as Option from "effect/Option";
|
|
12
|
+
const fiberIdArbitrary = (fc) => fc.oneof(fc.constant(FiberId.none), fc.integer().chain((i) => fc.date().map((date) => FiberId.make(i, date.getTime() / 1000))));
|
|
13
|
+
const causeFromItems = (items, join) => {
|
|
14
|
+
if (items.length === 0)
|
|
15
|
+
return Cause.empty;
|
|
16
|
+
if (items.length === 1)
|
|
17
|
+
return Cause.fail(items[0]);
|
|
18
|
+
return items.map(Cause.fail).reduce(join);
|
|
19
|
+
};
|
|
20
|
+
const causeArbitrary = (item) => (fc) => fc.oneof(fc.constant(Cause.empty), fc.anything().map(Cause.die), fiberIdArbitrary(fc).map((id) => Cause.interrupt(id)), fc.array(item(fc)).chain((items) => fc.integer({ min: 0, max: 1 }).map((i) => causeFromItems(items, i > 0.5 ? Cause.sequential : Cause.parallel))));
|
|
21
|
+
const causePretty = () => Cause.pretty;
|
|
22
|
+
/**
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
export const cause = (error) => {
|
|
26
|
+
const parseE = Schema.parse(Schema.chunkFromSelf(error));
|
|
27
|
+
const self = Schema.lazy(() => Schema.declare([error], Schema.struct({}), () => (input, options) => Effect.gen(function* (_) {
|
|
28
|
+
if (!Cause.isCause(input))
|
|
29
|
+
return yield* _(ParseResult.failure(ParseResult.unexpected(input)));
|
|
30
|
+
let output = Cause.empty;
|
|
31
|
+
for (const cause of Cause.linearize(input)) {
|
|
32
|
+
const parrallelCauses = Cause.linearize(cause);
|
|
33
|
+
if (HashSet.size(parrallelCauses) === 1) {
|
|
34
|
+
const failures = Cause.failures(cause);
|
|
35
|
+
output = Cause.parallel(output, Chunk.isEmpty(failures) ? cause : Chunk.reduce(yield* _(parseE(failures, options)), Cause.empty, (cause, e) => Cause.sequential(cause, Cause.fail(e))));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
output = Cause.parallel(output, yield* _(Schema.parse(self)(cause, options)));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return output;
|
|
42
|
+
}), {
|
|
43
|
+
[AST.IdentifierAnnotationId]: "Cause",
|
|
44
|
+
[Arbitrary.ArbitraryHookId]: causePretty,
|
|
45
|
+
[Pretty.PrettyHookId]: causeArbitrary
|
|
46
|
+
}));
|
|
47
|
+
return self;
|
|
48
|
+
};
|
|
49
|
+
const asyncDataPretty = (prettyCause, prettyValue) => AsyncData.match({
|
|
50
|
+
NoData: () => `AsyncData.NoData`,
|
|
51
|
+
Loading: () => `AsyncData.Loading`,
|
|
52
|
+
Failure: (cause, data) => `AsyncData.Failure(refreshing=${Option.isSome(data.refreshing)}, cause=${prettyCause(cause)})`,
|
|
53
|
+
Success: (value, data) => `AsyncData.Success(refreshing=${Option.isSome(data.refreshing)}, value=${prettyValue(value)})`
|
|
54
|
+
});
|
|
55
|
+
const asyncDataArbitrary = (causeArbitrary, valueArbitrary) => (fc) => fc.oneof(fc.constant(AsyncData.noData()), fc.constant(AsyncData.loading()), causeArbitrary(fc).map((cause) => AsyncData.failCause(cause)), valueArbitrary(fc).map((a) => AsyncData.success(a)));
|
|
56
|
+
/**
|
|
57
|
+
* @since 1.0.0
|
|
58
|
+
*/
|
|
59
|
+
export const asyncData = (error, value) => {
|
|
60
|
+
return Schema.declare([cause(error), value], Schema.struct({}), (_, ...params) => {
|
|
61
|
+
const [causeSchema, valueSchema] = params;
|
|
62
|
+
const parseCause = Schema.parse(causeSchema);
|
|
63
|
+
const parseValue = Schema.parse(valueSchema);
|
|
64
|
+
return (input, options) => {
|
|
65
|
+
return Effect.gen(function* (_) {
|
|
66
|
+
if (!AsyncData.isAsyncData(input))
|
|
67
|
+
return yield* _(ParseResult.failure(ParseResult.unexpected(input)));
|
|
68
|
+
switch (input._tag) {
|
|
69
|
+
case "NoData":
|
|
70
|
+
case "Loading":
|
|
71
|
+
return input;
|
|
72
|
+
case "Failure": {
|
|
73
|
+
const cause = yield* _(parseCause(input.cause, options));
|
|
74
|
+
return AsyncData.failCause(cause, {
|
|
75
|
+
refreshing: Option.getOrUndefined(input.refreshing)
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
case "Success": {
|
|
79
|
+
const a = yield* _(parseValue(input.value, options));
|
|
80
|
+
return AsyncData.success(a, {
|
|
81
|
+
refreshing: Option.getOrUndefined(input.refreshing)
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
}, {
|
|
88
|
+
[AST.IdentifierAnnotationId]: "AsyncData",
|
|
89
|
+
[Arbitrary.ArbitraryHookId]: asyncDataPretty,
|
|
90
|
+
[Pretty.PrettyHookId]: asyncDataArbitrary
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=Schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// Internal
|
|
2
|
+
import { Cause, Effect, Effectable, Equal, Hash, Option, pipe, Unify } from "effect";
|
|
3
|
+
import { constant } from "effect/Function";
|
|
4
|
+
import { FAILURE_TAG, LOADING_TAG, NO_DATA_TAG, SUCCESS_TAG } from "./tag";
|
|
5
|
+
export class FailureImpl extends Effectable.Class {
|
|
6
|
+
cause;
|
|
7
|
+
refreshing;
|
|
8
|
+
_tag = "Failure";
|
|
9
|
+
commit;
|
|
10
|
+
[Unify.typeSymbol];
|
|
11
|
+
[Unify.unifySymbol];
|
|
12
|
+
[Unify.ignoreSymbol];
|
|
13
|
+
constructor(cause, refreshing) {
|
|
14
|
+
super();
|
|
15
|
+
this.cause = cause;
|
|
16
|
+
this.refreshing = refreshing;
|
|
17
|
+
this.commit = constant(Effect.failCause(cause));
|
|
18
|
+
}
|
|
19
|
+
[Equal.symbol] = (that) => {
|
|
20
|
+
return isAsyncData(that) && that._tag === "Failure"
|
|
21
|
+
&& Equal.equals(this.cause, that.cause)
|
|
22
|
+
&& Equal.equals(this.refreshing, that.refreshing);
|
|
23
|
+
};
|
|
24
|
+
[Hash.symbol] = () => {
|
|
25
|
+
return pipe(Hash.string(this._tag), Hash.combine(Hash.hash(this.cause)), Hash.combine(Hash.hash(this.refreshing)));
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export class SuccessImpl extends Effectable.Class {
|
|
29
|
+
value;
|
|
30
|
+
refreshing;
|
|
31
|
+
_tag = "Success";
|
|
32
|
+
commit;
|
|
33
|
+
[Unify.typeSymbol];
|
|
34
|
+
[Unify.unifySymbol];
|
|
35
|
+
[Unify.ignoreSymbol];
|
|
36
|
+
constructor(value, refreshing) {
|
|
37
|
+
super();
|
|
38
|
+
this.value = value;
|
|
39
|
+
this.refreshing = refreshing;
|
|
40
|
+
this.commit = constant(Effect.succeed(value));
|
|
41
|
+
}
|
|
42
|
+
[Equal.symbol] = (that) => {
|
|
43
|
+
return isAsyncData(that) && that._tag === "Success"
|
|
44
|
+
&& Equal.equals(this.value, that.value)
|
|
45
|
+
&& Equal.equals(this.refreshing, that.refreshing);
|
|
46
|
+
};
|
|
47
|
+
[Hash.symbol] = () => {
|
|
48
|
+
return pipe(Hash.string(this._tag), Hash.combine(Hash.hash(this.value)), Hash.combine(Hash.hash(this.refreshing)));
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function hasDataOptions(u) {
|
|
52
|
+
if ("timestamp" in u && "refreshing" in u) {
|
|
53
|
+
return typeof u.timestamp === "bigint" && Option.isOption(u.refreshing);
|
|
54
|
+
}
|
|
55
|
+
else
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
export function hasEquality(u) {
|
|
59
|
+
return Equal.symbol in u && Hash.symbol in u;
|
|
60
|
+
}
|
|
61
|
+
export function isTaggedRecord(u) {
|
|
62
|
+
return isRecord(u) && "_tag" in u;
|
|
63
|
+
}
|
|
64
|
+
export function isRecord(u) {
|
|
65
|
+
return typeof u === "object" && u !== null && !Array.isArray(u);
|
|
66
|
+
}
|
|
67
|
+
export function isAsyncData(u) {
|
|
68
|
+
if (isTaggedRecord(u) && hasEquality(u)) {
|
|
69
|
+
switch (u._tag) {
|
|
70
|
+
case NO_DATA_TAG:
|
|
71
|
+
return "timstamp" in u && typeof u.timestamp === "bigint";
|
|
72
|
+
case LOADING_TAG:
|
|
73
|
+
return "progress" in u && Option.isOption(u.progress);
|
|
74
|
+
case FAILURE_TAG:
|
|
75
|
+
return hasDataOptions(u) && "cause" in u && Cause.isCause(u.cause);
|
|
76
|
+
case SUCCESS_TAG:
|
|
77
|
+
return hasDataOptions(u) && "value" in u;
|
|
78
|
+
default:
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=async-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-data.js","sourceRoot":"","sources":["../../../src/internal/async-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../../../src/internal/tag.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,QAAiB,CAAA;AAE5C,MAAM,CAAC,MAAM,WAAW,GAAG,SAAkB,CAAA;AAE7C,MAAM,CAAC,MAAM,WAAW,GAAG,SAAkB,CAAA;AAE7C,MAAM,CAAC,MAAM,WAAW,GAAG,SAAkB,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@typed/async-data",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/tylors/typed.git"
|
|
9
|
+
},
|
|
10
|
+
"sideEffects": [],
|
|
11
|
+
"author": "Typed contributors",
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@effect/schema": "0.49.4",
|
|
14
|
+
"effect": "2.0.0-next.56",
|
|
15
|
+
"fast-check": "^3.14.0"
|
|
16
|
+
},
|
|
17
|
+
"exports": {
|
|
18
|
+
"./package.json": "./package.json",
|
|
19
|
+
"./AsyncData": {
|
|
20
|
+
"types": "./dist/dts/AsyncData.d.ts",
|
|
21
|
+
"import": "./dist/esm/AsyncData.js",
|
|
22
|
+
"default": "./dist/cjs/AsyncData.js"
|
|
23
|
+
},
|
|
24
|
+
"./Progress": {
|
|
25
|
+
"types": "./dist/dts/Progress.d.ts",
|
|
26
|
+
"import": "./dist/esm/Progress.js",
|
|
27
|
+
"default": "./dist/cjs/Progress.js"
|
|
28
|
+
},
|
|
29
|
+
"./Schema": {
|
|
30
|
+
"types": "./dist/dts/Schema.d.ts",
|
|
31
|
+
"import": "./dist/esm/Schema.js",
|
|
32
|
+
"default": "./dist/cjs/Schema.js"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"typesVersions": {
|
|
36
|
+
"*": {
|
|
37
|
+
"AsyncData": [
|
|
38
|
+
"./dist/dts/AsyncData.d.ts"
|
|
39
|
+
],
|
|
40
|
+
"Progress": [
|
|
41
|
+
"./dist/dts/Progress.d.ts"
|
|
42
|
+
],
|
|
43
|
+
"Schema": [
|
|
44
|
+
"./dist/dts/Schema.d.ts"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|