@parischap/conversions 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1304 -0
  3. package/cjs/BigDecimal.js +16 -0
  4. package/cjs/BigDecimal.js.map +1 -0
  5. package/cjs/BigInt.js +34 -0
  6. package/cjs/BigInt.js.map +1 -0
  7. package/cjs/DateTime.js +2202 -0
  8. package/cjs/DateTime.js.map +1 -0
  9. package/cjs/DateTimeFormat.js +269 -0
  10. package/cjs/DateTimeFormat.js.map +1 -0
  11. package/cjs/DateTimeFormatContext.js +327 -0
  12. package/cjs/DateTimeFormatContext.js.map +1 -0
  13. package/cjs/Email.js +73 -0
  14. package/cjs/Email.js.map +1 -0
  15. package/cjs/Integer.js +155 -0
  16. package/cjs/Integer.js.map +1 -0
  17. package/cjs/NumberBase10Format.js +759 -0
  18. package/cjs/NumberBase10Format.js.map +1 -0
  19. package/cjs/PositiveInteger.js +191 -0
  20. package/cjs/PositiveInteger.js.map +1 -0
  21. package/cjs/PositiveReal.js +162 -0
  22. package/cjs/PositiveReal.js.map +1 -0
  23. package/cjs/Real.js +113 -0
  24. package/cjs/Real.js.map +1 -0
  25. package/cjs/RoundingMode.js +86 -0
  26. package/cjs/RoundingMode.js.map +1 -0
  27. package/cjs/RoundingOption.js +152 -0
  28. package/cjs/RoundingOption.js.map +1 -0
  29. package/cjs/Schema.js +218 -0
  30. package/cjs/Schema.js.map +1 -0
  31. package/cjs/SemVer.js +73 -0
  32. package/cjs/SemVer.js.map +1 -0
  33. package/cjs/Template.js +189 -0
  34. package/cjs/Template.js.map +1 -0
  35. package/cjs/TemplatePart.js +51 -0
  36. package/cjs/TemplatePart.js.map +1 -0
  37. package/cjs/TemplateParts.js +46 -0
  38. package/cjs/TemplateParts.js.map +1 -0
  39. package/cjs/TemplatePlaceholder.js +381 -0
  40. package/cjs/TemplatePlaceholder.js.map +1 -0
  41. package/cjs/TemplateSeparator.js +116 -0
  42. package/cjs/TemplateSeparator.js.map +1 -0
  43. package/cjs/index.js +67 -0
  44. package/cjs/index.js.map +1 -0
  45. package/cjs/internal/Int.js +50 -0
  46. package/cjs/internal/Int.js.map +1 -0
  47. package/cjs/internal/Positive.js +50 -0
  48. package/cjs/internal/Positive.js.map +1 -0
  49. package/dts/BigDecimal.d.ts +11 -0
  50. package/dts/BigDecimal.d.ts.map +1 -0
  51. package/dts/BigInt.d.ts +30 -0
  52. package/dts/BigInt.d.ts.map +1 -0
  53. package/dts/DateTime.d.ts +1421 -0
  54. package/dts/DateTime.d.ts.map +1 -0
  55. package/dts/DateTimeFormat.d.ts +257 -0
  56. package/dts/DateTimeFormat.d.ts.map +1 -0
  57. package/dts/DateTimeFormatContext.d.ts +112 -0
  58. package/dts/DateTimeFormatContext.d.ts.map +1 -0
  59. package/dts/Email.d.ts +61 -0
  60. package/dts/Email.d.ts.map +1 -0
  61. package/dts/Integer.d.ts +123 -0
  62. package/dts/Integer.d.ts.map +1 -0
  63. package/dts/NumberBase10Format.d.ts +641 -0
  64. package/dts/NumberBase10Format.d.ts.map +1 -0
  65. package/dts/PositiveInteger.d.ts +161 -0
  66. package/dts/PositiveInteger.d.ts.map +1 -0
  67. package/dts/PositiveReal.d.ts +130 -0
  68. package/dts/PositiveReal.d.ts.map +1 -0
  69. package/dts/Real.d.ts +102 -0
  70. package/dts/Real.d.ts.map +1 -0
  71. package/dts/RoundingMode.d.ts +72 -0
  72. package/dts/RoundingMode.d.ts.map +1 -0
  73. package/dts/RoundingOption.d.ts +79 -0
  74. package/dts/RoundingOption.d.ts.map +1 -0
  75. package/dts/Schema.d.ts +159 -0
  76. package/dts/Schema.d.ts.map +1 -0
  77. package/dts/SemVer.d.ts +61 -0
  78. package/dts/SemVer.d.ts.map +1 -0
  79. package/dts/Template.d.ts +113 -0
  80. package/dts/Template.d.ts.map +1 -0
  81. package/dts/TemplatePart.d.ts +28 -0
  82. package/dts/TemplatePart.d.ts.map +1 -0
  83. package/dts/TemplateParts.d.ts +23 -0
  84. package/dts/TemplateParts.d.ts.map +1 -0
  85. package/dts/TemplatePlaceholder.d.ts +274 -0
  86. package/dts/TemplatePlaceholder.d.ts.map +1 -0
  87. package/dts/TemplateSeparator.d.ts +130 -0
  88. package/dts/TemplateSeparator.d.ts.map +1 -0
  89. package/dts/index.d.ts +21 -0
  90. package/dts/index.d.ts.map +1 -0
  91. package/dts/internal/Int.d.ts +6 -0
  92. package/dts/internal/Int.d.ts.map +1 -0
  93. package/dts/internal/Positive.d.ts +6 -0
  94. package/dts/internal/Positive.d.ts.map +1 -0
  95. package/esm/BigDecimal.js +9 -0
  96. package/esm/BigDecimal.js.map +1 -0
  97. package/esm/BigInt.js +27 -0
  98. package/esm/BigInt.js.map +1 -0
  99. package/esm/DateTime.js +2130 -0
  100. package/esm/DateTime.js.map +1 -0
  101. package/esm/DateTimeFormat.js +238 -0
  102. package/esm/DateTimeFormat.js.map +1 -0
  103. package/esm/DateTimeFormatContext.js +296 -0
  104. package/esm/DateTimeFormatContext.js.map +1 -0
  105. package/esm/Email.js +65 -0
  106. package/esm/Email.js.map +1 -0
  107. package/esm/Integer.js +128 -0
  108. package/esm/Integer.js.map +1 -0
  109. package/esm/NumberBase10Format.js +717 -0
  110. package/esm/NumberBase10Format.js.map +1 -0
  111. package/esm/PositiveInteger.js +164 -0
  112. package/esm/PositiveInteger.js.map +1 -0
  113. package/esm/PositiveReal.js +135 -0
  114. package/esm/PositiveReal.js.map +1 -0
  115. package/esm/Real.js +106 -0
  116. package/esm/Real.js.map +1 -0
  117. package/esm/RoundingMode.js +79 -0
  118. package/esm/RoundingMode.js.map +1 -0
  119. package/esm/RoundingOption.js +120 -0
  120. package/esm/RoundingOption.js.map +1 -0
  121. package/esm/Schema.js +203 -0
  122. package/esm/Schema.js.map +1 -0
  123. package/esm/SemVer.js +65 -0
  124. package/esm/SemVer.js.map +1 -0
  125. package/esm/Template.js +158 -0
  126. package/esm/Template.js.map +1 -0
  127. package/esm/TemplatePart.js +22 -0
  128. package/esm/TemplatePart.js.map +1 -0
  129. package/esm/TemplateParts.js +19 -0
  130. package/esm/TemplateParts.js.map +1 -0
  131. package/esm/TemplatePlaceholder.js +342 -0
  132. package/esm/TemplatePlaceholder.js.map +1 -0
  133. package/esm/TemplateSeparator.js +107 -0
  134. package/esm/TemplateSeparator.js.map +1 -0
  135. package/esm/index.js +21 -0
  136. package/esm/index.js.map +1 -0
  137. package/esm/internal/Int.js +43 -0
  138. package/esm/internal/Int.js.map +1 -0
  139. package/esm/internal/Positive.js +43 -0
  140. package/esm/internal/Positive.js.map +1 -0
  141. package/esm/package.json +3 -0
  142. package/package.json +49 -0
@@ -0,0 +1,296 @@
1
+ /** This module implements a Template (see Template.ts) dedicated to parsing and formatting dates */
2
+ import { MArray, MInputError, MInspectable, MPipeable, MPredicate, MString, MTypes } from '@parischap/effect-lib';
3
+ import { Array, Either, flow, HashMap, Number, Option, pipe, Predicate, Struct, Tuple } from 'effect';
4
+ import * as CVDateTime from './DateTime.js';
5
+ import * as CVNumberBase10Format from './NumberBase10Format.js';
6
+ import * as CVReal from './Real.js';
7
+ import * as CVTemplatePlaceholder from './TemplatePlaceholder.js';
8
+ /**
9
+ * Module tag
10
+ *
11
+ * @category Module markers
12
+ */
13
+ export const moduleTag = '@parischap/conversions/DateTimeFormatTemplate/';
14
+ const _TypeId = /*#__PURE__*/Symbol.for(moduleTag);
15
+ const WEEKDAY_DATES = /*#__PURE__*/pipe(7, /*#__PURE__*/Array.makeBy(/*#__PURE__*/flow(/*#__PURE__*/Number.multiply(CVDateTime.DAY_MS), /*#__PURE__*/Number.sum(4 * CVDateTime.DAY_MS))), /*#__PURE__*/Array.map(timestamp => new Date(timestamp)));
16
+ const MONTH_DATES = /*#__PURE__*/pipe(12, /*#__PURE__*/Array.makeBy(/*#__PURE__*/Number.multiply(31 * CVDateTime.DAY_MS)), /*#__PURE__*/Array.map(timestamp => pipe(new Date(timestamp))));
17
+ /**
18
+ * Type guard
19
+ *
20
+ * @category Guards
21
+ */
22
+ export const has = u => Predicate.hasProperty(u, _TypeId);
23
+ /** Prototype */
24
+ const proto = {
25
+ [_TypeId]: _TypeId,
26
+ [MInspectable.IdSymbol]() {
27
+ return this.name;
28
+ },
29
+ ... /*#__PURE__*/MInspectable.BaseProto(moduleTag),
30
+ ...MPipeable.BaseProto
31
+ };
32
+ const _make = params => MTypes.objectFromDataAndProto(proto, params);
33
+ /**
34
+ * Context constructor
35
+ *
36
+ * @category Constructors
37
+ */
38
+ export const fromNames = ({
39
+ name,
40
+ shortWeekdayNames,
41
+ longWeekdayNames,
42
+ shortMonthNames,
43
+ longMonthNames,
44
+ dayPeriodNames
45
+ }) => {
46
+ const integer = CVNumberBase10Format.integer;
47
+ const signedInteger = pipe(integer, CVNumberBase10Format.withSignDisplay);
48
+ const params = {
49
+ fillChar: '0',
50
+ numberBase10Format: integer
51
+ };
52
+ const templatepartEntries = [['y', CVTemplatePlaceholder.real({
53
+ ...params,
54
+ name: 'year'
55
+ })], ['yy', pipe(CVTemplatePlaceholder.fixedLengthToReal({
56
+ ...params,
57
+ name: 'year',
58
+ length: 2
59
+ }), CVTemplatePlaceholder.modify({
60
+ descriptorMapper: MString.append(' between 2000 and 2099 included'),
61
+ postParser: function (value) {
62
+ return pipe(value, Number.sum(2000), MInputError.assertInRange({
63
+ min: 2000,
64
+ max: 2099,
65
+ minIncluded: true,
66
+ maxIncluded: true,
67
+ offset: -2000,
68
+ name: this.label
69
+ }), Either.map(CVReal.unsafeFromNumber));
70
+ },
71
+ preFormatter: function (value) {
72
+ return pipe(value, MInputError.assertInRange({
73
+ min: 2000,
74
+ max: 2099,
75
+ minIncluded: true,
76
+ maxIncluded: true,
77
+ offset: 0,
78
+ name: this.label
79
+ }), Either.map(flow(Number.subtract(2000), CVReal.unsafeFromNumber)));
80
+ }
81
+ }))], ['yyyy', CVTemplatePlaceholder.fixedLengthToReal({
82
+ ...params,
83
+ name: 'year',
84
+ length: 4
85
+ })], ['R', CVTemplatePlaceholder.real({
86
+ ...params,
87
+ name: 'isoYear'
88
+ })], ['RR', pipe(CVTemplatePlaceholder.fixedLengthToReal({
89
+ ...params,
90
+ name: 'isoYear',
91
+ length: 2
92
+ }), CVTemplatePlaceholder.modify({
93
+ descriptorMapper: MString.append(' between 2000 and 2099 included'),
94
+ postParser: function (value) {
95
+ return pipe(value, Number.sum(2000), MInputError.assertInRange({
96
+ min: 2000,
97
+ max: 2099,
98
+ minIncluded: true,
99
+ maxIncluded: true,
100
+ offset: -2000,
101
+ name: this.label
102
+ }), Either.map(CVReal.unsafeFromNumber));
103
+ },
104
+ preFormatter: function (value) {
105
+ return pipe(value, MInputError.assertInRange({
106
+ min: 2000,
107
+ max: 2099,
108
+ minIncluded: true,
109
+ maxIncluded: true,
110
+ offset: 0,
111
+ name: this.label
112
+ }), Either.map(flow(Number.subtract(2000), CVReal.unsafeFromNumber)));
113
+ }
114
+ }))], ['RRRR', CVTemplatePlaceholder.fixedLengthToReal({
115
+ ...params,
116
+ name: 'isoYear',
117
+ length: 4
118
+ })], ['M', CVTemplatePlaceholder.real({
119
+ ...params,
120
+ name: 'month'
121
+ })], ['MM', CVTemplatePlaceholder.fixedLengthToReal({
122
+ ...params,
123
+ name: 'month',
124
+ length: 2
125
+ })], ['MMM', CVTemplatePlaceholder.realMappedLiterals({
126
+ name: 'month',
127
+ keyValuePairs: pipe(shortMonthNames, Array.map((name, i) => Tuple.make(name, CVReal.unsafeFromNumber(i + 1))))
128
+ })], ['MMMM', CVTemplatePlaceholder.realMappedLiterals({
129
+ name: 'month',
130
+ keyValuePairs: pipe(longMonthNames, Array.map((name, i) => Tuple.make(name, CVReal.unsafeFromNumber(i + 1))))
131
+ })], ['I', CVTemplatePlaceholder.real({
132
+ name: 'isoWeek',
133
+ numberBase10Format: CVNumberBase10Format.integer
134
+ })], ['II', CVTemplatePlaceholder.fixedLengthToReal({
135
+ ...params,
136
+ name: 'isoWeek',
137
+ length: 2
138
+ })], ['d', CVTemplatePlaceholder.real({
139
+ ...params,
140
+ name: 'monthDay'
141
+ })], ['dd', CVTemplatePlaceholder.fixedLengthToReal({
142
+ ...params,
143
+ name: 'monthDay',
144
+ length: 2
145
+ })], ['D', CVTemplatePlaceholder.real({
146
+ ...params,
147
+ name: 'ordinalDay'
148
+ })], ['DDD', CVTemplatePlaceholder.fixedLengthToReal({
149
+ ...params,
150
+ name: 'ordinalDay',
151
+ length: 3
152
+ })], ['i', CVTemplatePlaceholder.real({
153
+ ...params,
154
+ name: 'weekday'
155
+ })], ['iii', CVTemplatePlaceholder.realMappedLiterals({
156
+ name: 'weekday',
157
+ keyValuePairs: pipe(shortWeekdayNames, Array.map((name, i) => Tuple.make(name, CVReal.unsafeFromNumber(i + 1))))
158
+ })], ['iiii', CVTemplatePlaceholder.realMappedLiterals({
159
+ name: 'weekday',
160
+ keyValuePairs: pipe(longWeekdayNames, Array.map((name, i) => Tuple.make(name, CVReal.unsafeFromNumber(i + 1))))
161
+ })], ['a', CVTemplatePlaceholder.realMappedLiterals({
162
+ name: 'meridiem',
163
+ keyValuePairs: pipe(dayPeriodNames, Array.map((name, i) => Tuple.make(name, CVReal.unsafeFromNumber(i * 12))))
164
+ })], ['H', CVTemplatePlaceholder.real({
165
+ ...params,
166
+ name: 'hour23'
167
+ })], ['HH', CVTemplatePlaceholder.fixedLengthToReal({
168
+ ...params,
169
+ name: 'hour23',
170
+ length: 2
171
+ })], ['K', CVTemplatePlaceholder.real({
172
+ ...params,
173
+ name: 'hour11'
174
+ })], ['KK', CVTemplatePlaceholder.fixedLengthToReal({
175
+ ...params,
176
+ name: 'hour11',
177
+ length: 2
178
+ })], ['m', CVTemplatePlaceholder.real({
179
+ ...params,
180
+ name: 'minute'
181
+ })], ['mm', CVTemplatePlaceholder.fixedLengthToReal({
182
+ ...params,
183
+ name: 'minute',
184
+ length: 2
185
+ })], ['s', CVTemplatePlaceholder.real({
186
+ ...params,
187
+ name: 'second'
188
+ })], ['ss', CVTemplatePlaceholder.fixedLengthToReal({
189
+ ...params,
190
+ name: 'second',
191
+ length: 2
192
+ })], ['S', CVTemplatePlaceholder.real({
193
+ ...params,
194
+ name: 'millisecond'
195
+ })], ['SSS', CVTemplatePlaceholder.fixedLengthToReal({
196
+ ...params,
197
+ name: 'millisecond',
198
+ length: 3
199
+ })], ['zH', CVTemplatePlaceholder.real({
200
+ ...params,
201
+ name: 'zoneHour',
202
+ numberBase10Format: signedInteger
203
+ })], ['zHzH', CVTemplatePlaceholder.fixedLengthToReal({
204
+ ...params,
205
+ name: 'zoneHour',
206
+ length: 3,
207
+ numberBase10Format: signedInteger
208
+ })], ['zm', CVTemplatePlaceholder.real({
209
+ ...params,
210
+ name: 'zoneMinute'
211
+ })], ['zmzm', CVTemplatePlaceholder.fixedLengthToReal({
212
+ ...params,
213
+ name: 'zoneMinute',
214
+ length: 2
215
+ })], ['zs', CVTemplatePlaceholder.real({
216
+ ...params,
217
+ name: 'zoneSecond'
218
+ })], ['zszs', CVTemplatePlaceholder.fixedLengthToReal({
219
+ ...params,
220
+ name: 'zoneSecond',
221
+ length: 2
222
+ })]];
223
+ return _make({
224
+ name,
225
+ tokenMap: HashMap.make(...templatepartEntries)
226
+ });
227
+ };
228
+ /**
229
+ * CVDateTimeFormatContext instance for Great-Britain English language
230
+ *
231
+ * @category Instances
232
+ */
233
+ export const enGB = /*#__PURE__*/fromNames({
234
+ name: 'en-GB',
235
+ longWeekdayNames: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
236
+ shortWeekdayNames: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
237
+ longMonthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
238
+ shortMonthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
239
+ dayPeriodNames: ['AM', 'PM']
240
+ });
241
+ const _safeDateTimeFormat = /*#__PURE__*/Option.liftThrowable(Intl.DateTimeFormat);
242
+ const _extractType = type => flow(Array.findFirst(flow(Struct.get('type'), MPredicate.strictEquals(type))), Option.map(Struct.get('value')));
243
+ const _extractWeekday = /*#__PURE__*/_extractType('weekday');
244
+ const _extractMonth = /*#__PURE__*/_extractType('month');
245
+ /**
246
+ * Tries to build a DateTimeFormat from locale `locale`. Returns a `some` if successful. Otherwise
247
+ * (non-existent or unavailable locale,...), returns a `none`
248
+ *
249
+ * @category Constructors
250
+ */
251
+ export const fromLocale = locale => Option.gen(function* () {
252
+ const longDateTimeFormatInLocale = yield* _safeDateTimeFormat(locale, {
253
+ timeZone: 'UTC',
254
+ weekday: 'long',
255
+ month: 'long'
256
+ });
257
+ const toLongParts = Intl.DateTimeFormat.prototype.formatToParts.bind(longDateTimeFormatInLocale);
258
+ const shortDateTimeFormatInLocale = yield* _safeDateTimeFormat(locale, {
259
+ timeZone: 'UTC',
260
+ weekday: 'short',
261
+ month: 'short'
262
+ });
263
+ const toShortParts = Intl.DateTimeFormat.prototype.formatToParts.bind(shortDateTimeFormatInLocale);
264
+ const longWeekdayNames = yield* pipe(WEEKDAY_DATES, MArray.mapUnlessNone(flow(toLongParts, _extractWeekday)));
265
+ const longMonthNames = yield* pipe(MONTH_DATES, MArray.mapUnlessNone(flow(toLongParts, _extractMonth)));
266
+ const shortWeekdayNames = yield* pipe(WEEKDAY_DATES, MArray.mapUnlessNone(flow(toShortParts, _extractWeekday)));
267
+ const shortMonthNames = yield* pipe(MONTH_DATES, MArray.mapUnlessNone(flow(toShortParts, _extractMonth)));
268
+ const dayPeriodNames = ['am', 'pm'];
269
+ return fromNames({
270
+ name: locale,
271
+ shortWeekdayNames,
272
+ longWeekdayNames,
273
+ shortMonthNames,
274
+ longMonthNames,
275
+ dayPeriodNames
276
+ });
277
+ });
278
+ /**
279
+ * Same as fromLocale but returns directly the Context or throws if it cannot be built
280
+ *
281
+ * @category Constructors
282
+ */
283
+ export const fromLocaleOrThrow = locale => pipe(locale, fromLocale, Option.getOrThrowWith(() => new Error(`A CVDateTimeFormat.Context could not be built for locale '${locale}'`)));
284
+ /**
285
+ * Returns the `name` property of `self`
286
+ *
287
+ * @category Destructors
288
+ */
289
+ export const name = /*#__PURE__*/Struct.get('name');
290
+ /**
291
+ * Returns the `tokenMap` property of `self`
292
+ *
293
+ * @category Destructors
294
+ */
295
+ export const tokenMap = /*#__PURE__*/Struct.get('tokenMap');
296
+ //# sourceMappingURL=DateTimeFormatContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateTimeFormatContext.js","names":["MArray","MInputError","MInspectable","MPipeable","MPredicate","MString","MTypes","Array","Either","flow","HashMap","Number","Option","pipe","Predicate","Struct","Tuple","CVDateTime","CVNumberBase10Format","CVReal","CVTemplatePlaceholder","moduleTag","_TypeId","Symbol","for","WEEKDAY_DATES","makeBy","multiply","DAY_MS","sum","map","timestamp","Date","MONTH_DATES","has","u","hasProperty","proto","IdSymbol","name","BaseProto","_make","params","objectFromDataAndProto","fromNames","shortWeekdayNames","longWeekdayNames","shortMonthNames","longMonthNames","dayPeriodNames","integer","signedInteger","withSignDisplay","fillChar","numberBase10Format","templatepartEntries","real","fixedLengthToReal","length","modify","descriptorMapper","append","postParser","value","assertInRange","min","max","minIncluded","maxIncluded","offset","label","unsafeFromNumber","preFormatter","subtract","realMappedLiterals","keyValuePairs","i","make","tokenMap","enGB","_safeDateTimeFormat","liftThrowable","Intl","DateTimeFormat","_extractType","type","findFirst","get","strictEquals","_extractWeekday","_extractMonth","fromLocale","locale","gen","longDateTimeFormatInLocale","timeZone","weekday","month","toLongParts","prototype","formatToParts","bind","shortDateTimeFormatInLocale","toShortParts","mapUnlessNone","fromLocaleOrThrow","getOrThrowWith","Error"],"sources":["../../esm/DateTimeFormatContext.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/esm/Email.js ADDED
@@ -0,0 +1,65 @@
1
+ /** A module that implements an Email brand */
2
+ import { MString } from '@parischap/effect-lib';
3
+ import { Brand, Schema } from 'effect';
4
+ /**
5
+ * Module tag
6
+ *
7
+ * @category Module markers
8
+ */
9
+ export const moduleTag = '@parischap/conversions/Email/';
10
+ /**
11
+ * Module TypeId
12
+ *
13
+ * @category Module markers
14
+ */
15
+ export const TypeId = /*#__PURE__*/Symbol.for(moduleTag);
16
+ /**
17
+ * Constructs an Email without any verifications
18
+ *
19
+ * @category Constructors
20
+ */
21
+ export const unsafeFromString = /*#__PURE__*/Brand.nominal();
22
+ /**
23
+ * Constructs an Email from a string. Throws an error if the provided string does not represent an
24
+ * email
25
+ *
26
+ * @category Constructors
27
+ */
28
+ export const constructor = /*#__PURE__*/Brand.refined(MString.isEmail, s => Brand.error(`'${s}' does not represent a email`));
29
+ /**
30
+ * Constructs an Option of an Email from a string.
31
+ *
32
+ * @category Constructors
33
+ */
34
+ export const fromStringOption = /*#__PURE__*/constructor.option.bind(constructor);
35
+ /**
36
+ * Constructs an Either of an Email from a string.
37
+ *
38
+ * @category Constructors
39
+ */
40
+ export const fromString = /*#__PURE__*/constructor.either.bind(constructor);
41
+ /**
42
+ * Constructs an Email or throws.
43
+ *
44
+ * @category Constructors
45
+ */
46
+ export const fromStringOrThrow = constructor;
47
+ /**
48
+ * Checks if a string is an email
49
+ *
50
+ * @category Refinement
51
+ */
52
+ export const has = input => MString.isEmail(input);
53
+ /**
54
+ * A Schema that transforms a string into a CVBrand.Email.Type
55
+ *
56
+ * @internal
57
+ */
58
+ export const SchemaFromString = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.fromBrand(constructor));
59
+ /**
60
+ * A Schema that represents a CVBrand.Email.Type
61
+ *
62
+ * @internal
63
+ */
64
+ export const SchemaFromSelf = /*#__PURE__*/Schema.typeSchema(SchemaFromString);
65
+ //# sourceMappingURL=Email.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Email.js","names":["MString","Brand","Schema","moduleTag","TypeId","Symbol","for","unsafeFromString","nominal","constructor","refined","isEmail","s","error","fromStringOption","option","bind","fromString","either","fromStringOrThrow","has","input","SchemaFromString","String","pipe","fromBrand","SchemaFromSelf","typeSchema"],"sources":["../../esm/Email.ts"],"sourcesContent":[null],"mappings":"AAAA;AAEA,SAASA,OAAO,QAAgB,uBAAuB;AACvD,SAASC,KAAK,EAAkBC,MAAM,QAAQ,QAAQ;AAEtD;;;;;AAKA,OAAO,MAAMC,SAAS,GAAG,+BAA+B;AAExD;;;;;AAKA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAACH,SAAS,CAAY;AAUrE;;;;;AAKA,OAAO,MAAMI,gBAAgB,gBAAGN,KAAK,CAACO,OAAO,EAAQ;AAErD;;;;;;AAMA,OAAO,MAAMC,WAAW,gBAAGR,KAAK,CAACS,OAAO,CAAOV,OAAO,CAACW,OAAO,EAAGC,CAAC,IACjEX,KAAK,CAACY,KAAK,CAAC,IAAID,CAAC,8BAA8B,CAAC,CAChD;AAED;;;;;AAKA,OAAO,MAAME,gBAAgB,gBAGzBL,WAAW,CAACM,MAAM,CAACC,IAAI,CAACP,WAAW,CAAC;AAExC;;;;;AAKA,OAAO,MAAMQ,UAAU,gBAGnBR,WAAW,CAACS,MAAM,CAACF,IAAI,CAACP,WAAW,CAAC;AAExC;;;;;AAKA,OAAO,MAAMU,iBAAiB,GAAwCV,WAAW;AAEjF;;;;;AAKA,OAAO,MAAMW,GAAG,GAAIC,KAAa,IAAoBrB,OAAO,CAACW,OAAO,CAACU,KAAK,CAAC;AAE3E;;;;;AAKA,OAAO,MAAMC,gBAAgB,gBAAgCpB,MAAM,CAACqB,MAAM,CAACC,IAAI,cAC9EtB,MAAM,CAACuB,SAAS,CAAChB,WAAW,CAAC,CAC7B;AAED;;;;;AAKA,OAAO,MAAMiB,cAAc,gBAAwBxB,MAAM,CAACyB,UAAU,CAACL,gBAAgB,CAAC","ignoreList":[]}
package/esm/Integer.js ADDED
@@ -0,0 +1,128 @@
1
+ /**
2
+ * This module implements a finite integer brand (Infinity, NaN or non-null fractional part
3
+ * disallowed)
4
+ */
5
+ import { Brand, Either, flow, Function, Option, Schema } from 'effect';
6
+ import * as CVInt from './internal/Int.js';
7
+ import * as CVReal from './Real.js';
8
+ /**
9
+ * Module tag
10
+ *
11
+ * @category Module markers
12
+ */
13
+ export const moduleTag = '@parischap/conversions/Integer/';
14
+ /**
15
+ * Brand constructor. Should not be used directly
16
+ *
17
+ * @category Constructors
18
+ */
19
+ export const constructor = /*#__PURE__*/Brand.all(CVReal.constructor, CVInt.constructor);
20
+ /**
21
+ * Constructs an Integer from a number without any verifications
22
+ *
23
+ * @category Constructors
24
+ */
25
+ export const unsafeFromNumber = /*#__PURE__*/Brand.nominal();
26
+ /**
27
+ * Constructs an Option of an Integer from a number
28
+ *
29
+ * @category Constructors
30
+ */
31
+ export const fromNumberOption = /*#__PURE__*/constructor.option.bind(constructor);
32
+ /**
33
+ * Constructs an Either of an Integer from a number
34
+ *
35
+ * @category Constructors
36
+ */
37
+ export const fromNumber = /*#__PURE__*/constructor.either.bind(constructor);
38
+ /**
39
+ * Constructs an Integer from a number or throws
40
+ *
41
+ * @category Constructors
42
+ */
43
+ export const fromNumberOrThrow = constructor;
44
+ /**
45
+ * Constructs an Integer from a BigDecimal without any checks
46
+ *
47
+ * @category Constructors
48
+ */
49
+ export const unsafeFromBigDecimal = CVReal.unsafeFromBigDecimal;
50
+ /**
51
+ * Constructs an Option of an Integer from a BigDecimal
52
+ *
53
+ * @category Constructors
54
+ */
55
+ export const fromBigDecimalOption = /*#__PURE__*/flow(CVReal.fromBigDecimalOption, /*#__PURE__*/Option.flatMap(CVInt.fromNumberOption));
56
+ /**
57
+ * Constructs an Either of an Integer from a BigDecimal
58
+ *
59
+ * @category Constructors
60
+ */
61
+ export const fromBigDecimal = /*#__PURE__*/flow(CVReal.fromBigDecimal, /*#__PURE__*/Either.flatMap(CVInt.fromNumber));
62
+ /**
63
+ * Constructs an Integer from a BigDecimal or throws
64
+ *
65
+ * @category Constructors
66
+ */
67
+ export const fromBigDecimalOrThrow = /*#__PURE__*/flow(CVReal.fromBigDecimalOrThrow, CVInt.fromNumberOrThrow);
68
+ /**
69
+ * Constructs an Integer from a BigInt without any checks
70
+ *
71
+ * @category Constructors
72
+ */
73
+ export const unsafeFromBigInt = CVReal.unsafeFromBigInt;
74
+ /**
75
+ * Constructs an Option of an Integer from a BigInt
76
+ *
77
+ * @category Constructors
78
+ */
79
+ export const fromBigIntOption = /*#__PURE__*/flow(CVReal.fromBigIntOption);
80
+ /**
81
+ * Constructs an Either of an Integer from a BigInt
82
+ *
83
+ * @category Constructors
84
+ */
85
+ export const fromBigInt = /*#__PURE__*/flow(CVReal.fromBigInt, /*#__PURE__*/Either.flatMap(CVInt.fromNumber));
86
+ /**
87
+ * Constructs an Integer from a BigInt or throws
88
+ *
89
+ * @category Constructors
90
+ */
91
+ export const fromBigIntOrThrow = /*#__PURE__*/flow(CVReal.fromBigIntOrThrow);
92
+ /**
93
+ * Constructs an Integer from a Real without any checks
94
+ *
95
+ * @category Constructors
96
+ */
97
+ export const unsafeFromReal = Function.identity;
98
+ /**
99
+ * Constructs an Option of an Integer from a Real
100
+ *
101
+ * @category Constructors
102
+ */
103
+ export const fromRealOption = CVInt.fromNumberOption;
104
+ /**
105
+ * Constructs an Either of an Integer from a Real
106
+ *
107
+ * @category Constructors
108
+ */
109
+ export const fromReal = CVInt.fromNumber;
110
+ /**
111
+ * Constructs an Integer from a Real or throws
112
+ *
113
+ * @category Constructors
114
+ */
115
+ export const fromRealOrThrow = CVInt.fromNumberOrThrow;
116
+ /**
117
+ * A Schema that transforms a number into a CVInteger.Type
118
+ *
119
+ * @internal
120
+ */
121
+ export const SchemaFromNumber = /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.fromBrand(constructor));
122
+ /**
123
+ * A Schema that represents a CVInteger.Type
124
+ *
125
+ * @internal
126
+ */
127
+ export const SchemaFromSelf = /*#__PURE__*/Schema.typeSchema(SchemaFromNumber);
128
+ //# sourceMappingURL=Integer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Integer.js","names":["Brand","Either","flow","Function","Option","Schema","CVInt","CVReal","moduleTag","constructor","all","unsafeFromNumber","nominal","fromNumberOption","option","bind","fromNumber","either","fromNumberOrThrow","unsafeFromBigDecimal","fromBigDecimalOption","flatMap","fromBigDecimal","fromBigDecimalOrThrow","unsafeFromBigInt","fromBigIntOption","fromBigInt","fromBigIntOrThrow","unsafeFromReal","identity","fromRealOption","fromReal","fromRealOrThrow","SchemaFromNumber","Number","pipe","fromBrand","SchemaFromSelf","typeSchema"],"sources":["../../esm/Integer.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;AAMA,SAAqBA,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,QAAQ,QAAQ;AAClF,OAAO,KAAKC,KAAK,MAAM,mBAAmB;AAC1C,OAAO,KAAKC,MAAM,MAAM,WAAW;AAEnC;;;;;AAKA,OAAO,MAAMC,SAAS,GAAG,iCAAiC;AAE1D;;;;;AAKA,OAAO,MAAMC,WAAW,gBAAGT,KAAK,CAACU,GAAG,CAACH,MAAM,CAACE,WAAW,EAAEH,KAAK,CAACG,WAAW,CAAC;AAS3E;;;;;AAKA,OAAO,MAAME,gBAAgB,gBAAGX,KAAK,CAACY,OAAO,EAAQ;AAErD;;;;;AAKA,OAAO,MAAMC,gBAAgB,gBAGzBJ,WAAW,CAACK,MAAM,CAACC,IAAI,CAACN,WAAW,CAAC;AAExC;;;;;AAKA,OAAO,MAAMO,UAAU,gBAGnBP,WAAW,CAACQ,MAAM,CAACF,IAAI,CAACN,WAAW,CAAC;AAExC;;;;;AAKA,OAAO,MAAMS,iBAAiB,GAAwCT,WAAW;AAEjF;;;;;AAKA,OAAO,MAAMU,oBAAoB,GAChCZ,MAAM,CAACY,oBAA6B;AAErC;;;;;AAKA,OAAO,MAAMC,oBAAoB,gBAG7BlB,IAAI,CAACK,MAAM,CAACa,oBAAoB,eAAEhB,MAAM,CAACiB,OAAO,CAACf,KAAK,CAACO,gBAAgB,CAAC,CAAU;AAEtF;;;;;AAKA,OAAO,MAAMS,cAAc,gBAGvBpB,IAAI,CAACK,MAAM,CAACe,cAAc,eAAErB,MAAM,CAACoB,OAAO,CAACf,KAAK,CAACU,UAAU,CAAC,CAAU;AAE1E;;;;;AAKA,OAAO,MAAMO,qBAAqB,gBAAuDrB,IAAI,CAC5FK,MAAM,CAACgB,qBAAqB,EAC5BjB,KAAK,CAACY,iBAAiB,CACd;AAEV;;;;;AAKA,OAAO,MAAMM,gBAAgB,GAC5BjB,MAAM,CAACiB,gBAAyB;AAEjC;;;;;AAKA,OAAO,MAAMC,gBAAgB,gBAAuDvB,IAAI,CACvFK,MAAM,CAACkB,gBAAgB,CACd;AAEV;;;;;AAKA,OAAO,MAAMC,UAAU,gBAGnBxB,IAAI,CAACK,MAAM,CAACmB,UAAU,eAAEzB,MAAM,CAACoB,OAAO,CAACf,KAAK,CAACU,UAAU,CAAC,CAAU;AAEtE;;;;;AAKA,OAAO,MAAMW,iBAAiB,gBAAwCzB,IAAI,CACzEK,MAAM,CAACoB,iBAAiB,CACf;AAEV;;;;;AAKA,OAAO,MAAMC,cAAc,GAA6CzB,QAAQ,CAAC0B,QAAiB;AAElG;;;;;AAKA,OAAO,MAAMC,cAAc,GAGvBxB,KAAK,CAACO,gBAAyB;AAEnC;;;;;AAKA,OAAO,MAAMkB,QAAQ,GAGjBzB,KAAK,CAACU,UAAmB;AAE7B;;;;;AAKA,OAAO,MAAMgB,eAAe,GAC3B1B,KAAK,CAACY,iBAA0B;AAEjC;;;;;AAKA,OAAO,MAAMe,gBAAgB,gBAAgC5B,MAAM,CAAC6B,MAAM,CAACC,IAAI,cAC9E9B,MAAM,CAAC+B,SAAS,CAAC3B,WAAW,CAAC,CAC7B;AAED;;;;;AAKA,OAAO,MAAM4B,cAAc,gBAAwBhC,MAAM,CAACiC,UAAU,CAACL,gBAAgB,CAAC","ignoreList":[]}