@duplojs/utils 1.3.29 → 1.3.31

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 (246) hide show
  1. package/dist/clean/entity.d.ts +2 -2
  2. package/dist/clean/flag.cjs +4 -0
  3. package/dist/clean/flag.d.ts +1 -0
  4. package/dist/clean/flag.mjs +4 -0
  5. package/dist/clean/index.cjs +15 -0
  6. package/dist/clean/index.d.ts +1 -0
  7. package/dist/clean/index.mjs +8 -1
  8. package/dist/clean/newType.d.ts +2 -2
  9. package/dist/clean/primitive/base.cjs +3 -0
  10. package/dist/clean/primitive/base.d.ts +4 -2
  11. package/dist/clean/primitive/base.mjs +3 -1
  12. package/dist/clean/primitive/operations/date/dateAddTime.cjs +16 -0
  13. package/dist/clean/primitive/operations/date/dateAddTime.d.ts +4 -0
  14. package/dist/clean/primitive/operations/date/dateAddTime.mjs +14 -0
  15. package/dist/clean/primitive/operations/date/dateMax.cjs +1 -5
  16. package/dist/clean/primitive/operations/date/dateMax.d.ts +1 -2
  17. package/dist/clean/primitive/operations/date/dateMax.mjs +1 -5
  18. package/dist/clean/primitive/operations/date/dateMin.cjs +1 -5
  19. package/dist/clean/primitive/operations/date/dateMin.d.ts +1 -2
  20. package/dist/clean/primitive/operations/date/dateMin.mjs +1 -5
  21. package/dist/clean/primitive/operations/date/dateSubtractTime.cjs +16 -0
  22. package/dist/clean/primitive/operations/date/dateSubtractTime.d.ts +4 -0
  23. package/dist/clean/primitive/operations/date/dateSubtractTime.mjs +14 -0
  24. package/dist/clean/primitive/operations/date/index.d.ts +2 -4
  25. package/dist/clean/primitive/operations/equal.d.ts +3 -3
  26. package/dist/clean/primitive/operations/index.d.ts +1 -0
  27. package/dist/clean/primitive/operations/sort.cjs +6 -0
  28. package/dist/clean/primitive/operations/sort.d.ts +4 -8
  29. package/dist/clean/primitive/operations/sort.mjs +6 -0
  30. package/dist/clean/primitive/operations/time/index.d.ts +4 -0
  31. package/dist/clean/primitive/operations/time/timeGreaterThan.cjs +15 -0
  32. package/dist/clean/primitive/operations/time/timeGreaterThan.d.ts +4 -0
  33. package/dist/clean/primitive/operations/time/timeGreaterThan.mjs +13 -0
  34. package/dist/clean/primitive/operations/time/timeLessThan.cjs +15 -0
  35. package/dist/clean/primitive/operations/time/timeLessThan.d.ts +4 -0
  36. package/dist/clean/primitive/operations/time/timeLessThan.mjs +13 -0
  37. package/dist/clean/primitive/operations/time/timeMax.cjs +12 -0
  38. package/dist/clean/primitive/operations/time/timeMax.d.ts +4 -0
  39. package/dist/clean/primitive/operations/time/timeMax.mjs +10 -0
  40. package/dist/clean/primitive/operations/time/timeMin.cjs +12 -0
  41. package/dist/clean/primitive/operations/time/timeMin.d.ts +4 -0
  42. package/dist/clean/primitive/operations/time/timeMin.mjs +10 -0
  43. package/dist/clean/unwrapEntity.cjs +26 -0
  44. package/dist/clean/unwrapEntity.d.ts +13 -0
  45. package/dist/clean/unwrapEntity.mjs +24 -0
  46. package/dist/common/index.d.ts +2 -0
  47. package/dist/common/override.cjs +38 -17
  48. package/dist/common/override.d.ts +5 -8
  49. package/dist/common/override.mjs +38 -17
  50. package/dist/common/pipeCall.cjs +7 -0
  51. package/dist/common/pipeCall.d.ts +1 -0
  52. package/dist/common/pipeCall.mjs +5 -0
  53. package/dist/common/toCurriedPredicate.cjs +7 -0
  54. package/dist/common/toCurriedPredicate.d.ts +1 -0
  55. package/dist/common/toCurriedPredicate.mjs +5 -0
  56. package/dist/common/toWrappedValue.d.ts +2 -1
  57. package/dist/common/types/DeepReadonly.d.ts +3 -0
  58. package/dist/common/types/index.d.ts +1 -0
  59. package/dist/dataParser/extended/coerce/index.cjs +2 -0
  60. package/dist/dataParser/extended/coerce/index.d.ts +1 -0
  61. package/dist/dataParser/extended/coerce/index.mjs +1 -0
  62. package/dist/dataParser/extended/coerce/time.cjs +12 -0
  63. package/dist/dataParser/extended/coerce/time.d.ts +7 -0
  64. package/dist/dataParser/extended/coerce/time.mjs +10 -0
  65. package/dist/dataParser/extended/index.cjs +2 -0
  66. package/dist/dataParser/extended/index.d.ts +1 -0
  67. package/dist/dataParser/extended/index.mjs +1 -0
  68. package/dist/dataParser/extended/object.cjs +5 -0
  69. package/dist/dataParser/extended/object.d.ts +4 -0
  70. package/dist/dataParser/extended/object.mjs +5 -0
  71. package/dist/dataParser/extended/time.cjs +22 -0
  72. package/dist/dataParser/extended/time.d.ts +34 -0
  73. package/dist/dataParser/extended/time.mjs +20 -0
  74. package/dist/dataParser/identifier.d.ts +10 -4
  75. package/dist/dataParser/index.cjs +36 -24
  76. package/dist/dataParser/index.mjs +4 -0
  77. package/dist/dataParser/parsers/coerce/index.cjs +2 -0
  78. package/dist/dataParser/parsers/coerce/index.d.ts +1 -0
  79. package/dist/dataParser/parsers/coerce/index.mjs +1 -0
  80. package/dist/dataParser/parsers/coerce/time.cjs +12 -0
  81. package/dist/dataParser/parsers/coerce/time.d.ts +6 -0
  82. package/dist/dataParser/parsers/coerce/time.mjs +10 -0
  83. package/dist/dataParser/parsers/date.cjs +6 -12
  84. package/dist/dataParser/parsers/date.mjs +6 -12
  85. package/dist/dataParser/parsers/index.d.ts +1 -0
  86. package/dist/dataParser/parsers/literal.d.ts +2 -2
  87. package/dist/dataParser/parsers/object/extends.cjs +15 -0
  88. package/dist/dataParser/parsers/object/extends.d.ts +9 -0
  89. package/dist/dataParser/parsers/object/extends.mjs +12 -0
  90. package/dist/dataParser/parsers/object/index.d.ts +1 -0
  91. package/dist/dataParser/parsers/time/checkers/index.d.ts +2 -0
  92. package/dist/dataParser/parsers/time/checkers/max.cjs +19 -0
  93. package/dist/dataParser/parsers/time/checkers/max.d.ts +12 -0
  94. package/dist/dataParser/parsers/time/checkers/max.mjs +16 -0
  95. package/dist/dataParser/parsers/time/checkers/min.cjs +19 -0
  96. package/dist/dataParser/parsers/time/checkers/min.d.ts +12 -0
  97. package/dist/dataParser/parsers/time/checkers/min.mjs +16 -0
  98. package/dist/dataParser/parsers/time/index.cjs +47 -0
  99. package/dist/dataParser/parsers/time/index.d.ts +33 -0
  100. package/dist/dataParser/parsers/time/index.mjs +44 -0
  101. package/dist/dataParser/types/checkers.d.ts +1 -1
  102. package/dist/dataParser/types/dataParsers.d.ts +2 -2
  103. package/dist/date/applyTimezone.cjs +17 -0
  104. package/dist/date/applyTimezone.d.ts +4 -0
  105. package/dist/date/applyTimezone.mjs +15 -0
  106. package/dist/date/constants.cjs +13 -3
  107. package/dist/date/constants.d.ts +6 -1
  108. package/dist/date/constants.mjs +9 -4
  109. package/dist/date/create.cjs +62 -29
  110. package/dist/date/create.d.ts +10 -6
  111. package/dist/date/create.mjs +60 -27
  112. package/dist/date/createOrThrow.cjs +4 -1
  113. package/dist/date/createOrThrow.d.ts +5 -4
  114. package/dist/date/createOrThrow.mjs +4 -1
  115. package/dist/date/createTheDate.cjs +10 -0
  116. package/dist/date/createTheDate.d.ts +2 -0
  117. package/dist/date/createTheDate.mjs +8 -0
  118. package/dist/date/createTheTime.cjs +10 -0
  119. package/dist/date/createTheTime.d.ts +2 -0
  120. package/dist/date/createTheTime.mjs +8 -0
  121. package/dist/date/createTime.cjs +61 -0
  122. package/dist/date/createTime.d.ts +44 -0
  123. package/dist/date/createTime.mjs +59 -0
  124. package/dist/date/createTimeOrThrow.cjs +28 -0
  125. package/dist/date/createTimeOrThrow.d.ts +10 -0
  126. package/dist/date/createTimeOrThrow.mjs +25 -0
  127. package/dist/date/format.cjs +37 -0
  128. package/dist/date/format.d.ts +4 -0
  129. package/dist/date/format.mjs +35 -0
  130. package/dist/date/getTimezoneOffset.cjs +27 -0
  131. package/dist/date/getTimezoneOffset.d.ts +4 -0
  132. package/dist/date/getTimezoneOffset.mjs +25 -0
  133. package/dist/date/getters/getDayOfYear.cjs +2 -1
  134. package/dist/date/getters/getDayOfYear.mjs +2 -1
  135. package/dist/date/index.cjs +51 -2
  136. package/dist/date/index.d.ts +15 -0
  137. package/dist/date/index.mjs +25 -3
  138. package/dist/date/is.cjs +9 -1
  139. package/dist/date/is.mjs +9 -1
  140. package/dist/date/isSafeTimeValue.cjs +15 -0
  141. package/dist/date/isSafeTimeValue.d.ts +1 -0
  142. package/dist/date/isSafeTimeValue.mjs +13 -0
  143. package/dist/date/isSafeTimestamp.cjs +3 -3
  144. package/dist/date/isSafeTimestamp.d.ts +1 -1
  145. package/dist/date/isSafeTimestamp.mjs +3 -3
  146. package/dist/date/isTime.cjs +17 -0
  147. package/dist/date/isTime.d.ts +2 -0
  148. package/dist/date/isTime.mjs +15 -0
  149. package/dist/date/makeSafeTimeValue.cjs +20 -0
  150. package/dist/date/makeSafeTimeValue.d.ts +1 -0
  151. package/dist/date/makeSafeTimeValue.mjs +18 -0
  152. package/dist/date/makeSafeTimestamp.cjs +20 -0
  153. package/dist/date/makeSafeTimestamp.d.ts +1 -0
  154. package/dist/date/makeSafeTimestamp.mjs +18 -0
  155. package/dist/date/maxTime.cjs +10 -0
  156. package/dist/date/maxTime.d.ts +3 -0
  157. package/dist/date/maxTime.mjs +8 -0
  158. package/dist/date/minTime.cjs +10 -0
  159. package/dist/date/minTime.d.ts +3 -0
  160. package/dist/date/minTime.mjs +8 -0
  161. package/dist/date/operators/addDays.cjs +2 -3
  162. package/dist/date/operators/addDays.mjs +2 -3
  163. package/dist/date/operators/addHours.cjs +2 -3
  164. package/dist/date/operators/addHours.mjs +2 -3
  165. package/dist/date/operators/addMilliseconds.cjs +2 -3
  166. package/dist/date/operators/addMilliseconds.mjs +2 -3
  167. package/dist/date/operators/addMinutes.cjs +2 -3
  168. package/dist/date/operators/addMinutes.mjs +2 -3
  169. package/dist/date/operators/addMonths.cjs +2 -3
  170. package/dist/date/operators/addMonths.mjs +2 -3
  171. package/dist/date/operators/addSeconds.cjs +2 -3
  172. package/dist/date/operators/addSeconds.mjs +2 -3
  173. package/dist/date/operators/addTime.cjs +21 -0
  174. package/dist/date/operators/addTime.d.ts +5 -0
  175. package/dist/date/operators/addTime.mjs +19 -0
  176. package/dist/date/operators/addWeeks.cjs +2 -3
  177. package/dist/date/operators/addWeeks.mjs +2 -3
  178. package/dist/date/operators/addYears.cjs +2 -3
  179. package/dist/date/operators/addYears.mjs +2 -3
  180. package/dist/date/operators/betweenThanTime.cjs +17 -0
  181. package/dist/date/operators/betweenThanTime.d.ts +3 -0
  182. package/dist/date/operators/betweenThanTime.mjs +15 -0
  183. package/dist/date/operators/betweenTime.cjs +17 -0
  184. package/dist/date/operators/betweenTime.d.ts +3 -0
  185. package/dist/date/operators/betweenTime.mjs +15 -0
  186. package/dist/date/operators/greaterThanTime.cjs +16 -0
  187. package/dist/date/operators/greaterThanTime.d.ts +3 -0
  188. package/dist/date/operators/greaterThanTime.mjs +14 -0
  189. package/dist/date/operators/greaterTime.cjs +16 -0
  190. package/dist/date/operators/greaterTime.d.ts +3 -0
  191. package/dist/date/operators/greaterTime.mjs +14 -0
  192. package/dist/date/operators/index.d.ts +8 -0
  193. package/dist/date/operators/lessThanTime.cjs +16 -0
  194. package/dist/date/operators/lessThanTime.d.ts +3 -0
  195. package/dist/date/operators/lessThanTime.mjs +14 -0
  196. package/dist/date/operators/lessTime.cjs +16 -0
  197. package/dist/date/operators/lessTime.d.ts +3 -0
  198. package/dist/date/operators/lessTime.mjs +14 -0
  199. package/dist/date/operators/subtractDays.cjs +2 -3
  200. package/dist/date/operators/subtractDays.mjs +2 -3
  201. package/dist/date/operators/subtractHours.cjs +2 -3
  202. package/dist/date/operators/subtractHours.mjs +2 -3
  203. package/dist/date/operators/subtractMilliseconds.cjs +2 -3
  204. package/dist/date/operators/subtractMilliseconds.mjs +2 -3
  205. package/dist/date/operators/subtractMinutes.cjs +2 -3
  206. package/dist/date/operators/subtractMinutes.mjs +2 -3
  207. package/dist/date/operators/subtractMonths.cjs +2 -3
  208. package/dist/date/operators/subtractMonths.mjs +2 -3
  209. package/dist/date/operators/subtractSeconds.cjs +2 -3
  210. package/dist/date/operators/subtractSeconds.mjs +2 -3
  211. package/dist/date/operators/subtractTime.cjs +21 -0
  212. package/dist/date/operators/subtractTime.d.ts +5 -0
  213. package/dist/date/operators/subtractTime.mjs +19 -0
  214. package/dist/date/operators/subtractWeeks.cjs +2 -3
  215. package/dist/date/operators/subtractWeeks.mjs +2 -3
  216. package/dist/date/operators/subtractYears.cjs +2 -3
  217. package/dist/date/operators/subtractYears.mjs +2 -3
  218. package/dist/date/sortTimes.cjs +20 -0
  219. package/dist/date/sortTimes.d.ts +4 -0
  220. package/dist/date/sortTimes.mjs +18 -0
  221. package/dist/date/{types/timezone.cjs → timezone.cjs} +1 -1
  222. package/dist/date/{types/timezone.d.ts → timezone.d.ts} +1 -1
  223. package/dist/date/{types/timezone.mjs → timezone.mjs} +1 -1
  224. package/dist/date/toTimeValue.cjs +14 -0
  225. package/dist/date/toTimeValue.d.ts +2 -0
  226. package/dist/date/toTimeValue.mjs +12 -0
  227. package/dist/date/toTimestamp.cjs +6 -21
  228. package/dist/date/toTimestamp.d.ts +0 -8
  229. package/dist/date/toTimestamp.mjs +8 -22
  230. package/dist/date/types/index.d.ts +3 -1
  231. package/dist/date/types/isSafeYear.d.ts +5 -52
  232. package/dist/date/types/spoolingDate.d.ts +12 -0
  233. package/dist/date/types/spoolingTime.d.ts +9 -0
  234. package/dist/date/types/theTime.d.ts +1 -0
  235. package/dist/index.cjs +4 -0
  236. package/dist/index.mjs +2 -0
  237. package/dist/metadata.json +401 -5
  238. package/dist/number/types/index.d.ts +2 -0
  239. package/dist/number/types/isGreater.d.ts +50 -0
  240. package/dist/number/types/isLess.d.ts +3 -0
  241. package/dist/object/hasKeys.d.ts +2 -2
  242. package/dist/object/types/forbiddenKey.d.ts +6 -0
  243. package/dist/object/types/index.d.ts +1 -0
  244. package/dist/string/types/index.d.ts +1 -0
  245. package/dist/string/types/replace.d.ts +1 -0
  246. package/package.json +1 -1
@@ -0,0 +1,13 @@
1
+ import { type GetKindValue, type SimplifyTopLevel, type Kind, type Unwrap, type DeepReadonly } from "../common";
2
+ import { entityKind, type Entity } from "./entity";
3
+ import { flagKind } from "./flag";
4
+ type UnwrapArrayProperties<GenericValue extends readonly any[]> = GenericValue extends readonly [infer InferredFirst, ...infer InferredRest] ? (InferredRest extends readonly [] ? readonly [] : UnwrapArrayProperties<InferredRest>) extends infer InferredResult extends readonly any[] ? readonly [Unwrap<InferredFirst>, ...InferredResult] : never : readonly Unwrap<GenericValue[number]>[];
5
+ export type UnwrapEntity<GenericEntity extends Entity> = SimplifyTopLevel<DeepReadonly<{
6
+ [Prop in Extract<keyof GenericEntity, string>]: GenericEntity[Prop] extends readonly any[] ? UnwrapArrayProperties<GenericEntity[Prop]> : Unwrap<GenericEntity[Prop]>;
7
+ } & {
8
+ [Prop in "_entityName"]: GetKindValue<typeof entityKind, GenericEntity>;
9
+ } & (GenericEntity extends Kind<typeof flagKind.definition, any> ? {
10
+ [Prop in "_flags"]: SimplifyTopLevel<GetKindValue<typeof flagKind, GenericEntity>>;
11
+ } : {})>>;
12
+ export declare function unwrapEntity<GenericEntity extends Entity>(entity: GenericEntity): UnwrapEntity<GenericEntity>;
13
+ export {};
@@ -0,0 +1,24 @@
1
+ import { entityKind } from './entity.mjs';
2
+ import { flagKind } from './flag.mjs';
3
+ import { unwrap } from '../common/unwrap.mjs';
4
+
5
+ function unwrapEntity(entity) {
6
+ const unwrapEntity = {};
7
+ for (const prop in entity) {
8
+ if (prop === entityKind.runTimeKey) {
9
+ unwrapEntity._entityName = entity[prop];
10
+ }
11
+ else if (prop === flagKind.runTimeKey) {
12
+ unwrapEntity._flags = entity[prop];
13
+ }
14
+ else if (entity[prop] instanceof Array) {
15
+ unwrapEntity[prop] = entity[prop].map(unwrap);
16
+ }
17
+ else {
18
+ unwrapEntity[prop] = unwrap(entity[prop]);
19
+ }
20
+ }
21
+ return unwrapEntity;
22
+ }
23
+
24
+ export { unwrapEntity };
@@ -45,3 +45,5 @@ export * from "./truthy";
45
45
  export * from "./falsy";
46
46
  export * from "./hasSomeKinds";
47
47
  export * from "./hasKinds";
48
+ export * from "./toCurriedPredicate";
49
+ export * from "./pipeCall";
@@ -1,33 +1,54 @@
1
1
  'use strict';
2
2
 
3
3
  var globalStore = require('./globalStore.cjs');
4
- var pipe = require('./pipe.cjs');
5
- var fromEntries = require('../object/fromEntries.cjs');
6
- var map = require('../array/map.cjs');
7
- var entry = require('../object/entry.cjs');
8
4
 
9
5
  const SymbolOverrideStore = Symbol.for("@duplojs/utils/override");
10
6
  const overrideStore = globalStore.createGlobalStore(SymbolOverrideStore, {});
11
7
  function createOverride(overrideName) {
12
- const store = overrideStore.value[overrideName] ?? [];
13
- overrideStore.set({
14
- ...overrideStore.value,
15
- [overrideName]: store,
16
- });
8
+ const overridePropertiesStore = overrideStore.value[overrideName] ?? {};
9
+ overrideStore.value[overrideName] ||= overridePropertiesStore;
10
+ let cachedStoreKey = Object.keys(overridePropertiesStore);
17
11
  return {
18
12
  setMethod(prop, theFunction) {
19
- store.push([prop, theFunction]);
13
+ overridePropertiesStore[prop] = theFunction;
14
+ cachedStoreKey = Object.keys(overridePropertiesStore);
20
15
  },
21
16
  setPropertyDefaultValue(prop, value) {
22
- store.push([prop, value]);
17
+ overridePropertiesStore[prop] = value;
18
+ cachedStoreKey = Object.keys(overridePropertiesStore);
23
19
  },
24
20
  apply(overrideInterface) {
25
- const self = {
26
- ...overrideInterface,
27
- ...pipe.pipe(store, map.map(([key, value]) => entry.entry(key, typeof value === "function"
28
- ? (...args) => value(self, ...args)
29
- : value)), fromEntries.fromEntries),
30
- };
21
+ const cachedOverrideProperties = {};
22
+ const cachedKey = Object.keys(overrideInterface);
23
+ const self = new Proxy({}, {
24
+ get(target, prop) {
25
+ if (overridePropertiesStore[prop]) {
26
+ if (!cachedOverrideProperties[prop]) {
27
+ cachedOverrideProperties[prop] = typeof overridePropertiesStore[prop] === "function"
28
+ ? (...args) => overridePropertiesStore[prop](self, ...args)
29
+ : overridePropertiesStore[prop];
30
+ }
31
+ return cachedOverrideProperties[prop];
32
+ }
33
+ return overrideInterface[prop];
34
+ },
35
+ ownKeys() {
36
+ return [
37
+ ...cachedKey,
38
+ ...cachedStoreKey,
39
+ ];
40
+ },
41
+ has(target, prop) {
42
+ return cachedKey.includes(prop)
43
+ || cachedStoreKey.includes(prop);
44
+ },
45
+ getOwnPropertyDescriptor() {
46
+ return {
47
+ enumerable: true,
48
+ configurable: true,
49
+ };
50
+ },
51
+ });
31
52
  return self;
32
53
  },
33
54
  };
@@ -1,17 +1,14 @@
1
- import { type GetPropsWithValueExtends } from "../object";
2
- import { type Adaptor, type AnyFunction, type AnyValue, type ObjectKey } from "./types";
1
+ import { type Adaptor, type AnyFunction, type AnyValue } from "./types";
2
+ import type * as DObject from "../object";
3
3
  declare const SymbolOverrideStore: unique symbol;
4
4
  declare module "./globalStore" {
5
5
  interface GlobalStore {
6
- [SymbolOverrideStore]: Record<string, [
7
- ObjectKey,
8
- Exclude<AnyValue, AnyFunction> | AnyFunction<[object, ...unknown[]]>
9
- ][]>;
6
+ [SymbolOverrideStore]: Record<string, Record<string, unknown>>;
10
7
  }
11
8
  }
12
9
  export interface OverrideHandler<GenericInterface extends object> {
13
- setMethod<GenericProperty extends GetPropsWithValueExtends<GenericInterface, AnyFunction>>(prop: GenericProperty, theFunction: (self: GenericInterface, ...args: Parameters<GenericInterface[GenericProperty]>) => ReturnType<GenericInterface[GenericProperty]>): void;
14
- setPropertyDefaultValue<GenericProperty extends Exclude<keyof GenericInterface, GetPropsWithValueExtends<GenericInterface, AnyFunction>>>(prop: GenericProperty, value: Adaptor<GenericInterface[GenericProperty], AnyValue>): void;
10
+ setMethod<GenericProperty extends DObject.GetPropsWithValueExtends<GenericInterface, AnyFunction>>(prop: GenericProperty, theFunction: (self: GenericInterface, ...args: Parameters<GenericInterface[GenericProperty]>) => ReturnType<GenericInterface[GenericProperty]>): void;
11
+ setPropertyDefaultValue<GenericProperty extends Exclude<keyof GenericInterface, DObject.GetPropsWithValueExtends<GenericInterface, AnyFunction>>>(prop: GenericProperty, value: Adaptor<GenericInterface[GenericProperty], AnyValue>): void;
15
12
  apply(overrideInterface: GenericInterface): GenericInterface;
16
13
  }
17
14
  export declare function createOverride<GenericInterface extends object>(overrideName: string): OverrideHandler<GenericInterface>;
@@ -1,31 +1,52 @@
1
1
  import { createGlobalStore } from './globalStore.mjs';
2
- import { pipe } from './pipe.mjs';
3
- import { fromEntries } from '../object/fromEntries.mjs';
4
- import { map } from '../array/map.mjs';
5
- import { entry } from '../object/entry.mjs';
6
2
 
7
3
  const SymbolOverrideStore = Symbol.for("@duplojs/utils/override");
8
4
  const overrideStore = createGlobalStore(SymbolOverrideStore, {});
9
5
  function createOverride(overrideName) {
10
- const store = overrideStore.value[overrideName] ?? [];
11
- overrideStore.set({
12
- ...overrideStore.value,
13
- [overrideName]: store,
14
- });
6
+ const overridePropertiesStore = overrideStore.value[overrideName] ?? {};
7
+ overrideStore.value[overrideName] ||= overridePropertiesStore;
8
+ let cachedStoreKey = Object.keys(overridePropertiesStore);
15
9
  return {
16
10
  setMethod(prop, theFunction) {
17
- store.push([prop, theFunction]);
11
+ overridePropertiesStore[prop] = theFunction;
12
+ cachedStoreKey = Object.keys(overridePropertiesStore);
18
13
  },
19
14
  setPropertyDefaultValue(prop, value) {
20
- store.push([prop, value]);
15
+ overridePropertiesStore[prop] = value;
16
+ cachedStoreKey = Object.keys(overridePropertiesStore);
21
17
  },
22
18
  apply(overrideInterface) {
23
- const self = {
24
- ...overrideInterface,
25
- ...pipe(store, map(([key, value]) => entry(key, typeof value === "function"
26
- ? (...args) => value(self, ...args)
27
- : value)), fromEntries),
28
- };
19
+ const cachedOverrideProperties = {};
20
+ const cachedKey = Object.keys(overrideInterface);
21
+ const self = new Proxy({}, {
22
+ get(target, prop) {
23
+ if (overridePropertiesStore[prop]) {
24
+ if (!cachedOverrideProperties[prop]) {
25
+ cachedOverrideProperties[prop] = typeof overridePropertiesStore[prop] === "function"
26
+ ? (...args) => overridePropertiesStore[prop](self, ...args)
27
+ : overridePropertiesStore[prop];
28
+ }
29
+ return cachedOverrideProperties[prop];
30
+ }
31
+ return overrideInterface[prop];
32
+ },
33
+ ownKeys() {
34
+ return [
35
+ ...cachedKey,
36
+ ...cachedStoreKey,
37
+ ];
38
+ },
39
+ has(target, prop) {
40
+ return cachedKey.includes(prop)
41
+ || cachedStoreKey.includes(prop);
42
+ },
43
+ getOwnPropertyDescriptor() {
44
+ return {
45
+ enumerable: true,
46
+ configurable: true,
47
+ };
48
+ },
49
+ });
29
50
  return self;
30
51
  },
31
52
  };
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ function pipeCall(theFunction) {
4
+ return theFunction;
5
+ }
6
+
7
+ exports.pipeCall = pipeCall;
@@ -0,0 +1 @@
1
+ export declare function pipeCall<GenericInput extends unknown, GenericOutput extends unknown>(theFunction: (input: NoInfer<GenericInput>) => GenericOutput): (input: GenericInput) => NoInfer<GenericOutput>;
@@ -0,0 +1,5 @@
1
+ function pipeCall(theFunction) {
2
+ return theFunction;
3
+ }
4
+
5
+ export { pipeCall };
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ function toCurriedPredicate(thePredicate) {
4
+ return thePredicate;
5
+ }
6
+
7
+ exports.toCurriedPredicate = toCurriedPredicate;
@@ -0,0 +1 @@
1
+ export declare function toCurriedPredicate<GenericInput extends unknown, GenericPredicate extends GenericInput>(thePredicate: (input: GenericInput) => input is GenericPredicate): (input: GenericInput) => input is GenericPredicate;
@@ -0,0 +1,5 @@
1
+ function toCurriedPredicate(thePredicate) {
2
+ return thePredicate;
3
+ }
4
+
5
+ export { toCurriedPredicate };
@@ -1,4 +1,5 @@
1
1
  import { type WrappedValue } from "../common/wrapValue";
2
2
  import { type MaybeWrapped } from "./types/maybeWrapped";
3
3
  import { type AnyValue } from "./types";
4
- export declare function toWrappedValue<GenericInnerValue extends AnyValue, GenericValue extends MaybeWrapped<GenericInnerValue>>(value: GenericValue): GenericValue extends WrappedValue ? GenericValue : WrappedValue<GenericValue>;
4
+ export type ToWrappedValue<GenericValue extends unknown> = GenericValue extends WrappedValue ? GenericValue : WrappedValue<GenericValue>;
5
+ export declare function toWrappedValue<GenericInnerValue extends AnyValue, GenericValue extends MaybeWrapped<GenericInnerValue>>(value: GenericValue): ToWrappedValue<GenericValue>;
@@ -0,0 +1,3 @@
1
+ export type DeepReadonly<GenericValue extends unknown> = GenericValue extends object ? {
2
+ readonly [Prop in keyof GenericValue]: DeepReadonly<GenericValue[Prop]>;
3
+ } : GenericValue;
@@ -43,3 +43,4 @@ export * from "./onlyLiteral";
43
43
  export * from "./sortType";
44
44
  export * from "./maybeGetter";
45
45
  export * from "./falsyValue";
46
+ export * from "./DeepReadonly";
@@ -3,6 +3,7 @@
3
3
  var bigint = require('./bigint.cjs');
4
4
  var boolean = require('./boolean.cjs');
5
5
  var date = require('./date.cjs');
6
+ var time = require('./time.cjs');
6
7
  var empty = require('./empty.cjs');
7
8
  var nil = require('./nil.cjs');
8
9
  var number = require('./number.cjs');
@@ -13,6 +14,7 @@ var string = require('./string.cjs');
13
14
  exports.bigint = bigint.bigint;
14
15
  exports.boolean = boolean.boolean;
15
16
  exports.date = date.date;
17
+ exports.time = time.time;
16
18
  exports.empty = empty.empty;
17
19
  exports.nil = nil.nil;
18
20
  exports.number = number.number;
@@ -1,6 +1,7 @@
1
1
  export * from "./bigint";
2
2
  export * from "./boolean";
3
3
  export * from "./date";
4
+ export * from "./time";
4
5
  export * from "./empty";
5
6
  export * from "./nil";
6
7
  export * from "./number";
@@ -1,6 +1,7 @@
1
1
  export { bigint } from './bigint.mjs';
2
2
  export { boolean } from './boolean.mjs';
3
3
  export { date } from './date.mjs';
4
+ export { time } from './time.mjs';
4
5
  export { empty } from './empty.mjs';
5
6
  export { nil } from './nil.mjs';
6
7
  export { number } from './number.mjs';
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var time$1 = require('../time.cjs');
4
+
5
+ function time(definition) {
6
+ return time$1.time({
7
+ ...definition,
8
+ coerce: true,
9
+ });
10
+ }
11
+
12
+ exports.time = time;
@@ -0,0 +1,7 @@
1
+ import { type NeverCoalescing } from "../../../common";
2
+ import { type MergeDefinition } from "../../types";
3
+ import type * as dataParsers from "../../parsers";
4
+ import * as dataParsersExtended from "..";
5
+ export declare function time<const GenericDefinition extends Partial<Omit<dataParsers.DataParserDefinitionTime, "coerce">> = never>(definition?: GenericDefinition): dataParsersExtended.DataParserTimeExtended<MergeDefinition<dataParsers.DataParserDefinitionTime, NeverCoalescing<GenericDefinition, {}> & {
6
+ coerce: true;
7
+ }>>;
@@ -0,0 +1,10 @@
1
+ import { time as time$1 } from '../time.mjs';
2
+
3
+ function time(definition) {
4
+ return time$1({
5
+ ...definition,
6
+ coerce: true,
7
+ });
8
+ }
9
+
10
+ export { time };
@@ -6,6 +6,7 @@ var array = require('./array.cjs');
6
6
  var bigint = require('./bigint.cjs');
7
7
  var number = require('./number.cjs');
8
8
  var date = require('./date.cjs');
9
+ var time = require('./time.cjs');
9
10
  var transform = require('./transform.cjs');
10
11
  var union = require('./union.cjs');
11
12
  var boolean = require('./boolean.cjs');
@@ -35,6 +36,7 @@ exports.bigint = bigint.bigint;
35
36
  exports.int = number.int;
36
37
  exports.number = number.number;
37
38
  exports.date = date.date;
39
+ exports.time = time.time;
38
40
  exports.transform = transform.transform;
39
41
  exports.union = union.union;
40
42
  exports.boolean = boolean.boolean;
@@ -4,6 +4,7 @@ export * from "./array";
4
4
  export * from "./bigint";
5
5
  export * from "./number";
6
6
  export * from "./date";
7
+ export * from "./time";
7
8
  export * from "./transform";
8
9
  export * from "./union";
9
10
  export * from "./boolean";
@@ -5,6 +5,7 @@ export { array } from './array.mjs';
5
5
  export { bigint } from './bigint.mjs';
6
6
  export { int, number } from './number.mjs';
7
7
  export { date } from './date.mjs';
8
+ export { time } from './time.mjs';
8
9
  export { transform } from './transform.mjs';
9
10
  export { union } from './union.mjs';
10
11
  export { boolean } from './boolean.mjs';
@@ -4,6 +4,7 @@ var baseExtended = require('../baseExtended.cjs');
4
4
  var index = require('../parsers/object/index.cjs');
5
5
  var required = require('../parsers/object/required.cjs');
6
6
  var partial = require('../parsers/object/partial.cjs');
7
+ var _extends = require('../parsers/object/extends.cjs');
7
8
  var pick = require('../parsers/object/pick.cjs');
8
9
  var omit = require('../parsers/object/omit.cjs');
9
10
  var override = require('../../common/override.cjs');
@@ -18,6 +19,10 @@ function object(shape, definition) {
18
19
  const newShape = pick.pickShape(self.definition.shape, pickObject);
19
20
  return object(newShape, definition);
20
21
  },
22
+ extends: (self, extension, definition) => {
23
+ const newShape = _extends.extendsShape(self.definition.shape, extension);
24
+ return object(newShape, definition);
25
+ },
21
26
  partial: (self, definition) => {
22
27
  const newShape = partial.partialShape(self.definition.shape);
23
28
  return object(newShape, definition);
@@ -3,6 +3,7 @@ import { type DataParserExtended } from "../baseExtended";
3
3
  import { type AddCheckersToDefinition, type MergeDefinition } from "../types";
4
4
  import * as dataParsers from "../parsers";
5
5
  import { type Output } from "../base";
6
+ import { type AssignObjects } from "../../object";
6
7
  type _DataParserObjectExtended<GenericDefinition extends dataParsers.DataParserDefinitionObject> = (Kind<typeof dataParsers.objectKind.definition> & DataParserExtended<GenericDefinition, dataParsers.DataParserObjectShapeOutput<GenericDefinition["shape"]>, dataParsers.DataParserObjectShapeInput<GenericDefinition["shape"]>>);
7
8
  export interface DataParserObjectExtended<GenericDefinition extends dataParsers.DataParserDefinitionObject = dataParsers.DataParserDefinitionObject> extends _DataParserObjectExtended<GenericDefinition> {
8
9
  addChecker<GenericChecker extends readonly [
@@ -25,6 +26,9 @@ export interface DataParserObjectExtended<GenericDefinition extends dataParsers.
25
26
  pick<const GenericPickObject extends Partial<Record<keyof GenericDefinition["shape"], true>>, const GenericSubDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape" | "optimizedShape">> = never>(pickObject: GenericPickObject, definition?: GenericDefinition): DataParserObjectExtended<MergeDefinition<dataParsers.DataParserDefinitionObject, NeverCoalescing<GenericSubDefinition, {}> & {
26
27
  readonly shape: SimplifyTopLevel<Pick<GenericDefinition["shape"], Adaptor<keyof GenericPickObject, keyof GenericDefinition["shape"]>>>;
27
28
  }>>;
29
+ extends<const GenericExtension extends dataParsers.DataParserObjectShape, const GenericSubDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape" | "optimizedShape">> = never>(extension: GenericExtension, definition?: GenericDefinition): DataParserObjectExtended<MergeDefinition<dataParsers.DataParserDefinitionObject, NeverCoalescing<GenericSubDefinition, {}> & {
30
+ readonly shape: AssignObjects<GenericDefinition["shape"], GenericExtension>;
31
+ }>>;
28
32
  partial<const GenericSubDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape" | "optimizedShape">> = never>(definition?: GenericDefinition): DataParserObjectExtended<MergeDefinition<dataParsers.DataParserDefinitionObject, NeverCoalescing<GenericSubDefinition, {}> & {
29
33
  readonly shape: dataParsers.PartialDataParserObject<GenericDefinition["shape"]>;
30
34
  }>>;
@@ -2,6 +2,7 @@ import { dataParserExtendedInit } from '../baseExtended.mjs';
2
2
  import { object as object$1 } from '../parsers/object/index.mjs';
3
3
  import { requiredShape } from '../parsers/object/required.mjs';
4
4
  import { partialShape } from '../parsers/object/partial.mjs';
5
+ import { extendsShape } from '../parsers/object/extends.mjs';
5
6
  import { pickShape } from '../parsers/object/pick.mjs';
6
7
  import { omitShape } from '../parsers/object/omit.mjs';
7
8
  import { createOverride } from '../../common/override.mjs';
@@ -16,6 +17,10 @@ function object(shape, definition) {
16
17
  const newShape = pickShape(self.definition.shape, pickObject);
17
18
  return object(newShape, definition);
18
19
  },
20
+ extends: (self, extension, definition) => {
21
+ const newShape = extendsShape(self.definition.shape, extension);
22
+ return object(newShape, definition);
23
+ },
19
24
  partial: (self, definition) => {
20
25
  const newShape = partialShape(self.definition.shape);
21
26
  return object(newShape, definition);
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var baseExtended = require('../baseExtended.cjs');
4
+ var index = require('../parsers/time/index.cjs');
5
+ var max = require('../parsers/time/checkers/max.cjs');
6
+ var min = require('../parsers/time/checkers/min.cjs');
7
+ var override = require('../../common/override.cjs');
8
+
9
+ function time(definition) {
10
+ const self = baseExtended.dataParserExtendedInit(index.time(definition), {
11
+ min(self, min$1, definition) {
12
+ return self.addChecker(min.checkerTimeMin(min$1, definition));
13
+ },
14
+ max(self, max$1, definition) {
15
+ return self.addChecker(max.checkerTimeMax(max$1, definition));
16
+ },
17
+ });
18
+ return time.overrideHandler.apply(self);
19
+ }
20
+ time.overrideHandler = override.createOverride("@duplojs/utils/data-parser-extended/time");
21
+
22
+ exports.time = time;
@@ -0,0 +1,34 @@
1
+ import { type FixDeepFunctionInfer, type Kind, type NeverCoalescing } from "../../common";
2
+ import { type DataParserExtended } from "../baseExtended";
3
+ import { type AddCheckersToDefinition, type MergeDefinition } from "../types";
4
+ import * as dataParsers from "../parsers";
5
+ import { type Output } from "../base";
6
+ import { type TheTime } from "../../date";
7
+ type _DataParserTimeExtended<GenericDefinition extends dataParsers.DataParserDefinitionTime> = (Kind<typeof dataParsers.timeKind.definition> & DataParserExtended<GenericDefinition, TheTime, TheTime>);
8
+ export interface DataParserTimeExtended<GenericDefinition extends dataParsers.DataParserDefinitionTime = dataParsers.DataParserDefinitionTime> extends _DataParserTimeExtended<GenericDefinition> {
9
+ addChecker<GenericChecker extends readonly [
10
+ dataParsers.DataParserTimeCheckers,
11
+ ...dataParsers.DataParserTimeCheckers[]
12
+ ]>(...args: FixDeepFunctionInfer<readonly [
13
+ dataParsers.DataParserTimeCheckers,
14
+ ...dataParsers.DataParserTimeCheckers[]
15
+ ], GenericChecker>): DataParserTimeExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
16
+ /**
17
+ * @deprecated Method with unreliable typing.
18
+ */
19
+ construct<const GenericDefinition extends dataParsers.DataParserDefinitionTime>(definition: GenericDefinition): DataParserTimeExtended<MergeDefinition<dataParsers.DataParserDefinitionTime, GenericDefinition>>;
20
+ refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserTimeExtended<AddCheckersToDefinition<GenericDefinition, [
21
+ dataParsers.CheckerRefineImplementation<Output<this>>
22
+ ]>>;
23
+ min(min: TheTime, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionTimeMin, "min">>): DataParserTimeExtended<AddCheckersToDefinition<GenericDefinition, [
24
+ dataParsers.DataParserCheckerTimeMin
25
+ ]>>;
26
+ max(max: TheTime, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionTimeMax, "max">>): DataParserTimeExtended<AddCheckersToDefinition<GenericDefinition, [
27
+ dataParsers.DataParserCheckerTimeMax
28
+ ]>>;
29
+ }
30
+ export declare function time<const GenericDefinition extends Partial<dataParsers.DataParserDefinitionTime> = never>(definition?: GenericDefinition): DataParserTimeExtended<MergeDefinition<dataParsers.DataParserDefinitionTime, NeverCoalescing<GenericDefinition, {}>>>;
31
+ export declare namespace time {
32
+ var overrideHandler: import("../../common").OverrideHandler<DataParserTimeExtended<dataParsers.DataParserDefinitionTime>>;
33
+ }
34
+ export {};
@@ -0,0 +1,20 @@
1
+ import { dataParserExtendedInit } from '../baseExtended.mjs';
2
+ import { time as time$1 } from '../parsers/time/index.mjs';
3
+ import { checkerTimeMax } from '../parsers/time/checkers/max.mjs';
4
+ import { checkerTimeMin } from '../parsers/time/checkers/min.mjs';
5
+ import { createOverride } from '../../common/override.mjs';
6
+
7
+ function time(definition) {
8
+ const self = dataParserExtendedInit(time$1(definition), {
9
+ min(self, min, definition) {
10
+ return self.addChecker(checkerTimeMin(min, definition));
11
+ },
12
+ max(self, max, definition) {
13
+ return self.addChecker(checkerTimeMax(max, definition));
14
+ },
15
+ });
16
+ return time.overrideHandler.apply(self);
17
+ }
18
+ time.overrideHandler = createOverride("@duplojs/utils/data-parser-extended/time");
19
+
20
+ export { time };