@pbkware/fielded-text-web 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.
- package/dist/api/ft-reader.js +59 -0
- package/dist/api/ft-reader.js.map +1 -0
- package/dist/api/ft-serialization.js +147 -0
- package/dist/api/ft-serialization.js.map +1 -0
- package/dist/api/ft-writer-settings.js +31 -0
- package/dist/api/ft-writer-settings.js.map +1 -0
- package/dist/api/ft-writer.js +22 -0
- package/dist/api/ft-writer.js.map +1 -0
- package/dist/factory/ft-field-factory.js +86 -0
- package/dist/factory/ft-field-factory.js.map +1 -0
- package/dist/factory/ft-meta-constructor.js +16 -0
- package/dist/factory/ft-meta-constructor.js.map +1 -0
- package/dist/factory/ft-meta-factory.js +30 -0
- package/dist/factory/ft-meta-factory.js.map +1 -0
- package/dist/factory/ft-sequence-constructor.js +11 -0
- package/dist/factory/ft-sequence-constructor.js.map +1 -0
- package/dist/factory/ft-sequence-factory.js +18 -0
- package/dist/factory/ft-sequence-factory.js.map +1 -0
- package/dist/factory/ft-sequence-item-constructor.js +11 -0
- package/dist/factory/ft-sequence-item-constructor.js.map +1 -0
- package/dist/factory/ft-sequence-item-factory.js +18 -0
- package/dist/factory/ft-sequence-item-factory.js.map +1 -0
- package/dist/factory/ft-sequence-redirect-constructor.js +13 -0
- package/dist/factory/ft-sequence-redirect-constructor.js.map +1 -0
- package/dist/factory/ft-sequence-redirect-factory.js +176 -0
- package/dist/factory/ft-sequence-redirect-factory.js.map +1 -0
- package/dist/factory/ft-substitution-constructor.js +23 -0
- package/dist/factory/ft-substitution-constructor.js.map +1 -0
- package/dist/factory/ft-substitution-factory.js +37 -0
- package/dist/factory/ft-substitution-factory.js.map +1 -0
- package/dist/fields/definitions/ft-boolean-field-definition.js +36 -0
- package/dist/fields/definitions/ft-boolean-field-definition.js.map +1 -0
- package/dist/fields/definitions/ft-date-time-field-definition.js +39 -0
- package/dist/fields/definitions/ft-date-time-field-definition.js.map +1 -0
- package/dist/fields/definitions/ft-decimal-field-definition.js +32 -0
- package/dist/fields/definitions/ft-decimal-field-definition.js.map +1 -0
- package/dist/fields/definitions/ft-field-definition-list.js +26 -0
- package/dist/fields/definitions/ft-field-definition-list.js.map +1 -0
- package/dist/fields/definitions/ft-field-definition.js +245 -0
- package/dist/fields/definitions/ft-field-definition.js.map +1 -0
- package/dist/fields/definitions/ft-float-field-definition.js +32 -0
- package/dist/fields/definitions/ft-float-field-definition.js.map +1 -0
- package/dist/fields/definitions/ft-generic-field-definition.js +30 -0
- package/dist/fields/definitions/ft-generic-field-definition.js.map +1 -0
- package/dist/fields/definitions/ft-integer-field-definition.js +33 -0
- package/dist/fields/definitions/ft-integer-field-definition.js.map +1 -0
- package/dist/fields/definitions/ft-string-field-definition.js +21 -0
- package/dist/fields/definitions/ft-string-field-definition.js.map +1 -0
- package/dist/fields/instances/ft-boolean-field.js +38 -0
- package/dist/fields/instances/ft-boolean-field.js.map +1 -0
- package/dist/fields/instances/ft-date-time-field.js +35 -0
- package/dist/fields/instances/ft-date-time-field.js.map +1 -0
- package/dist/fields/instances/ft-decimal-field.js +35 -0
- package/dist/fields/instances/ft-decimal-field.js.map +1 -0
- package/dist/fields/instances/ft-field-list.js +56 -0
- package/dist/fields/instances/ft-field-list.js.map +1 -0
- package/dist/fields/instances/ft-field.js +561 -0
- package/dist/fields/instances/ft-field.js.map +1 -0
- package/dist/fields/instances/ft-float-field.js +35 -0
- package/dist/fields/instances/ft-float-field.js.map +1 -0
- package/dist/fields/instances/ft-generic-field.js +173 -0
- package/dist/fields/instances/ft-generic-field.js.map +1 -0
- package/dist/fields/instances/ft-integer-field.js +35 -0
- package/dist/fields/instances/ft-integer-field.js.map +1 -0
- package/dist/fields/instances/ft-string-field.js +34 -0
- package/dist/fields/instances/ft-string-field.js.map +1 -0
- package/dist/index.d.ts +3483 -0
- package/dist/index.js +133 -0
- package/dist/index.js.map +1 -0
- package/dist/meta/fields/ft-boolean-meta-field.js +65 -0
- package/dist/meta/fields/ft-boolean-meta-field.js.map +1 -0
- package/dist/meta/fields/ft-date-time-meta-field.js +55 -0
- package/dist/meta/fields/ft-date-time-meta-field.js.map +1 -0
- package/dist/meta/fields/ft-decimal-meta-field.js +55 -0
- package/dist/meta/fields/ft-decimal-meta-field.js.map +1 -0
- package/dist/meta/fields/ft-float-meta-field.js +55 -0
- package/dist/meta/fields/ft-float-meta-field.js.map +1 -0
- package/dist/meta/fields/ft-generic-meta-field.js +32 -0
- package/dist/meta/fields/ft-generic-meta-field.js.map +1 -0
- package/dist/meta/fields/ft-integer-meta-field.js +55 -0
- package/dist/meta/fields/ft-integer-meta-field.js.map +1 -0
- package/dist/meta/fields/ft-meta-field-list.js +183 -0
- package/dist/meta/fields/ft-meta-field-list.js.map +1 -0
- package/dist/meta/fields/ft-meta-field.js +351 -0
- package/dist/meta/fields/ft-meta-field.js.map +1 -0
- package/dist/meta/fields/ft-string-meta-field.js +27 -0
- package/dist/meta/fields/ft-string-meta-field.js.map +1 -0
- package/dist/meta/ft-meta-defaults.js +152 -0
- package/dist/meta/ft-meta-defaults.js.map +1 -0
- package/dist/meta/ft-meta.js +391 -0
- package/dist/meta/ft-meta.js.map +1 -0
- package/dist/meta/sequences/core/ft-meta-sequence-item-list.js +82 -0
- package/dist/meta/sequences/core/ft-meta-sequence-item-list.js.map +1 -0
- package/dist/meta/sequences/core/ft-meta-sequence-item.js +62 -0
- package/dist/meta/sequences/core/ft-meta-sequence-item.js.map +1 -0
- package/dist/meta/sequences/core/ft-meta-sequence-list.js +164 -0
- package/dist/meta/sequences/core/ft-meta-sequence-list.js.map +1 -0
- package/dist/meta/sequences/core/ft-meta-sequence.js +96 -0
- package/dist/meta/sequences/core/ft-meta-sequence.js.map +1 -0
- package/dist/meta/sequences/redirects/ft-boolean-meta-sequence-redirect.js +40 -0
- package/dist/meta/sequences/redirects/ft-boolean-meta-sequence-redirect.js.map +1 -0
- package/dist/meta/sequences/redirects/ft-case-insensitive-string-meta-sequence-redirect.js +40 -0
- package/dist/meta/sequences/redirects/ft-case-insensitive-string-meta-sequence-redirect.js.map +1 -0
- package/dist/meta/sequences/redirects/ft-date-meta-sequence-redirect.js +45 -0
- package/dist/meta/sequences/redirects/ft-date-meta-sequence-redirect.js.map +1 -0
- package/dist/meta/sequences/redirects/ft-exact-date-time-meta-sequence-redirect.js +40 -0
- package/dist/meta/sequences/redirects/ft-exact-date-time-meta-sequence-redirect.js.map +1 -0
- package/dist/meta/sequences/redirects/ft-exact-decimal-meta-sequence-redirect.js +40 -0
- package/dist/meta/sequences/redirects/ft-exact-decimal-meta-sequence-redirect.js.map +1 -0
- package/dist/meta/sequences/redirects/ft-exact-float-meta-sequence-redirect.js +40 -0
- package/dist/meta/sequences/redirects/ft-exact-float-meta-sequence-redirect.js.map +1 -0
- package/dist/meta/sequences/redirects/ft-exact-integer-meta-sequence-redirect.js +40 -0
- package/dist/meta/sequences/redirects/ft-exact-integer-meta-sequence-redirect.js.map +1 -0
- package/dist/meta/sequences/redirects/ft-exact-string-meta-sequence-redirect.js +40 -0
- package/dist/meta/sequences/redirects/ft-exact-string-meta-sequence-redirect.js.map +1 -0
- package/dist/meta/sequences/redirects/ft-meta-sequence-redirect-list.js +85 -0
- package/dist/meta/sequences/redirects/ft-meta-sequence-redirect-list.js.map +1 -0
- package/dist/meta/sequences/redirects/ft-meta-sequence-redirect.js +68 -0
- package/dist/meta/sequences/redirects/ft-meta-sequence-redirect.js.map +1 -0
- package/dist/meta/sequences/redirects/ft-null-meta-sequence-redirect.js +21 -0
- package/dist/meta/sequences/redirects/ft-null-meta-sequence-redirect.js.map +1 -0
- package/dist/meta/substitutions/ft-meta-substitution-list.js +51 -0
- package/dist/meta/substitutions/ft-meta-substitution-list.js.map +1 -0
- package/dist/meta-serialization/format/ft-json-meta-serialization.js +283 -0
- package/dist/meta-serialization/format/ft-json-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/format/ft-xml-meta-serialization.js +706 -0
- package/dist/meta-serialization/format/ft-xml-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/format/meta-serializer-options.js +12 -0
- package/dist/meta-serialization/format/meta-serializer-options.js.map +1 -0
- package/dist/meta-serialization/ft-meta-serialization.js +59 -0
- package/dist/meta-serialization/ft-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/styles/ft-boolean-styles-meta-serialization.js +83 -0
- package/dist/meta-serialization/styles/ft-boolean-styles-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/styles/ft-date-time-styles-meta-serialization.js +54 -0
- package/dist/meta-serialization/styles/ft-date-time-styles-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/styles/ft-number-styles-meta-serialization.js +199 -0
- package/dist/meta-serialization/styles/ft-number-styles-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/boolean-meta-serialization.js +39 -0
- package/dist/meta-serialization/types/boolean-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/char-meta-serialization.js +32 -0
- package/dist/meta-serialization/types/char-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/date-time-meta-serialization.js +227 -0
- package/dist/meta-serialization/types/date-time-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/decimal-meta-serialization.js +12 -0
- package/dist/meta-serialization/types/decimal-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/enums/data-type-meta-serialisation.js +55 -0
- package/dist/meta-serialization/types/enums/data-type-meta-serialisation.js.map +1 -0
- package/dist/meta-serialization/types/enums/end-of-line-auto-write-type-meta-serialization.js +50 -0
- package/dist/meta-serialization/types/enums/end-of-line-auto-write-type-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/enums/end-of-line-type-meta-serialization.js +49 -0
- package/dist/meta-serialization/types/enums/end-of-line-type-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/enums/heading-constraint-meta-serialization.js +55 -0
- package/dist/meta-serialization/types/enums/heading-constraint-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/enums/last-line-ended-type-meta-serialization.js +48 -0
- package/dist/meta-serialization/types/enums/last-line-ended-type-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/enums/pad-alignment-meta-serialization.js +52 -0
- package/dist/meta-serialization/types/enums/pad-alignment-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/enums/pad-char-type-meta-serialization.js +52 -0
- package/dist/meta-serialization/types/enums/pad-char-type-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/enums/quoted-type-meta-serialization.js +52 -0
- package/dist/meta-serialization/types/enums/quoted-type-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/enums/sequence-invokation-delay-meta-serialization.js +47 -0
- package/dist/meta-serialization/types/enums/sequence-invokation-delay-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/enums/sequence-redirect-type-meta-serialisation.js +88 -0
- package/dist/meta-serialization/types/enums/sequence-redirect-type-meta-serialisation.js.map +1 -0
- package/dist/meta-serialization/types/enums/substitution-type-meta-serialization.js +47 -0
- package/dist/meta-serialization/types/enums/substitution-type-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/enums/truncate-type-meta-serialization.js +56 -0
- package/dist/meta-serialization/types/enums/truncate-type-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/float-meta-serialization.js +99 -0
- package/dist/meta-serialization/types/float-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/integer-float-meta-serialization.js +52 -0
- package/dist/meta-serialization/types/integer-float-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/integer-meta-serialization.js +50 -0
- package/dist/meta-serialization/types/integer-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/types/string-meta-serialization.js +35 -0
- package/dist/meta-serialization/types/string-meta-serialization.js.map +1 -0
- package/dist/meta-serialization/utils/implicit-explicit-index-sorter.js +57 -0
- package/dist/meta-serialization/utils/implicit-explicit-index-sorter.js.map +1 -0
- package/dist/meta-serialization/utils/meta-serialization-redirect-sequence-resolver.js +33 -0
- package/dist/meta-serialization/utils/meta-serialization-redirect-sequence-resolver.js.map +1 -0
- package/dist/meta-serialization/utils/meta-serialization-sequence-name-resolver.js +67 -0
- package/dist/meta-serialization/utils/meta-serialization-sequence-name-resolver.js.map +1 -0
- package/dist/meta-serialization/utils/sequence-item-field-indices.js +70 -0
- package/dist/meta-serialization/utils/sequence-item-field-indices.js.map +1 -0
- package/dist/sequences/core/ft-sequence-invokation-list.js +91 -0
- package/dist/sequences/core/ft-sequence-invokation-list.js.map +1 -0
- package/dist/sequences/core/ft-sequence-invokation.js +143 -0
- package/dist/sequences/core/ft-sequence-invokation.js.map +1 -0
- package/dist/sequences/core/ft-sequence-item-list.js +34 -0
- package/dist/sequences/core/ft-sequence-item-list.js.map +1 -0
- package/dist/sequences/core/ft-sequence-item.js +46 -0
- package/dist/sequences/core/ft-sequence-item.js.map +1 -0
- package/dist/sequences/core/ft-sequence-list.js +62 -0
- package/dist/sequences/core/ft-sequence-list.js.map +1 -0
- package/dist/sequences/core/ft-sequence.js +59 -0
- package/dist/sequences/core/ft-sequence.js.map +1 -0
- package/dist/sequences/redirects/ft-boolean-sequence-redirect.js +33 -0
- package/dist/sequences/redirects/ft-boolean-sequence-redirect.js.map +1 -0
- package/dist/sequences/redirects/ft-case-insensitive-string-sequence-redirect.js +33 -0
- package/dist/sequences/redirects/ft-case-insensitive-string-sequence-redirect.js.map +1 -0
- package/dist/sequences/redirects/ft-date-sequence-redirect.js +37 -0
- package/dist/sequences/redirects/ft-date-sequence-redirect.js.map +1 -0
- package/dist/sequences/redirects/ft-exact-date-time-sequence-redirect.js +33 -0
- package/dist/sequences/redirects/ft-exact-date-time-sequence-redirect.js.map +1 -0
- package/dist/sequences/redirects/ft-exact-decimal-sequence-redirect.js +33 -0
- package/dist/sequences/redirects/ft-exact-decimal-sequence-redirect.js.map +1 -0
- package/dist/sequences/redirects/ft-exact-float-sequence-redirect.js +33 -0
- package/dist/sequences/redirects/ft-exact-float-sequence-redirect.js.map +1 -0
- package/dist/sequences/redirects/ft-exact-integer-sequence-redirect.js +33 -0
- package/dist/sequences/redirects/ft-exact-integer-sequence-redirect.js.map +1 -0
- package/dist/sequences/redirects/ft-exact-string-sequence-redirect.js +33 -0
- package/dist/sequences/redirects/ft-exact-string-sequence-redirect.js.map +1 -0
- package/dist/sequences/redirects/ft-null-sequence-redirect.js +20 -0
- package/dist/sequences/redirects/ft-null-sequence-redirect.js.map +1 -0
- package/dist/sequences/redirects/ft-sequence-redirect-list.js +35 -0
- package/dist/sequences/redirects/ft-sequence-redirect-list.js.map +1 -0
- package/dist/sequences/redirects/ft-sequence-redirect.js +47 -0
- package/dist/sequences/redirects/ft-sequence-redirect.js.map +1 -0
- package/dist/serialization/char-reader.js +178 -0
- package/dist/serialization/char-reader.js.map +1 -0
- package/dist/serialization/declaration-parser.js +176 -0
- package/dist/serialization/declaration-parser.js.map +1 -0
- package/dist/serialization/delimited-field-parser.js +278 -0
- package/dist/serialization/delimited-field-parser.js.map +1 -0
- package/dist/serialization/embedded-meta-parser.js +129 -0
- package/dist/serialization/embedded-meta-parser.js.map +1 -0
- package/dist/serialization/fixed-width-field-parser.js +196 -0
- package/dist/serialization/fixed-width-field-parser.js.map +1 -0
- package/dist/serialization/formatting/ft-boolean-field-formatter.js +113 -0
- package/dist/serialization/formatting/ft-boolean-field-formatter.js.map +1 -0
- package/dist/serialization/formatting/ft-date-time-field-formatter.js +54 -0
- package/dist/serialization/formatting/ft-date-time-field-formatter.js.map +1 -0
- package/dist/serialization/formatting/ft-decimal-field-formatter.js +46 -0
- package/dist/serialization/formatting/ft-decimal-field-formatter.js.map +1 -0
- package/dist/serialization/formatting/ft-declared-parameters-formatter.js +52 -0
- package/dist/serialization/formatting/ft-declared-parameters-formatter.js.map +1 -0
- package/dist/serialization/formatting/ft-field-formatter.js +15 -0
- package/dist/serialization/formatting/ft-field-formatter.js.map +1 -0
- package/dist/serialization/formatting/ft-float-field-formatter.js +46 -0
- package/dist/serialization/formatting/ft-float-field-formatter.js.map +1 -0
- package/dist/serialization/formatting/ft-integer-field-formatter.js +47 -0
- package/dist/serialization/formatting/ft-integer-field-formatter.js.map +1 -0
- package/dist/serialization/formatting/ft-string-field-formatter.js +14 -0
- package/dist/serialization/formatting/ft-string-field-formatter.js.map +1 -0
- package/dist/serialization/ft-declared-parameters.js +199 -0
- package/dist/serialization/ft-declared-parameters.js.map +1 -0
- package/dist/serialization/ft-serialization-reader.js +865 -0
- package/dist/serialization/ft-serialization-reader.js.map +1 -0
- package/dist/serialization/ft-serialization-writer.js +633 -0
- package/dist/serialization/ft-serialization-writer.js.map +1 -0
- package/dist/serialization/ft-text-reader.js +48 -0
- package/dist/serialization/ft-text-reader.js.map +1 -0
- package/dist/serialization/ft-text-writer.js +46 -0
- package/dist/serialization/ft-text-writer.js.map +1 -0
- package/dist/serialization/heading-line-record-parser.js +253 -0
- package/dist/serialization/heading-line-record-parser.js.map +1 -0
- package/dist/serialization/line-parser.js +205 -0
- package/dist/serialization/line-parser.js.map +1 -0
- package/dist/serialization/serialization-core.js +551 -0
- package/dist/serialization/serialization-core.js.map +1 -0
- package/dist/substitutions/ft-substitution-list.js +54 -0
- package/dist/substitutions/ft-substitution-list.js.map +1 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/types/enums/ft-boolean-styles.js +12 -0
- package/dist/types/enums/ft-boolean-styles.js.map +1 -0
- package/dist/types/enums/ft-data-type.js +12 -0
- package/dist/types/enums/ft-data-type.js.map +1 -0
- package/dist/types/enums/ft-end-of-line-auto-write-type.js +10 -0
- package/dist/types/enums/ft-end-of-line-auto-write-type.js.map +1 -0
- package/dist/types/enums/ft-end-of-line-type.js +9 -0
- package/dist/types/enums/ft-end-of-line-type.js.map +1 -0
- package/dist/types/enums/ft-heading-constraint.js +11 -0
- package/dist/types/enums/ft-heading-constraint.js.map +1 -0
- package/dist/types/enums/ft-last-line-ended-type.js +9 -0
- package/dist/types/enums/ft-last-line-ended-type.js.map +1 -0
- package/dist/types/enums/ft-line-type.js +13 -0
- package/dist/types/enums/ft-line-type.js.map +1 -0
- package/dist/types/enums/ft-meta-element-type.js +12 -0
- package/dist/types/enums/ft-meta-element-type.js.map +1 -0
- package/dist/types/enums/ft-meta-reference-type.js +10 -0
- package/dist/types/enums/ft-meta-reference-type.js.map +1 -0
- package/dist/types/enums/ft-meta-serialization-format.js +15 -0
- package/dist/types/enums/ft-meta-serialization-format.js.map +1 -0
- package/dist/types/enums/ft-pad-alignment.js +9 -0
- package/dist/types/enums/ft-pad-alignment.js.map +1 -0
- package/dist/types/enums/ft-pad-char-type.js +9 -0
- package/dist/types/enums/ft-pad-char-type.js.map +1 -0
- package/dist/types/enums/ft-quoted-type.js +9 -0
- package/dist/types/enums/ft-quoted-type.js.map +1 -0
- package/dist/types/enums/ft-read-record-result.js +9 -0
- package/dist/types/enums/ft-read-record-result.js.map +1 -0
- package/dist/types/enums/ft-sequence-invokation-delay.js +8 -0
- package/dist/types/enums/ft-sequence-invokation-delay.js.map +1 -0
- package/dist/types/enums/ft-sequence-redirect-type.js +15 -0
- package/dist/types/enums/ft-sequence-redirect-type.js.map +1 -0
- package/dist/types/enums/ft-substitution-type.js +12 -0
- package/dist/types/enums/ft-substitution-type.js.map +1 -0
- package/dist/types/enums/ft-truncate-type.js +11 -0
- package/dist/types/enums/ft-truncate-type.js.map +1 -0
- package/dist/types/errors/ft-internal-error.js +14 -0
- package/dist/types/errors/ft-internal-error.js.map +1 -0
- package/dist/types/errors/ft-serialization-error.js +49 -0
- package/dist/types/errors/ft-serialization-error.js.map +1 -0
- package/dist/types/errors/ft-serialization-exception.js +78 -0
- package/dist/types/errors/ft-serialization-exception.js.map +1 -0
- package/dist/types/events/ft-field-heading-ready-event-args.js +2 -0
- package/dist/types/events/ft-field-heading-ready-event-args.js.map +1 -0
- package/dist/types/events/ft-field-value-ready-event-args.js +2 -0
- package/dist/types/events/ft-field-value-ready-event-args.js.map +1 -0
- package/dist/types/events/ft-heading-line-finished-event-args.js +2 -0
- package/dist/types/events/ft-heading-line-finished-event-args.js.map +1 -0
- package/dist/types/events/ft-heading-line-started-event-args.js +2 -0
- package/dist/types/events/ft-heading-line-started-event-args.js.map +1 -0
- package/dist/types/events/ft-record-finished-event-args.js +2 -0
- package/dist/types/events/ft-record-finished-event-args.js.map +1 -0
- package/dist/types/events/ft-record-started-event-args.js +2 -0
- package/dist/types/events/ft-record-started-event-args.js.map +1 -0
- package/dist/types/events/ft-sequence-redirected-event-args.js +2 -0
- package/dist/types/events/ft-sequence-redirected-event-args.js.map +1 -0
- package/package.json +84 -0
- package/src/api/ft-reader.ts +106 -0
- package/src/api/ft-serialization.ts +216 -0
- package/src/api/ft-writer-settings.ts +76 -0
- package/src/api/ft-writer.ts +26 -0
- package/src/factory/ft-field-factory.ts +94 -0
- package/src/factory/ft-meta-constructor.ts +16 -0
- package/src/factory/ft-meta-factory.ts +34 -0
- package/src/factory/ft-sequence-constructor.ts +11 -0
- package/src/factory/ft-sequence-factory.ts +22 -0
- package/src/factory/ft-sequence-item-constructor.ts +11 -0
- package/src/factory/ft-sequence-item-factory.ts +22 -0
- package/src/factory/ft-sequence-redirect-constructor.ts +19 -0
- package/src/factory/ft-sequence-redirect-factory.ts +197 -0
- package/src/factory/ft-substitution-constructor.ts +24 -0
- package/src/factory/ft-substitution-factory.ts +43 -0
- package/src/fields/definitions/ft-boolean-field-definition.ts +49 -0
- package/src/fields/definitions/ft-date-time-field-definition.ts +52 -0
- package/src/fields/definitions/ft-decimal-field-definition.ts +43 -0
- package/src/fields/definitions/ft-field-definition-list.ts +33 -0
- package/src/fields/definitions/ft-field-definition.ts +276 -0
- package/src/fields/definitions/ft-float-field-definition.ts +43 -0
- package/src/fields/definitions/ft-generic-field-definition.ts +49 -0
- package/src/fields/definitions/ft-integer-field-definition.ts +44 -0
- package/src/fields/definitions/ft-string-field-definition.ts +26 -0
- package/src/fields/instances/ft-boolean-field.ts +49 -0
- package/src/fields/instances/ft-date-time-field.ts +44 -0
- package/src/fields/instances/ft-decimal-field.ts +44 -0
- package/src/fields/instances/ft-field-list.ts +68 -0
- package/src/fields/instances/ft-field.ts +691 -0
- package/src/fields/instances/ft-float-field.ts +44 -0
- package/src/fields/instances/ft-generic-field.ts +219 -0
- package/src/fields/instances/ft-integer-field.ts +44 -0
- package/src/fields/instances/ft-string-field.ts +40 -0
- package/src/index.ts +185 -0
- package/src/meta/fields/ft-boolean-meta-field.ts +79 -0
- package/src/meta/fields/ft-date-time-meta-field.ts +68 -0
- package/src/meta/fields/ft-decimal-meta-field.ts +68 -0
- package/src/meta/fields/ft-float-meta-field.ts +68 -0
- package/src/meta/fields/ft-generic-meta-field.ts +38 -0
- package/src/meta/fields/ft-integer-meta-field.ts +68 -0
- package/src/meta/fields/ft-meta-field-list.ts +208 -0
- package/src/meta/fields/ft-meta-field.ts +399 -0
- package/src/meta/fields/ft-string-meta-field.ts +34 -0
- package/src/meta/ft-meta-defaults.ts +151 -0
- package/src/meta/ft-meta.ts +453 -0
- package/src/meta/sequences/core/ft-meta-sequence-item-list.ts +97 -0
- package/src/meta/sequences/core/ft-meta-sequence-item.ts +78 -0
- package/src/meta/sequences/core/ft-meta-sequence-list.ts +203 -0
- package/src/meta/sequences/core/ft-meta-sequence.ts +127 -0
- package/src/meta/sequences/redirects/ft-boolean-meta-sequence-redirect.ts +49 -0
- package/src/meta/sequences/redirects/ft-case-insensitive-string-meta-sequence-redirect.ts +49 -0
- package/src/meta/sequences/redirects/ft-date-meta-sequence-redirect.ts +54 -0
- package/src/meta/sequences/redirects/ft-exact-date-time-meta-sequence-redirect.ts +49 -0
- package/src/meta/sequences/redirects/ft-exact-decimal-meta-sequence-redirect.ts +49 -0
- package/src/meta/sequences/redirects/ft-exact-float-meta-sequence-redirect.ts +49 -0
- package/src/meta/sequences/redirects/ft-exact-integer-meta-sequence-redirect.ts +49 -0
- package/src/meta/sequences/redirects/ft-exact-string-meta-sequence-redirect.ts +49 -0
- package/src/meta/sequences/redirects/ft-meta-sequence-redirect-list.ts +99 -0
- package/src/meta/sequences/redirects/ft-meta-sequence-redirect.ts +89 -0
- package/src/meta/sequences/redirects/ft-null-meta-sequence-redirect.ts +25 -0
- package/src/meta/substitutions/ft-meta-substitution-list.ts +54 -0
- package/src/meta-serialization/format/ft-json-meta-serialization.ts +288 -0
- package/src/meta-serialization/format/ft-xml-meta-serialization.ts +885 -0
- package/src/meta-serialization/format/meta-serializer-options.ts +21 -0
- package/src/meta-serialization/ft-meta-serialization.ts +60 -0
- package/src/meta-serialization/styles/ft-boolean-styles-meta-serialization.ts +88 -0
- package/src/meta-serialization/styles/ft-date-time-styles-meta-serialization.ts +50 -0
- package/src/meta-serialization/styles/ft-number-styles-meta-serialization.ts +212 -0
- package/src/meta-serialization/types/boolean-meta-serialization.ts +36 -0
- package/src/meta-serialization/types/char-meta-serialization.ts +28 -0
- package/src/meta-serialization/types/date-time-meta-serialization.ts +220 -0
- package/src/meta-serialization/types/decimal-meta-serialization.ts +13 -0
- package/src/meta-serialization/types/enums/data-type-meta-serialisation.ts +52 -0
- package/src/meta-serialization/types/enums/end-of-line-auto-write-type-meta-serialization.ts +47 -0
- package/src/meta-serialization/types/enums/end-of-line-type-meta-serialization.ts +46 -0
- package/src/meta-serialization/types/enums/heading-constraint-meta-serialization.ts +52 -0
- package/src/meta-serialization/types/enums/last-line-ended-type-meta-serialization.ts +45 -0
- package/src/meta-serialization/types/enums/meta-element-type-meta-serialization.ts +36 -0
- package/src/meta-serialization/types/enums/pad-alignment-meta-serialization.ts +54 -0
- package/src/meta-serialization/types/enums/pad-char-type-meta-serialization.ts +54 -0
- package/src/meta-serialization/types/enums/quoted-type-meta-serialization.ts +54 -0
- package/src/meta-serialization/types/enums/sequence-invokation-delay-meta-serialization.ts +44 -0
- package/src/meta-serialization/types/enums/sequence-redirect-type-meta-serialisation.ts +86 -0
- package/src/meta-serialization/types/enums/substitution-type-meta-serialization.ts +44 -0
- package/src/meta-serialization/types/enums/truncate-type-meta-serialization.ts +58 -0
- package/src/meta-serialization/types/float-meta-serialization.ts +96 -0
- package/src/meta-serialization/types/integer-float-meta-serialization.ts +46 -0
- package/src/meta-serialization/types/integer-meta-serialization.ts +44 -0
- package/src/meta-serialization/types/string-meta-serialization.ts +32 -0
- package/src/meta-serialization/utils/implicit-explicit-index-sorter.ts +61 -0
- package/src/meta-serialization/utils/meta-serialization-redirect-sequence-resolver.ts +43 -0
- package/src/meta-serialization/utils/meta-serialization-sequence-name-resolver.ts +85 -0
- package/src/meta-serialization/utils/sequence-item-field-indices.ts +76 -0
- package/src/sequences/core/ft-sequence-invokation-list.ts +109 -0
- package/src/sequences/core/ft-sequence-invokation.ts +166 -0
- package/src/sequences/core/ft-sequence-item-list.ts +40 -0
- package/src/sequences/core/ft-sequence-item.ts +59 -0
- package/src/sequences/core/ft-sequence-list.ts +73 -0
- package/src/sequences/core/ft-sequence.ts +75 -0
- package/src/sequences/redirects/ft-boolean-sequence-redirect.ts +42 -0
- package/src/sequences/redirects/ft-case-insensitive-string-sequence-redirect.ts +46 -0
- package/src/sequences/redirects/ft-date-sequence-redirect.ts +48 -0
- package/src/sequences/redirects/ft-exact-date-time-sequence-redirect.ts +46 -0
- package/src/sequences/redirects/ft-exact-decimal-sequence-redirect.ts +46 -0
- package/src/sequences/redirects/ft-exact-float-sequence-redirect.ts +46 -0
- package/src/sequences/redirects/ft-exact-integer-sequence-redirect.ts +46 -0
- package/src/sequences/redirects/ft-exact-string-sequence-redirect.ts +46 -0
- package/src/sequences/redirects/ft-null-sequence-redirect.ts +27 -0
- package/src/sequences/redirects/ft-sequence-redirect-list.ts +42 -0
- package/src/sequences/redirects/ft-sequence-redirect.ts +68 -0
- package/src/serialization/char-reader.ts +203 -0
- package/src/serialization/declaration-parser.ts +203 -0
- package/src/serialization/delimited-field-parser.ts +296 -0
- package/src/serialization/embedded-meta-parser.ts +147 -0
- package/src/serialization/fixed-width-field-parser.ts +220 -0
- package/src/serialization/formatting/ft-boolean-field-formatter.ts +114 -0
- package/src/serialization/formatting/ft-date-time-field-formatter.ts +61 -0
- package/src/serialization/formatting/ft-decimal-field-formatter.ts +52 -0
- package/src/serialization/formatting/ft-declared-parameters-formatter.ts +60 -0
- package/src/serialization/formatting/ft-field-formatter.ts +18 -0
- package/src/serialization/formatting/ft-float-field-formatter.ts +52 -0
- package/src/serialization/formatting/ft-integer-field-formatter.ts +53 -0
- package/src/serialization/formatting/ft-string-field-formatter.ts +15 -0
- package/src/serialization/formatting/index.ts +7 -0
- package/src/serialization/ft-declared-parameters.ts +232 -0
- package/src/serialization/ft-serialization-reader.ts +953 -0
- package/src/serialization/ft-serialization-writer.ts +760 -0
- package/src/serialization/ft-text-reader.ts +64 -0
- package/src/serialization/ft-text-writer.ts +61 -0
- package/src/serialization/heading-line-record-parser.ts +285 -0
- package/src/serialization/line-parser.ts +231 -0
- package/src/serialization/serialization-core.ts +632 -0
- package/src/substitutions/ft-substitution-list.ts +60 -0
- package/src/types/enums/ft-boolean-styles.ts +17 -0
- package/src/types/enums/ft-data-type.ts +21 -0
- package/src/types/enums/ft-end-of-line-auto-write-type.ts +14 -0
- package/src/types/enums/ft-end-of-line-type.ts +13 -0
- package/src/types/enums/ft-heading-constraint.ts +15 -0
- package/src/types/enums/ft-last-line-ended-type.ts +13 -0
- package/src/types/enums/ft-line-type.ts +17 -0
- package/src/types/enums/ft-meta-element-type.ts +16 -0
- package/src/types/enums/ft-meta-reference-type.ts +14 -0
- package/src/types/enums/ft-meta-serialization-format.ts +19 -0
- package/src/types/enums/ft-pad-alignment.ts +13 -0
- package/src/types/enums/ft-pad-char-type.ts +13 -0
- package/src/types/enums/ft-quoted-type.ts +13 -0
- package/src/types/enums/ft-read-record-result.ts +13 -0
- package/src/types/enums/ft-sequence-invokation-delay.ts +12 -0
- package/src/types/enums/ft-sequence-redirect-type.ts +19 -0
- package/src/types/enums/ft-substitution-type.ts +16 -0
- package/src/types/enums/ft-truncate-type.ts +15 -0
- package/src/types/errors/ft-internal-error.ts +15 -0
- package/src/types/errors/ft-serialization-error.ts +53 -0
- package/src/types/errors/ft-serialization-exception.ts +86 -0
- package/src/types/events/ft-field-heading-ready-event-args.ts +9 -0
- package/src/types/events/ft-field-value-ready-event-args.ts +9 -0
- package/src/types/events/ft-heading-line-finished-event-args.ts +6 -0
- package/src/types/events/ft-heading-line-started-event-args.ts +6 -0
- package/src/types/events/ft-record-finished-event-args.ts +6 -0
- package/src/types/events/ft-record-started-event-args.ts +6 -0
- package/src/types/events/ft-sequence-redirected-event-args.ts +9 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { DotNetLocaleSettings } from '@pbkware/dot-net-date-number-formatting';
|
|
2
|
+
import { FtMetaField } from '../../meta/fields/ft-meta-field.js';
|
|
3
|
+
import { FtMetaDefaults } from '../../meta/ft-meta-defaults.js';
|
|
4
|
+
import { FtFieldFormatter } from '../../serialization/formatting/ft-field-formatter.js';
|
|
5
|
+
import { FtDataType } from '../../types/enums/ft-data-type.js';
|
|
6
|
+
import { FtHeadingConstraint } from '../../types/enums/ft-heading-constraint.js';
|
|
7
|
+
import { FtPadAlignment } from '../../types/enums/ft-pad-alignment.js';
|
|
8
|
+
import { FtPadCharType } from '../../types/enums/ft-pad-char-type.js';
|
|
9
|
+
import { FtQuotedType } from '../../types/enums/ft-quoted-type.js';
|
|
10
|
+
import { FtTruncateType } from '../../types/enums/ft-truncate-type.js';
|
|
11
|
+
import { FtUnreachableCaseError } from '../../types/errors/ft-internal-error.js';
|
|
12
|
+
|
|
13
|
+
const InternalError = {
|
|
14
|
+
FtFieldFieldDefinition_LoadMeta_UnsupportedHeadingPadAlignment: 'FtFieldFieldDefinition_LoadMeta_UnsupportedHeadingPadAlignment',
|
|
15
|
+
FtFieldFieldDefinition_LoadMeta_UnsupportedValuePadAlignment: 'FtFieldFieldDefinition_LoadMeta_UnsupportedValuePadAlignment',
|
|
16
|
+
} as const;
|
|
17
|
+
|
|
18
|
+
type InternalError = (typeof InternalError)[keyof typeof InternalError];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Abstract base class for all field definitions.
|
|
22
|
+
* Field definitions hold metadata and configuration for fields in fielded text.
|
|
23
|
+
* @public
|
|
24
|
+
*/
|
|
25
|
+
export abstract class FtFieldDefinition {
|
|
26
|
+
readonly dataType: FtDataType;
|
|
27
|
+
readonly valueType: string; // TypeScript doesn't have Type like C#, so we use string description
|
|
28
|
+
readonly autoLeftPad: boolean;
|
|
29
|
+
|
|
30
|
+
protected readonly formatter: FtFieldFormatter;
|
|
31
|
+
|
|
32
|
+
private _index: number;
|
|
33
|
+
private _id: number | undefined = undefined;
|
|
34
|
+
private _metaName: string = FtMetaDefaults.Field.Name;
|
|
35
|
+
private _metaHeadings: string[] = [];
|
|
36
|
+
private _mainHeadingIndex: number = FtMetaDefaults.Root.MainHeadingLineIndex;
|
|
37
|
+
private _culture: DotNetLocaleSettings | undefined = undefined;
|
|
38
|
+
private _fixedWidth: boolean = FtMetaDefaults.Field.FixedWidth;
|
|
39
|
+
private _width: number = FtMetaDefaults.Field.Width;
|
|
40
|
+
private _constant: boolean = FtMetaDefaults.Field.Constant;
|
|
41
|
+
private _null: boolean = FtMetaDefaults.Field.Null;
|
|
42
|
+
|
|
43
|
+
// Value formatting properties
|
|
44
|
+
private _valueQuotedType: FtQuotedType = FtMetaDefaults.Field.ValueQuotedType;
|
|
45
|
+
private _valueAlwaysWriteOptionalQuote: boolean = FtMetaDefaults.Field.ValueAlwaysWriteOptionalQuote;
|
|
46
|
+
private _valueWritePrefixSpace: boolean = FtMetaDefaults.Field.ValueWritePrefixSpace;
|
|
47
|
+
private _valuePadAlignment: FtPadAlignment = FtMetaDefaults.Field.ValuePadAlignment;
|
|
48
|
+
private _valuePadCharType: FtPadCharType = FtMetaDefaults.Field.ValuePadCharType;
|
|
49
|
+
private _valuePadChar: string = FtMetaDefaults.Field.ValuePadChar;
|
|
50
|
+
private _valueTruncateType: FtTruncateType = FtMetaDefaults.Field.ValueTruncateType;
|
|
51
|
+
private _valueTruncateChar: string = FtMetaDefaults.Field.ValueTruncateChar;
|
|
52
|
+
private _valueEndOfValueChar: string = FtMetaDefaults.Field.ValueEndOfValueChar;
|
|
53
|
+
private _valueNullChar: string = FtMetaDefaults.Field.ValueNullChar;
|
|
54
|
+
|
|
55
|
+
// Heading formatting properties
|
|
56
|
+
private _headingConstraint: FtHeadingConstraint = FtMetaDefaults.Field.RootOverriding.HeadingConstraint; // Note that field cannot override heading constraint
|
|
57
|
+
private _headingQuotedType: FtQuotedType = FtMetaDefaults.Field.RootOverriding.HeadingQuotedType;
|
|
58
|
+
private _headingAlwaysWriteOptionalQuote: boolean = FtMetaDefaults.Field.RootOverriding.HeadingAlwaysWriteOptionalQuote;
|
|
59
|
+
private _headingWritePrefixSpace: boolean = FtMetaDefaults.Field.RootOverriding.HeadingWritePrefixSpace;
|
|
60
|
+
private _headingPadAlignment: FtPadAlignment = FtMetaDefaults.Field.RootOverriding.HeadingPadAlignment;
|
|
61
|
+
private _headingPadCharType: FtPadCharType = FtMetaDefaults.Field.RootOverriding.HeadingPadCharType;
|
|
62
|
+
private _headingPadChar: string = FtMetaDefaults.Field.RootOverriding.HeadingPadChar;
|
|
63
|
+
private _headingTruncateType: FtTruncateType = FtMetaDefaults.Field.RootOverriding.HeadingTruncateType;
|
|
64
|
+
private _headingTruncateChar: string = FtMetaDefaults.Field.RootOverriding.HeadingTruncateChar;
|
|
65
|
+
private _headingEndOfValueChar: string = FtMetaDefaults.Field.RootOverriding.HeadingEndOfValueChar;
|
|
66
|
+
|
|
67
|
+
private _autoPadChar = ' ';
|
|
68
|
+
|
|
69
|
+
private _headingLeftPad = false;
|
|
70
|
+
private _valueLeftPad = false;
|
|
71
|
+
private _fixedWidthNullValueText = '';
|
|
72
|
+
|
|
73
|
+
protected constructor(dataType: FtDataType, valueType: string, formatter: FtFieldFormatter, autoLeftPad: boolean, index: number) {
|
|
74
|
+
this.dataType = dataType;
|
|
75
|
+
this.valueType = valueType;
|
|
76
|
+
this.formatter = formatter;
|
|
77
|
+
this.autoLeftPad = autoLeftPad;
|
|
78
|
+
this._index = index;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Public properties
|
|
82
|
+
get index(): number {
|
|
83
|
+
return this._index;
|
|
84
|
+
}
|
|
85
|
+
get id(): number | undefined {
|
|
86
|
+
return this._id;
|
|
87
|
+
}
|
|
88
|
+
get metaName(): string {
|
|
89
|
+
return this._metaName;
|
|
90
|
+
}
|
|
91
|
+
get metaHeadings(): string[] {
|
|
92
|
+
return this._metaHeadings;
|
|
93
|
+
}
|
|
94
|
+
get metaHeadingCount(): number {
|
|
95
|
+
return this._metaHeadings.length;
|
|
96
|
+
}
|
|
97
|
+
get mainHeadingIndex(): number {
|
|
98
|
+
return this._mainHeadingIndex;
|
|
99
|
+
}
|
|
100
|
+
get culture(): DotNetLocaleSettings | undefined {
|
|
101
|
+
return this._culture;
|
|
102
|
+
}
|
|
103
|
+
get fixedWidth(): boolean {
|
|
104
|
+
return this._fixedWidth;
|
|
105
|
+
}
|
|
106
|
+
get width(): number {
|
|
107
|
+
return this._width;
|
|
108
|
+
}
|
|
109
|
+
get constant(): boolean {
|
|
110
|
+
return this._constant;
|
|
111
|
+
}
|
|
112
|
+
get null(): boolean {
|
|
113
|
+
return this._null;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
get valueQuotedType(): FtQuotedType {
|
|
117
|
+
return this._valueQuotedType;
|
|
118
|
+
}
|
|
119
|
+
get valueAlwaysWriteOptionalQuote(): boolean {
|
|
120
|
+
return this._valueAlwaysWriteOptionalQuote;
|
|
121
|
+
}
|
|
122
|
+
get valueWritePrefixSpace(): boolean {
|
|
123
|
+
return this._valueWritePrefixSpace;
|
|
124
|
+
}
|
|
125
|
+
get valuePadAlignment(): FtPadAlignment {
|
|
126
|
+
return this._valuePadAlignment;
|
|
127
|
+
}
|
|
128
|
+
get valuePadCharType(): FtPadCharType {
|
|
129
|
+
return this._valuePadCharType;
|
|
130
|
+
}
|
|
131
|
+
get valuePadChar(): string {
|
|
132
|
+
return this._valuePadChar;
|
|
133
|
+
}
|
|
134
|
+
get valueTruncateType(): FtTruncateType {
|
|
135
|
+
return this._valueTruncateType;
|
|
136
|
+
}
|
|
137
|
+
get valueTruncateChar(): string {
|
|
138
|
+
return this._valueTruncateChar;
|
|
139
|
+
}
|
|
140
|
+
get valueEndOfValueChar(): string {
|
|
141
|
+
return this._valueEndOfValueChar;
|
|
142
|
+
}
|
|
143
|
+
get valueNullChar(): string {
|
|
144
|
+
return this._valueNullChar;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
get headingConstraint(): FtHeadingConstraint {
|
|
148
|
+
return this._headingConstraint;
|
|
149
|
+
}
|
|
150
|
+
get headingQuotedType(): FtQuotedType {
|
|
151
|
+
return this._headingQuotedType;
|
|
152
|
+
}
|
|
153
|
+
get headingAlwaysWriteOptionalQuote(): boolean {
|
|
154
|
+
return this._headingAlwaysWriteOptionalQuote;
|
|
155
|
+
}
|
|
156
|
+
get headingWritePrefixSpace(): boolean {
|
|
157
|
+
return this._headingWritePrefixSpace;
|
|
158
|
+
}
|
|
159
|
+
get headingPadAlignment(): FtPadAlignment {
|
|
160
|
+
return this._headingPadAlignment;
|
|
161
|
+
}
|
|
162
|
+
get headingPadCharType(): FtPadCharType {
|
|
163
|
+
return this._headingPadCharType;
|
|
164
|
+
}
|
|
165
|
+
get headingPadChar(): string {
|
|
166
|
+
return this._headingPadChar;
|
|
167
|
+
}
|
|
168
|
+
get headingTruncateType(): FtTruncateType {
|
|
169
|
+
return this._headingTruncateType;
|
|
170
|
+
}
|
|
171
|
+
get headingTruncateChar(): string {
|
|
172
|
+
return this._headingTruncateChar;
|
|
173
|
+
}
|
|
174
|
+
get headingEndOfValueChar(): string {
|
|
175
|
+
return this._headingEndOfValueChar;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
get autoPadChar(): string {
|
|
179
|
+
return this._autoPadChar;
|
|
180
|
+
}
|
|
181
|
+
get headingLeftPad(): boolean {
|
|
182
|
+
return this._headingLeftPad;
|
|
183
|
+
}
|
|
184
|
+
get valueLeftPad(): boolean {
|
|
185
|
+
return this._valueLeftPad;
|
|
186
|
+
}
|
|
187
|
+
get fixedWidthNullValueText(): string {
|
|
188
|
+
return this._fixedWidthNullValueText;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Load metadata from a meta field.
|
|
193
|
+
* @param metaField - The meta field containing configuration
|
|
194
|
+
* @param myCulture - The culture settings for formatting
|
|
195
|
+
* @param myMainHeadingIndex - Index of the main heading
|
|
196
|
+
*/
|
|
197
|
+
loadMeta(metaField: FtMetaField, myCulture: DotNetLocaleSettings | undefined, myMainHeadingIndex: number): void {
|
|
198
|
+
this._id = metaField.id;
|
|
199
|
+
this._metaName = metaField.name;
|
|
200
|
+
this._metaHeadings = [...metaField.headings];
|
|
201
|
+
this._mainHeadingIndex = myMainHeadingIndex;
|
|
202
|
+
this._culture = myCulture;
|
|
203
|
+
this._fixedWidth = metaField.fixedWidth;
|
|
204
|
+
this._width = metaField.width;
|
|
205
|
+
this._constant = metaField.constant;
|
|
206
|
+
this._null = metaField.null;
|
|
207
|
+
|
|
208
|
+
this._valueQuotedType = metaField.valueQuotedType;
|
|
209
|
+
this._valueAlwaysWriteOptionalQuote = metaField.valueAlwaysWriteOptionalQuote;
|
|
210
|
+
this._valueWritePrefixSpace = metaField.valueWritePrefixSpace;
|
|
211
|
+
this._valuePadAlignment = metaField.valuePadAlignment;
|
|
212
|
+
this._valuePadCharType = metaField.valuePadCharType;
|
|
213
|
+
this._valuePadChar = metaField.valuePadChar;
|
|
214
|
+
this._valueTruncateType = metaField.valueTruncateType;
|
|
215
|
+
this._valueTruncateChar = metaField.valueTruncateChar;
|
|
216
|
+
this._valueEndOfValueChar = metaField.valueEndOfValueChar;
|
|
217
|
+
this._valueNullChar = metaField.valueNullChar;
|
|
218
|
+
|
|
219
|
+
this._headingConstraint = metaField.headingConstraint;
|
|
220
|
+
this._headingQuotedType = metaField.headingQuotedType;
|
|
221
|
+
this._headingAlwaysWriteOptionalQuote = metaField.headingAlwaysWriteOptionalQuote;
|
|
222
|
+
this._headingWritePrefixSpace = metaField.headingWritePrefixSpace;
|
|
223
|
+
this._headingPadAlignment = metaField.headingPadAlignment;
|
|
224
|
+
this._headingPadCharType = metaField.headingPadCharType;
|
|
225
|
+
this._headingPadChar = metaField.headingPadChar;
|
|
226
|
+
this._headingTruncateType = metaField.headingTruncateType;
|
|
227
|
+
this._headingTruncateChar = metaField.headingTruncateChar;
|
|
228
|
+
this._headingEndOfValueChar = metaField.headingEndOfValueChar;
|
|
229
|
+
|
|
230
|
+
this.formatter.culture = this._culture;
|
|
231
|
+
|
|
232
|
+
// Set meta name in headings if required
|
|
233
|
+
if (
|
|
234
|
+
(this._headingConstraint === FtHeadingConstraint.NameIsMain || this._headingConstraint === FtHeadingConstraint.NameConstant) &&
|
|
235
|
+
myMainHeadingIndex >= 0 &&
|
|
236
|
+
myMainHeadingIndex < this.metaHeadingCount
|
|
237
|
+
) {
|
|
238
|
+
this._metaHeadings[myMainHeadingIndex] = this._metaName;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// Calculate heading left pad
|
|
242
|
+
switch (this._headingPadAlignment) {
|
|
243
|
+
case FtPadAlignment.Left:
|
|
244
|
+
this._headingLeftPad = true;
|
|
245
|
+
break;
|
|
246
|
+
case FtPadAlignment.Right:
|
|
247
|
+
this._headingLeftPad = false;
|
|
248
|
+
break;
|
|
249
|
+
case FtPadAlignment.Auto:
|
|
250
|
+
this._headingLeftPad = this.autoLeftPad;
|
|
251
|
+
break;
|
|
252
|
+
default:
|
|
253
|
+
throw new FtUnreachableCaseError('FDLM30915', this._headingPadAlignment);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// Calculate value left pad
|
|
257
|
+
switch (this._valuePadAlignment) {
|
|
258
|
+
case FtPadAlignment.Left:
|
|
259
|
+
this._valueLeftPad = true;
|
|
260
|
+
break;
|
|
261
|
+
case FtPadAlignment.Right:
|
|
262
|
+
this._valueLeftPad = false;
|
|
263
|
+
break;
|
|
264
|
+
case FtPadAlignment.Auto:
|
|
265
|
+
this._valueLeftPad = this.autoLeftPad;
|
|
266
|
+
break;
|
|
267
|
+
default:
|
|
268
|
+
throw new FtUnreachableCaseError('FDLM30911', this._valuePadAlignment);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// Build fixed width null value text
|
|
272
|
+
if (this._fixedWidth) {
|
|
273
|
+
this._fixedWidthNullValueText = this._valueNullChar.repeat(this._width);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { DotNetLocaleSettings } from '@pbkware/dot-net-date-number-formatting';
|
|
2
|
+
import { FtFloatMetaField } from '../../meta/fields/ft-float-meta-field.js';
|
|
3
|
+
import { FtFloatFieldFormatter } from '../../serialization/formatting/ft-float-field-formatter.js';
|
|
4
|
+
import { FtDataType } from '../../types/enums/ft-data-type.js';
|
|
5
|
+
import { FtGenericFieldDefinition } from './ft-generic-field-definition.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Field definition for float (number) fields.
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export class FtFloatFieldDefinition extends FtGenericFieldDefinition<number> {
|
|
12
|
+
static readonly AUTO_LEFT_PAD = true;
|
|
13
|
+
|
|
14
|
+
declare protected formatter: FtFloatFieldFormatter;
|
|
15
|
+
|
|
16
|
+
constructor(index: number) {
|
|
17
|
+
const formatter = new FtFloatFieldFormatter();
|
|
18
|
+
super(FtDataType.Float, 'number', formatter, FtFloatFieldDefinition.AUTO_LEFT_PAD, index);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get format(): string {
|
|
22
|
+
return this.formatter.format;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
get styles(): number {
|
|
26
|
+
return this.formatter.styles;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
override loadMeta(metaField: FtFloatMetaField, myCulture: DotNetLocaleSettings | undefined, myMainHeadingIndex: number): void {
|
|
30
|
+
super.loadMeta(metaField, myCulture, myMainHeadingIndex);
|
|
31
|
+
|
|
32
|
+
this.formatter.format = metaField.format;
|
|
33
|
+
this.formatter.styles = metaField.styles;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
getValueText(value: number): string {
|
|
37
|
+
return this.formatter.toText(value);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
parseValueText(text: string): number {
|
|
41
|
+
return this.formatter.parse(text);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { DotNetLocaleSettings } from '@pbkware/dot-net-date-number-formatting';
|
|
2
|
+
import { FtMetaField } from '../../meta/fields/ft-meta-field.js';
|
|
3
|
+
import { FtFieldDefinition } from './ft-field-definition.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Generic base class for field definitions with typed values.
|
|
7
|
+
* Extends FtFieldDefinition to add type-specific value handling.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export abstract class FtGenericFieldDefinition<T> extends FtFieldDefinition {
|
|
11
|
+
private _value!: T;
|
|
12
|
+
|
|
13
|
+
get value(): T {
|
|
14
|
+
return this._value;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Load metadata from a meta field.
|
|
19
|
+
* @param metaField - The meta field containing configuration
|
|
20
|
+
* @param myCulture - The culture settings for formatting
|
|
21
|
+
* @param myMainHeadingIndex - Index of the main heading
|
|
22
|
+
*/
|
|
23
|
+
override loadMeta(metaField: FtMetaField, myCulture: DotNetLocaleSettings | undefined, myMainHeadingIndex: number): void {
|
|
24
|
+
super.loadMeta(metaField, myCulture, myMainHeadingIndex);
|
|
25
|
+
|
|
26
|
+
// Load constant value if applicable
|
|
27
|
+
// The concrete generic meta field subclass will have typed value
|
|
28
|
+
if (metaField.constant && !metaField.null) {
|
|
29
|
+
const genericMetaField = metaField;
|
|
30
|
+
if ('value' in genericMetaField) {
|
|
31
|
+
this._value = genericMetaField.value as T;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Convert a typed value to its text representation.
|
|
38
|
+
* @param value - The value to convert
|
|
39
|
+
* @returns The text representation
|
|
40
|
+
*/
|
|
41
|
+
abstract getValueText(value: T): string;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Parse text into a typed value.
|
|
45
|
+
* @param text - The text to parse
|
|
46
|
+
* @returns The parsed value
|
|
47
|
+
*/
|
|
48
|
+
abstract parseValueText(text: string): T;
|
|
49
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { DotNetLocaleSettings } from '@pbkware/dot-net-date-number-formatting';
|
|
2
|
+
import { FtIntegerMetaField } from '../../meta/fields/ft-integer-meta-field.js';
|
|
3
|
+
import { FtIntegerFieldFormatter } from '../../serialization/formatting/ft-integer-field-formatter.js';
|
|
4
|
+
import { FtDataType } from '../../types/enums/ft-data-type.js';
|
|
5
|
+
import { FtGenericFieldDefinition } from './ft-generic-field-definition.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Field definition for integer (bigint) fields.
|
|
9
|
+
* In TypeScript we use bigint for precision but also support number.
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export class FtIntegerFieldDefinition extends FtGenericFieldDefinition<bigint> {
|
|
13
|
+
static readonly AUTO_LEFT_PAD = true;
|
|
14
|
+
|
|
15
|
+
declare protected formatter: FtIntegerFieldFormatter;
|
|
16
|
+
|
|
17
|
+
constructor(index: number) {
|
|
18
|
+
const formatter = new FtIntegerFieldFormatter();
|
|
19
|
+
super(FtDataType.Integer, 'bigint', formatter, FtIntegerFieldDefinition.AUTO_LEFT_PAD, index);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get format(): string {
|
|
23
|
+
return this.formatter.format;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
get styles(): number {
|
|
27
|
+
return this.formatter.styles;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
override loadMeta(metaField: FtIntegerMetaField, myCulture: DotNetLocaleSettings | undefined, myMainHeadingIndex: number): void {
|
|
31
|
+
super.loadMeta(metaField, myCulture, myMainHeadingIndex);
|
|
32
|
+
|
|
33
|
+
this.formatter.format = metaField.format;
|
|
34
|
+
this.formatter.styles = metaField.styles;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
getValueText(value: bigint): string {
|
|
38
|
+
return this.formatter.toText(value);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
parseValueText(text: string): bigint {
|
|
42
|
+
return this.formatter.parse(text);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FtStringFieldFormatter } from '../../serialization/formatting/ft-string-field-formatter.js';
|
|
2
|
+
import { FtDataType } from '../../types/enums/ft-data-type.js';
|
|
3
|
+
import { FtGenericFieldDefinition } from './ft-generic-field-definition.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Field definition for string fields.
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export class FtStringFieldDefinition extends FtGenericFieldDefinition<string> {
|
|
10
|
+
static readonly AUTO_LEFT_PAD = false;
|
|
11
|
+
|
|
12
|
+
declare protected formatter: FtStringFieldFormatter;
|
|
13
|
+
|
|
14
|
+
constructor(index: number) {
|
|
15
|
+
const formatter = new FtStringFieldFormatter();
|
|
16
|
+
super(FtDataType.String, 'string', formatter, FtStringFieldDefinition.AUTO_LEFT_PAD, index);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
getValueText(value: string): string {
|
|
20
|
+
return this.formatter.toText(value);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
parseValueText(text: string): string {
|
|
24
|
+
return this.formatter.parse(text);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { FtSequenceInvokation } from '../../sequences/core/ft-sequence-invokation.js';
|
|
2
|
+
import { FtSequenceItem } from '../../sequences/core/ft-sequence-item.js';
|
|
3
|
+
import { FtBooleanStyles } from '../../types/enums/ft-boolean-styles.js';
|
|
4
|
+
import { FtBooleanFieldDefinition } from '../definitions/ft-boolean-field-definition.js';
|
|
5
|
+
import { FtGenericField } from './ft-generic-field.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Field for boolean values.
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export class FtBooleanField extends FtGenericField<boolean> {
|
|
12
|
+
private static readonly VALUE_TEXT_NULL_TRIMMABLE = true;
|
|
13
|
+
|
|
14
|
+
constructor(sequenceInvokation: FtSequenceInvokation, sequenceItem: FtSequenceItem, definition: FtBooleanFieldDefinition) {
|
|
15
|
+
super(sequenceInvokation, sequenceItem, FtBooleanField.VALUE_TEXT_NULL_TRIMMABLE, definition);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
override get definition(): FtBooleanFieldDefinition {
|
|
19
|
+
return super.definition_ as FtBooleanFieldDefinition;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get falseText(): string {
|
|
23
|
+
return this.definition.falseText;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
get trueText(): string {
|
|
27
|
+
return this.definition.trueText;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
get styles(): FtBooleanStyles {
|
|
31
|
+
return this.definition.styles;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
get nullableValue(): boolean | null {
|
|
35
|
+
return this.isNull() ? null : this.value;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
set nullableValue(value: boolean | null) {
|
|
39
|
+
if (value === null) {
|
|
40
|
+
this.setNull();
|
|
41
|
+
} else {
|
|
42
|
+
this.value = value;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
protected isValueEqual(left: boolean, right: boolean): boolean {
|
|
47
|
+
return left === right;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { FtSequenceInvokation } from '../../sequences/core/ft-sequence-invokation.js';
|
|
2
|
+
import { FtSequenceItem } from '../../sequences/core/ft-sequence-item.js';
|
|
3
|
+
import { FtDateTimeFieldDefinition } from '../definitions/ft-date-time-field-definition.js';
|
|
4
|
+
import { FtGenericField } from './ft-generic-field.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Field for DateTime values.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export class FtDateTimeField extends FtGenericField<Date> {
|
|
11
|
+
private static readonly VALUE_TEXT_NULL_TRIMMABLE = true;
|
|
12
|
+
|
|
13
|
+
constructor(sequenceInvokation: FtSequenceInvokation, sequenceItem: FtSequenceItem, definition: FtDateTimeFieldDefinition) {
|
|
14
|
+
super(sequenceInvokation, sequenceItem, FtDateTimeField.VALUE_TEXT_NULL_TRIMMABLE, definition);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
override get definition(): FtDateTimeFieldDefinition {
|
|
18
|
+
return super.definition_ as FtDateTimeFieldDefinition;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get format(): string {
|
|
22
|
+
return this.definition.format;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
get styles(): number {
|
|
26
|
+
return this.definition.styles;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get nullableValue(): Date | null {
|
|
30
|
+
return this.isNull() ? null : this.value;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
set nullableValue(value: Date | null) {
|
|
34
|
+
if (value === null) {
|
|
35
|
+
this.setNull();
|
|
36
|
+
} else {
|
|
37
|
+
this.value = value;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
protected isValueEqual(left: Date, right: Date): boolean {
|
|
42
|
+
return left.getTime() === right.getTime();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { FtSequenceInvokation } from '../../sequences/core/ft-sequence-invokation.js';
|
|
2
|
+
import { FtSequenceItem } from '../../sequences/core/ft-sequence-item.js';
|
|
3
|
+
import { FtDecimalFieldDefinition } from '../definitions/ft-decimal-field-definition.js';
|
|
4
|
+
import { FtGenericField } from './ft-generic-field.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Field for decimal values.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export class FtDecimalField extends FtGenericField<number> {
|
|
11
|
+
private static readonly VALUE_TEXT_NULL_TRIMMABLE = true;
|
|
12
|
+
|
|
13
|
+
constructor(sequenceInvokation: FtSequenceInvokation, sequenceItem: FtSequenceItem, definition: FtDecimalFieldDefinition) {
|
|
14
|
+
super(sequenceInvokation, sequenceItem, FtDecimalField.VALUE_TEXT_NULL_TRIMMABLE, definition);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
override get definition(): FtDecimalFieldDefinition {
|
|
18
|
+
return super.definition_ as FtDecimalFieldDefinition;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get format(): string {
|
|
22
|
+
return this.definition.format;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
get styles(): number {
|
|
26
|
+
return this.definition.styles;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get nullableValue(): number | null {
|
|
30
|
+
return this.isNull() ? null : this.value;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
set nullableValue(value: number | null) {
|
|
34
|
+
if (value === null) {
|
|
35
|
+
this.setNull();
|
|
36
|
+
} else {
|
|
37
|
+
this.value = value;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
protected isValueEqual(left: number, right: number): boolean {
|
|
42
|
+
return left === right;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { FtField } from './ft-field.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export class FtFieldList {
|
|
7
|
+
private list: FtField[] = [];
|
|
8
|
+
|
|
9
|
+
get count(): number {
|
|
10
|
+
return this.list.length;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get(index: number): FtField {
|
|
14
|
+
return this.list[index];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
getByName(name: string): FtField | undefined {
|
|
18
|
+
const idx = this.indexOfName(name);
|
|
19
|
+
if (idx >= 0) {
|
|
20
|
+
return this.list[idx];
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
indexOf(field: FtField): number {
|
|
26
|
+
return this.list.indexOf(field);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
indexOfName(name: string): number {
|
|
30
|
+
// Try case-sensitive first
|
|
31
|
+
for (let i = 0; i < this.list.length; i++) {
|
|
32
|
+
if (this.list[i].name === name) {
|
|
33
|
+
return i;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Try case-insensitive
|
|
38
|
+
const lowerName = name.toLowerCase();
|
|
39
|
+
for (let i = 0; i < this.list.length; i++) {
|
|
40
|
+
if (this.list[i].name.toLowerCase() === lowerName) {
|
|
41
|
+
return i;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return -1;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
indexOfId(id: number): number {
|
|
49
|
+
for (let i = 0; i < this.list.length; i++) {
|
|
50
|
+
if (this.list[i].id === id) {
|
|
51
|
+
return i;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return -1;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
clear(): void {
|
|
58
|
+
this.list = [];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
trim(fromIndex: number): void {
|
|
62
|
+
this.list = this.list.slice(0, fromIndex);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
add(field: FtField): void {
|
|
66
|
+
this.list.push(field);
|
|
67
|
+
}
|
|
68
|
+
}
|