@duplojs/lang 0.0.1-beta.7 → 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.
Files changed (146) hide show
  1. package/dist/chrono/createDate.cjs +9 -9
  2. package/dist/chrono/createDate.d.ts +3 -3
  3. package/dist/chrono/createDate.mjs +9 -9
  4. package/dist/chrono/createTime.cjs +24 -13
  5. package/dist/chrono/createTime.mjs +24 -13
  6. package/dist/chrono/theDate.cjs +15 -16
  7. package/dist/chrono/theDate.d.ts +15 -15
  8. package/dist/chrono/theDate.mjs +15 -16
  9. package/dist/chrono/theTime.cjs +0 -1
  10. package/dist/chrono/theTime.mjs +0 -1
  11. package/dist/chrono/types/spoolingTime.d.ts +2 -1
  12. package/dist/common/constraint/cast/index.d.ts +3 -3
  13. package/dist/common/constraint/cast/string.d.ts +4 -0
  14. package/dist/common/constraint/infer/string.d.ts +2 -0
  15. package/dist/common/isType.d.ts +3 -2
  16. package/dist/common/types/index.d.ts +1 -0
  17. package/dist/common/types/isObject.d.ts +8 -0
  18. package/dist/dataStructure/common/{codec.cjs → codec/base.cjs} +7 -7
  19. package/dist/dataStructure/common/{codec.d.ts → codec/base.d.ts} +6 -6
  20. package/dist/dataStructure/common/codec/base.mjs +26 -0
  21. package/dist/dataStructure/common/codec/defaults/index.d.ts +2 -0
  22. package/dist/dataStructure/common/codec/defaults/json.cjs +26 -0
  23. package/dist/dataStructure/common/codec/defaults/json.d.ts +6 -0
  24. package/dist/dataStructure/common/codec/defaults/json.mjs +26 -0
  25. package/dist/dataStructure/common/codec/defaults/string.cjs +44 -0
  26. package/dist/dataStructure/common/codec/defaults/string.d.ts +11 -0
  27. package/dist/dataStructure/common/codec/defaults/string.mjs +44 -0
  28. package/dist/dataStructure/common/codec/index.d.ts +2 -0
  29. package/dist/dataStructure/common/error.cjs +4 -2
  30. package/dist/dataStructure/common/error.d.ts +4 -2
  31. package/dist/dataStructure/common/error.mjs +4 -2
  32. package/dist/dataStructure/common/errorInterpreter.cjs +6 -6
  33. package/dist/dataStructure/common/errorInterpreter.d.ts +7 -3
  34. package/dist/dataStructure/common/errorInterpreter.mjs +6 -6
  35. package/dist/dataStructure/constraint/defaults/allowedCharacters.d.ts +1 -3
  36. package/dist/dataStructure/constraint/defaults/index.d.ts +1 -0
  37. package/dist/dataStructure/constraint/defaults/numberInString.cjs +13 -0
  38. package/dist/dataStructure/constraint/defaults/numberInString.d.ts +10 -0
  39. package/dist/dataStructure/constraint/defaults/numberInString.mjs +12 -0
  40. package/dist/dataStructure/constraint/types/constraints.d.ts +1 -0
  41. package/dist/dataStructure/helpers/index.d.ts +6 -2
  42. package/dist/dataStructure/helpers/isNullable.cjs +12 -0
  43. package/dist/dataStructure/helpers/isNullable.d.ts +2 -0
  44. package/dist/dataStructure/helpers/isNullable.mjs +12 -0
  45. package/dist/dataStructure/helpers/isOptional.cjs +12 -0
  46. package/dist/dataStructure/helpers/isOptional.d.ts +2 -0
  47. package/dist/dataStructure/helpers/isOptional.mjs +12 -0
  48. package/dist/dataStructure/helpers/numberInString.cjs +7 -0
  49. package/dist/dataStructure/helpers/numberInString.d.ts +2 -0
  50. package/dist/dataStructure/helpers/numberInString.mjs +7 -0
  51. package/dist/dataStructure/helpers/unwrapLazy.cjs +9 -0
  52. package/dist/dataStructure/helpers/unwrapLazy.d.ts +2 -0
  53. package/dist/dataStructure/helpers/unwrapLazy.mjs +9 -0
  54. package/dist/dataStructure/index.cjs +75 -52
  55. package/dist/dataStructure/index.mjs +29 -14
  56. package/dist/dataStructure/structure/base.d.ts +1 -1
  57. package/dist/dataStructure/structure/defaults/array.d.ts +1 -1
  58. package/dist/dataStructure/structure/defaults/lazy.d.ts +1 -1
  59. package/dist/dataStructure/structure/defaults/object.d.ts +1 -1
  60. package/dist/dataStructure/structure/defaults/record.d.ts +1 -1
  61. package/dist/dataStructure/structure/defaults/type.d.ts +1 -1
  62. package/dist/dataStructure/structure/defaults/union.d.ts +1 -1
  63. package/dist/either/index.cjs +30 -8
  64. package/dist/either/index.d.ts +4 -0
  65. package/dist/either/index.mjs +23 -9
  66. package/dist/either/left/index.d.ts +3 -2
  67. package/dist/either/left/none.cjs +15 -0
  68. package/dist/either/left/none.d.ts +7 -0
  69. package/dist/either/left/none.mjs +14 -0
  70. package/dist/either/matchInformationOtherwise.d.ts +1 -1
  71. package/dist/either/rewriteInformation.cjs +22 -0
  72. package/dist/either/rewriteInformation.d.ts +14 -0
  73. package/dist/either/rewriteInformation.mjs +22 -0
  74. package/dist/either/right/asyncGroup.cjs +2 -2
  75. package/dist/either/right/asyncGroup.mjs +2 -2
  76. package/dist/either/right/group.cjs +1 -1
  77. package/dist/either/right/group.mjs +1 -1
  78. package/dist/either/right/index.d.ts +6 -5
  79. package/dist/either/right/some.cjs +15 -0
  80. package/dist/either/right/some.d.ts +7 -0
  81. package/dist/either/right/some.mjs +14 -0
  82. package/dist/either/toMaybe.cjs +12 -0
  83. package/dist/either/toMaybe.d.ts +5 -0
  84. package/dist/either/toMaybe.mjs +12 -0
  85. package/dist/either/types/mayBe.d.ts +3 -0
  86. package/dist/either/unwrapOr.cjs +14 -0
  87. package/dist/either/unwrapOr.d.ts +8 -0
  88. package/dist/either/unwrapOr.mjs +14 -0
  89. package/dist/either/unwrapOtherwise.cjs +14 -0
  90. package/dist/either/unwrapOtherwise.d.ts +8 -0
  91. package/dist/either/unwrapOtherwise.mjs +14 -0
  92. package/dist/generator/reduce.cjs +2 -1
  93. package/dist/generator/reduce.mjs +1 -1
  94. package/dist/invocation/index.cjs +8 -8
  95. package/dist/invocation/index.d.ts +1 -1
  96. package/dist/invocation/index.mjs +6 -6
  97. package/dist/invocation/reader.cjs +26 -0
  98. package/dist/invocation/reader.d.ts +28 -0
  99. package/dist/invocation/reader.mjs +25 -0
  100. package/dist/modeling/entity/base.cjs +19 -2
  101. package/dist/modeling/entity/base.d.ts +9 -2
  102. package/dist/modeling/entity/base.mjs +19 -3
  103. package/dist/modeling/entity/namespace.cjs +1 -1
  104. package/dist/modeling/entity/namespace.d.ts +1 -1
  105. package/dist/modeling/entity/namespace.mjs +1 -1
  106. package/dist/modeling/flag/base.cjs +1 -5
  107. package/dist/modeling/flag/base.d.ts +6 -7
  108. package/dist/modeling/flag/base.mjs +1 -5
  109. package/dist/modeling/index.cjs +6 -0
  110. package/dist/modeling/index.mjs +7 -4
  111. package/dist/modeling/newType/base.cjs +21 -3
  112. package/dist/modeling/newType/base.d.ts +9 -2
  113. package/dist/modeling/newType/base.mjs +19 -3
  114. package/dist/modeling/taggedObject/base.cjs +19 -2
  115. package/dist/modeling/taggedObject/base.d.ts +9 -2
  116. package/dist/modeling/taggedObject/base.mjs +19 -3
  117. package/dist/number/types/isGreater.d.ts +5 -5
  118. package/dist/object/types/forbiddenUndefinedProps.d.ts +3 -0
  119. package/dist/object/types/index.d.ts +2 -1
  120. package/dist/object/types/split.d.ts +2 -2
  121. package/dist/pattern/matchWithNumber.d.ts +4 -4
  122. package/dist/pattern/matchWithNumberOtherwise.d.ts +4 -4
  123. package/dist/pattern/matchWithString.d.ts +4 -4
  124. package/dist/pattern/matchWithStringOtherwise.d.ts +4 -4
  125. package/dist/string/constraints/allowedCharacters.d.ts +3 -3
  126. package/dist/string/constraints/index.d.ts +2 -1
  127. package/dist/string/constraints/number.d.ts +4 -0
  128. package/dist/string/index.cjs +3 -0
  129. package/dist/string/index.d.ts +1 -0
  130. package/dist/string/index.mjs +3 -1
  131. package/dist/string/isComposedOf.cjs +0 -1
  132. package/dist/string/isComposedOf.d.ts +5 -8
  133. package/dist/string/isComposedOf.mjs +0 -1
  134. package/dist/string/isNumber.cjs +7 -0
  135. package/dist/string/isNumber.d.ts +5 -0
  136. package/dist/string/isNumber.mjs +7 -0
  137. package/dist/string/to.d.ts +9 -2
  138. package/dist/string/types/IsAllowedString.d.ts +3 -0
  139. package/dist/string/types/index.d.ts +5 -5
  140. package/dist/string/types/numberInString.d.ts +1 -0
  141. package/package.json +2 -2
  142. package/dist/dataStructure/common/codec.mjs +0 -26
  143. package/dist/invocation/useCase.cjs +0 -26
  144. package/dist/invocation/useCase.d.ts +0 -28
  145. package/dist/invocation/useCase.mjs +0 -25
  146. package/dist/string/types/number.d.ts +0 -1
@@ -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_resultSymbol = require("../../dataStructure/common/resultSymbol.cjs");
6
10
  const require_error = require("../../dataStructure/common/error.cjs");
@@ -11,6 +15,13 @@ const require_kind = require("../kind.cjs");
11
15
  //#region scripts/modeling/taggedObject/base.ts
12
16
  const objectTagKind = require_kind.createKind("object-tag");
13
17
  const taggedObjectStructureKind = require_kind.createKind("tagged-object-structure");
18
+ var EncodeTaggedObjectError = class extends require_parentClass.parentClass(require_kind.createKind("encode-tagged-object-error"), Error) {
19
+ error;
20
+ constructor(error) {
21
+ super(void 0, "An error occurred while encoding a TaggedObject. This can only happen if you are bypassing the type system.");
22
+ this.error = error;
23
+ }
24
+ };
14
25
  const TaggedObjectStructure = require_base.createStructure(taggedObjectStructureKind, ({ init }) => (name, shape) => init({
15
26
  inner: require_object.ObjectStructure({
16
27
  ...shape,
@@ -70,7 +81,7 @@ const TaggedObjectStructure = require_base.createStructure(taggedObjectStructure
70
81
  return require_create$1.right("map-success", result);
71
82
  });
72
83
  },
73
- asyncMap: (self, data) => require_justExec.justExec(async () => {
84
+ asyncMap: async (self, data) => {
74
85
  const errorHandler = require_error.createGetErrorHandler();
75
86
  const formattedData = require_isSimple.isSimple(data) ? {
76
87
  ...data,
@@ -78,9 +89,15 @@ const TaggedObjectStructure = require_base.createStructure(taggedObjectStructure
78
89
  } : data;
79
90
  if (await self.executeCheck(formattedData, errorHandler) === require_resultSymbol.ErrorSymbol) return require_create.left("map-error", errorHandler().createError());
80
91
  return require_create$1.right("map-success", formattedData);
81
- })
92
+ },
93
+ encodeTaggedObject: async (self, codecs, data) => {
94
+ const result = await self.asyncEncode(codecs, data);
95
+ if (require_is.isLeft(result)) throw new EncodeTaggedObjectError(require_unwrap.unwrapLeft(result));
96
+ return require_unwrap$1.unwrapRight(result);
97
+ }
82
98
  }));
83
99
  //#endregion
100
+ exports.EncodeTaggedObjectError = EncodeTaggedObjectError;
84
101
  exports.TaggedObjectStructure = TaggedObjectStructure;
85
102
  exports.objectTagKind = objectTagKind;
86
103
  exports.taggedObjectStructureKind = taggedObjectStructureKind;
@@ -1,5 +1,5 @@
1
1
  import { NewType, NewTypeMap } from '../newType';
2
- import type * as DKind from '../../kind';
2
+ import * as DKind from '../../kind';
3
3
  import * as DCommon from '../../common';
4
4
  import * as DEither from '../../either';
5
5
  import * as DDataStructure from '../../dataStructure';
@@ -36,7 +36,7 @@ export type TaggedObjectMap<GenericValue extends unknown, GenericRawValue = DCom
36
36
  ]> extends true ? {
37
37
  [Prop in keyof GenericRawValue]: TaggedObjectMap<GenericRawValue[Prop]>;
38
38
  } : GenericRawValue : GenericRawValue;
39
- export interface TaggedObjectStructure<GenericTaggedObject extends ObjectTag = ObjectTag> extends DCommon.Forward<DDataStructure.Structure<GenericTaggedObject, TaggedObjectStructureDefinition> & DKind.Kind<typeof taggedObjectStructureKind>> {
39
+ export interface TaggedObjectStructure<out GenericTaggedObject extends ObjectTag = ObjectTag> extends DCommon.Forward<DDataStructure.Structure<GenericTaggedObject, TaggedObjectStructureDefinition> & DKind.Kind<typeof taggedObjectStructureKind>> {
40
40
  readonly name: GetTagValue<GenericTaggedObject>;
41
41
  "new"(properties: DCommon.SimplifyTopLevel<DKind.Remove<GenericTaggedObject>>): GenericTaggedObject;
42
42
  decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<TaggedObjectMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>) => (DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"async-error", undefined> | DEither.Left<"map-error", DDataStructure.Error>);
@@ -45,5 +45,12 @@ export interface TaggedObjectStructure<GenericTaggedObject extends ObjectTag = O
45
45
  asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<TaggedObjectMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>) => Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
46
46
  asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<TaggedObjectMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>): Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
47
47
  asyncMap(data: TaggedObjectMap<DKind.Remove<DDataStructure.StructureValue<this>>>): Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
48
+ encodeTaggedObject<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.StructureValue<this>): Promise<DDataStructure.EncodedValue<TaggedObjectMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>>;
49
+ }
50
+ declare const EncodeTaggedObjectError_base: DKind.KindClass<DKind.Handler<DKind.Definition<"@DuplojsLangModeling/encode-tagged-object-error", unknown>>, ErrorConstructor>;
51
+ export declare class EncodeTaggedObjectError extends EncodeTaggedObjectError_base {
52
+ error: DDataStructure.Error;
53
+ constructor(error: DDataStructure.Error);
48
54
  }
49
55
  export declare const TaggedObjectStructure: <GenericTaggedObject extends ObjectTag, GenericName extends string = never, GenericShape extends DDataStructure.ShapeObjectStructure = never>(name: GetTagValue<GenericTaggedObject> | GenericName, shape: ShapeTaggedObjectStructure<GenericTaggedObject> | GenericShape) => TaggedObjectStructure<ObjectTag extends GenericTaggedObject ? (ObjectTag<GenericName> & DDataStructure.ShapeObjectStructureValue<GenericShape>) : GenericTaggedObject>;
56
+ 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 { ErrorSymbol } from "../../dataStructure/common/resultSymbol.mjs";
6
10
  import { createGetErrorHandler } from "../../dataStructure/common/error.mjs";
@@ -11,6 +15,13 @@ import { createKind } from "../kind.mjs";
11
15
  //#region scripts/modeling/taggedObject/base.ts
12
16
  const objectTagKind = createKind("object-tag");
13
17
  const taggedObjectStructureKind = createKind("tagged-object-structure");
18
+ var EncodeTaggedObjectError = class extends parentClass(createKind("encode-tagged-object-error"), Error) {
19
+ error;
20
+ constructor(error) {
21
+ super(void 0, "An error occurred while encoding a TaggedObject. This can only happen if you are bypassing the type system.");
22
+ this.error = error;
23
+ }
24
+ };
14
25
  const TaggedObjectStructure = createStructure(taggedObjectStructureKind, ({ init }) => (name, shape) => init({
15
26
  inner: ObjectStructure({
16
27
  ...shape,
@@ -70,7 +81,7 @@ const TaggedObjectStructure = createStructure(taggedObjectStructureKind, ({ init
70
81
  return right("map-success", result);
71
82
  });
72
83
  },
73
- asyncMap: (self, data) => justExec(async () => {
84
+ asyncMap: async (self, data) => {
74
85
  const errorHandler = createGetErrorHandler();
75
86
  const formattedData = isSimple(data) ? {
76
87
  ...data,
@@ -78,7 +89,12 @@ const TaggedObjectStructure = createStructure(taggedObjectStructureKind, ({ init
78
89
  } : data;
79
90
  if (await self.executeCheck(formattedData, errorHandler) === ErrorSymbol) return left("map-error", errorHandler().createError());
80
91
  return right("map-success", formattedData);
81
- })
92
+ },
93
+ encodeTaggedObject: async (self, codecs, data) => {
94
+ const result = await self.asyncEncode(codecs, data);
95
+ if (isLeft(result)) throw new EncodeTaggedObjectError(unwrapLeft(result));
96
+ return unwrapRight(result);
97
+ }
82
98
  }));
83
99
  //#endregion
84
- export { TaggedObjectStructure, objectTagKind, taggedObjectStructureKind };
100
+ export { EncodeTaggedObjectError, TaggedObjectStructure, objectTagKind, taggedObjectStructureKind };
@@ -25,13 +25,13 @@ type CheckIsGreater<GreaterSplitValue extends DCommon.AnyTuple<DString.Digit>, G
25
25
  infer InferredRestSplitValue extends DCommon.AnyTuple<DString.Digit>,
26
26
  infer InferredRestSplitReference extends DCommon.AnyTuple<FigureGreaterThanTableValue>
27
27
  ] ? CheckIsGreater<InferredRestSplitValue, InferredRestSplitReference> : never : false;
28
- type toStringDecimal<GenericValue extends number> = `${GenericValue}` extends `${DString.Number}.${DString.Number}` ? `${GenericValue}` : `${GenericValue}.0`;
28
+ type toStringDecimal<GenericValue extends number> = `${GenericValue}` extends `${DString.NumberInString}.${DString.NumberInString}` ? `${GenericValue}` : `${GenericValue}.0`;
29
29
  type PrepareValues<GenericValue extends number, GenericReference extends number> = readonly [
30
30
  toStringDecimal<GenericValue>,
31
31
  toStringDecimal<GenericReference>
32
32
  ] extends readonly [
33
- `${infer InferredValueInteger extends DString.Number}.${infer InferredValueDecimals extends DString.Number}`,
34
- `${infer InferredReferenceInteger extends DString.Number}.${infer InferredReferenceDecimals extends DString.Number}`
33
+ `${infer InferredValueInteger extends DString.NumberInString}.${infer InferredValueDecimals extends DString.NumberInString}`,
34
+ `${infer InferredReferenceInteger extends DString.NumberInString}.${infer InferredReferenceDecimals extends DString.NumberInString}`
35
35
  ] ? DCommon.And<[
36
36
  DCommon.IsEqual<InferredValueDecimals, "0">,
37
37
  DCommon.IsEqual<InferredReferenceDecimals, "0">
@@ -52,8 +52,8 @@ type PrepareValues<GenericValue extends number, GenericReference extends number>
52
52
  `${infer InferredResultReference}`
53
53
  ] ? readonly [`${InferredResultValue}`, `${InferredResultReference}`] : never : never : readonly [InferredValueInteger, InferredReferenceInteger] : never;
54
54
  type ComputeIsGreater<GenericValue extends number, GenericReference extends number> = PrepareValues<GenericValue, GenericReference> extends readonly [
55
- infer InferredValue extends DString.Number,
56
- infer InferredReference extends DString.Number
55
+ infer InferredValue extends DString.NumberInString,
56
+ infer InferredReference extends DString.NumberInString
57
57
  ] ? DCommon.And<[
58
58
  DString.Includes<InferredValue, "-">,
59
59
  DCommon.Not<DString.Includes<InferredReference, "-">>
@@ -0,0 +1,3 @@
1
+ import { GetPropsWithValueExtends } from './getPropsWithValueExtends';
2
+ import type * as DCommon from '../../common';
3
+ export type ForbiddenUndefinedProps<GenericObject extends object> = DCommon.IsNever<GetPropsWithValueExtends<GenericObject, undefined>> extends true ? unknown : DCommon.ComputedTypeError<"Having \"undefined\" values for properties is not allowed.">;
@@ -1,11 +1,12 @@
1
1
  export type * from './assignObjects';
2
- export type * from './everyCombination';
3
2
  export type * from './deepPartial';
4
3
  export type * from './deepReadonly';
5
4
  export type * from './deepRemoveReadonly';
6
5
  export type * from './deepRequired';
6
+ export type * from './everyCombination';
7
7
  export type * from './flatObject';
8
8
  export type * from './forbiddenKey';
9
+ export type * from './forbiddenUndefinedProps';
9
10
  export type * from './getPropsWithValue';
10
11
  export type * from './getPropsWithValueExtends';
11
12
  export type * from './partialKeys';
@@ -2,12 +2,12 @@ import type * as DCommon from '../../common';
2
2
  type CreateShape<GenericResult extends unknown, GenericProp extends keyof any> = GenericResult extends any ? {
3
3
  [RemapProp in GenericProp]: GenericResult;
4
4
  } : never;
5
- export type Split<GenericValue extends unknown, GenericMax extends number = 10, GenericAccumulator extends readonly never[] = readonly []> = GenericValue extends object ? GenericAccumulator["length"] extends GenericMax ? GenericValue : {
5
+ export type Split<GenericValue extends unknown, GenericMax extends number = 10, GenericAccumulator extends readonly never[] = readonly []> = GenericValue extends unknown ? DCommon.IsObject<GenericValue> extends true ? GenericAccumulator["length"] extends GenericMax ? GenericValue : {
6
6
  [Prop in keyof GenericValue]: DCommon.NeverCoalescing<CreateShape<Split<GenericValue[Prop], GenericMax, [
7
7
  ...GenericAccumulator,
8
8
  never
9
9
  ]>, Prop>, {
10
10
  [RemapProp in Prop]: never;
11
11
  }>;
12
- }[keyof GenericValue] : GenericValue;
12
+ }[keyof GenericValue] : GenericValue : never;
13
13
  export {};
@@ -1,9 +1,9 @@
1
1
  import type * as DCommon from '../common';
2
2
  import type * as DNumber from '../number/types';
3
- type ComputeMatcher<GenericInput extends number> = {
3
+ type ComputeMatcher<GenericInput extends number> = DCommon.SimplifyType<{
4
4
  [Prop in GenericInput]: (value: Prop) => unknown;
5
- };
5
+ }>;
6
6
  type ForbiddenMoreKey<GenericInput extends number, GenericMatcher extends ComputeMatcher<GenericInput>> = Exclude<keyof GenericMatcher, GenericInput> extends infer InferredKey ? DCommon.IsEqual<InferredKey, never> extends true ? unknown : DCommon.ComputedTypeError<`Key "${Extract<InferredKey, number>}" is forbidden.`> : never;
7
- export declare function matchWithNumber<GenericInput extends number, GenericMatcher extends ComputeMatcher<GenericInput>>(matcher: GenericMatcher & ComputeMatcher<NoInfer<GenericInput>> & ForbiddenMoreKey<NoInfer<GenericInput>, GenericMatcher>): (input: GenericInput & DNumber.RequireSimpleLiteral<GenericInput>) => ReturnType<NoInfer<GenericMatcher>[keyof GenericMatcher]>;
8
- export declare function matchWithNumber<GenericInput extends number, GenericMatcher extends ComputeMatcher<GenericInput>>(input: GenericInput & DNumber.RequireSimpleLiteral<GenericInput>, matcher: DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericInput>, GenericMatcher> & ForbiddenMoreKey<GenericInput, GenericMatcher>): ReturnType<GenericMatcher[keyof GenericMatcher]>;
7
+ export declare function matchWithNumber<GenericInput extends number, GenericClearInput extends Extract<DCommon.RemoveConstraint<GenericInput>, number>, GenericMatcher extends ComputeMatcher<GenericClearInput>>(matcher: (DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericClearInput>, GenericMatcher> & ForbiddenMoreKey<GenericClearInput, GenericMatcher>)): (input: GenericInput & DNumber.RequireSimpleLiteral<GenericClearInput>) => ReturnType<GenericMatcher[keyof GenericMatcher]>;
8
+ export declare function matchWithNumber<GenericInput extends number, GenericClearInput extends Extract<DCommon.RemoveConstraint<GenericInput>, number>, GenericMatcher extends ComputeMatcher<GenericClearInput>>(input: GenericInput & DNumber.RequireSimpleLiteral<GenericClearInput>, matcher: (DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericClearInput>, GenericMatcher> & ForbiddenMoreKey<GenericClearInput, GenericMatcher>)): ReturnType<GenericMatcher[keyof GenericMatcher]>;
9
9
  export {};
@@ -1,11 +1,11 @@
1
1
  import type * as DCommon from '../common';
2
2
  import type * as DNumber from '../number/types';
3
3
  import type * as DObject from '../object';
4
- type ComputeMatcher<GenericInput extends number> = {
4
+ type ComputeMatcher<GenericInput extends number> = DCommon.SimplifyType<{
5
5
  [Prop in GenericInput]?: (value: Prop) => unknown;
6
- };
6
+ }>;
7
7
  type ForbiddenMoreKey<GenericInput extends number, GenericMatcher extends ComputeMatcher<GenericInput>> = Exclude<keyof GenericMatcher, GenericInput> extends infer InferredKey ? DCommon.IsEqual<InferredKey, never> extends true ? unknown : DCommon.ComputedTypeError<`Key "${Extract<InferredKey, number>}" is forbidden.`> : never;
8
8
  type HandledKeys<GenericMatcher extends object> = Extract<DObject.GetPropsWithValueExtends<GenericMatcher, DCommon.AnyFunction>, number>;
9
- export declare function matchWithNumberOtherwise<GenericInput extends number, GenericMatcher extends ComputeMatcher<GenericInput>, GenericOutput>(matcher: GenericMatcher & ComputeMatcher<NoInfer<GenericInput>> & ForbiddenMoreKey<NoInfer<GenericInput>, GenericMatcher>, otherwise: (value: Exclude<GenericInput, HandledKeys<GenericMatcher>>) => GenericOutput): (input: GenericInput & DNumber.RequireSimpleLiteral<GenericInput>) => (ReturnType<Extract<NoInfer<GenericMatcher>[keyof GenericMatcher], DCommon.AnyFunction>> | GenericOutput);
10
- export declare function matchWithNumberOtherwise<GenericInput extends number, GenericMatcher extends ComputeMatcher<GenericInput>, GenericOutput>(input: GenericInput & DNumber.RequireSimpleLiteral<GenericInput>, matcher: DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericInput>, GenericMatcher> & ForbiddenMoreKey<GenericInput, GenericMatcher>, otherwise: (value: Exclude<GenericInput, HandledKeys<GenericMatcher>>) => GenericOutput): (ReturnType<Extract<GenericMatcher[keyof GenericMatcher], DCommon.AnyFunction>> | GenericOutput);
9
+ export declare function matchWithNumberOtherwise<GenericInput extends number, GenericClearInput extends Extract<DCommon.RemoveConstraint<GenericInput>, number>, GenericMatcher extends ComputeMatcher<GenericClearInput>, GenericOutput extends unknown>(matcher: (DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericClearInput>, GenericMatcher> & ForbiddenMoreKey<GenericClearInput, GenericMatcher>), otherwise: (value: Exclude<GenericInput, HandledKeys<GenericMatcher>>) => GenericOutput): (input: GenericInput & DNumber.RequireSimpleLiteral<GenericClearInput>) => (ReturnType<Extract<GenericMatcher[keyof GenericMatcher], DCommon.AnyFunction>> | GenericOutput);
10
+ export declare function matchWithNumberOtherwise<GenericInput extends number, GenericClearInput extends Extract<DCommon.RemoveConstraint<GenericInput>, number>, GenericMatcher extends ComputeMatcher<GenericClearInput>, GenericOutput extends unknown>(input: GenericInput & DNumber.RequireSimpleLiteral<GenericClearInput>, matcher: (DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericClearInput>, GenericMatcher> & ForbiddenMoreKey<GenericClearInput, GenericMatcher>), otherwise: (value: Exclude<GenericInput, HandledKeys<GenericMatcher>>) => GenericOutput): (ReturnType<Extract<GenericMatcher[keyof GenericMatcher], DCommon.AnyFunction>> | GenericOutput);
11
11
  export {};
@@ -1,10 +1,10 @@
1
1
  import type * as DCommon from '../common';
2
2
  import type * as DObject from '../object';
3
3
  import type * as DString from '../string/types';
4
- type ComputeMatcher<GenericInput extends string> = {
4
+ type ComputeMatcher<GenericInput extends string> = DCommon.SimplifyType<{
5
5
  [Prop in GenericInput]: (value: Prop) => unknown;
6
- };
6
+ }>;
7
7
  type ForbiddenMoreKey<GenericInput extends string, GenericMatcher extends ComputeMatcher<GenericInput>> = DObject.ForbiddenKey<GenericMatcher, Extract<Exclude<keyof GenericMatcher, GenericInput>, string>>;
8
- export declare function matchWithString<GenericInput extends string, GenericMatcher extends ComputeMatcher<GenericInput>>(matcher: GenericMatcher & ComputeMatcher<NoInfer<GenericInput>> & ForbiddenMoreKey<NoInfer<GenericInput>, GenericMatcher>): (input: GenericInput & DString.RequireSimpleLiteral<GenericInput>) => ReturnType<NoInfer<GenericMatcher>[keyof GenericMatcher]>;
9
- export declare function matchWithString<GenericInput extends string, GenericMatcher extends ComputeMatcher<GenericInput>>(input: GenericInput & DString.RequireSimpleLiteral<GenericInput>, matcher: DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericInput>, GenericMatcher> & ForbiddenMoreKey<GenericInput, GenericMatcher>): ReturnType<GenericMatcher[keyof GenericMatcher]>;
8
+ export declare function matchWithString<GenericInput extends string, GenericClearInput extends Extract<DCommon.RemoveConstraint<GenericInput>, string>, GenericMatcher extends ComputeMatcher<GenericClearInput>>(matcher: (DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericClearInput>, GenericMatcher> & ForbiddenMoreKey<GenericClearInput, GenericMatcher>)): (input: GenericInput & DString.RequireSimpleLiteral<GenericClearInput>) => ReturnType<GenericMatcher[keyof GenericMatcher]>;
9
+ export declare function matchWithString<GenericInput extends string, GenericClearInput extends Extract<DCommon.RemoveConstraint<GenericInput>, string>, GenericMatcher extends ComputeMatcher<GenericClearInput>>(input: GenericInput & DString.RequireSimpleLiteral<GenericClearInput>, matcher: (DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericClearInput>, GenericMatcher> & ForbiddenMoreKey<GenericClearInput, GenericMatcher>)): ReturnType<GenericMatcher[keyof GenericMatcher]>;
10
10
  export {};
@@ -1,11 +1,11 @@
1
1
  import type * as DCommon from '../common';
2
2
  import type * as DObject from '../object';
3
3
  import type * as DString from '../string';
4
- type ComputeMatcher<GenericInput extends string> = {
4
+ type ComputeMatcher<GenericInput extends string> = DCommon.SimplifyType<{
5
5
  [Prop in GenericInput]?: (value: Prop) => unknown;
6
- };
6
+ }>;
7
7
  type ForbiddenMoreKey<GenericInput extends string, GenericMatcher extends ComputeMatcher<GenericInput>> = DObject.ForbiddenKey<GenericMatcher, Extract<Exclude<keyof GenericMatcher, GenericInput>, string>>;
8
8
  type HandledKeys<GenericMatcher extends object> = Extract<DObject.GetPropsWithValueExtends<GenericMatcher, DCommon.AnyFunction>, string>;
9
- export declare function matchWithStringOtherwise<GenericInput extends string, GenericMatcher extends ComputeMatcher<GenericInput>, GenericOutput>(matcher: GenericMatcher & ComputeMatcher<NoInfer<GenericInput>> & ForbiddenMoreKey<NoInfer<GenericInput>, GenericMatcher>, otherwise: (value: Exclude<GenericInput, HandledKeys<GenericMatcher>>) => GenericOutput): (input: GenericInput & DString.RequireSimpleLiteral<GenericInput>) => (ReturnType<Extract<NoInfer<GenericMatcher>[keyof GenericMatcher], DCommon.AnyFunction>> | GenericOutput);
10
- export declare function matchWithStringOtherwise<GenericInput extends string, GenericMatcher extends ComputeMatcher<GenericInput>, GenericOutput>(input: GenericInput & DString.RequireSimpleLiteral<GenericInput>, matcher: DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericInput>, GenericMatcher> & ForbiddenMoreKey<GenericInput, GenericMatcher>, otherwise: (value: Exclude<GenericInput, HandledKeys<GenericMatcher>>) => GenericOutput): (ReturnType<Extract<GenericMatcher[keyof GenericMatcher], DCommon.AnyFunction>> | GenericOutput);
9
+ export declare function matchWithStringOtherwise<GenericInput extends string, GenericClearInput extends Extract<DCommon.RemoveConstraint<GenericInput>, string>, GenericMatcher extends ComputeMatcher<GenericClearInput>, GenericOutput extends unknown>(matcher: (DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericClearInput>, GenericMatcher> & ForbiddenMoreKey<GenericClearInput, GenericMatcher>), otherwise: (value: Exclude<GenericInput, HandledKeys<GenericMatcher>>) => GenericOutput): (input: GenericInput & DString.RequireSimpleLiteral<GenericClearInput>) => (ReturnType<Extract<GenericMatcher[keyof GenericMatcher], DCommon.AnyFunction>> | GenericOutput);
10
+ export declare function matchWithStringOtherwise<GenericInput extends string, GenericClearInput extends Extract<DCommon.RemoveConstraint<GenericInput>, string>, GenericMatcher extends ComputeMatcher<GenericClearInput>, GenericOutput extends unknown>(input: GenericInput & DString.RequireSimpleLiteral<GenericClearInput>, matcher: (DCommon.FixDeepFunctionInfer<ComputeMatcher<GenericClearInput>, GenericMatcher> & ForbiddenMoreKey<GenericClearInput, GenericMatcher>), otherwise: (value: Exclude<GenericInput, HandledKeys<GenericMatcher>>) => GenericOutput): (ReturnType<Extract<GenericMatcher[keyof GenericMatcher], DCommon.AnyFunction>> | GenericOutput);
11
11
  export {};
@@ -2,8 +2,8 @@ import type * as DCommon from '../../common';
2
2
  import type * as DObject from '../../object';
3
3
  export interface CharactersRangeStore {
4
4
  }
5
- export type CharactersRange = Extract<DObject.GetPropsWithValue<CharactersRangeStore, true>, string>;
5
+ export type CharactersRange = Extract<DObject.GetPropsWithValueExtends<CharactersRangeStore, string>, string>;
6
6
  export type AllowedCharactersConstraintName = "string-allowed-characters";
7
- export interface AllowedCharacters<GenericCharactersRange extends CharactersRange = never> extends DCommon.Constraint<AllowedCharactersConstraintName, Record<GenericCharactersRange, unknown>> {
7
+ export interface AllowedCharacters<GenericCharactersRange extends CharactersRange = never> extends DCommon.Constraint<AllowedCharactersConstraintName, () => Partial<Record<GenericCharactersRange, GenericCharactersRange>>> {
8
8
  }
9
- export type ExtractAllowedCharacters<GenericConstraint extends unknown, GenericDefault extends unknown = never> = GenericConstraint extends AllowedCharacters ? (keyof GenericConstraint[DCommon.ConstraintSymbol][AllowedCharactersConstraintName]) extends infer InferredResult extends CharactersRange ? DCommon.UnionToIntersection<InferredResult extends any ? AllowedCharacters<InferredResult> : never> : GenericDefault : GenericDefault;
9
+ export type ExtractAllowedCharacters<GenericConstraint extends unknown, GenericDefault extends unknown = never> = GenericConstraint extends AllowedCharacters ? (keyof ReturnType<GenericConstraint[DCommon.ConstraintSymbol][AllowedCharactersConstraintName]>) extends infer InferredResult extends CharactersRange ? DCommon.UnionToIntersection<InferredResult extends any ? DCommon.IsNever<InferredResult> extends true ? AllowedCharacters : AllowedCharacters<InferredResult> : never> : GenericDefault : GenericDefault;
@@ -1,4 +1,3 @@
1
- export type * from './types';
2
1
  export type * from './allowedCharacters';
3
2
  export type * from './email';
4
3
  export type * from './format';
@@ -6,6 +5,8 @@ export type * from './lengthEqual';
6
5
  export type * from './maxCharacters';
7
6
  export type * from './minCharacters';
8
7
  export type * from './notEmpty';
8
+ export type * from './number';
9
9
  export type * from './trimmed';
10
+ export type * from './types';
10
11
  export type * from './url';
11
12
  export type * from './uuid';
@@ -0,0 +1,4 @@
1
+ import { NumberInString } from '../types';
2
+ import { Format } from './format';
3
+ export interface Number extends Format<"number", NumberInString> {
4
+ }
@@ -14,6 +14,7 @@ const require_isEmail = require("./isEmail.cjs");
14
14
  const require_isIn = require("./isIn.cjs");
15
15
  const require_isKeyof = require("./isKeyof.cjs");
16
16
  const require_isNotEmpty = require("./isNotEmpty.cjs");
17
+ const require_isNumber = require("./isNumber.cjs");
17
18
  const require_isUrl = require("./isUrl.cjs");
18
19
  const require_isUuid = require("./isUuid.cjs");
19
20
  const require_join = require("./join.cjs");
@@ -67,6 +68,7 @@ var string_exports = /* @__PURE__ */ require_runtime.__exportAll({
67
68
  isIn: () => require_isIn.isIn,
68
69
  isKeyof: () => require_isKeyof.isKeyof,
69
70
  isNotEmpty: () => require_isNotEmpty.isNotEmpty,
71
+ isNumber: () => require_isNumber.isNumber,
70
72
  isTrimmed: () => require_is.isTrimmed,
71
73
  isUrl: () => require_isUrl.isUrl,
72
74
  isUuid: () => require_isUuid.isUuid,
@@ -121,6 +123,7 @@ exports.isEmail = require_isEmail.isEmail;
121
123
  exports.isIn = require_isIn.isIn;
122
124
  exports.isKeyof = require_isKeyof.isKeyof;
123
125
  exports.isNotEmpty = require_isNotEmpty.isNotEmpty;
126
+ exports.isNumber = require_isNumber.isNumber;
124
127
  exports.isTrimmed = require_is.isTrimmed;
125
128
  exports.isUrl = require_isUrl.isUrl;
126
129
  exports.isUuid = require_isUuid.isUuid;
@@ -14,6 +14,7 @@ export * from './isEmail';
14
14
  export * from './isIn';
15
15
  export * from './isKeyof';
16
16
  export * from './isNotEmpty';
17
+ export * from './isNumber';
17
18
  export * from './isUrl';
18
19
  export * from './isUuid';
19
20
  export * from './join';
@@ -14,6 +14,7 @@ import { emailRegex, isEmail } from "./isEmail.mjs";
14
14
  import { isIn } from "./isIn.mjs";
15
15
  import { isKeyof } from "./isKeyof.mjs";
16
16
  import { isNotEmpty } from "./isNotEmpty.mjs";
17
+ import { isNumber } from "./isNumber.mjs";
17
18
  import { isUrl } from "./isUrl.mjs";
18
19
  import { isUuid, uuidRegex } from "./isUuid.mjs";
19
20
  import { join } from "./join.mjs";
@@ -67,6 +68,7 @@ var string_exports = /* @__PURE__ */ __exportAll({
67
68
  isIn: () => isIn,
68
69
  isKeyof: () => isKeyof,
69
70
  isNotEmpty: () => isNotEmpty,
71
+ isNumber: () => isNumber,
70
72
  isTrimmed: () => isTrimmed,
71
73
  isUrl: () => isUrl,
72
74
  isUuid: () => isUuid,
@@ -105,4 +107,4 @@ var string_exports = /* @__PURE__ */ __exportAll({
105
107
  uuidRegex: () => uuidRegex
106
108
  });
107
109
  //#endregion
108
- export { at, capitalize, charAt, concat, emailRegex, endsWith, extract, extractAll, first, includes, indexOf, isComposedOf, isEmail, isIn, isKeyof, isNotEmpty, isTrimmed, isUrl, isUuid, join, last, lastIndexOf, length, lengthEqual, maxCharacters, minCharacters, normalize, padEnd, padStart, pop, prepend, repeat, replace, replaceAll, search, shift, slice, sort, sortCompare, split, startsWith, string_exports, stringify, substring, test, to, toLowerCase, toUpperCase, trim, trimEnd, trimStart, uncapitalize, uuidRegex };
110
+ export { at, capitalize, charAt, concat, emailRegex, endsWith, extract, extractAll, first, includes, indexOf, isComposedOf, isEmail, isIn, isKeyof, isNotEmpty, isNumber, isTrimmed, isUrl, isUuid, join, last, lastIndexOf, length, lengthEqual, maxCharacters, minCharacters, normalize, padEnd, padStart, pop, prepend, repeat, replace, replaceAll, search, shift, slice, sort, sortCompare, split, startsWith, string_exports, stringify, substring, test, to, toLowerCase, toUpperCase, trim, trimEnd, trimStart, uncapitalize, uuidRegex };
@@ -3,7 +3,6 @@ const require_coalescing = require("../array/coalescing.cjs");
3
3
  const charactersRangeStore = /* @__PURE__ */ new Map([
4
4
  ["a-z", "a-z"],
5
5
  ["A-Z", "A-Z"],
6
- ["A-z", "A-z"],
7
6
  ["0-9", "0-9"]
8
7
  ]);
9
8
  function isComposedOf(...args) {
@@ -2,13 +2,10 @@ import { AllowedCharacters, CharactersRange } from './constraints';
2
2
  import type * as DCommon from '../common';
3
3
  declare module "./constraints" {
4
4
  interface CharactersRangeStore {
5
- "a-z": true;
6
- "A-Z": true;
7
- "A-z": true;
8
- "0-9": true;
5
+ "a-z": "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z";
6
+ "A-Z": "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z";
7
+ "0-9": "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
9
8
  }
10
9
  }
11
- type ContainsIsComposedOf<GenericValue extends string, GenericCharactersRange extends CharactersRange> = DCommon.UnionToIntersection<(GenericCharactersRange extends any ? AllowedCharacters<GenericCharactersRange> : never)> extends infer InferredConstraints extends DCommon.Constraint ? GenericValue extends InferredConstraints ? GenericValue : GenericValue & InferredConstraints : never;
12
- export declare function isComposedOf<GenericValue extends string, GenericCharactersRange extends CharactersRange>(charactersRange: DCommon.MaybeArray<GenericCharactersRange>): (value: GenericValue) => value is ContainsIsComposedOf<GenericValue, GenericCharactersRange>;
13
- export declare function isComposedOf<GenericValue extends string, GenericCharactersRange extends CharactersRange>(value: GenericValue, charactersRange: DCommon.MaybeArray<GenericCharactersRange>): value is ContainsIsComposedOf<GenericValue, GenericCharactersRange>;
14
- export {};
10
+ export declare function isComposedOf<GenericCharactersRange extends CharactersRange>(charactersRange: DCommon.MaybeArray<GenericCharactersRange>): (value: string) => value is string & AllowedCharacters<GenericCharactersRange>;
11
+ export declare function isComposedOf<GenericCharactersRange extends CharactersRange>(value: string, charactersRange: DCommon.MaybeArray<GenericCharactersRange>): value is string & AllowedCharacters<GenericCharactersRange>;
@@ -3,7 +3,6 @@ import { coalescing } from "../array/coalescing.mjs";
3
3
  const charactersRangeStore = /* @__PURE__ */ new Map([
4
4
  ["a-z", "a-z"],
5
5
  ["A-Z", "A-Z"],
6
- ["A-z", "A-z"],
7
6
  ["0-9", "0-9"]
8
7
  ]);
9
8
  function isComposedOf(...args) {
@@ -0,0 +1,7 @@
1
+ //#region scripts/string/isNumber.ts
2
+ const numberRegex = /^-?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?$/i;
3
+ function isNumber(string) {
4
+ return numberRegex.test(string);
5
+ }
6
+ //#endregion
7
+ exports.isNumber = isNumber;
@@ -0,0 +1,5 @@
1
+ import { Number } from './constraints';
2
+ import { NumberInString } from './types';
3
+ type ComputeResult<GenericValue extends string> = GenericValue extends Number ? GenericValue : GenericValue extends NumberInString ? GenericValue : GenericValue & Number;
4
+ export declare function isNumber<GenericValue extends string>(string: GenericValue): string is ComputeResult<GenericValue>;
5
+ export {};
@@ -0,0 +1,7 @@
1
+ //#region scripts/string/isNumber.ts
2
+ const numberRegex = /^-?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?$/i;
3
+ function isNumber(string) {
4
+ return numberRegex.test(string);
5
+ }
6
+ //#endregion
7
+ export { isNumber };
@@ -1,3 +1,10 @@
1
- type Primitive = (string | boolean | null | number | undefined | bigint);
2
- export declare function to<GenericValue extends Primitive>(value: GenericValue): `${GenericValue}`;
1
+ import { Number } from './constraints';
2
+ import type * as DNumber from '../number';
3
+ type Stringifyable = (null | undefined | {
4
+ toString(): string;
5
+ });
6
+ type ComputeResult<GenericValue extends Stringifyable> = GenericValue extends number ? DNumber.IsLiteral<GenericValue> extends true ? `${GenericValue}` : string & Number : GenericValue extends (string | boolean | null | undefined | bigint) ? `${GenericValue}` : GenericValue extends {
7
+ toString(): string;
8
+ } ? ReturnType<GenericValue["toString"]> : never;
9
+ export declare function to<GenericValue extends Stringifyable>(value: GenericValue): ComputeResult<GenericValue>;
3
10
  export {};
@@ -0,0 +1,3 @@
1
+ type IsAllowedTail<GenericValue extends string, GenericAllowed extends string> = GenericValue extends `${infer Char}${infer Rest}` ? Char extends GenericAllowed ? IsAllowedTail<Rest, GenericAllowed> : false : true;
2
+ export type IsAllowedString<GenericValue extends string, GenericAllowed extends string> = GenericValue extends `${infer InferredA}${infer InferredB}${infer InferredC}${infer InferredD}${infer InferredE}${infer InferredF}${infer InferredG}${infer InferredH}${infer InferredRest}` ? (InferredA | InferredB | InferredC | InferredD | InferredE | InferredF | InferredG | InferredH) extends GenericAllowed ? IsAllowedString<InferredRest, GenericAllowed> : false : IsAllowedTail<GenericValue, GenericAllowed>;
3
+ export {};
@@ -1,3 +1,5 @@
1
+ export type * from './IsAllowedString';
2
+ export type * from './at';
1
3
  export type * from './countMinCharacters';
2
4
  export type * from './digit';
3
5
  export type * from './endsWith';
@@ -5,12 +7,14 @@ export type * from './first';
5
7
  export type * from './forbiddenContain';
6
8
  export type * from './forbiddenString';
7
9
  export type * from './includes';
10
+ export type * from './isKeyPattern';
8
11
  export type * from './isLiteral';
12
+ export type * from './isTemplateLiteral';
9
13
  export type * from './join';
10
14
  export type * from './last';
11
15
  export type * from './length';
12
16
  export type * from './normalizeForm';
13
- export type * from './number';
17
+ export type * from './numberInString';
14
18
  export type * from './pop';
15
19
  export type * from './replace';
16
20
  export type * from './requireLiteral';
@@ -18,7 +22,3 @@ export type * from './requireSimpleLiteral';
18
22
  export type * from './shift';
19
23
  export type * from './split';
20
24
  export type * from './startsWith';
21
- export type * from './isKeyPattern';
22
- export type * from './at';
23
- export type * from './first';
24
- export type * from './last';
@@ -0,0 +1 @@
1
+ export type NumberInString = `${number}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duplojs/lang",
3
- "version": "0.0.1-beta.7",
3
+ "version": "0.0.1-beta.9",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "author": {
@@ -19,6 +19,7 @@
19
19
  "test:ut:watch": "./.commands/test-ut.sh --watch",
20
20
  "test:ut:update": "./.commands/test-ut.sh --update",
21
21
  "test:types": "./.commands/test-types.sh",
22
+ "test:types:lib": "./.commands/test-types-lib.sh",
22
23
  "test:types:target": "./.commands/test-types-target.sh",
23
24
  "test:lint": "./.commands/test-lint.sh",
24
25
  "test:lint:fix": "./.commands/test-lint.sh --fix",
@@ -128,7 +129,6 @@
128
129
  "@vitest/coverage-istanbul": "4.1.10"
129
130
  },
130
131
  "workspaces": [
131
- "integrations",
132
132
  "docs"
133
133
  ],
134
134
  "files": [
@@ -1,26 +0,0 @@
1
- import { callThen } from "../../common/callThen.mjs";
2
- import { memo } from "../../common/memo.mjs";
3
- import { createKind } from "../kind.mjs";
4
- import { ErrorSymbol } from "./resultSymbol.mjs";
5
- //#region scripts/dataStructure/common/codec.ts
6
- const codecKind = createKind("codec");
7
- const codecsKind = createKind("codecs");
8
- function createCodec(fundamentalType, predicateEncode, encode, decode) {
9
- const self = {
10
- fundamentalType,
11
- predicateEncode: (data) => predicateEncode(data),
12
- encode: (data, errorHandler) => callThen(encode(data, self, errorHandler), (encodedData) => encodedData === ErrorSymbol ? ErrorSymbol : callThen(predicateEncode(encodedData), (result) => result === false ? errorHandler?.().addEncodeIssue(self, encodedData) ?? ErrorSymbol : encodedData)),
13
- decode: (data, errorHandler) => callThen(predicateEncode(data), (result) => result === false ? errorHandler?.().addDecodeIssue(self, data) ?? ErrorSymbol : decode(data, self, errorHandler)),
14
- [codecKind.runTimeKey]: null
15
- };
16
- return self;
17
- }
18
- function createCodecs(definition) {
19
- return {
20
- context: memo(() => new Map(Object.values(definition).map((codec) => [codec.fundamentalType, codec]))),
21
- definition,
22
- [codecsKind.runTimeKey]: null
23
- };
24
- }
25
- //#endregion
26
- export { codecKind, codecsKind, createCodec, createCodecs };
@@ -1,26 +0,0 @@
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/useCase.ts
9
- const useCaseHandlerKind = require("./kind.cjs").createKind("use-case-handler");
10
- function createUseCase(dependencies, getUseCase) {
11
- return {
12
- dependencies,
13
- getUseCase: (injectedDependencies) => getUseCase(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, useCaseHandlerKind.has(value) && !injectedDependencies[formattedKey] ? value.getUseCase(injectedDependencies) : injectedDependencies[formattedKey]);
16
- }), require_fromEntries.fromEntries)),
17
- [useCaseHandlerKind.runTimeKey]: null
18
- };
19
- }
20
- function wireUseCases(useCases, ports) {
21
- return require_pipe.pipe(useCases, require_entries.entries, require_map.map(([key, useCase]) => require_entry.entry(require_uncapitalize.uncapitalize(key), useCase.getUseCase(ports))), require_fromEntries.fromEntries);
22
- }
23
- //#endregion
24
- exports.createUseCase = createUseCase;
25
- exports.useCaseHandlerKind = useCaseHandlerKind;
26
- exports.wireUseCases = wireUseCases;
@@ -1,28 +0,0 @@
1
- import { PortHandler } from './port';
2
- import * as DCommon from '../common';
3
- import type * as DKind from '../kind';
4
- export type UseCaseDependencies = Record<string, UseCaseHandler | PortHandler>;
5
- export type UseCaseDependenciesValue<GenericDependencies extends UseCaseDependencies> = DCommon.SimplifyTopLevel<{
6
- [Prop in keyof GenericDependencies as Uncapitalize<Extract<Prop, string>>]: GenericDependencies[Prop] extends PortHandler ? ReturnType<GenericDependencies[Prop]["createImplementation"]> : GenericDependencies[Prop] extends UseCaseHandler ? ReturnType<GenericDependencies[Prop]["getUseCase"]> : never;
7
- }>;
8
- export type GetAllPorts<GenericDependenciesValue extends UseCaseDependencies> = 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 UseCaseHandler ? GetAllPorts<GenericDependenciesValue[Prop]["dependencies"]> : never);
13
- })[keyof GenericDependenciesValue] : never;
14
- export declare const useCaseHandlerKind: DKind.Handler<DKind.Definition<"@DuplojsLangInvocation/use-case-handler", unknown>>;
15
- export interface UseCaseHandler<GenericDependencies extends UseCaseDependencies = any, GenericUseCase extends (input: any) => any = any> extends DKind.Kind<typeof useCaseHandlerKind> {
16
- dependencies: GenericDependencies;
17
- getUseCase(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 UseCaseHandler ? Uncapitalize<Extract<Prop, string>> : never]?: GenericDependencies[Prop] extends UseCaseHandler ? ReturnType<GenericDependencies[Prop]["getUseCase"]> : never;
21
- })>): GenericUseCase;
22
- }
23
- export declare function createUseCase<const GenericDependencies extends UseCaseDependencies, GenericUseCase extends (...args: any[]) => any>(dependencies: GenericDependencies, getUseCase: (dependenciesValue: UseCaseDependenciesValue<GenericDependencies>) => GenericUseCase): UseCaseHandler<GenericDependencies, GenericUseCase>;
24
- export declare function wireUseCases<GenericUseCases extends Record<string, UseCaseHandler>>(useCases: GenericUseCases, ports: DCommon.SimplifyTopLevel<DCommon.UnionToIntersection<{
25
- [Prop in keyof GenericUseCases]: GetAllPorts<GenericUseCases[Prop]["dependencies"]> extends infer InferredEntriesDependenciesValue extends DCommon.ObjectEntry ? {
26
- [Entry in InferredEntriesDependenciesValue as Entry[0]]: Entry[1];
27
- } : never;
28
- }[keyof GenericUseCases]>>): UseCaseDependenciesValue<GenericUseCases>;