@dipscope/type-manager 7.2.0 → 8.0.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/CHANGELOG.md +27 -0
- package/README.md +160 -167
- package/dist/es2015/constants/default-value-resolver.js +2 -0
- package/dist/es2015/constants/default-value-resolver.js.map +1 -0
- package/dist/es2015/constants/empty-array.js +2 -0
- package/dist/es2015/constants/empty-array.js.map +1 -0
- package/dist/es2015/constants/empty-map.js +2 -0
- package/dist/es2015/constants/empty-map.js.map +1 -0
- package/dist/es2015/constants/index.js +5 -0
- package/dist/es2015/constants/index.js.map +1 -0
- package/dist/es2015/constants/null-value-resolver.js +2 -0
- package/dist/es2015/constants/null-value-resolver.js.map +1 -0
- package/dist/es2015/custom-key.js.map +1 -1
- package/dist/es2015/factories/type-factory.js +22 -23
- package/dist/es2015/factories/type-factory.js.map +1 -1
- package/dist/es2015/functions/get-own-reflect-metadata.js +1 -2
- package/dist/es2015/functions/get-own-reflect-metadata.js.map +1 -1
- package/dist/es2015/functions/get-reflect-metadata.js +1 -2
- package/dist/es2015/functions/get-reflect-metadata.js.map +1 -1
- package/dist/es2015/functions/get-words.js +61 -2
- package/dist/es2015/functions/get-words.js.map +1 -1
- package/dist/es2015/functions/index.js +0 -12
- package/dist/es2015/functions/index.js.map +1 -1
- package/dist/es2015/functions/json-parse.js.map +1 -1
- package/dist/es2015/functions/json-stringify.js +6 -5
- package/dist/es2015/functions/json-stringify.js.map +1 -1
- package/dist/es2015/functions/name-of.js +1 -5
- package/dist/es2015/functions/name-of.js.map +1 -1
- package/dist/es2015/index.js +17 -12
- package/dist/es2015/index.js.map +1 -1
- package/dist/es2015/inject-decorator.js +2 -0
- package/dist/es2015/inject-decorator.js.map +1 -0
- package/dist/es2015/inject-metadata.js +34 -33
- package/dist/es2015/inject-metadata.js.map +1 -1
- package/dist/es2015/inject-sorters/asc-inject-sorter.js +1 -9
- package/dist/es2015/inject-sorters/asc-inject-sorter.js.map +1 -1
- package/dist/es2015/inject-sorters/desc-inject-sorter.js +1 -9
- package/dist/es2015/inject-sorters/desc-inject-sorter.js.map +1 -1
- package/dist/es2015/inject-state.js +2 -0
- package/dist/es2015/inject-state.js.map +1 -0
- package/dist/es2015/inject-states/index.js +3 -0
- package/dist/es2015/inject-states/index.js.map +1 -0
- package/dist/es2015/inject-states/resolved-inject-state.js +10 -0
- package/dist/es2015/inject-states/resolved-inject-state.js.map +1 -0
- package/dist/es2015/inject-states/unresolved-inject-state.js +31 -0
- package/dist/es2015/inject-states/unresolved-inject-state.js.map +1 -0
- package/dist/es2015/inject.js +6 -8
- package/dist/es2015/inject.js.map +1 -1
- package/dist/es2015/injectors/singleton-injector.js +6 -10
- package/dist/es2015/injectors/singleton-injector.js.map +1 -1
- package/dist/es2015/logger-level.js +9 -0
- package/dist/es2015/logger-level.js.map +1 -0
- package/dist/es2015/logger.js +79 -0
- package/dist/es2015/logger.js.map +1 -0
- package/dist/es2015/metadata.js +45 -57
- package/dist/es2015/metadata.js.map +1 -1
- package/dist/es2015/null-value-resolver.js +2 -0
- package/dist/es2015/null-value-resolver.js.map +1 -0
- package/dist/es2015/nullable.js +2 -0
- package/dist/es2015/nullable.js.map +1 -0
- package/dist/es2015/optional.js +2 -0
- package/dist/es2015/optional.js.map +1 -0
- package/dist/es2015/property-decorator.js +2 -0
- package/dist/es2015/property-decorator.js.map +1 -0
- package/dist/es2015/property-extension-metadata-ctor-set-key.js +1 -1
- package/dist/es2015/property-extension-metadata-ctor-set-key.js.map +1 -1
- package/dist/es2015/property-extension-metadata.js.map +1 -1
- package/dist/es2015/property-metadata.js +224 -145
- package/dist/es2015/property-metadata.js.map +1 -1
- package/dist/es2015/property-sorters/asc-property-sorter.js +1 -9
- package/dist/es2015/property-sorters/asc-property-sorter.js.map +1 -1
- package/dist/es2015/property-sorters/desc-property-sorter.js +1 -9
- package/dist/es2015/property-sorters/desc-property-sorter.js.map +1 -1
- package/dist/es2015/property-state.js +2 -0
- package/dist/es2015/property-state.js.map +1 -0
- package/dist/es2015/property-states/index.js +3 -0
- package/dist/es2015/property-states/index.js.map +1 -0
- package/dist/es2015/property-states/resolved-property-state.js +27 -0
- package/dist/es2015/property-states/resolved-property-state.js.map +1 -0
- package/dist/es2015/property-states/unresolved-property-state.js +167 -0
- package/dist/es2015/property-states/unresolved-property-state.js.map +1 -0
- package/dist/es2015/property.js +44 -22
- package/dist/es2015/property.js.map +1 -1
- package/dist/es2015/reference-handlers/circular-reference-handler.js +2 -3
- package/dist/es2015/reference-handlers/circular-reference-handler.js.map +1 -1
- package/dist/es2015/reference-handlers/json-path-reference-handler.js +7 -6
- package/dist/es2015/reference-handlers/json-path-reference-handler.js.map +1 -1
- package/dist/es2015/reference-handlers/plain-reference-handler.js +2 -3
- package/dist/es2015/reference-handlers/plain-reference-handler.js.map +1 -1
- package/dist/es2015/serializer-context.js +65 -171
- package/dist/es2015/serializer-context.js.map +1 -1
- package/dist/es2015/serializers/any-serializer.js +4 -5
- package/dist/es2015/serializers/any-serializer.js.map +1 -1
- package/dist/es2015/serializers/array-buffer-serializer.js +8 -13
- package/dist/es2015/serializers/array-buffer-serializer.js.map +1 -1
- package/dist/es2015/serializers/array-serializer.js +18 -25
- package/dist/es2015/serializers/array-serializer.js.map +1 -1
- package/dist/es2015/serializers/boolean-serializer.js +12 -19
- package/dist/es2015/serializers/boolean-serializer.js.map +1 -1
- package/dist/es2015/serializers/data-view-serializer.js +8 -14
- package/dist/es2015/serializers/data-view-serializer.js.map +1 -1
- package/dist/es2015/serializers/date-serializer.js +8 -13
- package/dist/es2015/serializers/date-serializer.js.map +1 -1
- package/dist/es2015/serializers/float-32-array-serializer.js +8 -14
- package/dist/es2015/serializers/float-32-array-serializer.js.map +1 -1
- package/dist/es2015/serializers/float-64-array-serializer.js +8 -14
- package/dist/es2015/serializers/float-64-array-serializer.js.map +1 -1
- package/dist/es2015/serializers/int-16-array-serializer.js +8 -14
- package/dist/es2015/serializers/int-16-array-serializer.js.map +1 -1
- package/dist/es2015/serializers/int-32-array-serializer.js +8 -14
- package/dist/es2015/serializers/int-32-array-serializer.js.map +1 -1
- package/dist/es2015/serializers/int-8-array-serializer.js +8 -14
- package/dist/es2015/serializers/int-8-array-serializer.js.map +1 -1
- package/dist/es2015/serializers/map-serializer.js +42 -54
- package/dist/es2015/serializers/map-serializer.js.map +1 -1
- package/dist/es2015/serializers/number-serializer.js +10 -17
- package/dist/es2015/serializers/number-serializer.js.map +1 -1
- package/dist/es2015/serializers/set-serializer.js +19 -26
- package/dist/es2015/serializers/set-serializer.js.map +1 -1
- package/dist/es2015/serializers/string-serializer.js +12 -19
- package/dist/es2015/serializers/string-serializer.js.map +1 -1
- package/dist/es2015/serializers/type-serializer.js +64 -71
- package/dist/es2015/serializers/type-serializer.js.map +1 -1
- package/dist/es2015/serializers/uint-16-array-serializer.js +8 -14
- package/dist/es2015/serializers/uint-16-array-serializer.js.map +1 -1
- package/dist/es2015/serializers/uint-32-array-serializer.js +8 -14
- package/dist/es2015/serializers/uint-32-array-serializer.js.map +1 -1
- package/dist/es2015/serializers/uint-8-array-serializer.js +8 -14
- package/dist/es2015/serializers/uint-8-array-serializer.js.map +1 -1
- package/dist/es2015/serializers/uint-8-clamped-array-serializer.js +8 -14
- package/dist/es2015/serializers/uint-8-clamped-array-serializer.js.map +1 -1
- package/dist/es2015/serializers/unknown-serializer.js +4 -5
- package/dist/es2015/serializers/unknown-serializer.js.map +1 -1
- package/dist/es2015/type-decorator.js +2 -0
- package/dist/es2015/type-decorator.js.map +1 -0
- package/dist/es2015/type-entry.js +2 -0
- package/dist/es2015/type-entry.js.map +1 -0
- package/dist/es2015/type-extension-metadata-ctor-set-key.js +1 -1
- package/dist/es2015/type-extension-metadata-ctor-set-key.js.map +1 -1
- package/dist/es2015/type-extension-metadata.js.map +1 -1
- package/dist/es2015/type-manager.js +57 -55
- package/dist/es2015/type-manager.js.map +1 -1
- package/dist/es2015/type-metadata-symbol.js +1 -1
- package/dist/es2015/type-metadata-symbol.js.map +1 -1
- package/dist/es2015/type-metadata.js +465 -222
- package/dist/es2015/type-metadata.js.map +1 -1
- package/dist/es2015/type-scope.js +58 -0
- package/dist/es2015/type-scope.js.map +1 -0
- package/dist/es2015/type-state.js +2 -0
- package/dist/es2015/type-state.js.map +1 -0
- package/dist/es2015/type-states/index.js +3 -0
- package/dist/es2015/type-states/index.js.map +1 -0
- package/dist/es2015/type-states/resolved-type-state.js +44 -0
- package/dist/es2015/type-states/resolved-type-state.js.map +1 -0
- package/dist/es2015/type-states/unresolved-type-state.js +303 -0
- package/dist/es2015/type-states/unresolved-type-state.js.map +1 -0
- package/dist/es2015/type.js +3 -1
- package/dist/es2015/type.js.map +1 -1
- package/dist/es5/constants/default-value-resolver.js +2 -0
- package/dist/es5/constants/default-value-resolver.js.map +1 -0
- package/dist/es5/constants/empty-array.js +2 -0
- package/dist/es5/constants/empty-array.js.map +1 -0
- package/dist/es5/constants/empty-map.js +2 -0
- package/dist/es5/constants/empty-map.js.map +1 -0
- package/dist/es5/constants/index.js +5 -0
- package/dist/es5/constants/index.js.map +1 -0
- package/dist/es5/constants/null-value-resolver.js +2 -0
- package/dist/es5/constants/null-value-resolver.js.map +1 -0
- package/dist/es5/custom-key.js.map +1 -1
- package/dist/es5/factories/type-factory.js +63 -39
- package/dist/es5/factories/type-factory.js.map +1 -1
- package/dist/es5/functions/get-own-reflect-metadata.js +1 -2
- package/dist/es5/functions/get-own-reflect-metadata.js.map +1 -1
- package/dist/es5/functions/get-reflect-metadata.js +1 -2
- package/dist/es5/functions/get-reflect-metadata.js.map +1 -1
- package/dist/es5/functions/get-words.js +61 -2
- package/dist/es5/functions/get-words.js.map +1 -1
- package/dist/es5/functions/index.js +0 -12
- package/dist/es5/functions/index.js.map +1 -1
- package/dist/es5/functions/json-parse.js.map +1 -1
- package/dist/es5/functions/json-stringify.js +6 -5
- package/dist/es5/functions/json-stringify.js.map +1 -1
- package/dist/es5/functions/name-of.js +1 -5
- package/dist/es5/functions/name-of.js.map +1 -1
- package/dist/es5/index.js +17 -12
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/inject-decorator.js +2 -0
- package/dist/es5/inject-decorator.js.map +1 -0
- package/dist/es5/inject-metadata.js +49 -34
- package/dist/es5/inject-metadata.js.map +1 -1
- package/dist/es5/inject-sorters/asc-inject-sorter.js +1 -9
- package/dist/es5/inject-sorters/asc-inject-sorter.js.map +1 -1
- package/dist/es5/inject-sorters/desc-inject-sorter.js +1 -9
- package/dist/es5/inject-sorters/desc-inject-sorter.js.map +1 -1
- package/dist/es5/inject-state.js +2 -0
- package/dist/es5/inject-state.js.map +1 -0
- package/dist/es5/inject-states/index.js +3 -0
- package/dist/es5/inject-states/index.js.map +1 -0
- package/dist/es5/inject-states/resolved-inject-state.js +12 -0
- package/dist/es5/inject-states/resolved-inject-state.js.map +1 -0
- package/dist/es5/inject-states/unresolved-inject-state.js +45 -0
- package/dist/es5/inject-states/unresolved-inject-state.js.map +1 -0
- package/dist/es5/inject.js +6 -8
- package/dist/es5/inject.js.map +1 -1
- package/dist/es5/injectors/singleton-injector.js +31 -22
- package/dist/es5/injectors/singleton-injector.js.map +1 -1
- package/dist/es5/logger-level.js +9 -0
- package/dist/es5/logger-level.js.map +1 -0
- package/dist/es5/logger.js +122 -0
- package/dist/es5/logger.js.map +1 -0
- package/dist/es5/metadata.js +44 -79
- package/dist/es5/metadata.js.map +1 -1
- package/dist/es5/null-value-resolver.js +2 -0
- package/dist/es5/null-value-resolver.js.map +1 -0
- package/dist/es5/nullable.js +2 -0
- package/dist/es5/nullable.js.map +1 -0
- package/dist/es5/optional.js +2 -0
- package/dist/es5/optional.js.map +1 -0
- package/dist/es5/property-decorator.js +2 -0
- package/dist/es5/property-decorator.js.map +1 -0
- package/dist/es5/property-extension-metadata-ctor-set-key.js +1 -1
- package/dist/es5/property-extension-metadata-ctor-set-key.js.map +1 -1
- package/dist/es5/property-extension-metadata.js.map +1 -1
- package/dist/es5/property-metadata.js +288 -162
- package/dist/es5/property-metadata.js.map +1 -1
- package/dist/es5/property-sorters/asc-property-sorter.js +1 -9
- package/dist/es5/property-sorters/asc-property-sorter.js.map +1 -1
- package/dist/es5/property-sorters/desc-property-sorter.js +1 -9
- package/dist/es5/property-sorters/desc-property-sorter.js.map +1 -1
- package/dist/es5/property-state.js +2 -0
- package/dist/es5/property-state.js.map +1 -0
- package/dist/es5/property-states/index.js +3 -0
- package/dist/es5/property-states/index.js.map +1 -0
- package/dist/es5/property-states/resolved-property-state.js +29 -0
- package/dist/es5/property-states/resolved-property-state.js.map +1 -0
- package/dist/es5/property-states/unresolved-property-state.js +249 -0
- package/dist/es5/property-states/unresolved-property-state.js.map +1 -0
- package/dist/es5/property.js +44 -22
- package/dist/es5/property.js.map +1 -1
- package/dist/es5/reference-handlers/circular-reference-handler.js +2 -3
- package/dist/es5/reference-handlers/circular-reference-handler.js.map +1 -1
- package/dist/es5/reference-handlers/json-path-reference-handler.js +10 -31
- package/dist/es5/reference-handlers/json-path-reference-handler.js.map +1 -1
- package/dist/es5/reference-handlers/plain-reference-handler.js +2 -3
- package/dist/es5/reference-handlers/plain-reference-handler.js.map +1 -1
- package/dist/es5/serializer-context.js +71 -237
- package/dist/es5/serializer-context.js.map +1 -1
- package/dist/es5/serializers/any-serializer.js +4 -5
- package/dist/es5/serializers/any-serializer.js.map +1 -1
- package/dist/es5/serializers/array-buffer-serializer.js +8 -13
- package/dist/es5/serializers/array-buffer-serializer.js.map +1 -1
- package/dist/es5/serializers/array-serializer.js +18 -31
- package/dist/es5/serializers/array-serializer.js.map +1 -1
- package/dist/es5/serializers/boolean-serializer.js +12 -19
- package/dist/es5/serializers/boolean-serializer.js.map +1 -1
- package/dist/es5/serializers/data-view-serializer.js +8 -14
- package/dist/es5/serializers/data-view-serializer.js.map +1 -1
- package/dist/es5/serializers/date-serializer.js +8 -13
- package/dist/es5/serializers/date-serializer.js.map +1 -1
- package/dist/es5/serializers/float-32-array-serializer.js +8 -14
- package/dist/es5/serializers/float-32-array-serializer.js.map +1 -1
- package/dist/es5/serializers/float-64-array-serializer.js +8 -14
- package/dist/es5/serializers/float-64-array-serializer.js.map +1 -1
- package/dist/es5/serializers/int-16-array-serializer.js +8 -14
- package/dist/es5/serializers/int-16-array-serializer.js.map +1 -1
- package/dist/es5/serializers/int-32-array-serializer.js +8 -14
- package/dist/es5/serializers/int-32-array-serializer.js.map +1 -1
- package/dist/es5/serializers/int-8-array-serializer.js +8 -14
- package/dist/es5/serializers/int-8-array-serializer.js.map +1 -1
- package/dist/es5/serializers/map-serializer.js +69 -55
- package/dist/es5/serializers/map-serializer.js.map +1 -1
- package/dist/es5/serializers/number-serializer.js +10 -17
- package/dist/es5/serializers/number-serializer.js.map +1 -1
- package/dist/es5/serializers/set-serializer.js +30 -27
- package/dist/es5/serializers/set-serializer.js.map +1 -1
- package/dist/es5/serializers/string-serializer.js +12 -19
- package/dist/es5/serializers/string-serializer.js.map +1 -1
- package/dist/es5/serializers/type-serializer.js +65 -101
- package/dist/es5/serializers/type-serializer.js.map +1 -1
- package/dist/es5/serializers/uint-16-array-serializer.js +8 -14
- package/dist/es5/serializers/uint-16-array-serializer.js.map +1 -1
- package/dist/es5/serializers/uint-32-array-serializer.js +8 -14
- package/dist/es5/serializers/uint-32-array-serializer.js.map +1 -1
- package/dist/es5/serializers/uint-8-array-serializer.js +8 -14
- package/dist/es5/serializers/uint-8-array-serializer.js.map +1 -1
- package/dist/es5/serializers/uint-8-clamped-array-serializer.js +8 -14
- package/dist/es5/serializers/uint-8-clamped-array-serializer.js.map +1 -1
- package/dist/es5/serializers/unknown-serializer.js +4 -5
- package/dist/es5/serializers/unknown-serializer.js.map +1 -1
- package/dist/es5/type-decorator.js +2 -0
- package/dist/es5/type-decorator.js.map +1 -0
- package/dist/es5/type-entry.js +2 -0
- package/dist/es5/type-entry.js.map +1 -0
- package/dist/es5/type-extension-metadata-ctor-set-key.js +1 -1
- package/dist/es5/type-extension-metadata-ctor-set-key.js.map +1 -1
- package/dist/es5/type-extension-metadata.js.map +1 -1
- package/dist/es5/type-manager.js +112 -63
- package/dist/es5/type-manager.js.map +1 -1
- package/dist/es5/type-metadata-symbol.js +1 -1
- package/dist/es5/type-metadata-symbol.js.map +1 -1
- package/dist/es5/type-metadata.js +597 -265
- package/dist/es5/type-metadata.js.map +1 -1
- package/dist/es5/type-scope.js +108 -0
- package/dist/es5/type-scope.js.map +1 -0
- package/dist/es5/type-state.js +2 -0
- package/dist/es5/type-state.js.map +1 -0
- package/dist/es5/type-states/index.js +3 -0
- package/dist/es5/type-states/index.js.map +1 -0
- package/dist/es5/type-states/resolved-type-state.js +46 -0
- package/dist/es5/type-states/resolved-type-state.js.map +1 -0
- package/dist/es5/type-states/unresolved-type-state.js +453 -0
- package/dist/es5/type-states/unresolved-type-state.js.map +1 -0
- package/dist/es5/type.js +3 -1
- package/dist/es5/type.js.map +1 -1
- package/dist/types/constants/default-value-resolver.d.ts +8 -0
- package/dist/types/constants/default-value-resolver.d.ts.map +1 -0
- package/dist/types/constants/empty-array.d.ts +7 -0
- package/dist/types/constants/empty-array.d.ts.map +1 -0
- package/dist/types/constants/empty-map.d.ts +7 -0
- package/dist/types/constants/empty-map.d.ts.map +1 -0
- package/dist/types/constants/index.d.ts +5 -0
- package/dist/types/constants/index.d.ts.map +1 -0
- package/dist/types/constants/null-value-resolver.d.ts +8 -0
- package/dist/types/constants/null-value-resolver.d.ts.map +1 -0
- package/dist/types/custom-key.d.ts +4 -3
- package/dist/types/custom-key.d.ts.map +1 -1
- package/dist/types/custom-option.d.ts +2 -2
- package/dist/types/custom-value.d.ts +2 -1
- package/dist/types/custom-value.d.ts.map +1 -1
- package/dist/types/factories/type-factory.d.ts +8 -5
- package/dist/types/factories/type-factory.d.ts.map +1 -1
- package/dist/types/factory.d.ts +7 -4
- package/dist/types/factory.d.ts.map +1 -1
- package/dist/types/functions/get-own-reflect-metadata.d.ts.map +1 -1
- package/dist/types/functions/get-reflect-metadata.d.ts.map +1 -1
- package/dist/types/functions/get-words.d.ts +3 -3
- package/dist/types/functions/get-words.d.ts.map +1 -1
- package/dist/types/functions/index.d.ts +0 -12
- package/dist/types/functions/index.d.ts.map +1 -1
- package/dist/types/functions/json-parse.d.ts +1 -1
- package/dist/types/functions/json-parse.d.ts.map +1 -1
- package/dist/types/functions/json-stringify.d.ts.map +1 -1
- package/dist/types/functions/name-of.d.ts.map +1 -1
- package/dist/types/generic-argument.d.ts +2 -2
- package/dist/types/generic-argument.d.ts.map +1 -1
- package/dist/types/generic-metadata.d.ts +2 -2
- package/dist/types/generic-metadata.d.ts.map +1 -1
- package/dist/types/index.d.ts +17 -12
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/inject-decorator.d.ts +7 -0
- package/dist/types/inject-decorator.d.ts.map +1 -0
- package/dist/types/inject-metadata.d.ts +52 -45
- package/dist/types/inject-metadata.d.ts.map +1 -1
- package/dist/types/inject-options.d.ts +8 -8
- package/dist/types/inject-options.d.ts.map +1 -1
- package/dist/types/inject-sorter.d.ts +3 -3
- package/dist/types/inject-sorter.d.ts.map +1 -1
- package/dist/types/inject-sorters/asc-inject-sorter.d.ts +3 -3
- package/dist/types/inject-sorters/asc-inject-sorter.d.ts.map +1 -1
- package/dist/types/inject-sorters/desc-inject-sorter.d.ts +3 -3
- package/dist/types/inject-sorters/desc-inject-sorter.d.ts.map +1 -1
- package/dist/types/inject-state.d.ts +36 -0
- package/dist/types/inject-state.d.ts.map +1 -0
- package/dist/types/inject-states/index.d.ts +3 -0
- package/dist/types/inject-states/index.d.ts.map +1 -0
- package/dist/types/inject-states/resolved-inject-state.d.ts +46 -0
- package/dist/types/inject-states/resolved-inject-state.d.ts.map +1 -0
- package/dist/types/inject-states/unresolved-inject-state.d.ts +49 -0
- package/dist/types/inject-states/unresolved-inject-state.d.ts.map +1 -0
- package/dist/types/inject.d.ts +5 -4
- package/dist/types/inject.d.ts.map +1 -1
- package/dist/types/injector.d.ts +4 -3
- package/dist/types/injector.d.ts.map +1 -1
- package/dist/types/injectors/singleton-injector.d.ts +5 -5
- package/dist/types/injectors/singleton-injector.d.ts.map +1 -1
- package/dist/types/logger-level.d.ts +31 -0
- package/dist/types/logger-level.d.ts.map +1 -0
- package/dist/types/logger.d.ts +125 -0
- package/dist/types/logger.d.ts.map +1 -0
- package/dist/types/metadata.d.ts +29 -39
- package/dist/types/metadata.d.ts.map +1 -1
- package/dist/types/null-value-resolver.d.ts +9 -0
- package/dist/types/null-value-resolver.d.ts.map +1 -0
- package/dist/types/nullable.d.ts +7 -0
- package/dist/types/nullable.d.ts.map +1 -0
- package/dist/types/optional.d.ts +7 -0
- package/dist/types/optional.d.ts.map +1 -0
- package/dist/types/property-decorator.d.ts +7 -0
- package/dist/types/property-decorator.d.ts.map +1 -0
- package/dist/types/property-extension-metadata-ctor-set-key.d.ts +1 -1
- package/dist/types/property-extension-metadata-ctor-set-key.d.ts.map +1 -1
- package/dist/types/property-extension-metadata-ctor.d.ts +2 -2
- package/dist/types/property-extension-metadata-ctor.d.ts.map +1 -1
- package/dist/types/property-extension-metadata.d.ts +7 -7
- package/dist/types/property-extension-metadata.d.ts.map +1 -1
- package/dist/types/property-metadata.d.ts +134 -119
- package/dist/types/property-metadata.d.ts.map +1 -1
- package/dist/types/property-options.d.ts +11 -10
- package/dist/types/property-options.d.ts.map +1 -1
- package/dist/types/property-sorter.d.ts +3 -3
- package/dist/types/property-sorter.d.ts.map +1 -1
- package/dist/types/property-sorters/asc-property-sorter.d.ts +3 -3
- package/dist/types/property-sorters/asc-property-sorter.d.ts.map +1 -1
- package/dist/types/property-sorters/desc-property-sorter.d.ts +3 -3
- package/dist/types/property-sorters/desc-property-sorter.d.ts.map +1 -1
- package/dist/types/property-state.d.ts +149 -0
- package/dist/types/property-state.d.ts.map +1 -0
- package/dist/types/property-states/index.d.ts +3 -0
- package/dist/types/property-states/index.d.ts.map +1 -0
- package/dist/types/property-states/resolved-property-state.d.ts +176 -0
- package/dist/types/property-states/resolved-property-state.d.ts.map +1 -0
- package/dist/types/property-states/unresolved-property-state.d.ts +162 -0
- package/dist/types/property-states/unresolved-property-state.d.ts.map +1 -0
- package/dist/types/property.d.ts +5 -4
- package/dist/types/property.d.ts.map +1 -1
- package/dist/types/reference-handlers/circular-reference-handler.d.ts.map +1 -1
- package/dist/types/reference-handlers/json-path-reference-handler.d.ts.map +1 -1
- package/dist/types/reference-handlers/plain-reference-handler.d.ts.map +1 -1
- package/dist/types/reference-value-setter.d.ts +1 -1
- package/dist/types/reference-value-setter.d.ts.map +1 -1
- package/dist/types/serializer-context.d.ts +70 -164
- package/dist/types/serializer-context.d.ts.map +1 -1
- package/dist/types/serializer.d.ts +8 -8
- package/dist/types/serializer.d.ts.map +1 -1
- package/dist/types/serializers/any-serializer.d.ts.map +1 -1
- package/dist/types/serializers/array-buffer-serializer.d.ts.map +1 -1
- package/dist/types/serializers/array-serializer.d.ts.map +1 -1
- package/dist/types/serializers/boolean-serializer.d.ts +1 -1
- package/dist/types/serializers/boolean-serializer.d.ts.map +1 -1
- package/dist/types/serializers/data-view-serializer.d.ts.map +1 -1
- package/dist/types/serializers/date-serializer.d.ts.map +1 -1
- package/dist/types/serializers/float-32-array-serializer.d.ts.map +1 -1
- package/dist/types/serializers/float-64-array-serializer.d.ts.map +1 -1
- package/dist/types/serializers/int-16-array-serializer.d.ts.map +1 -1
- package/dist/types/serializers/int-32-array-serializer.d.ts.map +1 -1
- package/dist/types/serializers/int-8-array-serializer.d.ts.map +1 -1
- package/dist/types/serializers/map-serializer.d.ts.map +1 -1
- package/dist/types/serializers/number-serializer.d.ts +1 -1
- package/dist/types/serializers/number-serializer.d.ts.map +1 -1
- package/dist/types/serializers/set-serializer.d.ts.map +1 -1
- package/dist/types/serializers/string-serializer.d.ts +1 -1
- package/dist/types/serializers/string-serializer.d.ts.map +1 -1
- package/dist/types/serializers/type-serializer.d.ts.map +1 -1
- package/dist/types/serializers/uint-16-array-serializer.d.ts.map +1 -1
- package/dist/types/serializers/uint-32-array-serializer.d.ts.map +1 -1
- package/dist/types/serializers/uint-8-array-serializer.d.ts.map +1 -1
- package/dist/types/serializers/uint-8-clamped-array-serializer.d.ts.map +1 -1
- package/dist/types/serializers/unknown-serializer.d.ts.map +1 -1
- package/dist/types/type-abstraction.d.ts +2 -2
- package/dist/types/type-abstraction.d.ts.map +1 -1
- package/dist/types/type-argument.d.ts +3 -3
- package/dist/types/type-argument.d.ts.map +1 -1
- package/dist/types/type-configuration.d.ts +4 -4
- package/dist/types/type-configuration.d.ts.map +1 -1
- package/dist/types/type-ctor.d.ts +2 -2
- package/dist/types/type-ctor.d.ts.map +1 -1
- package/dist/types/type-decorator.d.ts +7 -0
- package/dist/types/type-decorator.d.ts.map +1 -0
- package/dist/types/type-entry.d.ts +29 -0
- package/dist/types/type-entry.d.ts.map +1 -0
- package/dist/types/type-extension-metadata-ctor-set-key.d.ts +1 -1
- package/dist/types/type-extension-metadata-ctor-set-key.d.ts.map +1 -1
- package/dist/types/type-extension-metadata-ctor.d.ts +2 -2
- package/dist/types/type-extension-metadata-ctor.d.ts.map +1 -1
- package/dist/types/type-extension-metadata.d.ts +6 -6
- package/dist/types/type-extension-metadata.d.ts.map +1 -1
- package/dist/types/type-fn.d.ts +2 -2
- package/dist/types/type-fn.d.ts.map +1 -1
- package/dist/types/type-like.d.ts +2 -2
- package/dist/types/type-like.d.ts.map +1 -1
- package/dist/types/type-manager-options.d.ts.map +1 -1
- package/dist/types/type-manager.d.ts +120 -120
- package/dist/types/type-manager.d.ts.map +1 -1
- package/dist/types/type-metadata-symbol.d.ts +1 -1
- package/dist/types/type-metadata-symbol.d.ts.map +1 -1
- package/dist/types/type-metadata.d.ts +253 -152
- package/dist/types/type-metadata.d.ts.map +1 -1
- package/dist/types/type-options-base.d.ts +13 -12
- package/dist/types/type-options-base.d.ts.map +1 -1
- package/dist/types/type-options.d.ts +10 -10
- package/dist/types/type-options.d.ts.map +1 -1
- package/dist/types/type-resolver.d.ts +2 -2
- package/dist/types/type-resolver.d.ts.map +1 -1
- package/dist/types/type-scope.d.ts +68 -0
- package/dist/types/type-scope.d.ts.map +1 -0
- package/dist/types/type-state.d.ts +262 -0
- package/dist/types/type-state.d.ts.map +1 -0
- package/dist/types/type-states/index.d.ts +3 -0
- package/dist/types/type-states/index.d.ts.map +1 -0
- package/dist/types/type-states/resolved-type-state.d.ts +306 -0
- package/dist/types/type-states/resolved-type-state.d.ts.map +1 -0
- package/dist/types/type-states/unresolved-type-state.d.ts +275 -0
- package/dist/types/type-states/unresolved-type-state.d.ts.map +1 -0
- package/dist/types/type.d.ts +4 -3
- package/dist/types/type.d.ts.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -7
- package/dist/es2015/custom-context.js +0 -59
- package/dist/es2015/custom-context.js.map +0 -1
- package/dist/es2015/functions/is-arrow-function.js +0 -5
- package/dist/es2015/functions/is-arrow-function.js.map +0 -1
- package/dist/es2015/functions/is-ctor-function.js +0 -5
- package/dist/es2015/functions/is-ctor-function.js.map +0 -1
- package/dist/es2015/functions/is-data-view.js +0 -4
- package/dist/es2015/functions/is-data-view.js.map +0 -1
- package/dist/es2015/functions/is-float-32-array.js +0 -4
- package/dist/es2015/functions/is-float-32-array.js.map +0 -1
- package/dist/es2015/functions/is-float-64-array.js +0 -4
- package/dist/es2015/functions/is-float-64-array.js.map +0 -1
- package/dist/es2015/functions/is-int-16-array.js +0 -4
- package/dist/es2015/functions/is-int-16-array.js.map +0 -1
- package/dist/es2015/functions/is-int-32-array.js +0 -4
- package/dist/es2015/functions/is-int-32-array.js.map +0 -1
- package/dist/es2015/functions/is-int-8-array.js +0 -4
- package/dist/es2015/functions/is-int-8-array.js.map +0 -1
- package/dist/es2015/functions/is-uint-16-array.js +0 -4
- package/dist/es2015/functions/is-uint-16-array.js.map +0 -1
- package/dist/es2015/functions/is-uint-32-array.js +0 -4
- package/dist/es2015/functions/is-uint-32-array.js.map +0 -1
- package/dist/es2015/functions/is-uint-8-array.js +0 -4
- package/dist/es2015/functions/is-uint-8-array.js.map +0 -1
- package/dist/es2015/functions/is-uint-8-clamped-array.js +0 -4
- package/dist/es2015/functions/is-uint-8-clamped-array.js.map +0 -1
- package/dist/es2015/generic-metadata-resolver.js +0 -2
- package/dist/es2015/generic-metadata-resolver.js.map +0 -1
- package/dist/es2015/generic-structure.js +0 -2
- package/dist/es2015/generic-structure.js.map +0 -1
- package/dist/es2015/inject-internals.js +0 -2
- package/dist/es2015/inject-internals.js.map +0 -1
- package/dist/es2015/log-level.js +0 -8
- package/dist/es2015/log-level.js.map +0 -1
- package/dist/es2015/log.js +0 -50
- package/dist/es2015/log.js.map +0 -1
- package/dist/es2015/property-internals.js +0 -2
- package/dist/es2015/property-internals.js.map +0 -1
- package/dist/es2015/serializer-context-options.js +0 -2
- package/dist/es2015/serializer-context-options.js.map +0 -1
- package/dist/es2015/type-context-entry.js +0 -9
- package/dist/es2015/type-context-entry.js.map +0 -1
- package/dist/es2015/type-context.js +0 -31
- package/dist/es2015/type-context.js.map +0 -1
- package/dist/es2015/type-internals.js +0 -2
- package/dist/es2015/type-internals.js.map +0 -1
- package/dist/es2015/type-metadata-resolver.js +0 -2
- package/dist/es2015/type-metadata-resolver.js.map +0 -1
- package/dist/es5/custom-context.js +0 -95
- package/dist/es5/custom-context.js.map +0 -1
- package/dist/es5/functions/is-arrow-function.js +0 -5
- package/dist/es5/functions/is-arrow-function.js.map +0 -1
- package/dist/es5/functions/is-ctor-function.js +0 -5
- package/dist/es5/functions/is-ctor-function.js.map +0 -1
- package/dist/es5/functions/is-data-view.js +0 -4
- package/dist/es5/functions/is-data-view.js.map +0 -1
- package/dist/es5/functions/is-float-32-array.js +0 -4
- package/dist/es5/functions/is-float-32-array.js.map +0 -1
- package/dist/es5/functions/is-float-64-array.js +0 -4
- package/dist/es5/functions/is-float-64-array.js.map +0 -1
- package/dist/es5/functions/is-int-16-array.js +0 -4
- package/dist/es5/functions/is-int-16-array.js.map +0 -1
- package/dist/es5/functions/is-int-32-array.js +0 -4
- package/dist/es5/functions/is-int-32-array.js.map +0 -1
- package/dist/es5/functions/is-int-8-array.js +0 -4
- package/dist/es5/functions/is-int-8-array.js.map +0 -1
- package/dist/es5/functions/is-uint-16-array.js +0 -4
- package/dist/es5/functions/is-uint-16-array.js.map +0 -1
- package/dist/es5/functions/is-uint-32-array.js +0 -4
- package/dist/es5/functions/is-uint-32-array.js.map +0 -1
- package/dist/es5/functions/is-uint-8-array.js +0 -4
- package/dist/es5/functions/is-uint-8-array.js.map +0 -1
- package/dist/es5/functions/is-uint-8-clamped-array.js +0 -4
- package/dist/es5/functions/is-uint-8-clamped-array.js.map +0 -1
- package/dist/es5/generic-metadata-resolver.js +0 -2
- package/dist/es5/generic-metadata-resolver.js.map +0 -1
- package/dist/es5/generic-structure.js +0 -2
- package/dist/es5/generic-structure.js.map +0 -1
- package/dist/es5/inject-internals.js +0 -2
- package/dist/es5/inject-internals.js.map +0 -1
- package/dist/es5/log-level.js +0 -8
- package/dist/es5/log-level.js.map +0 -1
- package/dist/es5/log.js +0 -65
- package/dist/es5/log.js.map +0 -1
- package/dist/es5/property-internals.js +0 -2
- package/dist/es5/property-internals.js.map +0 -1
- package/dist/es5/serializer-context-options.js +0 -2
- package/dist/es5/serializer-context-options.js.map +0 -1
- package/dist/es5/type-context-entry.js +0 -11
- package/dist/es5/type-context-entry.js.map +0 -1
- package/dist/es5/type-context.js +0 -33
- package/dist/es5/type-context.js.map +0 -1
- package/dist/es5/type-internals.js +0 -2
- package/dist/es5/type-internals.js.map +0 -1
- package/dist/es5/type-metadata-resolver.js +0 -2
- package/dist/es5/type-metadata-resolver.js.map +0 -1
- package/dist/types/custom-context.d.ts +0 -89
- package/dist/types/custom-context.d.ts.map +0 -1
- package/dist/types/functions/is-arrow-function.d.ts +0 -9
- package/dist/types/functions/is-arrow-function.d.ts.map +0 -1
- package/dist/types/functions/is-ctor-function.d.ts +0 -9
- package/dist/types/functions/is-ctor-function.d.ts.map +0 -1
- package/dist/types/functions/is-data-view.d.ts +0 -9
- package/dist/types/functions/is-data-view.d.ts.map +0 -1
- package/dist/types/functions/is-float-32-array.d.ts +0 -9
- package/dist/types/functions/is-float-32-array.d.ts.map +0 -1
- package/dist/types/functions/is-float-64-array.d.ts +0 -9
- package/dist/types/functions/is-float-64-array.d.ts.map +0 -1
- package/dist/types/functions/is-int-16-array.d.ts +0 -9
- package/dist/types/functions/is-int-16-array.d.ts.map +0 -1
- package/dist/types/functions/is-int-32-array.d.ts +0 -9
- package/dist/types/functions/is-int-32-array.d.ts.map +0 -1
- package/dist/types/functions/is-int-8-array.d.ts +0 -9
- package/dist/types/functions/is-int-8-array.d.ts.map +0 -1
- package/dist/types/functions/is-uint-16-array.d.ts +0 -9
- package/dist/types/functions/is-uint-16-array.d.ts.map +0 -1
- package/dist/types/functions/is-uint-32-array.d.ts +0 -9
- package/dist/types/functions/is-uint-32-array.d.ts.map +0 -1
- package/dist/types/functions/is-uint-8-array.d.ts +0 -9
- package/dist/types/functions/is-uint-8-array.d.ts.map +0 -1
- package/dist/types/functions/is-uint-8-clamped-array.d.ts +0 -9
- package/dist/types/functions/is-uint-8-clamped-array.d.ts.map +0 -1
- package/dist/types/generic-metadata-resolver.d.ts +0 -8
- package/dist/types/generic-metadata-resolver.d.ts.map +0 -1
- package/dist/types/generic-structure.d.ts +0 -8
- package/dist/types/generic-structure.d.ts.map +0 -1
- package/dist/types/inject-internals.d.ts +0 -15
- package/dist/types/inject-internals.d.ts.map +0 -1
- package/dist/types/log-level.d.ts +0 -12
- package/dist/types/log-level.d.ts.map +0 -1
- package/dist/types/log.d.ts +0 -96
- package/dist/types/log.d.ts.map +0 -1
- package/dist/types/property-internals.d.ts +0 -36
- package/dist/types/property-internals.d.ts.map +0 -1
- package/dist/types/serializer-context-options.d.ts +0 -51
- package/dist/types/serializer-context-options.d.ts.map +0 -1
- package/dist/types/type-context-entry.d.ts +0 -37
- package/dist/types/type-context-entry.d.ts.map +0 -1
- package/dist/types/type-context.d.ts +0 -71
- package/dist/types/type-context.d.ts.map +0 -1
- package/dist/types/type-internals.d.ts +0 -15
- package/dist/types/type-internals.d.ts.map +0 -1
- package/dist/types/type-metadata-resolver.d.ts +0 -9
- package/dist/types/type-metadata-resolver.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [8.0.0] - 2025-01-11
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Support for lazy parent type and interface inheritance.
|
|
13
|
+
- Performance on large object graphs is up to 3 times faster.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- The metadata is now read-only and configuration must be done using the provided API.
|
|
18
|
+
- Declaring and retrieving user custom options has been simplified.
|
|
19
|
+
- Property `customOptions` was replaced with `customValueMap`.
|
|
20
|
+
- Property `parentTypeFns` was replaced with `parentTypeArguments`.
|
|
21
|
+
- Custom context is now part of the metadata.
|
|
22
|
+
|
|
23
|
+
### Migrating from previous version
|
|
24
|
+
|
|
25
|
+
- Rename `customOptions` to `customValueMap` and wrap your configuration array into map.
|
|
26
|
+
- Rename `parentTypeFns` to `parentTypeArguments` if you have this option declared on your type.
|
|
27
|
+
|
|
28
|
+
## [7.2.1] - 2024-02-18
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- TypeScript 5 decorators do not work.
|
|
33
|
+
- Circular loop when using multiple inheritance through the decorator type options.
|
|
34
|
+
|
|
8
35
|
## [7.2.0] - 2023-10-18
|
|
9
36
|
|
|
10
37
|
### Added
|
package/README.md
CHANGED
|
@@ -1,173 +1,114 @@
|
|
|
1
1
|
# TypeManager.TS
|
|
2
2
|
|
|
3
|
-
  
|
|
3
|
+
  
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## What is TypeManager?
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
TypeManager is a stable, highly-tested, highly-performant parsing package for `TypeScript` which handles everything you need to easily integrate classes into your workflow.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## What does it do?
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Most frontend developers are writing custom helpers and functions (in the form of React Hooks and Vue Composables) to solve a problem that, in the backend world, was solved elegantly decades ago by the use of Classes.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Imagine handling a `User` object that contains a first name, last name, and nickname. You need to intelligently display the `best` name for that user in multiple places.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
```typescript
|
|
16
|
+
// Hi! I'm some user data from the server!
|
|
17
|
+
const user = fetchUserData();
|
|
18
|
+
```
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
* [Installation](#installation)
|
|
19
|
-
* [How it works?](#how-it-works)
|
|
20
|
-
* [Defining decorators](#defining-decorators)
|
|
21
|
-
* [Type decorator](#type-decorator)
|
|
22
|
-
* [Property decorator](#property-decorator)
|
|
23
|
-
* [Inject decorator](#inject-decorator)
|
|
24
|
-
* [Defining decorator options](#defining-decorator-options)
|
|
25
|
-
* [Alias option](#alias-option)
|
|
26
|
-
* [Custom data option](#custom-data-option)
|
|
27
|
-
* [Default value option](#default-value-option)
|
|
28
|
-
* [Deserializable option](#deserializable-option)
|
|
29
|
-
* [Discriminant option](#discriminant-option)
|
|
30
|
-
* [Discriminator option](#discriminator-option)
|
|
31
|
-
* [Factory option](#factory-option)
|
|
32
|
-
* [Injectable option](#injectable-option)
|
|
33
|
-
* [Injector option](#injector-option)
|
|
34
|
-
* [Naming convention option](#naming-convention-option)
|
|
35
|
-
* [Preserve discriminator option](#preserve-discriminator-option)
|
|
36
|
-
* [Preserve null option](#preserve-null-option)
|
|
37
|
-
* [Reference handler option](#reference-handler-option)
|
|
38
|
-
* [Serializable option](#serializable-option)
|
|
39
|
-
* [Serializer option](#serializer-option)
|
|
40
|
-
* [Use default value option](#use-default-value-option)
|
|
41
|
-
* [Use implicit conversion option](#use-implicit-conversion-option)
|
|
42
|
-
* [Parent type functions option](#parent-type-functions-option)
|
|
43
|
-
* [Defining configuration manually](#defining-configuration-manually)
|
|
44
|
-
* [Configuring global options](#configuring-global-options)
|
|
45
|
-
* [Configuring options per type](#configuring-options-per-type)
|
|
46
|
-
* [Configuring usage of polymorphic types](#configuring-usage-of-polymorphic-types)
|
|
47
|
-
* [Configuring naming convention](#configuring-naming-convention)
|
|
48
|
-
* [Configuring reference handler](#configuring-reference-handler)
|
|
49
|
-
* [Advanced usage](#advanced-usage)
|
|
50
|
-
* [Defining custom data](#defining-custom-data)
|
|
51
|
-
* [Defining custom serializer](#defining-custom-serializer)
|
|
52
|
-
* [Defining custom injector](#defining-custom-injector)
|
|
53
|
-
* [Defining custom factory](#defining-custom-factory)
|
|
54
|
-
* [Defining custom naming convention](#defining-custom-naming-convention)
|
|
55
|
-
* [Use cases](#use-cases)
|
|
56
|
-
* [Built in serializers](#built-in-serializers)
|
|
57
|
-
* [Circular object references](#circular-object-references)
|
|
58
|
-
* [Dependency injection and immutable types](#dependency-injection-and-immutable-types)
|
|
59
|
-
* [Different case usage in class and JSON](#different-case-usage-in-class-and-json)
|
|
60
|
-
* [Enum types](#enum-types)
|
|
61
|
-
* [Generic types](#generic-types)
|
|
62
|
-
* [Integration with Angular](#integration-with-angular)
|
|
63
|
-
* [Polymorphic types](#polymorphic-types)
|
|
64
|
-
* [Versioning](#versioning)
|
|
65
|
-
* [Contributing](#contributing)
|
|
66
|
-
* [Authors](#authors)
|
|
67
|
-
* [Notes](#notes)
|
|
68
|
-
* [License](#license)
|
|
20
|
+
In the world of TypeScript, it has become common to see something like this, _repeated in every single file_ that needs this functionality:
|
|
69
21
|
|
|
70
|
-
|
|
22
|
+
```typescript
|
|
23
|
+
import { useFormattingFunctions } from '@/hooks/useFormattingFunctions';
|
|
71
24
|
|
|
72
|
-
|
|
25
|
+
// Get name formatting function.
|
|
26
|
+
const { nameFormatter } = useFormattingFunctions();
|
|
73
27
|
|
|
74
|
-
|
|
75
|
-
|
|
28
|
+
// A user in the form of JS object.
|
|
29
|
+
const preferredName = nameFormatter(user); // ...finally got what I needed!
|
|
30
|
+
```
|
|
76
31
|
|
|
77
|
-
|
|
32
|
+
But in the backend world, this sort of problem was solved decades ago:
|
|
78
33
|
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
"id": 1,
|
|
83
|
-
"name": "Dmitry",
|
|
84
|
-
"deletedAt": "2021-02-22T20:15:00.000Z"
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
"id": 2,
|
|
88
|
-
"name": "Alex",
|
|
89
|
-
"deletedAt": null
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"id": 3,
|
|
93
|
-
"name": "Anna",
|
|
94
|
-
"deletedAt": null
|
|
95
|
-
}
|
|
96
|
-
]
|
|
34
|
+
```typescript
|
|
35
|
+
// A user in the form of `new MyUserClass()`.
|
|
36
|
+
const preferredName = user.getPreferredName(); // Whew! That was quick!
|
|
97
37
|
```
|
|
98
38
|
|
|
99
|
-
|
|
39
|
+
The problem is that, when you're used to working with plain-old JavaScript objects, you're used to having data (only!) and no business logic. But ask yourself: which one is simpler? Which one is easier to read?
|
|
100
40
|
|
|
101
|
-
|
|
102
|
-
export class User
|
|
103
|
-
{
|
|
104
|
-
public id: number;
|
|
105
|
-
public name: string;
|
|
106
|
-
public deletedAt: Date;
|
|
41
|
+
## TypeManager to the rescue
|
|
107
42
|
|
|
108
|
-
|
|
109
|
-
{
|
|
110
|
-
this.id = id;
|
|
111
|
-
this.name = name;
|
|
43
|
+
TypeManager will help you to transform JSON strings or plain objects directly into class instances. No more need for unsafe `JSON.parse` and `JSON.stringify` functions. Forget about manual mapping and limitations. We support data transformations, circular references, naming conventions, generic and polymorphic types. Parsing was never so fun and easy.
|
|
112
44
|
|
|
113
|
-
|
|
114
|
-
}
|
|
45
|
+
Configuration can be done using [decorators](https://www.typescriptlang.org/docs/handbook/decorators.html) or declarative configuration for your or 3rd party classes.
|
|
115
46
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
47
|
+
## What do I do?
|
|
48
|
+
|
|
49
|
+
It almost couldn't be easier. Instead of making a file like this:
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
// The old way...
|
|
53
|
+
export interface User
|
|
54
|
+
{
|
|
55
|
+
name: string;
|
|
56
|
+
email: string;
|
|
120
57
|
}
|
|
121
58
|
```
|
|
122
59
|
|
|
123
|
-
|
|
60
|
+
Just add a few extra keywords:
|
|
124
61
|
|
|
125
62
|
```typescript
|
|
126
|
-
|
|
63
|
+
// The new way!
|
|
64
|
+
import { Type, Property } from '@dipscope/type-manager';
|
|
127
65
|
|
|
128
|
-
|
|
66
|
+
@Type()
|
|
67
|
+
export class User
|
|
129
68
|
{
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
// Do some action...
|
|
133
|
-
}
|
|
69
|
+
@Property(String) public name: string;
|
|
70
|
+
@Property(String) public email: string;
|
|
134
71
|
}
|
|
135
72
|
```
|
|
136
73
|
|
|
137
|
-
|
|
74
|
+
Then, in the place where you used to get your data:
|
|
138
75
|
|
|
139
|
-
|
|
76
|
+
```typescript
|
|
77
|
+
// The old way...
|
|
78
|
+
const users = await fetchUsers();
|
|
79
|
+
```
|
|
140
80
|
|
|
141
|
-
|
|
81
|
+
...You _parse_ them instead, using TypeManager's `deserialize()` method:
|
|
142
82
|
|
|
143
|
-
|
|
83
|
+
```typescript
|
|
84
|
+
// The new way!
|
|
85
|
+
import { TypeManager } from '@dipscope/type-manager';
|
|
86
|
+
|
|
87
|
+
const users = TypeManager.deserialize(User, await fetchUsers());
|
|
88
|
+
```
|
|
144
89
|
|
|
145
|
-
|
|
90
|
+
And if you need to send them back to the server, you can just go the other direction using `serialize()`:
|
|
146
91
|
|
|
147
92
|
```typescript
|
|
93
|
+
// The new way!
|
|
148
94
|
import { TypeManager } from '@dipscope/type-manager';
|
|
149
95
|
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
for (const user of users)
|
|
153
|
-
{
|
|
154
|
-
if (user.isDeleted())
|
|
155
|
-
{
|
|
156
|
-
// Do some action...
|
|
157
|
-
}
|
|
158
|
-
}
|
|
96
|
+
const rawUserData = TypeManager.serialize(User, user);
|
|
97
|
+
const response = http.put('/users/123', rawUserData)
|
|
159
98
|
```
|
|
160
99
|
|
|
161
|
-
|
|
100
|
+
## Wow! It's that easy?
|
|
101
|
+
|
|
102
|
+
You're darn right it's that easy! Now we can use all the power provided by `JavaScript` class instances without worriyng about the annoying stuff.
|
|
162
103
|
|
|
163
104
|
Furthermore `TypeManager.TS` provides you:
|
|
164
105
|
|
|
165
|
-
* Reflection abilities at runtime
|
|
166
|
-
* Support for generic types
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
106
|
+
* Reflection abilities at runtime.
|
|
107
|
+
* Support for generic types.
|
|
108
|
+
* Support for inheritance and polymorphic types.
|
|
109
|
+
* Handling of circular object references and different ways of serialization.
|
|
110
|
+
* The ability to configure custom serialization of -party classes.
|
|
111
|
+
* A great alternative to similar packages like [class-transformer](https://github.com/typestack/class-transformer), [TypedJSON](https://github.com/JohnWeisz/TypedJSON) and [jackson-js](https://github.com/pichillilorenzo/jackson-js).
|
|
171
112
|
|
|
172
113
|
Want to know more? Let's dive into the details.
|
|
173
114
|
|
|
@@ -179,20 +120,72 @@ Want to know more? Let's dive into the details.
|
|
|
179
120
|
npm i @dipscope/type-manager
|
|
180
121
|
```
|
|
181
122
|
|
|
182
|
-
TypeScript needs to run with the `experimentalDecorators` and `emitDecoratorMetadata` options enabled when using decorator annotations. So make sure you have properly
|
|
123
|
+
TypeScript needs to run with the `experimentalDecorators` and `emitDecoratorMetadata` options enabled when using decorator annotations. So make sure you have them properly enabled in your `tsconfig.json` file.
|
|
183
124
|
|
|
184
|
-
_If you want additional type-safety and reduced syntax you may wish to install [reflect-metadata](https://github.com/rbuckton/reflect-metadata). This step is
|
|
125
|
+
_If you want additional type-safety and reduced syntax you may wish to install [reflect-metadata](https://github.com/rbuckton/reflect-metadata). This step is your choice and fully optional. All you have to do is make sure it's available globally to work -- this can usually be done with `import 'reflect-metadata';` in your main index file._
|
|
185
126
|
|
|
186
|
-
|
|
127
|
+
Starting from TypeScript 5 we will also support the modern decorator syntax. However, parameter decorations with this modern syntax are not supported - you will not be able to use the `Inject` decorator provided by the library as well as `reflect-metadata` package if you're using modern syntax. We will add support as soon as it's provided by TypeScript, however. In the meantime, if you need the `Inject` decorator and enabling legacy decorators support is not an option - you can simply use the declarative configuration style.
|
|
187
128
|
|
|
188
|
-
|
|
129
|
+
## Give us a star :star:
|
|
189
130
|
|
|
190
|
-
|
|
191
|
-
|
|
131
|
+
If you like or are using this project, please give it a star. Thanks!
|
|
132
|
+
|
|
133
|
+
# Detailed Documentation
|
|
134
|
+
|
|
135
|
+
* [Understanding TypeManager](#understanding-typemanager)
|
|
136
|
+
* [Defining decorators](#defining-decorators)
|
|
137
|
+
* [Type decorator](#type-decorator)
|
|
138
|
+
* [Property decorator](#property-decorator)
|
|
139
|
+
* [Inject decorator](#inject-decorator)
|
|
140
|
+
* [Defining decorator options](#defining-decorator-options)
|
|
141
|
+
* [Alias option](#alias-option)
|
|
142
|
+
* [Custom data option](#custom-data-option)
|
|
143
|
+
* [Default value option](#default-value-option)
|
|
144
|
+
* [Deserializable option](#deserializable-option)
|
|
145
|
+
* [Discriminant option](#discriminant-option)
|
|
146
|
+
* [Discriminator option](#discriminator-option)
|
|
147
|
+
* [Factory option](#factory-option)
|
|
148
|
+
* [Injectable option](#injectable-option)
|
|
149
|
+
* [Injector option](#injector-option)
|
|
150
|
+
* [Naming convention option](#naming-convention-option)
|
|
151
|
+
* [Preserve discriminator option](#preserve-discriminator-option)
|
|
152
|
+
* [Preserve null option](#preserve-null-option)
|
|
153
|
+
* [Reference handler option](#reference-handler-option)
|
|
154
|
+
* [Serializable option](#serializable-option)
|
|
155
|
+
* [Serializer option](#serializer-option)
|
|
156
|
+
* [Use default value option](#use-default-value-option)
|
|
157
|
+
* [Use implicit conversion option](#use-implicit-conversion-option)
|
|
158
|
+
* [Parent type arguments option](#parent-type-arguments-option)
|
|
159
|
+
* [Defining configuration manually](#defining-configuration-manually)
|
|
160
|
+
* [Configuring global options](#configuring-global-options)
|
|
161
|
+
* [Configuring options per type](#configuring-options-per-type)
|
|
162
|
+
* [Configuring usage of polymorphic types](#configuring-usage-of-polymorphic-types)
|
|
163
|
+
* [Configuring naming convention](#configuring-naming-convention)
|
|
164
|
+
* [Configuring reference handler](#configuring-reference-handler)
|
|
165
|
+
* [Advanced usage](#advanced-usage)
|
|
166
|
+
* [Defining custom data](#defining-custom-data)
|
|
167
|
+
* [Defining custom serializer](#defining-custom-serializer)
|
|
168
|
+
* [Defining custom injector](#defining-custom-injector)
|
|
169
|
+
* [Defining custom factory](#defining-custom-factory)
|
|
170
|
+
* [Defining custom naming convention](#defining-custom-naming-convention)
|
|
171
|
+
* [Use cases](#use-cases)
|
|
172
|
+
* [Built in serializers](#built-in-serializers)
|
|
173
|
+
* [Circular object references](#circular-object-references)
|
|
174
|
+
* [Dependency injection and immutable types](#dependency-injection-and-immutable-types)
|
|
175
|
+
* [Different case usage in class and JSON](#different-case-usage-in-class-and-json)
|
|
176
|
+
* [Enum types](#enum-types)
|
|
177
|
+
* [Generic types](#generic-types)
|
|
178
|
+
* [Integration with Angular](#integration-with-angular)
|
|
179
|
+
* [Polymorphic types](#polymorphic-types)
|
|
180
|
+
* [Versioning](#versioning)
|
|
181
|
+
* [Contributing](#contributing)
|
|
182
|
+
* [Authors](#authors)
|
|
183
|
+
* [Notes](#notes)
|
|
184
|
+
* [License](#license)
|
|
192
185
|
|
|
193
|
-
|
|
186
|
+
## Understanding TypeManager
|
|
194
187
|
|
|
195
|
-
Let's have a look at
|
|
188
|
+
Let's have a look at that simple example of configuration using decorators from above.
|
|
196
189
|
|
|
197
190
|
```typescript
|
|
198
191
|
import { Type, Property } from '@dipscope/type-manager';
|
|
@@ -205,9 +198,9 @@ export class User
|
|
|
205
198
|
}
|
|
206
199
|
```
|
|
207
200
|
|
|
208
|
-
Here we have a `User` class with `Type` and `Property` decorators assigned to it. `Type` decorator declares a type. `Property` decorator describes available properties for that type.
|
|
201
|
+
Here we have a `User` class with `Type` and `Property` decorators assigned to it. `Type` decorator declares a type. `Property` decorator describes available properties for that type.
|
|
209
202
|
|
|
210
|
-
|
|
203
|
+
You can write the same configuration can using our "declarative style".
|
|
211
204
|
|
|
212
205
|
```typescript
|
|
213
206
|
import { TypeManager, TypeMetadata, TypeConfiguration } from '@dipscope/type-manager';
|
|
@@ -235,9 +228,9 @@ export class UserConfiguration implements TypeConfiguration<User>
|
|
|
235
228
|
TypeManager.applyTypeConfiguration(User, new UserConfiguration());
|
|
236
229
|
```
|
|
237
230
|
|
|
238
|
-
As you can see now our `User` class defined without decorators. Instead you
|
|
231
|
+
As you can see now our `User` class has been defined without decorators. Instead, you call the `TypeManager` method and provide `TypeConfiguration` related to the `User` type.
|
|
239
232
|
|
|
240
|
-
No matter what style of configuration you have chosen the next step is to call serialize methods of `TypeManager
|
|
233
|
+
No matter what style of configuration you have chosen, the next step is to call the serialize and deserialize methods of `TypeManager`, providing a type and the data you want to process.
|
|
241
234
|
|
|
242
235
|
```typescript
|
|
243
236
|
import { TypeManager } from '@dipscope/type-manager';
|
|
@@ -248,7 +241,8 @@ const user = TypeManager.deserialize(User, userObject);
|
|
|
248
241
|
user instanceof User; // True.
|
|
249
242
|
```
|
|
250
243
|
|
|
251
|
-
Calling serialize creates a plain object
|
|
244
|
+
Calling `serialize()` creates a plain object, while deserialize creates an instance of the `User` class. During the deserialization process, you can provide any object. It's not necessary that the object was produced by `TypeManager`.
|
|
245
|
+
If the object is an `Array`, you will get array of types in return. Objects are parsed based on general type configuration defined by the developer. It is also possible to stringify and parse JSON.
|
|
252
246
|
|
|
253
247
|
```typescript
|
|
254
248
|
import { TypeManager } from '@dipscope/type-manager';
|
|
@@ -259,25 +253,27 @@ const user = TypeManager.parse(User, userJson);
|
|
|
259
253
|
user instanceof User; // True.
|
|
260
254
|
```
|
|
261
255
|
|
|
262
|
-
|
|
256
|
+
The `stringify()` and `parse()` functions are wrappers over native JSON class functions. In addition, they add serialize and deserialize support under the hood.
|
|
263
257
|
|
|
264
|
-
Static functions are not the only way to work with a `TypeManager`. You can also work
|
|
258
|
+
Static functions are not the only way to work with a `TypeManager`. You can also work in an instance-based manner.
|
|
265
259
|
|
|
266
260
|
```typescript
|
|
267
261
|
import { TypeManager } from '@dipscope/type-manager';
|
|
268
262
|
|
|
269
|
-
const
|
|
263
|
+
const userManager = new TypeManager();
|
|
270
264
|
const userObject = userManager.serialize(User, new User());
|
|
271
265
|
const user = userManager.deserialize(User, userObject);
|
|
272
266
|
|
|
273
267
|
user instanceof User; // True.
|
|
274
268
|
```
|
|
275
269
|
|
|
276
|
-
At first glance, it may
|
|
270
|
+
At first glance, it may seem that there is no difference; however, creating an instance of `TypeManager` preserves a configuration state.
|
|
271
|
+
You can work with different configurations at the same time and have different serialization groups. By default, all decorator-based configurations and static calls are applied
|
|
272
|
+
to the singleton TypeManager instance which is automatically created under the hood.
|
|
277
273
|
|
|
278
274
|
## Defining decorators
|
|
279
275
|
|
|
280
|
-
There are few decorators which
|
|
276
|
+
There are few decorators which control the main flow. These are the `Type`, `Property` and `Inject` decorators. Let's go through each of them.
|
|
281
277
|
|
|
282
278
|
### Type decorator
|
|
283
279
|
|
|
@@ -368,7 +364,7 @@ export class User
|
|
|
368
364
|
|
|
369
365
|
This option configures an alias so `username` property will be used instead of `name` when deserializing from object. There are plenty of configure options, so check `PropertyOptions` definition or section with [decorator options](#defining-decorator-options) below. For example you can make some properties serializable only or define custom property serialization.
|
|
370
366
|
|
|
371
|
-
Now let's have a look at more complex definitions with generic types. This are `Array<
|
|
367
|
+
Now let's have a look at more complex definitions with generic types. This are `Array<TObject>`, `Map<TKey, TValue>` and others. To declare one of this you have to use extra argument available for `Property` decorator. Generic arguments are always passed as array to exactly see them within a source code.
|
|
372
368
|
|
|
373
369
|
If you are using [reflect-metadata](https://github.com/rbuckton/reflect-metadata) then provide generics as a first argument so configure options will become the second.
|
|
374
370
|
|
|
@@ -689,14 +685,14 @@ const rankKey = new CustomKey<number>('rank');
|
|
|
689
685
|
const orderKey = new CustomKey<number>('order');
|
|
690
686
|
|
|
691
687
|
@Type({
|
|
692
|
-
|
|
688
|
+
customValueMap: new Map([
|
|
693
689
|
[rankKey, 1],
|
|
694
690
|
[orderKey, 2]
|
|
695
|
-
]
|
|
691
|
+
])
|
|
696
692
|
})
|
|
697
693
|
export class User
|
|
698
694
|
{
|
|
699
|
-
@Property(String, {
|
|
695
|
+
@Property(String, { customValueMap: new Map([[orderKey, 3]]) }) public name: string;
|
|
700
696
|
}
|
|
701
697
|
```
|
|
702
698
|
|
|
@@ -1000,7 +996,7 @@ export class User
|
|
|
1000
996
|
|
|
1001
997
|
With this any value which can be converted to `String` will be converted properly. Such behaviour works for other built in serializers and supported for custom ones. By default implicit conversion is turned off. You can enable it using `useImplicitConversion` option per type and property or enable globally using `TypeManager` configure method.
|
|
1002
998
|
|
|
1003
|
-
### Parent type
|
|
999
|
+
### Parent type arguments option
|
|
1004
1000
|
|
|
1005
1001
|
When type implements interfaces which represent other classes this information got lost during `TypeScript` compilation process and there is no way to extract it. This option can be used to provide such information for a `TypeManager` to be used during serialization and deserialization.
|
|
1006
1002
|
|
|
@@ -1020,7 +1016,7 @@ export abstract class UserStatus extends Entity
|
|
|
1020
1016
|
}
|
|
1021
1017
|
|
|
1022
1018
|
@Type({
|
|
1023
|
-
|
|
1019
|
+
parentTypeArguments: [UserStatus]
|
|
1024
1020
|
})
|
|
1025
1021
|
export class ActiveUserStatus extends Entity implements UserStatus
|
|
1026
1022
|
{
|
|
@@ -1557,7 +1553,7 @@ Our goal is to cover as much use cases as possible without making you to write a
|
|
|
1557
1553
|
|
|
1558
1554
|
### Defining custom data
|
|
1559
1555
|
|
|
1560
|
-
You can attach you custom metadata to our decorators using `
|
|
1556
|
+
You can attach you custom metadata to our decorators using `customValueMap` option available on `Type` and `Property`.
|
|
1561
1557
|
|
|
1562
1558
|
```typescript
|
|
1563
1559
|
import { Type, Property, CustomKey } from '@dipscope/type-manager';
|
|
@@ -1566,13 +1562,13 @@ const rankKey = new CustomKey<number>('rank');
|
|
|
1566
1562
|
const priorityKey = new CustomKey<number>('priority');
|
|
1567
1563
|
|
|
1568
1564
|
@Type({
|
|
1569
|
-
|
|
1565
|
+
customValueMap: new Map([
|
|
1570
1566
|
[rankKey, 1]
|
|
1571
|
-
]
|
|
1567
|
+
])
|
|
1572
1568
|
})
|
|
1573
1569
|
class User
|
|
1574
1570
|
{
|
|
1575
|
-
@Property(String, {
|
|
1571
|
+
@Property(String, { customValueMap: new Map([[priorityKey, 10]]) }) public name: string;
|
|
1576
1572
|
}
|
|
1577
1573
|
```
|
|
1578
1574
|
|
|
@@ -1582,15 +1578,13 @@ This allows you to get it later in serializers, factories, injectors or your cod
|
|
|
1582
1578
|
import { TypeManager } from '@dipscope/type-manager';
|
|
1583
1579
|
|
|
1584
1580
|
const userMetadata = TypeManager.extractTypeMetadata(User);
|
|
1585
|
-
const
|
|
1586
|
-
const rank = customContext.get(rankKey);
|
|
1581
|
+
const rank = userMetadata.extractCustomValue(rankKey);
|
|
1587
1582
|
|
|
1588
1583
|
// Do something with type custom data...
|
|
1589
1584
|
|
|
1590
1585
|
for (const propertyMetadata of userMetadata.propertyMetadataMap.values())
|
|
1591
1586
|
{
|
|
1592
|
-
const
|
|
1593
|
-
const priority = propertyCustomContext.get(priorityKey);
|
|
1587
|
+
const priority = propertyMetadata.extractCustomValue(priorityKey);
|
|
1594
1588
|
|
|
1595
1589
|
// Do something with property custom data...
|
|
1596
1590
|
}
|
|
@@ -1658,7 +1652,7 @@ export class DateTimeSerializer implements Serializer<DateTime>
|
|
|
1658
1652
|
}
|
|
1659
1653
|
```
|
|
1660
1654
|
|
|
1661
|
-
This example follows internal conventions and gives you a picture of how real serializer may look like. `TypeManager` does not perform any checks and just passes values directly to serializer. Thats why input values can be undefined, null or others depending from what is stored inside certain property. `TypeLike` is an internal type to declare this behaviour.
|
|
1655
|
+
This example follows internal conventions and gives you a picture of how real serializer may look like. `TypeManager` does not perform any checks and just passes values directly to serializer. Thats why input values can be undefined, null or others depending from what is stored inside certain property. `TypeLike` is an internal type to declare this behaviour.
|
|
1662
1656
|
|
|
1663
1657
|
Serializer implementation is fully responsible for return result. You can get default values, custom data and other options specified in configuration from current serializer context and react accordingly. For example you can check if implicit conversion is enabled and convert any value to the target one.
|
|
1664
1658
|
|
|
@@ -1716,7 +1710,7 @@ export class CustomInjector implements Injector
|
|
|
1716
1710
|
return;
|
|
1717
1711
|
}
|
|
1718
1712
|
|
|
1719
|
-
public get<
|
|
1713
|
+
public get<TObject>(typeMetadata: TypeMetadata<TObject>): TObject | undefined
|
|
1720
1714
|
{
|
|
1721
1715
|
return this.angularInjector.get(typeMetadata.typeFn);
|
|
1722
1716
|
}
|
|
@@ -1747,17 +1741,16 @@ import { TypeContext, Injector, TypeFactory } from '@dipscope/type-manager';
|
|
|
1747
1741
|
|
|
1748
1742
|
export class CustomTypeFactory extends TypeFactory
|
|
1749
1743
|
{
|
|
1750
|
-
public build<
|
|
1744
|
+
public build<TObject>(typeContext: TypeContext<TObject>, injector: Injector): TObject
|
|
1751
1745
|
{
|
|
1752
1746
|
// Build any type.
|
|
1753
1747
|
const type = super.build(typeContext, injector) as any;
|
|
1754
1748
|
|
|
1755
1749
|
// Resolve custom data.
|
|
1756
1750
|
const typeMetadata = typeContext.typeMetadata;
|
|
1757
|
-
const customContext = typeMetadata.customContext;
|
|
1758
1751
|
|
|
1759
1752
|
// Get rank based on key.
|
|
1760
|
-
const rank =
|
|
1753
|
+
const rank = typeMetadata.extractCustomValue(rankKey);
|
|
1761
1754
|
|
|
1762
1755
|
// Process custom data...
|
|
1763
1756
|
|
|
@@ -1772,7 +1765,7 @@ When you are finished with definitions there are two possible ways to register a
|
|
|
1772
1765
|
import { Type, Factory } from '@dipscope/type-manager';
|
|
1773
1766
|
|
|
1774
1767
|
@Type({
|
|
1775
|
-
|
|
1768
|
+
customValueMap: new Map([[rankKey, 1]]),
|
|
1776
1769
|
factory: new CustomTypeFactory()
|
|
1777
1770
|
})
|
|
1778
1771
|
export class User
|
|
@@ -1788,7 +1781,7 @@ import { TypeManager } from '@dipscope/type-manager';
|
|
|
1788
1781
|
|
|
1789
1782
|
// Overriding only for user type.
|
|
1790
1783
|
TypeManager.applyTypeOptions(User, {
|
|
1791
|
-
|
|
1784
|
+
customValueMap: new Map([[rankKey, 1]]),
|
|
1792
1785
|
factory: new CustomTypeFactory()
|
|
1793
1786
|
});
|
|
1794
1787
|
|
|
@@ -1849,7 +1842,7 @@ This section describes certain use cases to separate them from the main document
|
|
|
1849
1842
|
|
|
1850
1843
|
### Built in serializers
|
|
1851
1844
|
|
|
1852
|
-
Here is a list of types with built in serializers.
|
|
1845
|
+
Here is a list of types with built in serializers.
|
|
1853
1846
|
|
|
1854
1847
|
* Any;
|
|
1855
1848
|
* Array;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-value-resolver.js","sourceRoot":"","sources":["../../../src/constants/default-value-resolver.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,sBAAsB,GAAyB,GAAG,EAAE,CAAC,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-array.js","sourceRoot":"","sources":["../../../src/constants/empty-array.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,WAAW,GAAuB,IAAI,KAAK,EAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-map.js","sourceRoot":"","sources":["../../../src/constants/empty-map.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,SAAS,GAA0B,IAAI,GAAG,EAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"null-value-resolver.js","sourceRoot":"","sources":["../../../src/constants/null-value-resolver.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,mBAAmB,GAAsB,GAAG,EAAE,CAAC,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-key.js","sourceRoot":"","sources":["../../src/custom-key.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"custom-key.js","sourceRoot":"","sources":["../../src/custom-key.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,SAAS;IAsBlB,YAAmB,WAAmB,EAAE,mBAAuD;QAE3F,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAE/C,OAAO;IACX,CAAC;CACJ"}
|