@dipscope/type-manager 7.2.1 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/README.md +159 -168
- 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 +13 -12
- package/dist/es2015/index.js.map +1 -1
- 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-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 +17 -19
- 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-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 +55 -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 -226
- package/dist/es2015/type-metadata.js.map +1 -1
- package/dist/es2015/type-scope.js +6 -7
- package/dist/es2015/type-scope.js.map +1 -1
- 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.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 +13 -12
- package/dist/es5/index.js.map +1 -1
- 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-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 +17 -19
- 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-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 +110 -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 -273
- package/dist/es5/type-metadata.js.map +1 -1
- package/dist/es5/type-scope.js +42 -37
- package/dist/es5/type-scope.js.map +1 -1
- 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.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 +13 -12
- package/dist/types/index.d.ts.map +1 -1
- 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 +3 -3
- 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-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 +4 -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-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 +116 -123
- 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.map +1 -1
- 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 +2 -2
- 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 -8
- 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
|
@@ -1,200 +1,381 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { DEFAULT_VALUE_RESOLVER } from './constants/default-value-resolver';
|
|
2
|
+
import { EMPTY_ARRAY } from './constants/empty-array';
|
|
3
|
+
import { EMPTY_MAP } from './constants/empty-map';
|
|
4
|
+
import { NULL_VALUE_RESOLVER } from './constants/null-value-resolver';
|
|
3
5
|
import { getOwnReflectMetadata } from './functions/get-own-reflect-metadata';
|
|
4
6
|
import { nameOf } from './functions/name-of';
|
|
5
7
|
import { InjectMetadata } from './inject-metadata';
|
|
6
8
|
import { Metadata } from './metadata';
|
|
7
9
|
import { PropertyMetadata } from './property-metadata';
|
|
8
|
-
import {
|
|
10
|
+
import { TYPE_EXTENSION_METADATA_CTOR_SET_KEY } from './type-extension-metadata-ctor-set-key';
|
|
11
|
+
import { ResolvedTypeState } from './type-states/resolved-type-state';
|
|
12
|
+
import { UnresolvedTypeState } from './type-states/unresolved-type-state';
|
|
9
13
|
export class TypeMetadata extends Metadata {
|
|
10
|
-
constructor(typeManager, typeFn, typeOptions,
|
|
11
|
-
super(typeManager);
|
|
12
|
-
this.childrenTypeMetadataMap = new Map();
|
|
13
|
-
this.discriminantMap = new Map();
|
|
14
|
-
this.propertyMetadataMap = new Map();
|
|
15
|
-
this.injectMetadataMap = new Map();
|
|
14
|
+
constructor(typeManager, typeFnMap, typeMetadataSet, typeFn, typeOptions, parentTypeMetadata) {
|
|
15
|
+
super(typeManager, typeFnMap);
|
|
16
16
|
this.typeName = nameOf(typeFn);
|
|
17
17
|
this.typeFn = typeFn;
|
|
18
|
+
this.parentTypeMetadata = parentTypeMetadata;
|
|
18
19
|
this.typeOptionsBase = typeManager.typeOptionsBase;
|
|
19
20
|
this.typeOptions = this.constructTypeOptions(typeOptions);
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
21
|
+
this.typeMetadataSet = typeMetadataSet;
|
|
22
|
+
this.currentTypeFnMap = typeFnMap;
|
|
23
|
+
this.currentChildTypeMetadataMap = new Map();
|
|
24
|
+
this.currentPropertyMetadataMap = new Map();
|
|
25
|
+
this.currentInjectMetadataMap = new Map();
|
|
26
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
27
|
+
this.extendParentTypeMetadata();
|
|
24
28
|
this.configure(typeOptions);
|
|
25
29
|
return;
|
|
26
30
|
}
|
|
27
|
-
get
|
|
28
|
-
return
|
|
31
|
+
get typeState() {
|
|
32
|
+
return this.currentTypeState;
|
|
29
33
|
}
|
|
30
|
-
get
|
|
31
|
-
return this.
|
|
34
|
+
get injectMetadataMap() {
|
|
35
|
+
return this.currentTypeState.injectMetadataMap;
|
|
32
36
|
}
|
|
33
|
-
get
|
|
34
|
-
return this.
|
|
37
|
+
get propertyMetadataMap() {
|
|
38
|
+
return this.currentTypeState.propertyMetadataMap;
|
|
35
39
|
}
|
|
36
|
-
get
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
customContext = this.typeInternals.customContext;
|
|
42
|
-
}
|
|
43
|
-
return customContext;
|
|
40
|
+
get alias() {
|
|
41
|
+
return this.currentTypeState.alias;
|
|
42
|
+
}
|
|
43
|
+
get customValueMap() {
|
|
44
|
+
return this.currentTypeState.customValueMap;
|
|
44
45
|
}
|
|
45
46
|
get serializedNullValue() {
|
|
46
|
-
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
return this.serializedDefaultValue;
|
|
47
|
+
return this.currentTypeState.serializedNullValueResolver();
|
|
50
48
|
}
|
|
51
49
|
get serializedDefaultValue() {
|
|
52
|
-
|
|
53
|
-
if (this.useDefaultValue) {
|
|
54
|
-
const serializedDefaultValue = (_a = this.typeOptions.defaultValue) !== null && _a !== void 0 ? _a : this.typeOptions.serializedDefaultValue;
|
|
55
|
-
const defaultValue = isFunction(serializedDefaultValue)
|
|
56
|
-
? serializedDefaultValue()
|
|
57
|
-
: serializedDefaultValue;
|
|
58
|
-
return defaultValue;
|
|
59
|
-
}
|
|
60
|
-
return undefined;
|
|
50
|
+
return this.currentTypeState.serializedDefaultValueResolver();
|
|
61
51
|
}
|
|
62
52
|
get deserializedNullValue() {
|
|
63
|
-
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
return this.deserializedDefaultValue;
|
|
53
|
+
return this.currentTypeState.deserializedNullValueResolver();
|
|
67
54
|
}
|
|
68
55
|
get deserializedDefaultValue() {
|
|
69
|
-
|
|
70
|
-
if (this.useDefaultValue) {
|
|
71
|
-
const deserializedDefaultValue = (_a = this.typeOptions.defaultValue) !== null && _a !== void 0 ? _a : this.typeOptions.deserializedDefaultValue;
|
|
72
|
-
const defaultValue = isFunction(deserializedDefaultValue)
|
|
73
|
-
? deserializedDefaultValue()
|
|
74
|
-
: deserializedDefaultValue;
|
|
75
|
-
return defaultValue;
|
|
76
|
-
}
|
|
77
|
-
return undefined;
|
|
56
|
+
return this.currentTypeState.deserializedDefaultValueResolver();
|
|
78
57
|
}
|
|
79
58
|
get discriminant() {
|
|
80
|
-
|
|
81
|
-
return (_a = this.typeOptions.discriminant) !== null && _a !== void 0 ? _a : this.typeName;
|
|
59
|
+
return this.currentTypeState.discriminant;
|
|
82
60
|
}
|
|
83
61
|
get discriminator() {
|
|
84
|
-
|
|
85
|
-
return (_a = this.typeOptions.discriminator) !== null && _a !== void 0 ? _a : this.typeOptionsBase.discriminator;
|
|
62
|
+
return this.currentTypeState.discriminator;
|
|
86
63
|
}
|
|
87
64
|
get factory() {
|
|
88
|
-
|
|
89
|
-
return (_a = this.typeOptions.factory) !== null && _a !== void 0 ? _a : this.typeOptionsBase.factory;
|
|
65
|
+
return this.currentTypeState.factory;
|
|
90
66
|
}
|
|
91
67
|
get injectable() {
|
|
92
|
-
return this.
|
|
68
|
+
return this.currentTypeState.injectable;
|
|
93
69
|
}
|
|
94
70
|
get injector() {
|
|
95
|
-
|
|
96
|
-
return (_a = this.typeOptions.injector) !== null && _a !== void 0 ? _a : this.typeOptionsBase.injector;
|
|
71
|
+
return this.currentTypeState.injector;
|
|
97
72
|
}
|
|
98
|
-
get
|
|
99
|
-
|
|
100
|
-
return (_a = this.typeOptions.log) !== null && _a !== void 0 ? _a : this.typeOptionsBase.log;
|
|
73
|
+
get logger() {
|
|
74
|
+
return this.currentTypeState.logger;
|
|
101
75
|
}
|
|
102
76
|
get namingConvention() {
|
|
103
|
-
|
|
104
|
-
return (_a = this.typeOptions.namingConvention) !== null && _a !== void 0 ? _a : this.typeOptionsBase.namingConvention;
|
|
77
|
+
return this.currentTypeState.namingConvention;
|
|
105
78
|
}
|
|
106
79
|
get polymorphic() {
|
|
107
|
-
return this.
|
|
80
|
+
return this.currentTypeState.polymorphic;
|
|
108
81
|
}
|
|
109
82
|
get preserveDiscriminator() {
|
|
110
|
-
|
|
111
|
-
return (_a = this.typeOptions.preserveDiscriminator) !== null && _a !== void 0 ? _a : this.typeOptionsBase.preserveDiscriminator;
|
|
83
|
+
return this.currentTypeState.preserveDiscriminator;
|
|
112
84
|
}
|
|
113
85
|
get referenceHandler() {
|
|
114
|
-
|
|
115
|
-
return (_a = this.typeOptions.referenceHandler) !== null && _a !== void 0 ? _a : this.typeOptionsBase.referenceHandler;
|
|
86
|
+
return this.currentTypeState.referenceHandler;
|
|
116
87
|
}
|
|
117
88
|
get serializer() {
|
|
118
|
-
|
|
119
|
-
return (_a = this.typeOptions.serializer) !== null && _a !== void 0 ? _a : this.typeOptionsBase.serializer;
|
|
89
|
+
return this.currentTypeState.serializer;
|
|
120
90
|
}
|
|
121
91
|
get preserveNull() {
|
|
122
|
-
|
|
123
|
-
return (_a = this.typeOptions.preserveNull) !== null && _a !== void 0 ? _a : this.typeOptionsBase.preserveNull;
|
|
92
|
+
return this.currentTypeState.preserveNull;
|
|
124
93
|
}
|
|
125
94
|
get useDefaultValue() {
|
|
126
|
-
|
|
127
|
-
return (_a = this.typeOptions.useDefaultValue) !== null && _a !== void 0 ? _a : this.typeOptionsBase.useDefaultValue;
|
|
95
|
+
return this.currentTypeState.useDefaultValue;
|
|
128
96
|
}
|
|
129
97
|
get useImplicitConversion() {
|
|
130
|
-
|
|
131
|
-
return (_a = this.typeOptions.useImplicitConversion) !== null && _a !== void 0 ? _a : this.typeOptionsBase.useImplicitConversion;
|
|
98
|
+
return this.currentTypeState.useImplicitConversion;
|
|
132
99
|
}
|
|
133
100
|
get propertySorter() {
|
|
134
|
-
|
|
135
|
-
return (_a = this.typeOptions.propertySorter) !== null && _a !== void 0 ? _a : this.typeOptionsBase.propertySorter;
|
|
101
|
+
return this.currentTypeState.propertySorter;
|
|
136
102
|
}
|
|
137
103
|
get sortedPropertyMetadatas() {
|
|
138
|
-
|
|
139
|
-
const propertyMetadatas = this.propertyMetadataMap.values();
|
|
140
|
-
if (isNil(propertySorter)) {
|
|
141
|
-
return propertyMetadatas;
|
|
142
|
-
}
|
|
143
|
-
const sortedPropertyMetadatas = Array.from(propertyMetadatas).sort(propertySorter.sort);
|
|
144
|
-
return sortedPropertyMetadatas[Symbol.iterator]();
|
|
104
|
+
return this.currentTypeState.sortedPropertyMetadatas;
|
|
145
105
|
}
|
|
146
106
|
get injectSorter() {
|
|
147
|
-
|
|
148
|
-
return (_a = this.typeOptions.injectSorter) !== null && _a !== void 0 ? _a : this.typeOptionsBase.injectSorter;
|
|
107
|
+
return this.currentTypeState.injectSorter;
|
|
149
108
|
}
|
|
150
109
|
get sortedInjectMetadatas() {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
const sortedInjectMetadatas = Array.from(injectMetadatas).sort(injectSorter.sort);
|
|
157
|
-
return sortedInjectMetadatas[Symbol.iterator]();
|
|
110
|
+
return this.currentTypeState.sortedInjectMetadatas;
|
|
111
|
+
}
|
|
112
|
+
get parentTypeArguments() {
|
|
113
|
+
return this.currentTypeState.parentTypeArguments;
|
|
158
114
|
}
|
|
159
115
|
get propertyOptionsMap() {
|
|
160
|
-
|
|
161
|
-
if (isNil(propertyOptionsMap)) {
|
|
162
|
-
propertyOptionsMap = new Map();
|
|
163
|
-
this.typeOptions.propertyOptionsMap = propertyOptionsMap;
|
|
164
|
-
}
|
|
165
|
-
return propertyOptionsMap;
|
|
116
|
+
return this.currentTypeState.propertyOptionsMap;
|
|
166
117
|
}
|
|
167
118
|
get injectOptionsMap() {
|
|
168
|
-
|
|
169
|
-
if (isNil(injectOptionsMap)) {
|
|
170
|
-
injectOptionsMap = new Map();
|
|
171
|
-
this.typeOptions.injectOptionsMap = injectOptionsMap;
|
|
172
|
-
}
|
|
173
|
-
return injectOptionsMap;
|
|
174
|
-
}
|
|
175
|
-
get parentTypeFns() {
|
|
176
|
-
return this.typeOptions.parentTypeFns;
|
|
119
|
+
return this.currentTypeState.injectOptionsMap;
|
|
177
120
|
}
|
|
178
121
|
constructTypeOptions(typeOptions) {
|
|
122
|
+
if (typeOptions.customValueMap === undefined) {
|
|
123
|
+
typeOptions.customValueMap = new Map();
|
|
124
|
+
}
|
|
125
|
+
if (typeOptions.propertyOptionsMap === undefined) {
|
|
126
|
+
typeOptions.propertyOptionsMap = new Map();
|
|
127
|
+
}
|
|
128
|
+
if (typeOptions.injectOptionsMap === undefined) {
|
|
129
|
+
typeOptions.injectOptionsMap = new Map();
|
|
130
|
+
}
|
|
179
131
|
return typeOptions;
|
|
180
132
|
}
|
|
181
|
-
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
133
|
+
configureTypeExtensionMetadata(typeExtensionMetadataCtor, typeExtensionOptions) {
|
|
134
|
+
const typeExtensionMetadataCtorSet = this.extractTypeExtensionMetadataCtorSet();
|
|
135
|
+
if (!typeExtensionMetadataCtorSet.has(typeExtensionMetadataCtor)) {
|
|
136
|
+
typeExtensionMetadataCtorSet.add(typeExtensionMetadataCtor);
|
|
137
|
+
}
|
|
138
|
+
const initialTypeExtensionOptions = typeExtensionOptions !== null && typeExtensionOptions !== void 0 ? typeExtensionOptions : {};
|
|
139
|
+
const typeExtensionMetadata = new typeExtensionMetadataCtor(this, initialTypeExtensionOptions);
|
|
140
|
+
return typeExtensionMetadata;
|
|
141
|
+
}
|
|
142
|
+
extractTypeExtensionMetadata(typeExtensionMetadataCtor) {
|
|
143
|
+
const typeExtensionMetadataCtorSet = this.extractTypeExtensionMetadataCtorSet();
|
|
144
|
+
if (!typeExtensionMetadataCtorSet.has(typeExtensionMetadataCtor)) {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
const initialTypeExtensionOptions = {};
|
|
148
|
+
const typeExtensionMetadata = new typeExtensionMetadataCtor(this, initialTypeExtensionOptions);
|
|
149
|
+
return typeExtensionMetadata;
|
|
186
150
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
151
|
+
extractTypeExtensionMetadataCtorSet() {
|
|
152
|
+
let customValueMap = this.typeOptions.customValueMap;
|
|
153
|
+
if (customValueMap === undefined) {
|
|
154
|
+
customValueMap = new Map();
|
|
155
|
+
this.typeOptions.customValueMap = customValueMap;
|
|
156
|
+
}
|
|
157
|
+
let typeExtensionMetadataCtorSet = customValueMap.get(TYPE_EXTENSION_METADATA_CTOR_SET_KEY);
|
|
158
|
+
if (typeExtensionMetadataCtorSet === undefined) {
|
|
159
|
+
typeExtensionMetadataCtorSet = new Set();
|
|
160
|
+
customValueMap.set(TYPE_EXTENSION_METADATA_CTOR_SET_KEY, typeExtensionMetadataCtorSet);
|
|
161
|
+
}
|
|
162
|
+
return typeExtensionMetadataCtorSet;
|
|
163
|
+
}
|
|
164
|
+
resolveTypeState() {
|
|
165
|
+
const typeOptionsBase = this.typeOptionsBase;
|
|
166
|
+
const typeOptions = this.typeOptions;
|
|
167
|
+
const typeName = this.typeName;
|
|
168
|
+
const alias = typeOptions.alias;
|
|
169
|
+
const customValueMap = this.resolveCustomValueMap();
|
|
170
|
+
const preserveNull = typeOptions.preserveNull === undefined
|
|
171
|
+
? typeOptionsBase.preserveNull
|
|
172
|
+
: typeOptions.preserveNull;
|
|
173
|
+
const useDefaultValue = typeOptions.useDefaultValue === undefined
|
|
174
|
+
? typeOptionsBase.useDefaultValue
|
|
175
|
+
: typeOptions.useDefaultValue;
|
|
176
|
+
const useImplicitConversion = typeOptions.useImplicitConversion === undefined
|
|
177
|
+
? typeOptionsBase.useImplicitConversion
|
|
178
|
+
: typeOptions.useImplicitConversion;
|
|
179
|
+
const serializedDefaultValue = typeOptions.defaultValue === undefined
|
|
180
|
+
? typeOptions.serializedDefaultValue
|
|
181
|
+
: typeOptions.defaultValue;
|
|
182
|
+
const serializedDefaultValueResolver = useDefaultValue
|
|
183
|
+
? (typeof serializedDefaultValue === 'function' ? serializedDefaultValue : () => serializedDefaultValue)
|
|
184
|
+
: DEFAULT_VALUE_RESOLVER;
|
|
185
|
+
const serializedNullValueResolver = preserveNull
|
|
186
|
+
? NULL_VALUE_RESOLVER
|
|
187
|
+
: serializedDefaultValueResolver;
|
|
188
|
+
const deserializedDefaultValue = typeOptions.defaultValue === undefined
|
|
189
|
+
? typeOptions.deserializedDefaultValue
|
|
190
|
+
: typeOptions.defaultValue;
|
|
191
|
+
const deserializedDefaultValueResolver = useDefaultValue
|
|
192
|
+
? (typeof deserializedDefaultValue === 'function' ? deserializedDefaultValue : () => deserializedDefaultValue)
|
|
193
|
+
: DEFAULT_VALUE_RESOLVER;
|
|
194
|
+
const deserializedNullValueResolver = preserveNull
|
|
195
|
+
? NULL_VALUE_RESOLVER
|
|
196
|
+
: deserializedDefaultValueResolver;
|
|
197
|
+
const discriminant = typeOptions.discriminant === undefined
|
|
198
|
+
? typeName
|
|
199
|
+
: typeOptions.discriminant;
|
|
200
|
+
const discriminator = typeOptions.discriminator === undefined
|
|
201
|
+
? typeOptionsBase.discriminator
|
|
202
|
+
: typeOptions.discriminator;
|
|
203
|
+
const factory = typeOptions.factory === undefined
|
|
204
|
+
? typeOptionsBase.factory
|
|
205
|
+
: typeOptions.factory;
|
|
206
|
+
const injectable = typeOptions.injectable === true;
|
|
207
|
+
const injector = typeOptions.injector === undefined
|
|
208
|
+
? typeOptionsBase.injector
|
|
209
|
+
: typeOptions.injector;
|
|
210
|
+
const logger = typeOptions.logger === undefined
|
|
211
|
+
? typeOptionsBase.logger
|
|
212
|
+
: typeOptions.logger;
|
|
213
|
+
const namingConvention = typeOptions.namingConvention === undefined
|
|
214
|
+
? typeOptionsBase.namingConvention
|
|
215
|
+
: typeOptions.namingConvention;
|
|
216
|
+
const parentTypeArguments = typeOptions.parentTypeArguments === undefined
|
|
217
|
+
? EMPTY_ARRAY
|
|
218
|
+
: typeOptions.parentTypeArguments;
|
|
219
|
+
const ownParentTypeMetadatas = this.resolveOwnParentTypeMetadatas(parentTypeArguments);
|
|
220
|
+
const ownChildTypeMetadatas = this.resolveOwnChildTypeMetadatas();
|
|
221
|
+
const parentTypeMetadataSet = this.resolveParentTypeMetadataSet(this);
|
|
222
|
+
const parentTypeMetadatas = Array.from(parentTypeMetadataSet);
|
|
223
|
+
const childTypeMetadataSet = this.resolveChildTypeMetadataSet(this);
|
|
224
|
+
const childTypeMetadatas = Array.from(childTypeMetadataSet);
|
|
225
|
+
const typeMetadataMap = new Map();
|
|
226
|
+
const polymorphic = childTypeMetadatas.length > 1;
|
|
227
|
+
for (let i = 0; i < childTypeMetadatas.length; i++) {
|
|
228
|
+
const childTypeMetadata = childTypeMetadatas[i];
|
|
229
|
+
typeMetadataMap.set(childTypeMetadata.typeFn, childTypeMetadata);
|
|
230
|
+
}
|
|
231
|
+
const preserveDiscriminator = typeOptions.preserveDiscriminator === undefined
|
|
232
|
+
? typeOptionsBase.preserveDiscriminator
|
|
233
|
+
: typeOptions.preserveDiscriminator;
|
|
234
|
+
const referenceHandler = typeOptions.referenceHandler === undefined
|
|
235
|
+
? typeOptionsBase.referenceHandler
|
|
236
|
+
: typeOptions.referenceHandler;
|
|
237
|
+
const serializer = typeOptions.serializer === undefined
|
|
238
|
+
? typeOptionsBase.serializer
|
|
239
|
+
: typeOptions.serializer;
|
|
240
|
+
const propertySorter = typeOptions.propertySorter === undefined
|
|
241
|
+
? typeOptionsBase.propertySorter
|
|
242
|
+
: typeOptions.propertySorter;
|
|
243
|
+
const ownPropertyMetadataMap = this.currentPropertyMetadataMap;
|
|
244
|
+
const propertyMetadataMap = this.resolvePropertyMetadataMap(parentTypeMetadatas);
|
|
245
|
+
const sortedPropertyMetadatas = propertySorter === undefined
|
|
246
|
+
? Array.from(propertyMetadataMap.values())
|
|
247
|
+
: Array.from(propertyMetadataMap.values()).sort(propertySorter.sort);
|
|
248
|
+
const injectMetadataMap = this.currentInjectMetadataMap;
|
|
249
|
+
const injectSorter = typeOptions.injectSorter === undefined
|
|
250
|
+
? typeOptionsBase.injectSorter
|
|
251
|
+
: typeOptions.injectSorter;
|
|
252
|
+
const sortedInjectMetadatas = injectSorter === undefined
|
|
253
|
+
? Array.from(injectMetadataMap.values())
|
|
254
|
+
: Array.from(injectMetadataMap.values()).sort(injectSorter.sort);
|
|
255
|
+
const propertyOptionsMap = typeOptions.propertyOptionsMap === undefined
|
|
256
|
+
? EMPTY_MAP
|
|
257
|
+
: typeOptions.propertyOptionsMap;
|
|
258
|
+
const injectOptionsMap = typeOptions.injectOptionsMap === undefined
|
|
259
|
+
? EMPTY_MAP
|
|
260
|
+
: typeOptions.injectOptionsMap;
|
|
261
|
+
const resolvedTypeState = new ResolvedTypeState(this, alias, customValueMap, serializedNullValueResolver, serializedDefaultValue, serializedDefaultValueResolver, deserializedNullValueResolver, deserializedDefaultValue, deserializedDefaultValueResolver, discriminant, discriminator, factory, injectable, injector, logger, namingConvention, polymorphic, typeMetadataMap, preserveDiscriminator, referenceHandler, serializer, preserveNull, useDefaultValue, useImplicitConversion, propertySorter, sortedPropertyMetadatas, injectSorter, sortedInjectMetadatas, parentTypeArguments, parentTypeMetadatas, ownParentTypeMetadatas, childTypeMetadatas, ownChildTypeMetadatas, propertyOptionsMap, propertyMetadataMap, ownPropertyMetadataMap, injectOptionsMap, injectMetadataMap);
|
|
262
|
+
this.currentTypeState = resolvedTypeState;
|
|
263
|
+
return resolvedTypeState;
|
|
264
|
+
}
|
|
265
|
+
unresolveTypeState() {
|
|
266
|
+
const unresolvedTypeState = new UnresolvedTypeState(this);
|
|
267
|
+
this.currentTypeState = unresolvedTypeState;
|
|
268
|
+
return unresolvedTypeState;
|
|
269
|
+
}
|
|
270
|
+
resolveCustomValueMap() {
|
|
271
|
+
const typeOptionsBase = this.typeOptionsBase;
|
|
272
|
+
const typeOptions = this.typeOptions;
|
|
273
|
+
const customValueMap = new Map();
|
|
274
|
+
if (typeOptions.customValueMap === undefined) {
|
|
275
|
+
return customValueMap;
|
|
276
|
+
}
|
|
277
|
+
const baseCustomValueMap = typeOptionsBase.customValueMap === undefined
|
|
278
|
+
? EMPTY_MAP
|
|
279
|
+
: typeOptionsBase.customValueMap;
|
|
280
|
+
for (const [customKey, customValue] of typeOptions.customValueMap) {
|
|
281
|
+
if (customValue === undefined) {
|
|
282
|
+
customValueMap.set(customKey, baseCustomValueMap.get(customKey));
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
customValueMap.set(customKey, customValue);
|
|
286
|
+
}
|
|
287
|
+
return customValueMap;
|
|
288
|
+
}
|
|
289
|
+
resolveOwnParentTypeMetadatas(parentTypeArguments) {
|
|
290
|
+
const ownParentTypeMetadatas = new Array();
|
|
291
|
+
const parentTypeMetadatas = this.resolveTypeMetadatas(parentTypeArguments);
|
|
292
|
+
for (let i = parentTypeMetadatas.length - 1; i >= 0; i--) {
|
|
293
|
+
ownParentTypeMetadatas.push(parentTypeMetadatas[i]);
|
|
294
|
+
}
|
|
295
|
+
if (this.parentTypeMetadata !== undefined) {
|
|
296
|
+
ownParentTypeMetadatas.push(this.parentTypeMetadata);
|
|
297
|
+
}
|
|
298
|
+
return ownParentTypeMetadatas;
|
|
299
|
+
}
|
|
300
|
+
resolveOwnChildTypeMetadatas() {
|
|
301
|
+
const ownChildTypeMetadatas = new Array();
|
|
302
|
+
for (const childTypeMetadata of this.currentChildTypeMetadataMap.values()) {
|
|
303
|
+
ownChildTypeMetadatas.push(childTypeMetadata);
|
|
304
|
+
}
|
|
305
|
+
for (const setTypeMetadata of this.typeMetadataSet) {
|
|
306
|
+
const typeOptions = setTypeMetadata.typeOptions;
|
|
307
|
+
const parentTypeArguments = typeOptions.parentTypeArguments === undefined
|
|
308
|
+
? EMPTY_ARRAY
|
|
309
|
+
: typeOptions.parentTypeArguments;
|
|
310
|
+
const parentTypeMetadatas = this.resolveTypeMetadatas(parentTypeArguments);
|
|
311
|
+
for (let i = 0; i < parentTypeMetadatas.length; i++) {
|
|
312
|
+
if (parentTypeMetadatas[i] === this) {
|
|
313
|
+
ownChildTypeMetadatas.push(setTypeMetadata);
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
190
317
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
318
|
+
return ownChildTypeMetadatas;
|
|
319
|
+
}
|
|
320
|
+
resolveParentTypeMetadataSet(typeMetadata, parentTypeMetadataSet = new Set()) {
|
|
321
|
+
if (parentTypeMetadataSet.has(typeMetadata)) {
|
|
322
|
+
return parentTypeMetadataSet;
|
|
323
|
+
}
|
|
324
|
+
parentTypeMetadataSet.add(typeMetadata);
|
|
325
|
+
const typeOptions = typeMetadata.typeOptions;
|
|
326
|
+
const parentTypeArguments = typeOptions.parentTypeArguments === undefined
|
|
327
|
+
? EMPTY_ARRAY
|
|
328
|
+
: typeOptions.parentTypeArguments;
|
|
329
|
+
const parentTypeMetadatas = this.resolveTypeMetadatas(parentTypeArguments);
|
|
330
|
+
for (let i = parentTypeMetadatas.length - 1; i >= 0; i--) {
|
|
331
|
+
this.resolveParentTypeMetadataSet(parentTypeMetadatas[i], parentTypeMetadataSet);
|
|
332
|
+
}
|
|
333
|
+
if (typeMetadata.parentTypeMetadata !== undefined) {
|
|
334
|
+
this.resolveParentTypeMetadataSet(typeMetadata.parentTypeMetadata, parentTypeMetadataSet);
|
|
335
|
+
}
|
|
336
|
+
return parentTypeMetadataSet;
|
|
337
|
+
}
|
|
338
|
+
resolveChildTypeMetadataSet(typeMetadata, childTypeMetadataSet = new Set()) {
|
|
339
|
+
if (childTypeMetadataSet.has(typeMetadata)) {
|
|
340
|
+
return childTypeMetadataSet;
|
|
341
|
+
}
|
|
342
|
+
childTypeMetadataSet.add(typeMetadata);
|
|
343
|
+
for (const childTypeMetadata of typeMetadata.currentChildTypeMetadataMap.values()) {
|
|
344
|
+
this.resolveChildTypeMetadataSet(childTypeMetadata, childTypeMetadataSet);
|
|
345
|
+
childTypeMetadata.unresolveTypeState();
|
|
346
|
+
}
|
|
347
|
+
for (const setTypeMetadata of this.typeMetadataSet) {
|
|
348
|
+
const typeOptions = setTypeMetadata.typeOptions;
|
|
349
|
+
const parentTypeArguments = typeOptions.parentTypeArguments === undefined
|
|
350
|
+
? EMPTY_ARRAY
|
|
351
|
+
: typeOptions.parentTypeArguments;
|
|
352
|
+
const parentTypeMetadatas = this.resolveTypeMetadatas(parentTypeArguments);
|
|
353
|
+
for (let i = 0; i < parentTypeMetadatas.length; i++) {
|
|
354
|
+
if (parentTypeMetadatas[i] === typeMetadata) {
|
|
355
|
+
this.resolveChildTypeMetadataSet(setTypeMetadata, childTypeMetadataSet);
|
|
356
|
+
setTypeMetadata.unresolveTypeState();
|
|
357
|
+
break;
|
|
195
358
|
}
|
|
196
359
|
}
|
|
197
|
-
|
|
360
|
+
}
|
|
361
|
+
return childTypeMetadataSet;
|
|
362
|
+
}
|
|
363
|
+
resolvePropertyMetadataMap(parentTypeMetadatas) {
|
|
364
|
+
const propertyMetadataMap = new Map();
|
|
365
|
+
for (let i = parentTypeMetadatas.length - 1; i >= 0; i--) {
|
|
366
|
+
for (const [propertyName, propertyMetadata] of parentTypeMetadatas[i].currentPropertyMetadataMap) {
|
|
367
|
+
propertyMetadataMap.set(propertyName, propertyMetadata);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
for (const propertyMetadata of this.currentPropertyMetadataMap.values()) {
|
|
371
|
+
propertyMetadata.unresolvePropertyState();
|
|
372
|
+
}
|
|
373
|
+
return propertyMetadataMap;
|
|
374
|
+
}
|
|
375
|
+
extendParentTypeMetadata() {
|
|
376
|
+
const parentTypeMetadata = this.parentTypeMetadata;
|
|
377
|
+
if (parentTypeMetadata !== undefined) {
|
|
378
|
+
parentTypeMetadata.currentChildTypeMetadataMap.set(this.typeFn, this);
|
|
198
379
|
}
|
|
199
380
|
return this;
|
|
200
381
|
}
|
|
@@ -205,8 +386,8 @@ export class TypeMetadata extends Metadata {
|
|
|
205
386
|
}
|
|
206
387
|
const injectTypeFns = ((_a = getOwnReflectMetadata('design:paramtypes', this.typeFn)) !== null && _a !== void 0 ? _a : new Array());
|
|
207
388
|
for (let injectIndex = 0; injectIndex < injectTypeFns.length; injectIndex++) {
|
|
208
|
-
if (!this.
|
|
209
|
-
this.configureInjectMetadata(injectIndex, {
|
|
389
|
+
if (!this.currentInjectMetadataMap.has(injectIndex)) {
|
|
390
|
+
this.configureInjectMetadata(injectIndex, { typeArgument: injectTypeFns[injectIndex] });
|
|
210
391
|
}
|
|
211
392
|
}
|
|
212
393
|
return this;
|
|
@@ -214,258 +395,316 @@ export class TypeMetadata extends Metadata {
|
|
|
214
395
|
hasAlias(alias) {
|
|
215
396
|
this.releaseAlias();
|
|
216
397
|
this.typeOptions.alias = alias;
|
|
217
|
-
if (
|
|
218
|
-
this.
|
|
398
|
+
if (alias !== undefined) {
|
|
399
|
+
this.currentTypeFnMap.set(alias, this.typeFn);
|
|
219
400
|
}
|
|
401
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
220
402
|
return this;
|
|
221
403
|
}
|
|
222
404
|
releaseAlias() {
|
|
223
|
-
const alias = this.alias;
|
|
224
|
-
if (
|
|
225
|
-
this.
|
|
405
|
+
const alias = this.typeOptions.alias;
|
|
406
|
+
if (alias !== undefined && this.currentTypeFnMap.has(alias)) {
|
|
407
|
+
this.currentTypeFnMap.delete(alias);
|
|
408
|
+
}
|
|
409
|
+
return this;
|
|
410
|
+
}
|
|
411
|
+
hasCustomValueMap(customValueMap) {
|
|
412
|
+
let currentCustomValueMap = this.typeOptions.customValueMap;
|
|
413
|
+
if (currentCustomValueMap === undefined) {
|
|
414
|
+
currentCustomValueMap = new Map();
|
|
415
|
+
this.typeOptions.customValueMap = currentCustomValueMap;
|
|
416
|
+
}
|
|
417
|
+
if (customValueMap !== undefined) {
|
|
418
|
+
if (currentCustomValueMap !== customValueMap) {
|
|
419
|
+
currentCustomValueMap.clear();
|
|
420
|
+
}
|
|
421
|
+
for (const [customKey, customValue] of customValueMap) {
|
|
422
|
+
currentCustomValueMap.set(customKey, customValue);
|
|
423
|
+
}
|
|
226
424
|
}
|
|
425
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
227
426
|
return this;
|
|
228
427
|
}
|
|
229
|
-
|
|
230
|
-
this.
|
|
428
|
+
hasCustomValue(customKey, customValue) {
|
|
429
|
+
let customValueMap = this.typeOptions.customValueMap;
|
|
430
|
+
if (customValueMap === undefined) {
|
|
431
|
+
customValueMap = new Map();
|
|
432
|
+
this.typeOptions.customValueMap = customValueMap;
|
|
433
|
+
}
|
|
434
|
+
customValueMap.set(customKey, customValue);
|
|
435
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
231
436
|
return this;
|
|
232
437
|
}
|
|
233
|
-
|
|
234
|
-
|
|
438
|
+
extractCustomValue(customKey) {
|
|
439
|
+
let customValue = this.typeState.customValueMap.get(customKey);
|
|
440
|
+
if (customValue === undefined && customKey.customValueResolver !== undefined) {
|
|
441
|
+
customValue = customKey.customValueResolver();
|
|
442
|
+
}
|
|
443
|
+
return customValue;
|
|
235
444
|
}
|
|
236
445
|
hasCustomOptions(customOptions) {
|
|
237
|
-
|
|
238
|
-
|
|
446
|
+
let customValueMap = this.typeOptions.customValueMap;
|
|
447
|
+
if (customValueMap === undefined) {
|
|
448
|
+
customValueMap = new Map();
|
|
449
|
+
this.typeOptions.customValueMap = customValueMap;
|
|
239
450
|
}
|
|
451
|
+
for (let i = 0; i < customOptions.length; i++) {
|
|
452
|
+
customValueMap.set(customOptions[i][0], customOptions[i][1]);
|
|
453
|
+
}
|
|
454
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
240
455
|
return this;
|
|
241
456
|
}
|
|
242
457
|
hasDefaultValue(defaultValue) {
|
|
243
458
|
this.typeOptions.defaultValue = defaultValue;
|
|
459
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
244
460
|
return this;
|
|
245
461
|
}
|
|
246
462
|
hasSerializedDefaultValue(serializedDefaultValue) {
|
|
247
463
|
this.typeOptions.serializedDefaultValue = serializedDefaultValue;
|
|
464
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
248
465
|
return this;
|
|
249
466
|
}
|
|
250
467
|
hasDeserializedDefaultValue(deserializedDefaultValue) {
|
|
251
468
|
this.typeOptions.deserializedDefaultValue = deserializedDefaultValue;
|
|
469
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
252
470
|
return this;
|
|
253
471
|
}
|
|
254
472
|
hasDiscriminator(discriminator) {
|
|
255
473
|
this.typeOptions.discriminator = discriminator;
|
|
474
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
256
475
|
return this;
|
|
257
476
|
}
|
|
258
477
|
hasDiscriminant(discriminant) {
|
|
259
478
|
this.typeOptions.discriminant = discriminant;
|
|
260
|
-
|
|
261
|
-
this.provideDiscriminant(this.typeFn, discriminant);
|
|
262
|
-
}
|
|
263
|
-
return this;
|
|
264
|
-
}
|
|
265
|
-
provideDiscriminant(typeFn, discriminant) {
|
|
266
|
-
this.discriminantMap.set(typeFn, discriminant);
|
|
267
|
-
if (!isEmpty(this.parentTypeMetadatas)) {
|
|
268
|
-
for (const parentTypeMetadata of this.parentTypeMetadatas) {
|
|
269
|
-
parentTypeMetadata.provideDiscriminant(typeFn, discriminant);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
479
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
272
480
|
return this;
|
|
273
481
|
}
|
|
274
482
|
hasFactory(factory) {
|
|
275
483
|
this.typeOptions.factory = factory;
|
|
484
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
276
485
|
return this;
|
|
277
486
|
}
|
|
278
487
|
isInjectable(injectable = true) {
|
|
279
488
|
this.typeOptions.injectable = injectable;
|
|
489
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
280
490
|
return this;
|
|
281
491
|
}
|
|
282
492
|
hasInjector(injector) {
|
|
283
493
|
this.typeOptions.injector = injector;
|
|
494
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
284
495
|
return this;
|
|
285
496
|
}
|
|
286
|
-
|
|
287
|
-
this.typeOptions.
|
|
497
|
+
hasLogger(logger) {
|
|
498
|
+
this.typeOptions.logger = logger;
|
|
499
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
288
500
|
return this;
|
|
289
501
|
}
|
|
290
502
|
hasNamingConvention(namingConvention) {
|
|
291
503
|
this.typeOptions.namingConvention = namingConvention;
|
|
504
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
292
505
|
return this;
|
|
293
506
|
}
|
|
294
507
|
shouldPreserveDiscriminator(preserveDiscriminator = true) {
|
|
295
508
|
this.typeOptions.preserveDiscriminator = preserveDiscriminator;
|
|
509
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
296
510
|
return this;
|
|
297
511
|
}
|
|
298
512
|
hasReferenceHandler(referenceHandler) {
|
|
299
513
|
this.typeOptions.referenceHandler = referenceHandler;
|
|
514
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
300
515
|
return this;
|
|
301
516
|
}
|
|
302
517
|
hasSerializer(serializer) {
|
|
303
518
|
this.typeOptions.serializer = serializer;
|
|
519
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
304
520
|
return this;
|
|
305
521
|
}
|
|
306
522
|
shouldPreserveNull(preserveNull = true) {
|
|
307
523
|
this.typeOptions.preserveNull = preserveNull;
|
|
524
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
308
525
|
return this;
|
|
309
526
|
}
|
|
310
527
|
shouldUseDefaultValue(useDefaultValue = true) {
|
|
311
528
|
this.typeOptions.useDefaultValue = useDefaultValue;
|
|
529
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
312
530
|
return this;
|
|
313
531
|
}
|
|
314
532
|
shouldUseImplicitConversion(useImplicitConversion = true) {
|
|
315
533
|
this.typeOptions.useImplicitConversion = useImplicitConversion;
|
|
534
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
316
535
|
return this;
|
|
317
536
|
}
|
|
318
537
|
hasPropertySorter(propertySorter) {
|
|
319
538
|
this.typeOptions.propertySorter = propertySorter;
|
|
539
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
320
540
|
return this;
|
|
321
541
|
}
|
|
322
542
|
hasInjectSorter(injectSorter) {
|
|
323
543
|
this.typeOptions.injectSorter = injectSorter;
|
|
544
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
545
|
+
return this;
|
|
546
|
+
}
|
|
547
|
+
hasParentTypeArguments(parentTypeArguments) {
|
|
548
|
+
this.typeOptions.parentTypeArguments = parentTypeArguments;
|
|
549
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
324
550
|
return this;
|
|
325
551
|
}
|
|
326
552
|
configurePropertyMetadata(propertyName, propertyOptions) {
|
|
327
|
-
let
|
|
328
|
-
if (
|
|
329
|
-
|
|
330
|
-
this.
|
|
331
|
-
|
|
553
|
+
let propertyOptionsMap = this.typeOptions.propertyOptionsMap;
|
|
554
|
+
if (propertyOptionsMap === undefined) {
|
|
555
|
+
propertyOptionsMap = new Map();
|
|
556
|
+
this.typeOptions.propertyOptionsMap = propertyOptionsMap;
|
|
557
|
+
}
|
|
558
|
+
let propertyMetadata = this.currentPropertyMetadataMap.get(propertyName);
|
|
559
|
+
if (propertyMetadata === undefined) {
|
|
560
|
+
propertyOptions = propertyOptions !== null && propertyOptions !== void 0 ? propertyOptions : {};
|
|
561
|
+
propertyMetadata = new PropertyMetadata(this.typeManager, this.currentTypeFnMap, this, propertyName, propertyOptions);
|
|
562
|
+
this.currentPropertyMetadataMap.set(propertyName, propertyMetadata);
|
|
563
|
+
propertyOptionsMap.set(propertyName, propertyOptions);
|
|
564
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
332
565
|
return propertyMetadata;
|
|
333
566
|
}
|
|
334
|
-
if (
|
|
567
|
+
if (propertyOptions !== undefined) {
|
|
335
568
|
propertyMetadata.configure(propertyOptions);
|
|
336
569
|
}
|
|
570
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
337
571
|
return propertyMetadata;
|
|
338
572
|
}
|
|
339
573
|
configureInjectMetadata(injectIndex, injectOptions) {
|
|
340
|
-
let
|
|
341
|
-
if (
|
|
342
|
-
|
|
343
|
-
this.
|
|
344
|
-
|
|
574
|
+
let injectOptionsMap = this.typeOptions.injectOptionsMap;
|
|
575
|
+
if (injectOptionsMap === undefined) {
|
|
576
|
+
injectOptionsMap = new Map();
|
|
577
|
+
this.typeOptions.injectOptionsMap = injectOptionsMap;
|
|
578
|
+
}
|
|
579
|
+
let injectMetadata = this.currentInjectMetadataMap.get(injectIndex);
|
|
580
|
+
if (injectMetadata === undefined) {
|
|
581
|
+
injectOptions = injectOptions !== null && injectOptions !== void 0 ? injectOptions : {};
|
|
582
|
+
injectMetadata = new InjectMetadata(this.typeManager, this.currentTypeFnMap, this, injectIndex, injectOptions);
|
|
583
|
+
this.currentInjectMetadataMap.set(injectIndex, injectMetadata);
|
|
584
|
+
injectOptionsMap.set(injectIndex, injectOptions);
|
|
585
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
345
586
|
return injectMetadata;
|
|
346
587
|
}
|
|
347
|
-
if (
|
|
588
|
+
if (injectOptions !== undefined) {
|
|
348
589
|
injectMetadata.configure(injectOptions);
|
|
349
590
|
}
|
|
591
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
350
592
|
return injectMetadata;
|
|
351
593
|
}
|
|
352
594
|
hasPropertyMetadataMap(propertyOptionsMap) {
|
|
595
|
+
const currentPropertyOptionsMap = this.clearPropertyOptionsMap(propertyOptionsMap);
|
|
353
596
|
for (const [propertyName, propertyOptions] of propertyOptionsMap) {
|
|
354
|
-
this.
|
|
597
|
+
const propertyMetadata = new PropertyMetadata(this.typeManager, this.currentTypeFnMap, this, propertyName, propertyOptions);
|
|
598
|
+
this.currentPropertyMetadataMap.set(propertyName, propertyMetadata);
|
|
599
|
+
currentPropertyOptionsMap.set(propertyName, propertyOptions);
|
|
355
600
|
}
|
|
601
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
356
602
|
return this;
|
|
357
603
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
604
|
+
clearPropertyOptionsMap(propertyOptionsMap) {
|
|
605
|
+
let currentPropertyOptionsMap = this.typeOptions.propertyOptionsMap;
|
|
606
|
+
if (currentPropertyOptionsMap === undefined) {
|
|
607
|
+
currentPropertyOptionsMap = new Map();
|
|
608
|
+
this.typeOptions.propertyOptionsMap = currentPropertyOptionsMap;
|
|
361
609
|
}
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
const typeExtensionMetadataCtorSet = this.extractCustomOption(typeExtensionMetadataCtorSetKey);
|
|
366
|
-
if (!typeExtensionMetadataCtorSet.has(typeExtensionMetadataCtor)) {
|
|
367
|
-
typeExtensionMetadataCtorSet.add(typeExtensionMetadataCtor);
|
|
610
|
+
if (currentPropertyOptionsMap !== propertyOptionsMap) {
|
|
611
|
+
currentPropertyOptionsMap.clear();
|
|
612
|
+
this.currentPropertyMetadataMap.clear();
|
|
368
613
|
}
|
|
369
|
-
|
|
370
|
-
const typeExtensionMetadata = new typeExtensionMetadataCtor(this, initialTypeExtensionOptions);
|
|
371
|
-
return typeExtensionMetadata;
|
|
614
|
+
return currentPropertyOptionsMap;
|
|
372
615
|
}
|
|
373
|
-
|
|
374
|
-
const
|
|
375
|
-
|
|
376
|
-
|
|
616
|
+
hasInjectMetadataMap(injectOptionsMap) {
|
|
617
|
+
const currentInjectOptionsMap = this.clearInjectOptionsMap(injectOptionsMap);
|
|
618
|
+
for (const [injectIndex, injectOptions] of injectOptionsMap) {
|
|
619
|
+
const injectMetadata = new InjectMetadata(this.typeManager, this.currentTypeFnMap, this, injectIndex, injectOptions);
|
|
620
|
+
this.currentInjectMetadataMap.set(injectIndex, injectMetadata);
|
|
621
|
+
currentInjectOptionsMap.set(injectIndex, injectOptions);
|
|
377
622
|
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
return typeExtensionMetadata;
|
|
623
|
+
this.currentTypeState = new UnresolvedTypeState(this);
|
|
624
|
+
return this;
|
|
381
625
|
}
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
626
|
+
clearInjectOptionsMap(injectOptionsMap) {
|
|
627
|
+
let currentInjectOptionsMap = this.typeOptions.injectOptionsMap;
|
|
628
|
+
if (currentInjectOptionsMap === undefined) {
|
|
629
|
+
currentInjectOptionsMap = new Map();
|
|
630
|
+
this.typeOptions.injectOptionsMap = currentInjectOptionsMap;
|
|
385
631
|
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
this.parentTypeMetadatas.push(parentTypeMetadata);
|
|
390
|
-
}
|
|
391
|
-
if (!this.typeOptions.parentTypeFns.some(ptf => ptf === parentTypeFn)) {
|
|
392
|
-
this.typeOptions.parentTypeFns.push(parentTypeFn);
|
|
393
|
-
}
|
|
632
|
+
if (currentInjectOptionsMap !== injectOptionsMap) {
|
|
633
|
+
currentInjectOptionsMap.clear();
|
|
634
|
+
this.currentInjectMetadataMap.clear();
|
|
394
635
|
}
|
|
395
|
-
|
|
396
|
-
this.hasDiscriminant(this.discriminant);
|
|
397
|
-
return this;
|
|
636
|
+
return currentInjectOptionsMap;
|
|
398
637
|
}
|
|
399
638
|
configure(typeOptions) {
|
|
400
|
-
if (
|
|
401
|
-
this.hasParentTypeFns(typeOptions.parentTypeFns);
|
|
402
|
-
}
|
|
403
|
-
if (!isUndefined(typeOptions.alias)) {
|
|
639
|
+
if (typeOptions.alias !== undefined) {
|
|
404
640
|
this.hasAlias(typeOptions.alias);
|
|
405
641
|
}
|
|
406
|
-
if (
|
|
407
|
-
this.
|
|
642
|
+
if (typeOptions.customValueMap !== undefined) {
|
|
643
|
+
this.hasCustomValueMap(typeOptions.customValueMap);
|
|
408
644
|
}
|
|
409
|
-
if (
|
|
645
|
+
if (typeOptions.defaultValue !== undefined) {
|
|
410
646
|
this.hasDefaultValue(typeOptions.defaultValue);
|
|
411
647
|
}
|
|
412
|
-
if (
|
|
648
|
+
if (typeOptions.serializedDefaultValue !== undefined) {
|
|
413
649
|
this.hasSerializedDefaultValue(typeOptions.serializedDefaultValue);
|
|
414
650
|
}
|
|
415
|
-
if (
|
|
651
|
+
if (typeOptions.deserializedDefaultValue !== undefined) {
|
|
416
652
|
this.hasDeserializedDefaultValue(typeOptions.deserializedDefaultValue);
|
|
417
653
|
}
|
|
418
|
-
if (
|
|
654
|
+
if (typeOptions.discriminator !== undefined) {
|
|
419
655
|
this.hasDiscriminator(typeOptions.discriminator);
|
|
420
656
|
}
|
|
421
|
-
if (
|
|
657
|
+
if (typeOptions.discriminant !== undefined) {
|
|
422
658
|
this.hasDiscriminant(typeOptions.discriminant);
|
|
423
659
|
}
|
|
424
|
-
if (
|
|
660
|
+
if (typeOptions.factory !== undefined) {
|
|
425
661
|
this.hasFactory(typeOptions.factory);
|
|
426
662
|
}
|
|
427
|
-
if (
|
|
663
|
+
if (typeOptions.injectable !== undefined) {
|
|
428
664
|
this.isInjectable(typeOptions.injectable);
|
|
429
665
|
}
|
|
430
|
-
if (
|
|
666
|
+
if (typeOptions.injector !== undefined) {
|
|
431
667
|
this.hasInjector(typeOptions.injector);
|
|
432
668
|
}
|
|
433
|
-
if (
|
|
434
|
-
this.
|
|
669
|
+
if (typeOptions.logger !== undefined) {
|
|
670
|
+
this.hasLogger(typeOptions.logger);
|
|
435
671
|
}
|
|
436
|
-
if (
|
|
672
|
+
if (typeOptions.namingConvention !== undefined) {
|
|
437
673
|
this.hasNamingConvention(typeOptions.namingConvention);
|
|
438
674
|
}
|
|
439
|
-
if (
|
|
675
|
+
if (typeOptions.preserveDiscriminator !== undefined) {
|
|
440
676
|
this.shouldPreserveDiscriminator(typeOptions.preserveDiscriminator);
|
|
441
677
|
}
|
|
442
|
-
if (
|
|
678
|
+
if (typeOptions.referenceHandler !== undefined) {
|
|
443
679
|
this.hasReferenceHandler(typeOptions.referenceHandler);
|
|
444
680
|
}
|
|
445
|
-
if (
|
|
681
|
+
if (typeOptions.serializer !== undefined) {
|
|
446
682
|
this.hasSerializer(typeOptions.serializer);
|
|
447
683
|
}
|
|
448
|
-
if (
|
|
684
|
+
if (typeOptions.preserveNull !== undefined) {
|
|
449
685
|
this.shouldPreserveNull(typeOptions.preserveNull);
|
|
450
686
|
}
|
|
451
|
-
if (
|
|
687
|
+
if (typeOptions.useDefaultValue !== undefined) {
|
|
452
688
|
this.shouldUseDefaultValue(typeOptions.useDefaultValue);
|
|
453
689
|
}
|
|
454
|
-
if (
|
|
690
|
+
if (typeOptions.useImplicitConversion !== undefined) {
|
|
455
691
|
this.shouldUseImplicitConversion(typeOptions.useImplicitConversion);
|
|
456
692
|
}
|
|
457
|
-
if (
|
|
693
|
+
if (typeOptions.propertyOptionsMap !== undefined) {
|
|
458
694
|
this.hasPropertyMetadataMap(typeOptions.propertyOptionsMap);
|
|
459
695
|
}
|
|
460
|
-
if (
|
|
696
|
+
if (typeOptions.injectOptionsMap !== undefined) {
|
|
461
697
|
this.hasInjectMetadataMap(typeOptions.injectOptionsMap);
|
|
462
698
|
}
|
|
463
|
-
if (
|
|
699
|
+
if (typeOptions.propertySorter !== undefined) {
|
|
464
700
|
this.hasPropertySorter(typeOptions.propertySorter);
|
|
465
701
|
}
|
|
466
|
-
if (
|
|
702
|
+
if (typeOptions.injectSorter !== undefined) {
|
|
467
703
|
this.hasInjectSorter(typeOptions.injectSorter);
|
|
468
704
|
}
|
|
705
|
+
if (typeOptions.parentTypeArguments !== undefined) {
|
|
706
|
+
this.hasParentTypeArguments(typeOptions.parentTypeArguments);
|
|
707
|
+
}
|
|
469
708
|
return this;
|
|
470
709
|
}
|
|
471
710
|
}
|