@pbkware/fielded-text-web 0.1.2 → 0.2.1

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 (203) hide show
  1. package/README.md +19 -41
  2. package/dist/api/ft-reader.js +1 -1
  3. package/dist/api/ft-reader.js.map +1 -1
  4. package/dist/api/ft-serialization.js +4 -4
  5. package/dist/api/ft-serialization.js.map +1 -1
  6. package/dist/factory/ft-field-factory.js +1 -1
  7. package/dist/factory/ft-field-factory.js.map +1 -1
  8. package/dist/factory/ft-sequence-redirect-factory.js +3 -3
  9. package/dist/factory/ft-sequence-redirect-factory.js.map +1 -1
  10. package/dist/fields/definitions/ft-boolean-field-definition.js +1 -1
  11. package/dist/fields/definitions/ft-boolean-field-definition.js.map +1 -1
  12. package/dist/fields/definitions/ft-date-time-field-definition.js +1 -1
  13. package/dist/fields/definitions/ft-date-time-field-definition.js.map +1 -1
  14. package/dist/fields/definitions/ft-decimal-field-definition.js +1 -1
  15. package/dist/fields/definitions/ft-decimal-field-definition.js.map +1 -1
  16. package/dist/fields/definitions/ft-field-definition.js +1 -1
  17. package/dist/fields/definitions/ft-field-definition.js.map +1 -1
  18. package/dist/fields/definitions/ft-float-field-definition.js +1 -1
  19. package/dist/fields/definitions/ft-float-field-definition.js.map +1 -1
  20. package/dist/fields/definitions/ft-integer-field-definition.js +1 -1
  21. package/dist/fields/definitions/ft-integer-field-definition.js.map +1 -1
  22. package/dist/fields/definitions/ft-string-field-definition.js +1 -1
  23. package/dist/fields/definitions/ft-string-field-definition.js.map +1 -1
  24. package/dist/fields/instances/errors/ft-field-null-error.js +11 -0
  25. package/dist/fields/instances/errors/ft-field-null-error.js.map +1 -0
  26. package/dist/fields/instances/errors/ft-field-type-error.js +11 -0
  27. package/dist/fields/instances/errors/ft-field-type-error.js.map +1 -0
  28. package/dist/fields/instances/ft-boolean-field.js +14 -6
  29. package/dist/fields/instances/ft-boolean-field.js.map +1 -1
  30. package/dist/fields/instances/ft-date-time-field.js +26 -8
  31. package/dist/fields/instances/ft-date-time-field.js.map +1 -1
  32. package/dist/fields/instances/ft-decimal-field.js +14 -6
  33. package/dist/fields/instances/ft-decimal-field.js.map +1 -1
  34. package/dist/fields/instances/ft-field.js +315 -123
  35. package/dist/fields/instances/ft-field.js.map +1 -1
  36. package/dist/fields/instances/ft-float-field.js +14 -6
  37. package/dist/fields/instances/ft-float-field.js.map +1 -1
  38. package/dist/fields/instances/ft-generic-field.js +29 -67
  39. package/dist/fields/instances/ft-generic-field.js.map +1 -1
  40. package/dist/fields/instances/ft-integer-field.js +24 -8
  41. package/dist/fields/instances/ft-integer-field.js.map +1 -1
  42. package/dist/fields/instances/ft-string-field.js +13 -13
  43. package/dist/fields/instances/ft-string-field.js.map +1 -1
  44. package/dist/index.d.ts +616 -288
  45. package/dist/index.js +12 -3
  46. package/dist/index.js.map +1 -1
  47. package/dist/meta/sequences/core/ft-meta-sequence-list.js +4 -2
  48. package/dist/meta/sequences/core/ft-meta-sequence-list.js.map +1 -1
  49. package/dist/meta/sequences/redirects/ft-meta-sequence-redirect-list.js +1 -1
  50. package/dist/meta/sequences/redirects/ft-meta-sequence-redirect-list.js.map +1 -1
  51. package/dist/meta-serialization/format/ft-xml-meta-serialization.js +4 -6
  52. package/dist/meta-serialization/format/ft-xml-meta-serialization.js.map +1 -1
  53. package/dist/meta-serialization/styles/ft-number-styles-meta-serialization.js +1 -1
  54. package/dist/meta-serialization/styles/ft-number-styles-meta-serialization.js.map +1 -1
  55. package/dist/meta-serialization/types/date-time-meta-serialization.js +1 -1
  56. package/dist/meta-serialization/types/date-time-meta-serialization.js.map +1 -1
  57. package/dist/meta-serialization/types/enums/sequence-redirect-type-meta-serialisation.js +1 -1
  58. package/dist/meta-serialization/types/enums/sequence-redirect-type-meta-serialisation.js.map +1 -1
  59. package/dist/meta-serialization/types/float-meta-serialization.js +2 -2
  60. package/dist/meta-serialization/types/float-meta-serialization.js.map +1 -1
  61. package/dist/meta-serialization/types/integer-float-meta-serialization.js +2 -2
  62. package/dist/meta-serialization/types/integer-float-meta-serialization.js.map +1 -1
  63. package/dist/meta-serialization/utils/implicit-explicit-index-sorter.js +4 -10
  64. package/dist/meta-serialization/utils/implicit-explicit-index-sorter.js.map +1 -1
  65. package/dist/meta-serialization/utils/meta-serialization-sequence-name-resolver.js +25 -2
  66. package/dist/meta-serialization/utils/meta-serialization-sequence-name-resolver.js.map +1 -1
  67. package/dist/meta-serialization/utils/sequence-item-field-indices.js +2 -2
  68. package/dist/meta-serialization/utils/sequence-item-field-indices.js.map +1 -1
  69. package/dist/sequences/redirects/ft-case-insensitive-string-sequence-redirect.js +3 -1
  70. package/dist/sequences/redirects/ft-case-insensitive-string-sequence-redirect.js.map +1 -1
  71. package/dist/serialization/char-reader.js +2 -2
  72. package/dist/serialization/char-reader.js.map +1 -1
  73. package/dist/serialization/declaration-parser.js +1 -1
  74. package/dist/serialization/declaration-parser.js.map +1 -1
  75. package/dist/serialization/delimited-field-parser.js.map +1 -1
  76. package/dist/serialization/events/ft-field-heading-ready-event-args.js.map +1 -0
  77. package/dist/serialization/events/ft-field-value-ready-event-args.js.map +1 -0
  78. package/dist/serialization/events/ft-heading-line-finished-event-args.js.map +1 -0
  79. package/dist/serialization/events/ft-heading-line-started-event-args.js.map +1 -0
  80. package/dist/serialization/events/ft-record-finished-event-args.js.map +1 -0
  81. package/dist/serialization/events/ft-record-started-event-args.js.map +1 -0
  82. package/dist/serialization/events/ft-sequence-redirected-event-args.js.map +1 -0
  83. package/dist/serialization/fixed-width-field-parser.js +1 -1
  84. package/dist/serialization/fixed-width-field-parser.js.map +1 -1
  85. package/dist/serialization/ft-declared-parameters.js +9 -8
  86. package/dist/serialization/ft-declared-parameters.js.map +1 -1
  87. package/dist/serialization/{serialization-core.js → ft-serialization-core.js} +114 -11
  88. package/dist/serialization/ft-serialization-core.js.map +1 -0
  89. package/dist/{types/errors/ft-serialization-error.js → serialization/ft-serialization-error-code.js} +2 -2
  90. package/dist/serialization/ft-serialization-error-code.js.map +1 -0
  91. package/dist/{types/errors/ft-serialization-exception.js → serialization/ft-serialization-error.js} +7 -7
  92. package/dist/serialization/ft-serialization-error.js.map +1 -0
  93. package/dist/serialization/ft-serialization-reader.js +19 -47
  94. package/dist/serialization/ft-serialization-reader.js.map +1 -1
  95. package/dist/serialization/ft-serialization-writer.js +86 -49
  96. package/dist/serialization/ft-serialization-writer.js.map +1 -1
  97. package/dist/serialization/heading-line-record-parser.js +7 -7
  98. package/dist/serialization/heading-line-record-parser.js.map +1 -1
  99. package/dist/serialization/line-parser.js +1 -1
  100. package/dist/serialization/line-parser.js.map +1 -1
  101. package/dist/serialization/{ft-text-reader.js → text-reader/ft-string-reader.js} +1 -13
  102. package/dist/serialization/text-reader/ft-string-reader.js.map +1 -0
  103. package/dist/serialization/text-reader/ft-text-reader.js +13 -0
  104. package/dist/serialization/text-reader/ft-text-reader.js.map +1 -0
  105. package/dist/tsdoc-metadata.json +1 -1
  106. package/dist/types/enums/ft-heading-constraint.js +5 -0
  107. package/dist/types/enums/ft-heading-constraint.js.map +1 -1
  108. package/dist/utils/ft-comma-text.js +247 -0
  109. package/dist/utils/ft-comma-text.js.map +1 -0
  110. package/dist/utils/ft-internal-error.js +129 -0
  111. package/dist/utils/ft-internal-error.js.map +1 -0
  112. package/dist/utils/ft-result.js +2 -0
  113. package/dist/utils/ft-result.js.map +1 -0
  114. package/dist/utils/number-parse.js +33 -0
  115. package/dist/utils/number-parse.js.map +1 -0
  116. package/dist/utils/string-builder.js +40 -0
  117. package/dist/utils/string-builder.js.map +1 -0
  118. package/package.json +25 -27
  119. package/src/api/ft-reader.ts +2 -1
  120. package/src/api/ft-serialization.ts +13 -13
  121. package/src/factory/ft-field-factory.ts +1 -1
  122. package/src/factory/ft-sequence-redirect-factory.ts +4 -4
  123. package/src/fields/definitions/ft-boolean-field-definition.ts +1 -1
  124. package/src/fields/definitions/ft-date-time-field-definition.ts +1 -1
  125. package/src/fields/definitions/ft-decimal-field-definition.ts +1 -1
  126. package/src/fields/definitions/ft-field-definition.ts +1 -1
  127. package/src/fields/definitions/ft-float-field-definition.ts +1 -1
  128. package/src/fields/definitions/ft-generic-field-definition.ts +1 -1
  129. package/src/fields/definitions/ft-integer-field-definition.ts +1 -1
  130. package/src/fields/definitions/ft-string-field-definition.ts +1 -1
  131. package/src/fields/instances/errors/ft-field-null-error.ts +10 -0
  132. package/src/fields/instances/errors/ft-field-type-error.ts +10 -0
  133. package/src/fields/instances/ft-boolean-field.ts +17 -6
  134. package/src/fields/instances/ft-date-time-field.ts +28 -7
  135. package/src/fields/instances/ft-decimal-field.ts +17 -6
  136. package/src/fields/instances/ft-field.ts +329 -145
  137. package/src/fields/instances/ft-float-field.ts +17 -6
  138. package/src/fields/instances/ft-generic-field.ts +32 -88
  139. package/src/fields/instances/ft-integer-field.ts +29 -7
  140. package/src/fields/instances/ft-string-field.ts +15 -12
  141. package/src/index.ts +21 -12
  142. package/src/meta/sequences/core/ft-meta-sequence-list.ts +4 -3
  143. package/src/meta/sequences/redirects/ft-meta-sequence-redirect-list.ts +1 -1
  144. package/src/meta-serialization/format/ft-xml-meta-serialization.ts +4 -7
  145. package/src/meta-serialization/styles/ft-number-styles-meta-serialization.ts +1 -1
  146. package/src/meta-serialization/types/date-time-meta-serialization.ts +1 -1
  147. package/src/meta-serialization/types/enums/meta-element-type-meta-serialization.ts +4 -4
  148. package/src/meta-serialization/types/enums/sequence-redirect-type-meta-serialisation.ts +1 -1
  149. package/src/meta-serialization/types/float-meta-serialization.ts +2 -2
  150. package/src/meta-serialization/types/integer-float-meta-serialization.ts +2 -2
  151. package/src/meta-serialization/utils/implicit-explicit-index-sorter.ts +18 -12
  152. package/src/meta-serialization/utils/meta-serialization-sequence-name-resolver.ts +25 -2
  153. package/src/meta-serialization/utils/sequence-item-field-indices.ts +2 -2
  154. package/src/sequences/redirects/ft-case-insensitive-string-sequence-redirect.ts +3 -1
  155. package/src/serialization/char-reader.ts +2 -2
  156. package/src/serialization/declaration-parser.ts +1 -1
  157. package/src/serialization/delimited-field-parser.ts +3 -3
  158. package/src/serialization/fixed-width-field-parser.ts +4 -4
  159. package/src/serialization/ft-declared-parameters.ts +12 -11
  160. package/src/serialization/{serialization-core.ts → ft-serialization-core.ts} +133 -17
  161. package/src/{types/errors/ft-serialization-error.ts → serialization/ft-serialization-error-code.ts} +2 -2
  162. package/src/{types/errors/ft-serialization-exception.ts → serialization/ft-serialization-error.ts} +14 -9
  163. package/src/serialization/ft-serialization-reader.ts +21 -54
  164. package/src/serialization/ft-serialization-writer.ts +97 -64
  165. package/src/serialization/heading-line-record-parser.ts +10 -10
  166. package/src/serialization/line-parser.ts +1 -1
  167. package/src/serialization/{ft-text-reader.ts → text-reader/ft-string-reader.ts} +1 -24
  168. package/src/serialization/text-reader/ft-text-reader.ts +24 -0
  169. package/src/types/enums/ft-heading-constraint.ts +5 -0
  170. package/src/utils/ft-comma-text.ts +285 -0
  171. package/src/utils/ft-internal-error.ts +143 -0
  172. package/src/utils/ft-result.ts +1 -0
  173. package/src/utils/number-parse.ts +35 -0
  174. package/src/utils/string-builder.ts +47 -0
  175. package/LICENSE +0 -21
  176. package/dist/serialization/ft-text-reader.js.map +0 -1
  177. package/dist/serialization/serialization-core.js.map +0 -1
  178. package/dist/types/errors/ft-internal-error.js +0 -14
  179. package/dist/types/errors/ft-internal-error.js.map +0 -1
  180. package/dist/types/errors/ft-serialization-error.js.map +0 -1
  181. package/dist/types/errors/ft-serialization-exception.js.map +0 -1
  182. package/dist/types/events/ft-field-heading-ready-event-args.js.map +0 -1
  183. package/dist/types/events/ft-field-value-ready-event-args.js.map +0 -1
  184. package/dist/types/events/ft-heading-line-finished-event-args.js.map +0 -1
  185. package/dist/types/events/ft-heading-line-started-event-args.js.map +0 -1
  186. package/dist/types/events/ft-record-finished-event-args.js.map +0 -1
  187. package/dist/types/events/ft-record-started-event-args.js.map +0 -1
  188. package/dist/types/events/ft-sequence-redirected-event-args.js.map +0 -1
  189. package/src/types/errors/ft-internal-error.ts +0 -15
  190. /package/dist/{types → serialization}/events/ft-field-heading-ready-event-args.js +0 -0
  191. /package/dist/{types → serialization}/events/ft-field-value-ready-event-args.js +0 -0
  192. /package/dist/{types → serialization}/events/ft-heading-line-finished-event-args.js +0 -0
  193. /package/dist/{types → serialization}/events/ft-heading-line-started-event-args.js +0 -0
  194. /package/dist/{types → serialization}/events/ft-record-finished-event-args.js +0 -0
  195. /package/dist/{types → serialization}/events/ft-record-started-event-args.js +0 -0
  196. /package/dist/{types → serialization}/events/ft-sequence-redirected-event-args.js +0 -0
  197. /package/src/{types → serialization}/events/ft-field-heading-ready-event-args.ts +0 -0
  198. /package/src/{types → serialization}/events/ft-field-value-ready-event-args.ts +0 -0
  199. /package/src/{types → serialization}/events/ft-heading-line-finished-event-args.ts +0 -0
  200. /package/src/{types → serialization}/events/ft-heading-line-started-event-args.ts +0 -0
  201. /package/src/{types → serialization}/events/ft-record-finished-event-args.ts +0 -0
  202. /package/src/{types → serialization}/events/ft-record-started-event-args.ts +0 -0
  203. /package/src/{types → serialization}/events/ft-sequence-redirected-event-args.ts +0 -0
@@ -0,0 +1,285 @@
1
+ import { FtUnreachableCaseError } from './ft-internal-error.js';
2
+ import { FtErr, FtOk, FtResult } from './ft-result.js';
3
+ import { StringBuilder } from './string-builder.js';
4
+
5
+ /** @public */
6
+ export namespace FtCommaText {
7
+ const enum InQuotes {
8
+ NotIn,
9
+ In,
10
+ CheckingStuffed,
11
+ }
12
+
13
+ export const delimiterChar = ',';
14
+ export const quoteChar = '"';
15
+ export const pairQuoteChar = quoteChar + quoteChar;
16
+ const quoteCharGlobalRegEx = /"/g;
17
+ const pairQuoteCharGlobalRegEx = /""/g;
18
+
19
+ export function from2Values(value1: string, value2: string): string {
20
+ const array: string[] = new Array<string>(2);
21
+ array[0] = value1;
22
+ array[1] = value2;
23
+ return fromStringArray(array);
24
+ }
25
+
26
+ export function from3Values(value1: string, value2: string, value3: string): string {
27
+ const array: string[] = new Array<string>(3);
28
+ array[0] = value1;
29
+ array[1] = value2;
30
+ array[2] = value3;
31
+ return fromStringArray(array);
32
+ }
33
+
34
+ export function from4Values(value1: string, value2: string, value3: string, value4: string): string {
35
+ const array: string[] = new Array<string>(4);
36
+ array[0] = value1;
37
+ array[1] = value2;
38
+ array[2] = value3;
39
+ array[3] = value4;
40
+ return fromStringArray(array);
41
+ }
42
+
43
+ export function fromStringArray(value: readonly string[]): string {
44
+ function appendQuotedString(unquotedValue: string) {
45
+ resultBldr.append(quoteChar);
46
+ const quoteStuffedValue = unquotedValue.replace(quoteCharGlobalRegEx, pairQuoteChar);
47
+ resultBldr.append(quoteStuffedValue);
48
+ resultBldr.append(quoteChar);
49
+ }
50
+
51
+ const resultBldr = new StringBuilder();
52
+
53
+ for (let i = 0; i < value.length; i++) {
54
+ if (i > 0) {
55
+ resultBldr.append(delimiterChar);
56
+ }
57
+
58
+ const element = value[i];
59
+
60
+ if (element.includes(delimiterChar)) {
61
+ appendQuotedString(element);
62
+ } else {
63
+ const trimmedValue = element.trim();
64
+ // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with
65
+ if (trimmedValue.length > 0 && trimmedValue[0] === quoteChar) {
66
+ appendQuotedString(element);
67
+ } else {
68
+ resultBldr.append(element);
69
+ }
70
+ }
71
+ }
72
+
73
+ return resultBldr.toString();
74
+ }
75
+
76
+ export function fromIntegerArray(value: number[]): string {
77
+ const strArray = new Array<string>(value.length);
78
+ for (let i = 0; i < value.length; i++) {
79
+ strArray[i] = value[i].toString(10);
80
+ }
81
+ return fromStringArray(strArray);
82
+ }
83
+
84
+ export function toStringArray(value: string): string[] {
85
+ const toResult = tryToStringArray(value, false);
86
+ if (toResult.isOk()) {
87
+ return toResult.value;
88
+ } else {
89
+ const errorIdPlusExtra = toResult.error;
90
+ const errorId = errorIdPlusExtra.errorId;
91
+ const message = `CommaText error: ${errorIdToEnglish(errorId)}: ${value}`;
92
+ throw new Error(message, errorId, errorIdPlusExtra.extraInfo);
93
+ }
94
+ }
95
+
96
+ export function tryToStringArray(
97
+ value: string,
98
+ strict = true,
99
+ ): FtResult<string[], ErrorIdPlusExtra<typeof ErrorId.QuotesNotClosedInLastElement | typeof ErrorId.UnexpectedCharAfterQuotedElement>> {
100
+ function addElement(endPos: number, removeStuffedQuotes: boolean) {
101
+ let elemStr = value.substring(startPos, endPos + 1);
102
+ if (removeStuffedQuotes) {
103
+ elemStr = elemStr.replace(pairQuoteCharGlobalRegEx, quoteChar);
104
+ }
105
+ resultArray.push(elemStr.trim());
106
+ }
107
+
108
+ const resultArray: string[] = [];
109
+ let inQuotes = InQuotes.NotIn;
110
+ let waitingForDelimiter = false;
111
+ let startPos = 0;
112
+ const valueLength = value.length;
113
+
114
+ for (let i = 0; i < valueLength; i++) {
115
+ const valueChar = value[i];
116
+ if (waitingForDelimiter) {
117
+ if (valueChar === delimiterChar) {
118
+ waitingForDelimiter = false;
119
+ startPos = i + 1;
120
+ } else {
121
+ if (strict && !/\s/.test(valueChar)) {
122
+ return new FtErr({ errorId: ErrorId.UnexpectedCharAfterQuotedElement, extraInfo: `${i}` });
123
+ }
124
+ }
125
+ } else {
126
+ switch (inQuotes) {
127
+ case InQuotes.NotIn:
128
+ switch (valueChar) {
129
+ case delimiterChar:
130
+ addElement(i - 1, false);
131
+ startPos = i + 1;
132
+ break;
133
+ case quoteChar:
134
+ if (value.substring(startPos, i).trim().length === 0) {
135
+ inQuotes = InQuotes.In;
136
+ startPos = i + 1;
137
+ }
138
+ break;
139
+ }
140
+ break;
141
+ case InQuotes.In:
142
+ if (valueChar === quoteChar) {
143
+ inQuotes = InQuotes.CheckingStuffed;
144
+ }
145
+ break;
146
+ case InQuotes.CheckingStuffed:
147
+ switch (valueChar) {
148
+ case quoteChar:
149
+ inQuotes = InQuotes.In;
150
+ break;
151
+ case delimiterChar:
152
+ inQuotes = InQuotes.NotIn;
153
+ addElement(i - 2, true);
154
+ startPos = i + 1;
155
+ break;
156
+ default:
157
+ inQuotes = InQuotes.NotIn;
158
+ addElement(i - 2, true);
159
+ waitingForDelimiter = true;
160
+
161
+ if (strict && !/\s/g.test(valueChar)) {
162
+ return new FtErr({ errorId: ErrorId.UnexpectedCharAfterQuotedElement, extraInfo: `${i}` });
163
+ }
164
+ }
165
+ break;
166
+ default:
167
+ throw new FtUnreachableCaseError('CTTTSA66699', inQuotes);
168
+ }
169
+ }
170
+ }
171
+
172
+ if (!waitingForDelimiter) {
173
+ switch (inQuotes) {
174
+ case InQuotes.NotIn:
175
+ if (startPos <= valueLength) {
176
+ addElement(valueLength, false);
177
+ }
178
+ break;
179
+ case InQuotes.In:
180
+ if (!strict) {
181
+ addElement(valueLength, true);
182
+ } else {
183
+ return new FtErr({ errorId: ErrorId.QuotesNotClosedInLastElement, extraInfo: value });
184
+ }
185
+ break;
186
+ case InQuotes.CheckingStuffed:
187
+ addElement(valueLength - 2, true);
188
+ break;
189
+ default:
190
+ throw new FtUnreachableCaseError('CTTSAWR24240', inQuotes);
191
+ }
192
+ }
193
+
194
+ return new FtOk(resultArray);
195
+ }
196
+
197
+ export interface ToIntegerArrayResult {
198
+ success: boolean;
199
+ array: number[];
200
+ errorText: string;
201
+ }
202
+
203
+ export function toIntegerArrayWithResult(
204
+ value: string,
205
+ ): FtResult<
206
+ number[],
207
+ ErrorIdPlusExtra<
208
+ typeof ErrorId.QuotesNotClosedInLastElement | typeof ErrorId.UnexpectedCharAfterQuotedElement | typeof ErrorId.InvalidIntegerString
209
+ >
210
+ > {
211
+ const strResult = tryToStringArray(value, true);
212
+ if (strResult.isErr()) {
213
+ return strResult.createType();
214
+ } else {
215
+ const strArray = strResult.value;
216
+ const intResult = new Array<number>(strArray.length);
217
+ for (let i = 0; i < strArray.length; i++) {
218
+ intResult[i] = +strArray[i];
219
+ if (isNaN(intResult[i])) {
220
+ return new FtErr({ errorId: ErrorId.InvalidIntegerString, extraInfo: `${i}, ${strArray[i]}` });
221
+ }
222
+ }
223
+
224
+ return new FtOk(intResult);
225
+ }
226
+ }
227
+
228
+ export interface StrictValidateResult {
229
+ success: boolean;
230
+ errorText: string;
231
+ }
232
+
233
+ export function strictValidate(
234
+ value: string,
235
+ ): FtResult<boolean, ErrorIdPlusExtra<typeof ErrorId.QuotesNotClosedInLastElement | typeof ErrorId.UnexpectedCharAfterQuotedElement>> {
236
+ const stringResult = tryToStringArray(value, true);
237
+ if (stringResult.isErr()) {
238
+ return stringResult.createType();
239
+ } else {
240
+ return new FtOk(true);
241
+ }
242
+ }
243
+
244
+ export const ErrorId = {
245
+ UnexpectedCharAfterQuotedElement: 'UnexpectedCharAfterQuotedElement',
246
+ QuotesNotClosedInLastElement: 'QuotesNotClosedInLastElement',
247
+ InvalidIntegerString: 'InvalidIntegerString',
248
+ } as const;
249
+
250
+ export type ErrorId = (typeof ErrorId)[keyof typeof ErrorId];
251
+
252
+ export function errorIdToEnglish(errorId: ErrorId) {
253
+ switch (errorId) {
254
+ case ErrorId.UnexpectedCharAfterQuotedElement:
255
+ return 'Unexpected char after quoted element';
256
+ case ErrorId.QuotesNotClosedInLastElement:
257
+ return 'Quotes not closed in last element';
258
+ case ErrorId.InvalidIntegerString:
259
+ return 'Invalid integer string';
260
+ default:
261
+ throw new FtUnreachableCaseError('CTEOITE98114', errorId);
262
+ }
263
+ }
264
+
265
+ export interface ErrorIdPlusExtra<T extends ErrorId> {
266
+ readonly errorId: T;
267
+ readonly extraInfo: string;
268
+ }
269
+
270
+ export namespace ErrorIdPlusExtra {
271
+ export function toEnglish(errorIdPlusExtra: ErrorIdPlusExtra<ErrorId>) {
272
+ return `${errorIdToEnglish(errorIdPlusExtra.errorId)}: ${errorIdPlusExtra.extraInfo}`;
273
+ }
274
+ }
275
+
276
+ export class Error extends globalThis.Error {
277
+ constructor(
278
+ message: string,
279
+ readonly errorId: ErrorId,
280
+ readonly extraInfo: string,
281
+ ) {
282
+ super(message);
283
+ }
284
+ }
285
+ }
@@ -0,0 +1,143 @@
1
+ /** @public */
2
+ export abstract class FtInternalError extends Error {
3
+ constructor(
4
+ readonly code: string,
5
+ message: string | undefined,
6
+ errorType: string,
7
+ ) {
8
+ super(message === undefined || message === '' ? `${errorType}: ${code}` : `${errorType}: ${code}: ${message}`);
9
+ }
10
+ }
11
+
12
+ /** @public */
13
+ export namespace FtInternalError {
14
+ export const AssertErrorType = 'FtAssert';
15
+ export const UnreachableCaseErrorType = 'FtUnreachableCase';
16
+
17
+ export const ExtraFormatting = {
18
+ Ignore: 'Ignore',
19
+ PrependWithColonSpace: 'PrependWithColonSpace',
20
+ PrependWithColonSpaceQuoteError: 'PrependWithColonSpaceQuoteError',
21
+ Postpend: 'Postpend',
22
+ PostpendColonSpace: 'PostpendColonSpace',
23
+ PostpendColonSpaceQuoted: 'PostpendColonSpaceQuoted',
24
+ } as const;
25
+
26
+ export type ExtraFormatting = (typeof ExtraFormatting)[keyof typeof ExtraFormatting];
27
+
28
+ export function formatExtra(existingMessage: string, extraMessage: string, extraFormatting: ExtraFormatting) {
29
+ switch (extraFormatting) {
30
+ case ExtraFormatting.Ignore:
31
+ return existingMessage;
32
+ case ExtraFormatting.PrependWithColonSpace:
33
+ return `${extraMessage}: ${existingMessage}`;
34
+ case ExtraFormatting.PrependWithColonSpaceQuoteError:
35
+ return `${extraMessage}: "${existingMessage}"`;
36
+ case ExtraFormatting.Postpend:
37
+ return `${existingMessage}${extraMessage}`;
38
+ case ExtraFormatting.PostpendColonSpace:
39
+ return `${existingMessage}: ${extraMessage}`;
40
+ case ExtraFormatting.PostpendColonSpaceQuoted:
41
+ return `${existingMessage}: "${extraMessage}"`;
42
+ default:
43
+ throw new FtUnreachableCaseError('IEAIECINE87339', extraFormatting);
44
+ }
45
+ }
46
+
47
+ export function appendToErrorMessage(e: unknown, appendText: string) {
48
+ if (e instanceof Error) {
49
+ e.message += appendText;
50
+ return e;
51
+ } else {
52
+ if (typeof e === 'string') {
53
+ e += appendText;
54
+ return e;
55
+ } else {
56
+ return e; // Do not know how to append
57
+ }
58
+ }
59
+ }
60
+
61
+ export function prependErrorMessage(e: unknown, prependText: string) {
62
+ if (e instanceof Error) {
63
+ e.message = prependText + e.message;
64
+ return e;
65
+ } else {
66
+ if (typeof e === 'string') {
67
+ e = prependText + e;
68
+ return e;
69
+ } else {
70
+ return e; // Do not know how to prepend
71
+ }
72
+ }
73
+ }
74
+
75
+ export function createTypeIfNotError<E extends Error>(
76
+ e: unknown,
77
+ code: string,
78
+ errorConstructor: new (code: string, message?: string) => E,
79
+ extraMessage?: string,
80
+ extraFormatting?: FtInternalError.ExtraFormatting,
81
+ ): Error | E {
82
+ if (e instanceof Error) {
83
+ let message: string;
84
+ if (extraMessage === undefined) {
85
+ message = `${code}: ${e.message}`;
86
+ } else {
87
+ if (extraFormatting === undefined) {
88
+ extraFormatting = FtInternalError.ExtraFormatting.PostpendColonSpaceQuoted;
89
+ }
90
+ const formattedMessage = FtInternalError.formatExtra(e.message, extraMessage, extraFormatting);
91
+ if (formattedMessage.length === 0) {
92
+ message = code;
93
+ } else {
94
+ message = `${code}: ${formattedMessage}`;
95
+ }
96
+ }
97
+ e.message = message;
98
+ return e;
99
+ } else {
100
+ if (typeof e === 'string' && extraFormatting !== undefined) {
101
+ if (extraMessage === undefined) {
102
+ extraMessage = code;
103
+ }
104
+ const message = FtInternalError.formatExtra(e, extraMessage, extraFormatting);
105
+ return new errorConstructor(code, message);
106
+ } else {
107
+ return new errorConstructor(code, extraMessage);
108
+ }
109
+ }
110
+ }
111
+
112
+ export function throwErrorTypeIfPromiseRejected<T>(
113
+ promise: Promise<T>,
114
+ code: string,
115
+ errorConstructor: new (code: string, message?: string) => Error,
116
+ extraMessage?: string,
117
+ extraFormatting?: FtInternalError.ExtraFormatting,
118
+ ): void {
119
+ promise.then(
120
+ () => {
121
+ /**/
122
+ },
123
+ (reason: unknown) => {
124
+ throw FtInternalError.createTypeIfNotError(reason, code, errorConstructor, extraMessage, extraFormatting);
125
+ },
126
+ );
127
+ }
128
+ }
129
+
130
+ /** @public */
131
+ export class FtAssertError extends FtInternalError {
132
+ constructor(code: string, message?: string) {
133
+ super(code, message, 'FtAssert');
134
+ }
135
+ }
136
+
137
+ /** @public */
138
+ export class FtUnreachableCaseError extends FtInternalError {
139
+ constructor(code: string, value: never) {
140
+ const errorText = `"${String(value)}"`;
141
+ super(code, errorText, 'FtUnreachableCase');
142
+ }
143
+ }
@@ -0,0 +1 @@
1
+ export { Err as FtErr, Ok as FtOk, Result as FtResult } from '@pbkware/dot-net-date-number-formatting';
@@ -0,0 +1,35 @@
1
+ export function parseIntStrict(value: string) {
2
+ return isStringifiedInteger(value) ? parseInt(value, 10) : undefined;
3
+ }
4
+
5
+ export function isStringifiedInteger(value: string) {
6
+ const length = value.length;
7
+
8
+ let gotDigit = false;
9
+
10
+ for (let i = 0; i < length; i++) {
11
+ const char = value[i];
12
+ switch (char) {
13
+ case '-': {
14
+ if (i !== 0) {
15
+ return false;
16
+ } else {
17
+ break;
18
+ }
19
+ }
20
+ default: {
21
+ if (!isDigitCharCode(char.charCodeAt(0))) {
22
+ return false;
23
+ } else {
24
+ gotDigit = true;
25
+ }
26
+ }
27
+ }
28
+ }
29
+
30
+ return gotDigit;
31
+ }
32
+
33
+ export function isDigitCharCode(charCode: number) {
34
+ return charCode >= 48 && charCode <= 57;
35
+ }
@@ -0,0 +1,47 @@
1
+ export class StringBuilder {
2
+ private static readonly _defaultInitialCapacity = 10;
3
+
4
+ private _initialCapacity: number;
5
+ private _count = 0;
6
+ private _values: string[];
7
+
8
+ constructor(initialCapacity: number = StringBuilder._defaultInitialCapacity) {
9
+ this._initialCapacity = initialCapacity;
10
+ this._values = new Array<string>(this._initialCapacity);
11
+ }
12
+
13
+ get capacity() {
14
+ return this._values.length;
15
+ }
16
+ set capacity(newCapacity: number) {
17
+ this._values.length = newCapacity;
18
+ if (this._count > newCapacity) {
19
+ this._count = newCapacity;
20
+ }
21
+ }
22
+
23
+ toString() {
24
+ this.capacity = this._count;
25
+ return this._values.join('');
26
+ }
27
+
28
+ append(value: string) {
29
+ if (this._count >= this.capacity) {
30
+ this.growCapacity(1);
31
+ }
32
+ this._values[this._count++] = value;
33
+ }
34
+
35
+ appendLine(value = '') {
36
+ this.append(value + '\n');
37
+ }
38
+
39
+ clear() {
40
+ this._count = 0;
41
+ this._values.length = this._initialCapacity;
42
+ }
43
+
44
+ private growCapacity(byAtLeast: number) {
45
+ this._values.length += (this._values.length + byAtLeast) * 2;
46
+ }
47
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 PBKware
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1 +0,0 @@
1
- {"version":3,"file":"ft-text-reader.js","sourceRoot":"","sources":["../../src/serialization/ft-text-reader.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,MAAM,KAAW,YAAY,CAM5B;AAND,WAAiB,YAAY;IAC3B;;;OAGG;IACU,0BAAa,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC,EANgB,YAAY,KAAZ,YAAY,QAM5B;AAED;;;GAGG;AACH,MAAM,OAAO,cAAc;IACjB,KAAK,CAAS;IACd,SAAS,CAAS;IAE1B;;;OAGG;IACH,YAAY,IAAY;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"serialization-core.js","sourceRoot":"","sources":["../../src/serialization/serialization-core.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { InternalError, UnreachableCaseInternalError } from '@pbkware/js-utils';
2
- /** @public */
3
- export class FtAssertError extends InternalError {
4
- constructor(code, message) {
5
- super(code, message, 'Ft:Assert');
6
- }
7
- }
8
- /** @public */
9
- export class FtUnreachableCaseError extends UnreachableCaseInternalError {
10
- constructor(code, value) {
11
- super(code, value, undefined, 'Ft:UnreachableCase');
12
- }
13
- }
14
- //# sourceMappingURL=ft-internal-error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ft-internal-error.js","sourceRoot":"","sources":["../../../src/types/errors/ft-internal-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEhF,cAAc;AACd,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC9C,YAAY,IAAY,EAAE,OAAgB;QACxC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC;CACF;AAED,cAAc;AACd,MAAM,OAAO,sBAAuB,SAAQ,4BAA4B;IACtE,YAAY,IAAY,EAAE,KAAY;QACpC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACtD,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ft-serialization-error.js","sourceRoot":"","sources":["../../../src/types/errors/ft-serialization-error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,OAAO;IACd,oCAAoC,EAAE,sCAAsC;IAC5E,sCAAsC,EAAE,wCAAwC;IAChF,qCAAqC,EAAE,uCAAuC;IAC9E,gCAAgC,EAAE,kCAAkC;IACpE,kCAAkC,EAAE,oCAAoC;IACxE,sCAAsC,EAAE,wCAAwC;IAChF,mCAAmC,EAAE,qCAAqC;IAC1E,qCAAqC,EAAE,uCAAuC;IAC9E,kCAAkC,EAAE,oCAAoC;IACxE,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB,EAAE,wBAAwB;IAChD,0BAA0B,EAAE,4BAA4B;IACxD,qBAAqB,EAAE,uBAAuB;IAC9C,wBAAwB,EAAE,0BAA0B;IACpD,mBAAmB,EAAE,qBAAqB;IAC1C,qCAAqC,EAAE,uCAAuC;IAC9E,mCAAmC,EAAE,qCAAqC;IAC1E,0CAA0C,EAAE,4CAA4C;IACxF,wCAAwC,EAAE,0CAA0C;IACpF,yCAAyC,EAAE,2CAA2C;IACtF,uCAAuC,EAAE,yCAAyC;IAClF,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAChC,0BAA0B,EAAE,4BAA4B;IACxD,6BAA6B,EAAE,+BAA+B;IAC9D,cAAc,EAAE,gBAAgB;IAChC,uBAAuB,EAAE,yBAAyB;IAClD,oBAAoB,EAAE,sBAAsB;IAC5C,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAC9C,wBAAwB,EAAE,0BAA0B;IACpD,WAAW,EAAE,aAAa;IAC1B,gBAAgB,EAAE,kBAAkB;IACpC,0BAA0B,EAAE,4BAA4B;IACxD,gBAAgB,EAAE,kBAAkB;IACpC,yBAAyB,EAAE,2BAA2B;IACtD,eAAe,EAAE,iBAAiB;CAC1B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ft-serialization-exception.js","sourceRoot":"","sources":["../../../src/types/errors/ft-serialization-exception.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;;GAGG;AACH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAChC,MAAM,CAAuB;IAC7B,UAAU,CAAqB;IAC/B,WAAW,CAAS;IACpB,aAAa,CAAqB;IAClC,kBAAkB,CAAS;IAE5C,YAAY,KAA2B,EAAE,cAA4C,EAAE,cAA+B,EAAE,cAAsB;QAC5I,IAAI,OAAe,CAAC;QACpB,IAAI,KAAK,GAAwB,SAAS,CAAC;QAC3C,IAAI,KAAK,GAAsB,SAAS,CAAC;QAEzC,sBAAsB;QACtB,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,uDAAuD;YACvD,OAAO,GAAG,cAAc,CAAC;YACzB,IAAI,cAAc,YAAY,KAAK,EAAE,CAAC;gBACpC,KAAK,GAAG,cAAc,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,uGAAuG;YACvG,KAAK,GAAG,cAAc,CAAC;YACvB,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;gBACvC,OAAO,GAAG,cAAc,CAAC;gBACzB,KAAK,GAAG,cAAc,CAAC;YACzB,CAAC;iBAAM,IAAI,cAAc,YAAY,KAAK,EAAE,CAAC;gBAC3C,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;gBACjC,KAAK,GAAG,cAAc,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,KAAK,CAAC,WAAW,CAAC,CAAC;QAEnB,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YAC/B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC;YACnC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACxC,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC;QAC/C,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ft-field-heading-ready-event-args.js","sourceRoot":"","sources":["../../../src/types/events/ft-field-heading-ready-event-args.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ft-field-value-ready-event-args.js","sourceRoot":"","sources":["../../../src/types/events/ft-field-value-ready-event-args.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ft-heading-line-finished-event-args.js","sourceRoot":"","sources":["../../../src/types/events/ft-heading-line-finished-event-args.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ft-heading-line-started-event-args.js","sourceRoot":"","sources":["../../../src/types/events/ft-heading-line-started-event-args.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ft-record-finished-event-args.js","sourceRoot":"","sources":["../../../src/types/events/ft-record-finished-event-args.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ft-record-started-event-args.js","sourceRoot":"","sources":["../../../src/types/events/ft-record-started-event-args.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ft-sequence-redirected-event-args.js","sourceRoot":"","sources":["../../../src/types/events/ft-sequence-redirected-event-args.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- import { InternalError, UnreachableCaseInternalError } from '@pbkware/js-utils';
2
-
3
- /** @public */
4
- export class FtAssertError extends InternalError {
5
- constructor(code: string, message?: string) {
6
- super(code, message, 'Ft:Assert');
7
- }
8
- }
9
-
10
- /** @public */
11
- export class FtUnreachableCaseError extends UnreachableCaseInternalError {
12
- constructor(code: string, value: never) {
13
- super(code, value, undefined, 'Ft:UnreachableCase');
14
- }
15
- }