@duplojs/lang 0.0.1-beta.8 → 0.0.1-beta.9
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/chrono/createDate.cjs +1 -1
- package/dist/chrono/createDate.mjs +1 -1
- package/dist/common/constraint/cast/index.d.ts +3 -3
- package/dist/common/constraint/infer/string.d.ts +1 -0
- package/dist/common/types/index.d.ts +1 -0
- package/dist/common/types/isObject.d.ts +8 -0
- package/dist/dataStructure/common/codec/base.cjs +2 -2
- package/dist/dataStructure/common/codec/base.mjs +2 -2
- package/dist/dataStructure/common/error.cjs +4 -2
- package/dist/dataStructure/common/error.d.ts +4 -2
- package/dist/dataStructure/common/error.mjs +4 -2
- package/dist/dataStructure/common/errorInterpreter.cjs +6 -6
- package/dist/dataStructure/common/errorInterpreter.d.ts +7 -3
- package/dist/dataStructure/common/errorInterpreter.mjs +6 -6
- package/dist/dataStructure/constraint/defaults/allowedCharacters.d.ts +1 -3
- package/dist/dataStructure/helpers/index.d.ts +5 -2
- package/dist/dataStructure/helpers/isNullable.cjs +12 -0
- package/dist/dataStructure/helpers/isNullable.d.ts +2 -0
- package/dist/dataStructure/helpers/isNullable.mjs +12 -0
- package/dist/dataStructure/helpers/isOptional.cjs +12 -0
- package/dist/dataStructure/helpers/isOptional.d.ts +2 -0
- package/dist/dataStructure/helpers/isOptional.mjs +12 -0
- package/dist/dataStructure/helpers/unwrapLazy.cjs +9 -0
- package/dist/dataStructure/helpers/unwrapLazy.d.ts +2 -0
- package/dist/dataStructure/helpers/unwrapLazy.mjs +9 -0
- package/dist/dataStructure/index.cjs +11 -2
- package/dist/dataStructure/index.mjs +9 -3
- package/dist/dataStructure/structure/base.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/array.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/lazy.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/object.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/record.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/type.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/union.d.ts +1 -1
- package/dist/either/index.cjs +30 -8
- package/dist/either/index.d.ts +4 -0
- package/dist/either/index.mjs +23 -9
- package/dist/either/left/index.d.ts +3 -2
- package/dist/either/left/none.cjs +15 -0
- package/dist/either/left/none.d.ts +7 -0
- package/dist/either/left/none.mjs +14 -0
- package/dist/either/matchInformationOtherwise.d.ts +1 -1
- package/dist/either/rewriteInformation.cjs +22 -0
- package/dist/either/rewriteInformation.d.ts +14 -0
- package/dist/either/rewriteInformation.mjs +22 -0
- package/dist/either/right/asyncGroup.cjs +2 -2
- package/dist/either/right/asyncGroup.mjs +2 -2
- package/dist/either/right/group.cjs +1 -1
- package/dist/either/right/group.mjs +1 -1
- package/dist/either/right/index.d.ts +6 -5
- package/dist/either/right/some.cjs +15 -0
- package/dist/either/right/some.d.ts +7 -0
- package/dist/either/right/some.mjs +14 -0
- package/dist/either/toMaybe.cjs +12 -0
- package/dist/either/toMaybe.d.ts +5 -0
- package/dist/either/toMaybe.mjs +12 -0
- package/dist/either/types/mayBe.d.ts +3 -0
- package/dist/either/unwrapOr.cjs +14 -0
- package/dist/either/unwrapOr.d.ts +8 -0
- package/dist/either/unwrapOr.mjs +14 -0
- package/dist/either/unwrapOtherwise.cjs +14 -0
- package/dist/either/unwrapOtherwise.d.ts +8 -0
- package/dist/either/unwrapOtherwise.mjs +14 -0
- package/dist/generator/reduce.cjs +2 -1
- package/dist/generator/reduce.mjs +1 -1
- package/dist/invocation/index.cjs +8 -8
- package/dist/invocation/index.d.ts +1 -1
- package/dist/invocation/index.mjs +6 -6
- package/dist/invocation/reader.cjs +26 -0
- package/dist/invocation/reader.d.ts +28 -0
- package/dist/invocation/reader.mjs +25 -0
- package/dist/modeling/entity/base.cjs +19 -2
- package/dist/modeling/entity/base.d.ts +9 -2
- package/dist/modeling/entity/base.mjs +19 -3
- package/dist/modeling/entity/namespace.cjs +1 -1
- package/dist/modeling/entity/namespace.d.ts +1 -1
- package/dist/modeling/entity/namespace.mjs +1 -1
- package/dist/modeling/flag/base.cjs +1 -5
- package/dist/modeling/flag/base.d.ts +6 -7
- package/dist/modeling/flag/base.mjs +1 -5
- package/dist/modeling/index.cjs +6 -0
- package/dist/modeling/index.mjs +7 -4
- package/dist/modeling/newType/base.cjs +21 -3
- package/dist/modeling/newType/base.d.ts +9 -2
- package/dist/modeling/newType/base.mjs +19 -3
- package/dist/modeling/taggedObject/base.cjs +19 -2
- package/dist/modeling/taggedObject/base.d.ts +9 -2
- package/dist/modeling/taggedObject/base.mjs +19 -3
- package/dist/object/types/forbiddenUndefinedProps.d.ts +3 -0
- package/dist/object/types/index.d.ts +2 -1
- package/dist/object/types/split.d.ts +2 -2
- package/dist/pattern/matchWithNumber.d.ts +4 -4
- package/dist/pattern/matchWithNumberOtherwise.d.ts +4 -4
- package/dist/pattern/matchWithString.d.ts +4 -4
- package/dist/pattern/matchWithStringOtherwise.d.ts +4 -4
- package/dist/string/constraints/allowedCharacters.d.ts +3 -3
- package/dist/string/isComposedOf.cjs +0 -1
- package/dist/string/isComposedOf.d.ts +5 -8
- package/dist/string/isComposedOf.mjs +0 -1
- package/dist/string/types/IsAllowedString.d.ts +3 -0
- package/dist/string/types/index.d.ts +1 -0
- package/package.json +2 -2
- package/dist/invocation/useCase.cjs +0 -26
- package/dist/invocation/useCase.d.ts +0 -28
- package/dist/invocation/useCase.mjs +0 -25
|
@@ -10,7 +10,7 @@ const require_throttling = require("./flow/controller/defaults/throttling.cjs");
|
|
|
10
10
|
const require_timeout = require("./flow/controller/defaults/timeout.cjs");
|
|
11
11
|
const require_base$1 = require("./flow/base.cjs");
|
|
12
12
|
const require_port = require("./port.cjs");
|
|
13
|
-
const
|
|
13
|
+
const require_reader = require("./reader.cjs");
|
|
14
14
|
//#region scripts/invocation/index.ts
|
|
15
15
|
var invocation_exports = /* @__PURE__ */ require_runtime.__exportAll({
|
|
16
16
|
AbortErrorFlowController: () => require_aborter.AbortErrorFlowController,
|
|
@@ -19,7 +19,7 @@ var invocation_exports = /* @__PURE__ */ require_runtime.__exportAll({
|
|
|
19
19
|
createFlowController: () => require_base.createFlowController,
|
|
20
20
|
createKind: () => require_kind.createKind,
|
|
21
21
|
createPort: () => require_port.createPort,
|
|
22
|
-
|
|
22
|
+
createReader: () => require_reader.createReader,
|
|
23
23
|
debounce: () => require_debounce.debounce,
|
|
24
24
|
evidenceResult: () => require_evidence.evidenceResult,
|
|
25
25
|
filter: () => require_filter.filter,
|
|
@@ -33,11 +33,11 @@ var invocation_exports = /* @__PURE__ */ require_runtime.__exportAll({
|
|
|
33
33
|
flowControllerThrottlingKind: () => require_throttling.flowControllerThrottlingKind,
|
|
34
34
|
flowControllerTimeoutKind: () => require_timeout.flowControllerTimeoutKind,
|
|
35
35
|
portHandlerKind: () => require_port.portHandlerKind,
|
|
36
|
+
readerKind: () => require_reader.readerKind,
|
|
37
|
+
resolveReaders: () => require_reader.resolveReaders,
|
|
36
38
|
retry: () => require_retry.retry,
|
|
37
39
|
throttling: () => require_throttling.throttling,
|
|
38
|
-
timeout: () => require_timeout.timeout
|
|
39
|
-
useCaseHandlerKind: () => require_useCase.useCaseHandlerKind,
|
|
40
|
-
wireUseCases: () => require_useCase.wireUseCases
|
|
40
|
+
timeout: () => require_timeout.timeout
|
|
41
41
|
});
|
|
42
42
|
//#endregion
|
|
43
43
|
exports.AbortErrorFlowController = require_aborter.AbortErrorFlowController;
|
|
@@ -46,7 +46,7 @@ exports.appendEvidence = require_evidence.appendEvidence;
|
|
|
46
46
|
exports.createFlowController = require_base.createFlowController;
|
|
47
47
|
exports.createKind = require_kind.createKind;
|
|
48
48
|
exports.createPort = require_port.createPort;
|
|
49
|
-
exports.
|
|
49
|
+
exports.createReader = require_reader.createReader;
|
|
50
50
|
exports.debounce = require_debounce.debounce;
|
|
51
51
|
exports.evidenceResult = require_evidence.evidenceResult;
|
|
52
52
|
exports.filter = require_filter.filter;
|
|
@@ -66,8 +66,8 @@ Object.defineProperty(exports, "invocation_exports", {
|
|
|
66
66
|
}
|
|
67
67
|
});
|
|
68
68
|
exports.portHandlerKind = require_port.portHandlerKind;
|
|
69
|
+
exports.readerKind = require_reader.readerKind;
|
|
70
|
+
exports.resolveReaders = require_reader.resolveReaders;
|
|
69
71
|
exports.retry = require_retry.retry;
|
|
70
72
|
exports.throttling = require_throttling.throttling;
|
|
71
73
|
exports.timeout = require_timeout.timeout;
|
|
72
|
-
exports.useCaseHandlerKind = require_useCase.useCaseHandlerKind;
|
|
73
|
-
exports.wireUseCases = require_useCase.wireUseCases;
|
|
@@ -10,7 +10,7 @@ import { flowControllerThrottlingKind, throttling } from "./flow/controller/defa
|
|
|
10
10
|
import { flowControllerTimeoutKind, timeout } from "./flow/controller/defaults/timeout.mjs";
|
|
11
11
|
import { flow } from "./flow/base.mjs";
|
|
12
12
|
import { createPort, portHandlerKind } from "./port.mjs";
|
|
13
|
-
import {
|
|
13
|
+
import { createReader, readerKind, resolveReaders } from "./reader.mjs";
|
|
14
14
|
//#region scripts/invocation/index.ts
|
|
15
15
|
var invocation_exports = /* @__PURE__ */ __exportAll({
|
|
16
16
|
AbortErrorFlowController: () => AbortErrorFlowController,
|
|
@@ -19,7 +19,7 @@ var invocation_exports = /* @__PURE__ */ __exportAll({
|
|
|
19
19
|
createFlowController: () => createFlowController,
|
|
20
20
|
createKind: () => createKind,
|
|
21
21
|
createPort: () => createPort,
|
|
22
|
-
|
|
22
|
+
createReader: () => createReader,
|
|
23
23
|
debounce: () => debounce,
|
|
24
24
|
evidenceResult: () => evidenceResult,
|
|
25
25
|
filter: () => filter,
|
|
@@ -33,11 +33,11 @@ var invocation_exports = /* @__PURE__ */ __exportAll({
|
|
|
33
33
|
flowControllerThrottlingKind: () => flowControllerThrottlingKind,
|
|
34
34
|
flowControllerTimeoutKind: () => flowControllerTimeoutKind,
|
|
35
35
|
portHandlerKind: () => portHandlerKind,
|
|
36
|
+
readerKind: () => readerKind,
|
|
37
|
+
resolveReaders: () => resolveReaders,
|
|
36
38
|
retry: () => retry,
|
|
37
39
|
throttling: () => throttling,
|
|
38
|
-
timeout: () => timeout
|
|
39
|
-
useCaseHandlerKind: () => useCaseHandlerKind,
|
|
40
|
-
wireUseCases: () => wireUseCases
|
|
40
|
+
timeout: () => timeout
|
|
41
41
|
});
|
|
42
42
|
//#endregion
|
|
43
|
-
export { AbortErrorFlowController, aborter, appendEvidence, createFlowController, createKind, createPort,
|
|
43
|
+
export { AbortErrorFlowController, aborter, appendEvidence, createFlowController, createKind, createPort, createReader, debounce, evidenceResult, filter, flow, flowControllerAborterKind, flowControllerDebounceKind, flowControllerExitKind, flowControllerFilterKind, flowControllerKind, flowControllerRetryKind, flowControllerThrottlingKind, flowControllerTimeoutKind, invocation_exports, portHandlerKind, readerKind, resolveReaders, retry, throttling, timeout };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const require_entries = require("../object/entries.cjs");
|
|
2
|
+
const require_entry = require("../object/entry.cjs");
|
|
3
|
+
const require_fromEntries = require("../object/fromEntries.cjs");
|
|
4
|
+
const require_map = require("../array/map.cjs");
|
|
5
|
+
const require_forward = require("../common/forward.cjs");
|
|
6
|
+
const require_pipe = require("../common/pipe.cjs");
|
|
7
|
+
const require_uncapitalize = require("../string/uncapitalize.cjs");
|
|
8
|
+
//#region scripts/invocation/reader.ts
|
|
9
|
+
const readerKind = require("./kind.cjs").createKind("reader");
|
|
10
|
+
function createReader(dependencies, read) {
|
|
11
|
+
return {
|
|
12
|
+
dependencies,
|
|
13
|
+
run: (injectedDependencies) => read(require_pipe.pipe(require_forward.forward(dependencies), require_entries.entries, require_map.map(([key, value]) => {
|
|
14
|
+
const formattedKey = require_uncapitalize.uncapitalize(key);
|
|
15
|
+
return require_entry.entry(formattedKey, readerKind.has(value) && !injectedDependencies[formattedKey] ? value.run(injectedDependencies) : injectedDependencies[formattedKey]);
|
|
16
|
+
}), require_fromEntries.fromEntries)),
|
|
17
|
+
[readerKind.runTimeKey]: null
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function resolveReaders(readers, ports) {
|
|
21
|
+
return require_pipe.pipe(readers, require_entries.entries, require_map.map(([key, reader]) => require_entry.entry(require_uncapitalize.uncapitalize(key), reader.run(ports))), require_fromEntries.fromEntries);
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
exports.createReader = createReader;
|
|
25
|
+
exports.readerKind = readerKind;
|
|
26
|
+
exports.resolveReaders = resolveReaders;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PortHandler } from './port';
|
|
2
|
+
import * as DCommon from '../common';
|
|
3
|
+
import type * as DKind from '../kind';
|
|
4
|
+
export type ReaderDependencies = Record<string, Reader | PortHandler>;
|
|
5
|
+
export type ReaderDependenciesValue<GenericDependencies extends ReaderDependencies> = DCommon.SimplifyTopLevel<{
|
|
6
|
+
[Prop in keyof GenericDependencies as Uncapitalize<Extract<Prop, string>>]: GenericDependencies[Prop] extends PortHandler ? ReturnType<GenericDependencies[Prop]["createImplementation"]> : GenericDependencies[Prop] extends Reader ? ReturnType<GenericDependencies[Prop]["run"]> : never;
|
|
7
|
+
}>;
|
|
8
|
+
export type GetAllPorts<GenericDependenciesValue extends ReaderDependencies> = GenericDependenciesValue extends any ? ({
|
|
9
|
+
[Prop in keyof GenericDependenciesValue]: (GenericDependenciesValue[Prop] extends PortHandler ? [
|
|
10
|
+
Uncapitalize<Extract<Prop, string>>,
|
|
11
|
+
ReturnType<GenericDependenciesValue[Prop]["createImplementation"]>
|
|
12
|
+
] : GenericDependenciesValue[Prop] extends Reader ? GetAllPorts<GenericDependenciesValue[Prop]["dependencies"]> : never);
|
|
13
|
+
})[keyof GenericDependenciesValue] : never;
|
|
14
|
+
export declare const readerKind: DKind.Handler<DKind.Definition<"@DuplojsLangInvocation/reader", unknown>>;
|
|
15
|
+
export interface Reader<GenericDependencies extends ReaderDependencies = any, GenericOutput extends unknown = unknown> extends DKind.Kind<typeof readerKind> {
|
|
16
|
+
dependencies: GenericDependencies;
|
|
17
|
+
run(ports: DCommon.SimplifyTopLevel<(GetAllPorts<GenericDependencies> extends infer InferredEntriesDependenciesValue extends DCommon.ObjectEntry ? {
|
|
18
|
+
[Entry in InferredEntriesDependenciesValue as Entry[0]]: Entry[1];
|
|
19
|
+
} : never) & ({
|
|
20
|
+
[Prop in keyof GenericDependencies as GenericDependencies[Prop] extends Reader ? Uncapitalize<Extract<Prop, string>> : never]?: GenericDependencies[Prop] extends Reader ? ReturnType<GenericDependencies[Prop]["run"]> : never;
|
|
21
|
+
})>): GenericOutput;
|
|
22
|
+
}
|
|
23
|
+
export declare function createReader<const GenericDependencies extends ReaderDependencies, GenericOutput extends unknown>(dependencies: GenericDependencies, read: (dependenciesValue: ReaderDependenciesValue<GenericDependencies>) => GenericOutput): Reader<GenericDependencies, GenericOutput>;
|
|
24
|
+
export declare function resolveReaders<GenericReaders extends Record<string, Reader>>(readers: GenericReaders, ports: DCommon.SimplifyTopLevel<DCommon.UnionToIntersection<{
|
|
25
|
+
[Prop in keyof GenericReaders]: GetAllPorts<GenericReaders[Prop]["dependencies"]> extends infer InferredEntriesDependenciesValue extends DCommon.ObjectEntry ? {
|
|
26
|
+
[Entry in InferredEntriesDependenciesValue as Entry[0]]: Entry[1];
|
|
27
|
+
} : never;
|
|
28
|
+
}[keyof GenericReaders]>>): ReaderDependenciesValue<GenericReaders>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { entries } from "../object/entries.mjs";
|
|
2
|
+
import { entry } from "../object/entry.mjs";
|
|
3
|
+
import { fromEntries } from "../object/fromEntries.mjs";
|
|
4
|
+
import { map } from "../array/map.mjs";
|
|
5
|
+
import { forward } from "../common/forward.mjs";
|
|
6
|
+
import { pipe } from "../common/pipe.mjs";
|
|
7
|
+
import { uncapitalize } from "../string/uncapitalize.mjs";
|
|
8
|
+
import { createKind } from "./kind.mjs";
|
|
9
|
+
//#region scripts/invocation/reader.ts
|
|
10
|
+
const readerKind = createKind("reader");
|
|
11
|
+
function createReader(dependencies, read) {
|
|
12
|
+
return {
|
|
13
|
+
dependencies,
|
|
14
|
+
run: (injectedDependencies) => read(pipe(forward(dependencies), entries, map(([key, value]) => {
|
|
15
|
+
const formattedKey = uncapitalize(key);
|
|
16
|
+
return entry(formattedKey, readerKind.has(value) && !injectedDependencies[formattedKey] ? value.run(injectedDependencies) : injectedDependencies[formattedKey]);
|
|
17
|
+
}), fromEntries)),
|
|
18
|
+
[readerKind.runTimeKey]: null
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function resolveReaders(readers, ports) {
|
|
22
|
+
return pipe(readers, entries, map(([key, reader]) => entry(uncapitalize(key), reader.run(ports))), fromEntries);
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { createReader, readerKind, resolveReaders };
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
const require_parentClass = require("../../kind/parentClass.cjs");
|
|
1
2
|
const require_isSimple = require("../../object/isSimple.cjs");
|
|
2
3
|
const require_create = require("../../either/left/create.cjs");
|
|
4
|
+
const require_is = require("../../either/left/is.cjs");
|
|
3
5
|
const require_create$1 = require("../../either/right/create.cjs");
|
|
6
|
+
const require_unwrap = require("../../either/left/unwrap.cjs");
|
|
7
|
+
const require_unwrap$1 = require("../../either/right/unwrap.cjs");
|
|
4
8
|
const require_justExec = require("../../common/justExec.cjs");
|
|
5
9
|
const require_memo = require("../../common/memo.cjs");
|
|
6
10
|
const require_resultSymbol = require("../../dataStructure/common/resultSymbol.cjs");
|
|
@@ -12,6 +16,13 @@ const require_kind = require("../kind.cjs");
|
|
|
12
16
|
//#region scripts/modeling/entity/base.ts
|
|
13
17
|
const entityKind = require_kind.createKind("entity");
|
|
14
18
|
const entityStructureKind = require_kind.createKind("entity-structure");
|
|
19
|
+
var EncodeEntityError = class extends require_parentClass.parentClass(require_kind.createKind("encode-entity-error"), Error) {
|
|
20
|
+
error;
|
|
21
|
+
constructor(error) {
|
|
22
|
+
super(void 0, "An error occurred while encoding an Entity. This can only happen if you are bypassing the type system.");
|
|
23
|
+
this.error = error;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
15
26
|
const EntityStructure = require_base.createStructure(entityStructureKind, ({ init }) => (name, shape) => init({
|
|
16
27
|
inner: require_memo.memo(() => require_object.ObjectStructure({
|
|
17
28
|
...shape(),
|
|
@@ -71,7 +82,7 @@ const EntityStructure = require_base.createStructure(entityStructureKind, ({ ini
|
|
|
71
82
|
return require_create$1.right("map-success", result);
|
|
72
83
|
});
|
|
73
84
|
},
|
|
74
|
-
asyncMap: (self, data) =>
|
|
85
|
+
asyncMap: async (self, data) => {
|
|
75
86
|
const errorHandler = require_error.createGetErrorHandler();
|
|
76
87
|
const formattedData = require_isSimple.isSimple(data) ? {
|
|
77
88
|
...data,
|
|
@@ -79,9 +90,15 @@ const EntityStructure = require_base.createStructure(entityStructureKind, ({ ini
|
|
|
79
90
|
} : data;
|
|
80
91
|
if (await self.executeCheck(formattedData, errorHandler) === require_resultSymbol.ErrorSymbol) return require_create.left("map-error", errorHandler().createError());
|
|
81
92
|
return require_create$1.right("map-success", formattedData);
|
|
82
|
-
}
|
|
93
|
+
},
|
|
94
|
+
encodeEntity: async (self, codecs, data) => {
|
|
95
|
+
const result = await self.asyncEncode(codecs, data);
|
|
96
|
+
if (require_is.isLeft(result)) throw new EncodeEntityError(require_unwrap.unwrapLeft(result));
|
|
97
|
+
return require_unwrap$1.unwrapRight(result);
|
|
98
|
+
}
|
|
83
99
|
}));
|
|
84
100
|
//#endregion
|
|
101
|
+
exports.EncodeEntityError = EncodeEntityError;
|
|
85
102
|
exports.EntityStructure = EntityStructure;
|
|
86
103
|
exports.entityKind = entityKind;
|
|
87
104
|
exports.entityStructureKind = entityStructureKind;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NewType, NewTypeMap } from '../newType';
|
|
2
|
-
import
|
|
2
|
+
import * as DKind from '../../kind';
|
|
3
3
|
import * as DCommon from '../../common';
|
|
4
4
|
import * as DDataStructure from '../../dataStructure';
|
|
5
5
|
import * as DEither from '../../either';
|
|
@@ -33,7 +33,7 @@ export type EntityMap<GenericValue extends unknown, GenericRawValue = DCommon.Re
|
|
|
33
33
|
]> extends true ? {
|
|
34
34
|
[Prop in keyof GenericRawValue]: EntityMap<GenericRawValue[Prop]>;
|
|
35
35
|
} : GenericRawValue : GenericRawValue;
|
|
36
|
-
export interface EntityStructure<GenericName extends string = string, GenericProperties extends Record<string, unknown> = Record<string, unknown>> extends DCommon.Forward<DDataStructure.Structure<Entity<GenericName> & GenericProperties, EntityStructureDefinition> & DKind.Kind<typeof entityStructureKind>> {
|
|
36
|
+
export interface EntityStructure<out GenericName extends string = string, out GenericProperties extends Record<string, unknown> = Record<string, unknown>> extends DCommon.Forward<DDataStructure.Structure<Entity<GenericName> & GenericProperties, EntityStructureDefinition> & DKind.Kind<typeof entityStructureKind>> {
|
|
37
37
|
readonly name: GenericName;
|
|
38
38
|
"new"<GenericNewProperties extends GenericProperties>(properties: GenericNewProperties): (Entity<GenericName> & GenericNewProperties);
|
|
39
39
|
decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<EntityMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>) => (DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"async-error", undefined> | DEither.Left<"map-error", DDataStructure.Error>);
|
|
@@ -42,5 +42,12 @@ export interface EntityStructure<GenericName extends string = string, GenericPro
|
|
|
42
42
|
asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<EntityMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>) => Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
|
|
43
43
|
asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<EntityMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>): Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
|
|
44
44
|
asyncMap(data: EntityMap<DKind.Remove<DDataStructure.StructureValue<this>>>): Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
|
|
45
|
+
encodeEntity<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.StructureValue<this>): Promise<DDataStructure.EncodedValue<EntityMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>>;
|
|
46
|
+
}
|
|
47
|
+
declare const EncodeEntityError_base: DKind.KindClass<DKind.Handler<DKind.Definition<"@DuplojsLangModeling/encode-entity-error", unknown>>, ErrorConstructor>;
|
|
48
|
+
export declare class EncodeEntityError extends EncodeEntityError_base {
|
|
49
|
+
error: DDataStructure.Error;
|
|
50
|
+
constructor(error: DDataStructure.Error);
|
|
45
51
|
}
|
|
46
52
|
export declare const EntityStructure: <GenericName extends string, GenericShape extends DDataStructure.ShapeObjectStructure, const GenericProperties extends DDataStructure.ShapeObjectStructureValue<GenericShape>>(name: GenericName, shape: () => GenericShape) => EntityStructure<GenericName, GenericProperties>;
|
|
53
|
+
export {};
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { parentClass } from "../../kind/parentClass.mjs";
|
|
1
2
|
import { isSimple } from "../../object/isSimple.mjs";
|
|
2
3
|
import { left } from "../../either/left/create.mjs";
|
|
4
|
+
import { isLeft } from "../../either/left/is.mjs";
|
|
3
5
|
import { right } from "../../either/right/create.mjs";
|
|
6
|
+
import { unwrapLeft } from "../../either/left/unwrap.mjs";
|
|
7
|
+
import { unwrapRight } from "../../either/right/unwrap.mjs";
|
|
4
8
|
import { justExec } from "../../common/justExec.mjs";
|
|
5
9
|
import { memo } from "../../common/memo.mjs";
|
|
6
10
|
import { ErrorSymbol } from "../../dataStructure/common/resultSymbol.mjs";
|
|
@@ -12,6 +16,13 @@ import { createKind } from "../kind.mjs";
|
|
|
12
16
|
//#region scripts/modeling/entity/base.ts
|
|
13
17
|
const entityKind = createKind("entity");
|
|
14
18
|
const entityStructureKind = createKind("entity-structure");
|
|
19
|
+
var EncodeEntityError = class extends parentClass(createKind("encode-entity-error"), Error) {
|
|
20
|
+
error;
|
|
21
|
+
constructor(error) {
|
|
22
|
+
super(void 0, "An error occurred while encoding an Entity. This can only happen if you are bypassing the type system.");
|
|
23
|
+
this.error = error;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
15
26
|
const EntityStructure = createStructure(entityStructureKind, ({ init }) => (name, shape) => init({
|
|
16
27
|
inner: memo(() => ObjectStructure({
|
|
17
28
|
...shape(),
|
|
@@ -71,7 +82,7 @@ const EntityStructure = createStructure(entityStructureKind, ({ init }) => (name
|
|
|
71
82
|
return right("map-success", result);
|
|
72
83
|
});
|
|
73
84
|
},
|
|
74
|
-
asyncMap: (self, data) =>
|
|
85
|
+
asyncMap: async (self, data) => {
|
|
75
86
|
const errorHandler = createGetErrorHandler();
|
|
76
87
|
const formattedData = isSimple(data) ? {
|
|
77
88
|
...data,
|
|
@@ -79,7 +90,12 @@ const EntityStructure = createStructure(entityStructureKind, ({ init }) => (name
|
|
|
79
90
|
} : data;
|
|
80
91
|
if (await self.executeCheck(formattedData, errorHandler) === ErrorSymbol) return left("map-error", errorHandler().createError());
|
|
81
92
|
return right("map-success", formattedData);
|
|
82
|
-
}
|
|
93
|
+
},
|
|
94
|
+
encodeEntity: async (self, codecs, data) => {
|
|
95
|
+
const result = await self.asyncEncode(codecs, data);
|
|
96
|
+
if (isLeft(result)) throw new EncodeEntityError(unwrapLeft(result));
|
|
97
|
+
return unwrapRight(result);
|
|
98
|
+
}
|
|
83
99
|
}));
|
|
84
100
|
//#endregion
|
|
85
|
-
export { EntityStructure, entityKind, entityStructureKind };
|
|
101
|
+
export { EncodeEntityError, EntityStructure, entityKind, entityStructureKind };
|
|
@@ -9,7 +9,7 @@ function createEntityNamespace(entityName) {
|
|
|
9
9
|
name: entityName,
|
|
10
10
|
createNewType: (name, structure, newTypeConstraints = []) => require_helper$1.createNewType(`${entityName}${name}`, structure, newTypeConstraints),
|
|
11
11
|
createEntity: (shape) => require_helper.createEntity(entityName, shape),
|
|
12
|
-
createFlag: (
|
|
12
|
+
createFlag: (name) => require_base.createFlag(`${entityName}${name}`),
|
|
13
13
|
[namespaceKind.runTimeKey]: null
|
|
14
14
|
};
|
|
15
15
|
}
|
|
@@ -10,6 +10,6 @@ export interface EntityNamespace<GenericEntityName extends Capitalize<string> =
|
|
|
10
10
|
readonly name: GenericEntityName;
|
|
11
11
|
createNewType<GenericName extends Capitalize<string>, GenericStructure extends DDataStructure.Structure, const GenericNewTypeConstraint extends readonly DDataStructure.Constraint<DDataStructure.StructureValue<GenericStructure>>[] = readonly []>(name: (GenericName & DCommon.NeverCoalescing<ForbiddenTopLevelNewType<DDataStructure.StructureValue<GenericStructure>>, unknown>), structure: GenericStructure, newTypeConstraints?: GenericNewTypeConstraint): NewTypeStructure<`${GenericEntityName}${GenericName}`, DDataStructure.StructureValue<GenericStructure>, GenericNewTypeConstraint>;
|
|
12
12
|
createEntity<GenericShape extends DDataStructure.ShapeObjectStructure>(shape: () => (GenericShape & DCommon.NeverCoalescing<ForbiddenMissingNewTypeInEntityShape<DDataStructure.ShapeObjectStructureValue<GenericShape>>, unknown>)): EntityStructure<GenericEntityName, DDataStructure.ShapeObjectStructureValue<GenericShape>>;
|
|
13
|
-
createFlag<
|
|
13
|
+
createFlag<GenericName extends Capitalize<string>, GenericEntityStructure extends EntityStructure<GenericEntityName>, GenericPayload extends unknown = {}>(name: DCommon.IsEqual<GenericName, Capitalize<string>> extends true ? never : NoInfer<GenericName>): FlagHandler<`${GenericEntityName}${GenericName}`, DDataStructure.StructureValue<GenericEntityStructure>, GenericPayload>;
|
|
14
14
|
}
|
|
15
15
|
export declare function createEntityNamespace<GenericName extends Capitalize<string>>(entityName: GenericName): EntityNamespace<GenericName>;
|
|
@@ -9,7 +9,7 @@ function createEntityNamespace(entityName) {
|
|
|
9
9
|
name: entityName,
|
|
10
10
|
createNewType: (name, structure, newTypeConstraints = []) => createNewType(`${entityName}${name}`, structure, newTypeConstraints),
|
|
11
11
|
createEntity: (shape) => createEntity(entityName, shape),
|
|
12
|
-
createFlag: (
|
|
12
|
+
createFlag: (name) => createFlag(`${entityName}${name}`),
|
|
13
13
|
[namespaceKind.runTimeKey]: null
|
|
14
14
|
};
|
|
15
15
|
}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
const require_type = require("../../dataStructure/structure/defaults/type.cjs");
|
|
2
|
-
const require_null = require("../../dataStructure/type/defaults/null.cjs");
|
|
3
1
|
const require_kind = require("../kind.cjs");
|
|
4
2
|
//#region scripts/modeling/flag/base.ts
|
|
5
3
|
const flagKind = require_kind.createKind("flag");
|
|
6
4
|
const flagHandlerKind = require_kind.createKind("flag-handler");
|
|
7
|
-
function createFlag(
|
|
5
|
+
function createFlag(name) {
|
|
8
6
|
function append(...args) {
|
|
9
7
|
if (args.length === 1) {
|
|
10
8
|
const [value] = args;
|
|
@@ -19,8 +17,6 @@ function createFlag(entityStructure, name, valueStructure = require_type.TypeStr
|
|
|
19
17
|
}
|
|
20
18
|
return {
|
|
21
19
|
name,
|
|
22
|
-
entityStructure,
|
|
23
|
-
valueStructure,
|
|
24
20
|
append,
|
|
25
21
|
getValue(entity) {
|
|
26
22
|
return flagKind.getValue(entity)[name];
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import { EntityStructure, Entity
|
|
1
|
+
import { EntityStructure, Entity } from '../entity';
|
|
2
|
+
import type * as DCommon from '../../common';
|
|
2
3
|
import type * as DKind from '../../kind';
|
|
3
|
-
import * as DDataStructure from '../../dataStructure';
|
|
4
|
+
import type * as DDataStructure from '../../dataStructure';
|
|
4
5
|
export declare const flagKind: DKind.Handler<DKind.Definition<"@DuplojsLangModeling/flag", Record<string, unknown>>>;
|
|
5
6
|
export interface Flag<GenericName extends string = string, GenericValue extends unknown = never> extends DKind.Kind<typeof flagKind, Record<GenericName, GenericValue>> {
|
|
6
7
|
}
|
|
7
8
|
declare const flagHandlerKind: DKind.Handler<DKind.Definition<"@DuplojsLangModeling/flag-handler", unknown>>;
|
|
8
|
-
export interface FlagHandler<
|
|
9
|
+
export interface FlagHandler<GenericName extends string = string, GenericEntity extends Entity = Entity, GenericValue extends unknown = unknown> extends DKind.Kind<typeof flagHandlerKind> {
|
|
9
10
|
readonly name: GenericName;
|
|
10
|
-
readonly entityStructure: EntityStructure<GetEntityName<GenericEntity>, Omit<GenericEntity, DKind.KeySymbol>>;
|
|
11
|
-
readonly valueStructure: DDataStructure.Structure<GenericValue>;
|
|
12
11
|
append<GenericInputEntity extends GenericEntity, const GenericInputValue extends GenericValue>(value: GenericInputValue): (entity: GenericInputEntity) => (GenericInputEntity & Flag<GenericName, GenericInputValue>);
|
|
13
12
|
append<GenericInputEntity extends GenericEntity, const GenericInputValue extends GenericValue>(entity: GenericInputEntity, value: GenericInputValue): (GenericInputEntity & Flag<GenericName, GenericInputValue>);
|
|
14
13
|
getValue<GenericInputEntity extends GenericEntity & Flag<GenericName, GenericValue>>(entity: GenericInputEntity): DKind.GetValue<typeof flagKind, GenericInputEntity>[GenericName];
|
|
15
14
|
has<GenericInputEntity extends GenericEntity>(entity: GenericInputEntity): entity is Extract<GenericInputEntity, Flag<GenericName, any>>;
|
|
16
15
|
}
|
|
17
|
-
export declare function createFlag<
|
|
18
|
-
export type GetFlag<GenericHandler extends FlagHandler<any, any, any>> = GenericHandler extends FlagHandler<
|
|
16
|
+
export declare function createFlag<GenericName extends Capitalize<string>, GenericEntityStructure extends EntityStructure, GenericPayload extends unknown = {}>(name: DCommon.IsEqual<GenericName, Capitalize<string>> extends true ? never : NoInfer<GenericName>): FlagHandler<GenericName, DDataStructure.StructureValue<GenericEntityStructure>, GenericPayload>;
|
|
17
|
+
export type GetFlag<GenericHandler extends FlagHandler<any, any, any>> = GenericHandler extends FlagHandler<infer InferredName, any, infer InferredValue> ? Flag<InferredName, InferredValue> : never;
|
|
19
18
|
export {};
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { TypeStructure } from "../../dataStructure/structure/defaults/type.mjs";
|
|
2
|
-
import { NullType } from "../../dataStructure/type/defaults/null.mjs";
|
|
3
1
|
import { createKind } from "../kind.mjs";
|
|
4
2
|
//#region scripts/modeling/flag/base.ts
|
|
5
3
|
const flagKind = createKind("flag");
|
|
6
4
|
const flagHandlerKind = createKind("flag-handler");
|
|
7
|
-
function createFlag(
|
|
5
|
+
function createFlag(name) {
|
|
8
6
|
function append(...args) {
|
|
9
7
|
if (args.length === 1) {
|
|
10
8
|
const [value] = args;
|
|
@@ -19,8 +17,6 @@ function createFlag(entityStructure, name, valueStructure = TypeStructure(NullTy
|
|
|
19
17
|
}
|
|
20
18
|
return {
|
|
21
19
|
name,
|
|
22
|
-
entityStructure,
|
|
23
|
-
valueStructure,
|
|
24
20
|
append,
|
|
25
21
|
getValue(entity) {
|
|
26
22
|
return flagKind.getValue(entity)[name];
|
package/dist/modeling/index.cjs
CHANGED
|
@@ -10,6 +10,9 @@ const require_base$3 = require("./taggedObject/base.cjs");
|
|
|
10
10
|
const require_helper$2 = require("./taggedObject/helper.cjs");
|
|
11
11
|
//#region scripts/modeling/index.ts
|
|
12
12
|
var modeling_exports = /* @__PURE__ */ require_runtime.__exportAll({
|
|
13
|
+
EncodeEntityError: () => require_base.EncodeEntityError,
|
|
14
|
+
EncodeNewTypeError: () => require_base$1.EncodeNewTypeError,
|
|
15
|
+
EncodeTaggedObjectError: () => require_base$3.EncodeTaggedObjectError,
|
|
13
16
|
EntityStructure: () => require_base.EntityStructure,
|
|
14
17
|
NewTypeStructure: () => require_base$1.NewTypeStructure,
|
|
15
18
|
TaggedObjectStructure: () => require_base$3.TaggedObjectStructure,
|
|
@@ -31,6 +34,9 @@ var modeling_exports = /* @__PURE__ */ require_runtime.__exportAll({
|
|
|
31
34
|
taggedObjectStructureKind: () => require_base$3.taggedObjectStructureKind
|
|
32
35
|
});
|
|
33
36
|
//#endregion
|
|
37
|
+
exports.EncodeEntityError = require_base.EncodeEntityError;
|
|
38
|
+
exports.EncodeNewTypeError = require_base$1.EncodeNewTypeError;
|
|
39
|
+
exports.EncodeTaggedObjectError = require_base$3.EncodeTaggedObjectError;
|
|
34
40
|
exports.EntityStructure = require_base.EntityStructure;
|
|
35
41
|
exports.NewTypeStructure = require_base$1.NewTypeStructure;
|
|
36
42
|
exports.TaggedObjectStructure = require_base$3.TaggedObjectStructure;
|
package/dist/modeling/index.mjs
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { __exportAll } from "../_virtual/_rolldown/runtime.mjs";
|
|
2
2
|
import { createKind } from "./kind.mjs";
|
|
3
|
-
import { EntityStructure, entityKind, entityStructureKind } from "./entity/base.mjs";
|
|
3
|
+
import { EncodeEntityError, EntityStructure, entityKind, entityStructureKind } from "./entity/base.mjs";
|
|
4
4
|
import { createEntity } from "./entity/helper.mjs";
|
|
5
|
-
import { NewTypeStructure, newTypeStructureKind } from "./newType/base.mjs";
|
|
5
|
+
import { EncodeNewTypeError, NewTypeStructure, newTypeStructureKind } from "./newType/base.mjs";
|
|
6
6
|
import { createNewType } from "./newType/helper.mjs";
|
|
7
7
|
import { createFlag, flagKind } from "./flag/base.mjs";
|
|
8
8
|
import { createEntityNamespace, namespaceKind } from "./entity/namespace.mjs";
|
|
9
|
-
import { TaggedObjectStructure, objectTagKind, taggedObjectStructureKind } from "./taggedObject/base.mjs";
|
|
9
|
+
import { EncodeTaggedObjectError, TaggedObjectStructure, objectTagKind, taggedObjectStructureKind } from "./taggedObject/base.mjs";
|
|
10
10
|
import { createTaggedObject, getTagValue, hasTagValue, taggedObject } from "./taggedObject/helper.mjs";
|
|
11
11
|
//#region scripts/modeling/index.ts
|
|
12
12
|
var modeling_exports = /* @__PURE__ */ __exportAll({
|
|
13
|
+
EncodeEntityError: () => EncodeEntityError,
|
|
14
|
+
EncodeNewTypeError: () => EncodeNewTypeError,
|
|
15
|
+
EncodeTaggedObjectError: () => EncodeTaggedObjectError,
|
|
13
16
|
EntityStructure: () => EntityStructure,
|
|
14
17
|
NewTypeStructure: () => NewTypeStructure,
|
|
15
18
|
TaggedObjectStructure: () => TaggedObjectStructure,
|
|
@@ -31,4 +34,4 @@ var modeling_exports = /* @__PURE__ */ __exportAll({
|
|
|
31
34
|
taggedObjectStructureKind: () => taggedObjectStructureKind
|
|
32
35
|
});
|
|
33
36
|
//#endregion
|
|
34
|
-
export { EntityStructure, NewTypeStructure, TaggedObjectStructure, createEntity, createEntityNamespace, createFlag, createKind, createNewType, createTaggedObject, entityKind, entityStructureKind, flagKind, getTagValue, hasTagValue, modeling_exports, namespaceKind, newTypeStructureKind, objectTagKind, taggedObject, taggedObjectStructureKind };
|
|
37
|
+
export { EncodeEntityError, EncodeNewTypeError, EncodeTaggedObjectError, EntityStructure, NewTypeStructure, TaggedObjectStructure, createEntity, createEntityNamespace, createFlag, createKind, createNewType, createTaggedObject, entityKind, entityStructureKind, flagKind, getTagValue, hasTagValue, modeling_exports, namespaceKind, newTypeStructureKind, objectTagKind, taggedObject, taggedObjectStructureKind };
|
|
@@ -1,12 +1,24 @@
|
|
|
1
|
+
const require_parentClass = require("../../kind/parentClass.cjs");
|
|
1
2
|
const require_callThen = require("../../common/callThen.cjs");
|
|
2
3
|
const require_create = require("../../either/left/create.cjs");
|
|
4
|
+
const require_is = require("../../either/left/is.cjs");
|
|
3
5
|
const require_create$1 = require("../../either/right/create.cjs");
|
|
6
|
+
const require_unwrap = require("../../either/left/unwrap.cjs");
|
|
7
|
+
const require_unwrap$1 = require("../../either/right/unwrap.cjs");
|
|
4
8
|
const require_justExec = require("../../common/justExec.cjs");
|
|
5
9
|
const require_resultSymbol = require("../../dataStructure/common/resultSymbol.cjs");
|
|
6
10
|
const require_error = require("../../dataStructure/common/error.cjs");
|
|
7
11
|
const require_base = require("../../dataStructure/structure/base.cjs");
|
|
12
|
+
const require_kind = require("../kind.cjs");
|
|
8
13
|
//#region scripts/modeling/newType/base.ts
|
|
9
|
-
const newTypeStructureKind =
|
|
14
|
+
const newTypeStructureKind = require_kind.createKind("new-type-structure");
|
|
15
|
+
var EncodeNewTypeError = class extends require_parentClass.parentClass(require_kind.createKind("encode-new-type-error"), Error) {
|
|
16
|
+
error;
|
|
17
|
+
constructor(error) {
|
|
18
|
+
super(void 0, "An error occurred while encoding a NewType. This can only happen if you are bypassing the type system.");
|
|
19
|
+
this.error = error;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
10
22
|
function executeNewTypeConstraints(structure, data, errorHandler) {
|
|
11
23
|
return structure.definition.newTypeConstraints.reduce((accumulator, constraint) => require_callThen.callThen(accumulator, (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(constraint.executeCheck(data), (constraintResult) => constraintResult === require_resultSymbol.ErrorSymbol ? errorHandler?.().addIssue(structure, data, constraint) ?? require_resultSymbol.ErrorSymbol : require_resultSymbol.SuccessSymbol)), require_resultSymbol.SuccessSymbol);
|
|
12
24
|
}
|
|
@@ -53,12 +65,18 @@ const NewTypeStructure = require_base.createStructure(newTypeStructureKind, ({ i
|
|
|
53
65
|
return require_create$1.right("map-success", result);
|
|
54
66
|
});
|
|
55
67
|
},
|
|
56
|
-
asyncMap: (self, data) =>
|
|
68
|
+
asyncMap: async (self, data) => {
|
|
57
69
|
const errorHandler = require_error.createGetErrorHandler();
|
|
58
70
|
if (await self.executeCheck(data, errorHandler) === require_resultSymbol.ErrorSymbol) return require_create.left("map-error", errorHandler().createError());
|
|
59
71
|
return require_create$1.right("map-success", data);
|
|
60
|
-
}
|
|
72
|
+
},
|
|
73
|
+
encodeNewType: async (self, codec, data) => {
|
|
74
|
+
const result = await self.asyncEncode(codec, data);
|
|
75
|
+
if (require_is.isLeft(result)) throw new EncodeNewTypeError(require_unwrap.unwrapLeft(result));
|
|
76
|
+
return require_unwrap$1.unwrapRight(result);
|
|
77
|
+
}
|
|
61
78
|
}));
|
|
62
79
|
//#endregion
|
|
80
|
+
exports.EncodeNewTypeError = EncodeNewTypeError;
|
|
63
81
|
exports.NewTypeStructure = NewTypeStructure;
|
|
64
82
|
exports.newTypeStructureKind = newTypeStructureKind;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as DKind from '../../kind';
|
|
2
2
|
import * as DCommon from '../../common';
|
|
3
3
|
import type * as DArray from '../../array';
|
|
4
4
|
import * as DEither from '../../either';
|
|
@@ -25,7 +25,7 @@ export interface NewTypeStructureDefinition<GenericNewTypeConstraint extends rea
|
|
|
25
25
|
readonly newTypeConstraints: GenericNewTypeConstraint;
|
|
26
26
|
}
|
|
27
27
|
export type ComputeNewType<GenericName extends string, GenericValue extends unknown, GenericNewTypeConstraint extends readonly DDataStructure.Constraint<GenericValue>[], GenericIntersectionConstraintValue = DDataStructure.ConstraintValue<DArray.Unwrap<GenericNewTypeConstraint>>, GenericClearValue = DCommon.NeverCoalescing<DCommon.RemoveConstraint<GenericIntersectionConstraintValue>, unknown>> = (GenericValue & GenericClearValue & NewType<GenericName, GenericIntersectionConstraintValue extends (GenericClearValue & infer InferredConstraint extends DCommon.BaseConstraint) ? InferredConstraint : never>);
|
|
28
|
-
export interface NewTypeStructure<GenericName extends string = string, GenericValue extends unknown = unknown, GenericNewTypeConstraint extends readonly DDataStructure.Constraint<GenericValue>[] = readonly DDataStructure.Constraint<GenericValue>[]> extends DCommon.Forward<DDataStructure.Structure<ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>, NewTypeStructureDefinition<GenericNewTypeConstraint>> & DKind.Kind<typeof newTypeStructureKind>> {
|
|
28
|
+
export interface NewTypeStructure<out GenericName extends string = string, out GenericValue extends unknown = unknown, out GenericNewTypeConstraint extends readonly DDataStructure.Constraint<GenericValue>[] = readonly DDataStructure.Constraint<GenericValue>[]> extends DCommon.Forward<DDataStructure.Structure<ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>, NewTypeStructureDefinition<GenericNewTypeConstraint>> & DKind.Kind<typeof newTypeStructureKind>> {
|
|
29
29
|
readonly name: GenericName;
|
|
30
30
|
decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<NewTypeMap<DDataStructure.StructureValue<this>>, GenericCodecs>) => (DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"async-error", undefined> | DEither.Left<"map-error", DDataStructure.Error>);
|
|
31
31
|
decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<NewTypeMap<DDataStructure.StructureValue<this>>, GenericCodecs>): (DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"async-error", undefined> | DEither.Left<"map-error", DDataStructure.Error>);
|
|
@@ -33,5 +33,12 @@ export interface NewTypeStructure<GenericName extends string = string, GenericVa
|
|
|
33
33
|
asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<NewTypeMap<DDataStructure.StructureValue<this>>, GenericCodecs>) => Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
|
|
34
34
|
asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<NewTypeMap<DDataStructure.StructureValue<this>>, GenericCodecs>): Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
|
|
35
35
|
asyncMap(data: NewTypeMap<DDataStructure.StructureValue<this>>): Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
|
|
36
|
+
encodeNewType<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.StructureValue<this>): Promise<DDataStructure.EncodedValue<NewTypeMap<DDataStructure.StructureValue<this>>, GenericCodecs>>;
|
|
37
|
+
}
|
|
38
|
+
declare const EncodeNewTypeError_base: DKind.KindClass<DKind.Handler<DKind.Definition<"@DuplojsLangModeling/encode-new-type-error", unknown>>, ErrorConstructor>;
|
|
39
|
+
export declare class EncodeNewTypeError extends EncodeNewTypeError_base {
|
|
40
|
+
error: DDataStructure.Error;
|
|
41
|
+
constructor(error: DDataStructure.Error);
|
|
36
42
|
}
|
|
37
43
|
export declare const NewTypeStructure: <GenericName extends string, GenericStructure extends DDataStructure.Structure, const GenericNewTypeConstraint extends readonly DDataStructure.Constraint<DDataStructure.StructureValue<GenericStructure>>[]>(name: GenericName, structure: GenericStructure, newTypeConstraints: GenericNewTypeConstraint) => NewTypeStructure<GenericName, DDataStructure.StructureValue<GenericStructure>, GenericNewTypeConstraint>;
|
|
44
|
+
export {};
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { parentClass } from "../../kind/parentClass.mjs";
|
|
1
2
|
import { callThen } from "../../common/callThen.mjs";
|
|
2
3
|
import { left } from "../../either/left/create.mjs";
|
|
4
|
+
import { isLeft } from "../../either/left/is.mjs";
|
|
3
5
|
import { right } from "../../either/right/create.mjs";
|
|
6
|
+
import { unwrapLeft } from "../../either/left/unwrap.mjs";
|
|
7
|
+
import { unwrapRight } from "../../either/right/unwrap.mjs";
|
|
4
8
|
import { justExec } from "../../common/justExec.mjs";
|
|
5
9
|
import { ErrorSymbol, SuccessSymbol } from "../../dataStructure/common/resultSymbol.mjs";
|
|
6
10
|
import { createGetErrorHandler } from "../../dataStructure/common/error.mjs";
|
|
@@ -8,6 +12,13 @@ import { createStructure } from "../../dataStructure/structure/base.mjs";
|
|
|
8
12
|
import { createKind } from "../kind.mjs";
|
|
9
13
|
//#region scripts/modeling/newType/base.ts
|
|
10
14
|
const newTypeStructureKind = createKind("new-type-structure");
|
|
15
|
+
var EncodeNewTypeError = class extends parentClass(createKind("encode-new-type-error"), Error) {
|
|
16
|
+
error;
|
|
17
|
+
constructor(error) {
|
|
18
|
+
super(void 0, "An error occurred while encoding a NewType. This can only happen if you are bypassing the type system.");
|
|
19
|
+
this.error = error;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
11
22
|
function executeNewTypeConstraints(structure, data, errorHandler) {
|
|
12
23
|
return structure.definition.newTypeConstraints.reduce((accumulator, constraint) => callThen(accumulator, (result) => result === ErrorSymbol ? ErrorSymbol : callThen(constraint.executeCheck(data), (constraintResult) => constraintResult === ErrorSymbol ? errorHandler?.().addIssue(structure, data, constraint) ?? ErrorSymbol : SuccessSymbol)), SuccessSymbol);
|
|
13
24
|
}
|
|
@@ -54,11 +65,16 @@ const NewTypeStructure = createStructure(newTypeStructureKind, ({ init }) => (na
|
|
|
54
65
|
return right("map-success", result);
|
|
55
66
|
});
|
|
56
67
|
},
|
|
57
|
-
asyncMap: (self, data) =>
|
|
68
|
+
asyncMap: async (self, data) => {
|
|
58
69
|
const errorHandler = createGetErrorHandler();
|
|
59
70
|
if (await self.executeCheck(data, errorHandler) === ErrorSymbol) return left("map-error", errorHandler().createError());
|
|
60
71
|
return right("map-success", data);
|
|
61
|
-
}
|
|
72
|
+
},
|
|
73
|
+
encodeNewType: async (self, codec, data) => {
|
|
74
|
+
const result = await self.asyncEncode(codec, data);
|
|
75
|
+
if (isLeft(result)) throw new EncodeNewTypeError(unwrapLeft(result));
|
|
76
|
+
return unwrapRight(result);
|
|
77
|
+
}
|
|
62
78
|
}));
|
|
63
79
|
//#endregion
|
|
64
|
-
export { NewTypeStructure, newTypeStructureKind };
|
|
80
|
+
export { EncodeNewTypeError, NewTypeStructure, newTypeStructureKind };
|