@visactor/vrender-core 0.19.6-alpha.3 → 0.19.7-alpha.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/cjs/allocator/bounds-allocate.js +1 -1
- package/cjs/allocator/bounds-allocate.js.map +1 -1
- package/cjs/allocator/canvas-allocate.js +9 -11
- package/cjs/allocator/canvas-allocate.js.map +1 -1
- package/cjs/allocator/graphic-allocate.js +9 -5
- package/cjs/allocator/graphic-allocate.js.map +1 -1
- package/cjs/allocator/matrix-allocate.js +6 -2
- package/cjs/allocator/matrix-allocate.js.map +1 -1
- package/cjs/animate/Ticker/default-ticker.js +14 -25
- package/cjs/animate/Ticker/default-ticker.js.map +1 -1
- package/cjs/animate/animate.js +7 -8
- package/cjs/animate/animate.js.map +1 -1
- package/cjs/animate/custom-animate.d.ts +1 -0
- package/cjs/animate/custom-animate.js +82 -67
- package/cjs/animate/custom-animate.js.map +1 -1
- package/cjs/animate/easing.js +8 -19
- package/cjs/animate/easing.js.map +1 -1
- package/cjs/animate/morphing.js +23 -20
- package/cjs/animate/morphing.js.map +1 -1
- package/cjs/application.js +1 -7
- package/cjs/application.js.map +1 -1
- package/cjs/canvas/conical-gradient.js +5 -12
- package/cjs/canvas/conical-gradient.js.map +1 -1
- package/cjs/canvas/contributions/base-canvas.js +7 -19
- package/cjs/canvas/contributions/base-canvas.js.map +1 -1
- package/cjs/color-string/interpolate.js +3 -5
- package/cjs/color-string/interpolate.js.map +1 -1
- package/cjs/color-string/store.js +1 -3
- package/cjs/color-string/store.js.map +1 -1
- package/cjs/common/bounds-context.js +0 -1
- package/cjs/common/bounds-context.js.map +1 -1
- package/cjs/common/canvas-utils.js +6 -3
- package/cjs/common/canvas-utils.js.map +1 -1
- package/cjs/common/contribution-provider.js +0 -3
- package/cjs/common/contribution-provider.js.map +1 -1
- package/cjs/common/custom-path2d.js +1 -7
- package/cjs/common/custom-path2d.js.map +1 -1
- package/cjs/common/generator.js +1 -2
- package/cjs/common/generator.js.map +1 -1
- package/cjs/common/inversify/binding.js +0 -12
- package/cjs/common/inversify/binding.js.map +1 -1
- package/cjs/common/inversify/container.js +0 -4
- package/cjs/common/inversify/container.js.map +1 -1
- package/cjs/common/inversify/cotainer-module.js +0 -2
- package/cjs/common/inversify/cotainer-module.js.map +1 -1
- package/cjs/common/inversify/meta-data.js +0 -2
- package/cjs/common/inversify/meta-data.js.map +1 -1
- package/cjs/common/inversify/syntax/binding_in_syntax.js +0 -1
- package/cjs/common/inversify/syntax/binding_in_syntax.js.map +1 -1
- package/cjs/common/inversify/syntax/binding_to_syntax.js +0 -1
- package/cjs/common/inversify/syntax/binding_to_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js +0 -1
- package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
- package/cjs/common/inversify-lite/bindings/binding.js +0 -14
- package/cjs/common/inversify-lite/bindings/binding.js.map +1 -1
- package/cjs/common/inversify-lite/container/container.js +46 -22
- package/cjs/common/inversify-lite/container/container.js.map +1 -1
- package/cjs/common/inversify-lite/container/container_module.js +0 -4
- package/cjs/common/inversify-lite/container/container_module.js.map +1 -1
- package/cjs/common/inversify-lite/container/lookup.js +0 -1
- package/cjs/common/inversify-lite/container/lookup.js.map +1 -1
- package/cjs/common/inversify-lite/planning/context.js +0 -4
- package/cjs/common/inversify-lite/planning/context.js.map +1 -1
- package/cjs/common/inversify-lite/planning/metadata.js +0 -2
- package/cjs/common/inversify-lite/planning/metadata.js.map +1 -1
- package/cjs/common/inversify-lite/planning/plan.js +0 -2
- package/cjs/common/inversify-lite/planning/plan.js.map +1 -1
- package/cjs/common/inversify-lite/planning/queryable_string.js +0 -1
- package/cjs/common/inversify-lite/planning/queryable_string.js.map +1 -1
- package/cjs/common/inversify-lite/planning/request.js +0 -8
- package/cjs/common/inversify-lite/planning/request.js.map +1 -1
- package/cjs/common/inversify-lite/planning/target.js +0 -7
- package/cjs/common/inversify-lite/planning/target.js.map +1 -1
- package/cjs/common/inversify-lite/resolution/instantiation.js +42 -16
- package/cjs/common/inversify-lite/resolution/instantiation.js.map +1 -1
- package/cjs/common/inversify-lite/scope/scope.js +29 -3
- package/cjs/common/inversify-lite/scope/scope.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_in_syntax.js +0 -1
- package/cjs/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js +0 -3
- package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_on_syntax.js +0 -1
- package/cjs/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_to_syntax.js +0 -1
- package/cjs/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js +0 -2
- package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_when_syntax.js +0 -1
- package/cjs/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
- package/cjs/common/polygon.js +2 -1
- package/cjs/common/polygon.js.map +1 -1
- package/cjs/common/render-area.js +3 -2
- package/cjs/common/render-area.js.map +1 -1
- package/cjs/common/render-curve.js +8 -4
- package/cjs/common/render-curve.js.map +1 -1
- package/cjs/common/seg-context.js +3 -12
- package/cjs/common/seg-context.js.map +1 -1
- package/cjs/common/segment/basis.js +0 -13
- package/cjs/common/segment/basis.js.map +1 -1
- package/cjs/common/segment/common.js +2 -2
- package/cjs/common/segment/common.js.map +1 -1
- package/cjs/common/segment/curve/arc.js +2 -2
- package/cjs/common/segment/curve/arc.js.map +1 -1
- package/cjs/common/segment/curve/base.js +0 -4
- package/cjs/common/segment/curve/base.js.map +1 -1
- package/cjs/common/segment/curve/cubic-bezier.js +2 -2
- package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
- package/cjs/common/segment/curve/curve-context.js +0 -4
- package/cjs/common/segment/curve/curve-context.js.map +1 -1
- package/cjs/common/segment/curve/ellipse.js +3 -3
- package/cjs/common/segment/curve/ellipse.js.map +1 -1
- package/cjs/common/segment/curve/line.js +1 -2
- package/cjs/common/segment/curve/line.js.map +1 -1
- package/cjs/common/segment/curve/move.js +1 -2
- package/cjs/common/segment/curve/move.js.map +1 -1
- package/cjs/common/segment/curve/path.js +0 -2
- package/cjs/common/segment/curve/path.js.map +1 -1
- package/cjs/common/segment/curve/quadratic-bezier.js +2 -2
- package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
- package/cjs/common/segment/linear.js +0 -10
- package/cjs/common/segment/linear.js.map +1 -1
- package/cjs/common/segment/monotone.js +0 -13
- package/cjs/common/segment/monotone.js.map +1 -1
- package/cjs/common/segment/step.js +2 -13
- package/cjs/common/segment/step.js.map +1 -1
- package/cjs/common/sort.js +34 -3
- package/cjs/common/sort.js.map +1 -1
- package/cjs/common/split-path.js +11 -4
- package/cjs/common/split-path.js.map +1 -1
- package/cjs/common/utils.js +4 -8
- package/cjs/common/utils.js.map +1 -1
- package/cjs/common/xml/parser.js +2 -3
- package/cjs/common/xml/parser.js.map +1 -1
- package/cjs/core/camera.js +4 -11
- package/cjs/core/camera.js.map +1 -1
- package/cjs/core/contributions/env/base-contribution.js +0 -6
- package/cjs/core/contributions/env/base-contribution.js.map +1 -1
- package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +11 -20
- package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
- package/cjs/core/contributions/layerHandler/empty-contribution.js +8 -8
- package/cjs/core/contributions/layerHandler/empty-contribution.js.map +1 -1
- package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +6 -5
- package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
- package/cjs/core/contributions/textMeasure/AtextMeasure.js +8 -11
- package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
- package/cjs/core/contributions/textMeasure/layout.js +0 -3
- package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
- package/cjs/core/contributions/window/base-contribution.js +0 -2
- package/cjs/core/contributions/window/base-contribution.js.map +1 -1
- package/cjs/core/global.js +0 -8
- package/cjs/core/global.js.map +1 -1
- package/cjs/core/graphic-utils.js +5 -16
- package/cjs/core/graphic-utils.js.map +1 -1
- package/cjs/core/layer-service.js +7 -7
- package/cjs/core/layer-service.js.map +1 -1
- package/cjs/core/layer.js +9 -7
- package/cjs/core/layer.js.map +1 -1
- package/cjs/core/stage.js +34 -68
- package/cjs/core/stage.js.map +1 -1
- package/cjs/core/window.js +13 -16
- package/cjs/core/window.js.map +1 -1
- package/cjs/event/event-manager.js +145 -153
- package/cjs/event/event-manager.js.map +1 -1
- package/cjs/event/event-system.js +43 -60
- package/cjs/event/event-system.js.map +1 -1
- package/cjs/event/event-target.js +3 -1
- package/cjs/event/event-target.js.map +1 -1
- package/cjs/event/federated-event/base-event.js +15 -43
- package/cjs/event/federated-event/base-event.js.map +1 -1
- package/cjs/event/federated-event/mouse-event.js +18 -27
- package/cjs/event/federated-event/mouse-event.js.map +1 -1
- package/cjs/event/federated-event/pointer-event.js +8 -12
- package/cjs/event/federated-event/pointer-event.js.map +1 -1
- package/cjs/event/federated-event/wheel-event.js +10 -13
- package/cjs/event/federated-event/wheel-event.js.map +1 -1
- package/cjs/graphic/arc.js +5 -10
- package/cjs/graphic/arc.js.map +1 -1
- package/cjs/graphic/arc3d.js +4 -7
- package/cjs/graphic/arc3d.js.map +1 -1
- package/cjs/graphic/area.js +9 -14
- package/cjs/graphic/area.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow.js +3 -2
- package/cjs/graphic/builtin-symbol/arrow.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-down.js +3 -2
- package/cjs/graphic/builtin-symbol/arrow2-down.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-left.js +3 -2
- package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-right.js +3 -2
- package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-up.js +3 -2
- package/cjs/graphic/builtin-symbol/arrow2-up.js.map +1 -1
- package/cjs/graphic/builtin-symbol/circle.js +3 -2
- package/cjs/graphic/builtin-symbol/circle.js.map +1 -1
- package/cjs/graphic/builtin-symbol/close.js +3 -2
- package/cjs/graphic/builtin-symbol/close.js.map +1 -1
- package/cjs/graphic/builtin-symbol/cross.js +3 -2
- package/cjs/graphic/builtin-symbol/cross.js.map +1 -1
- package/cjs/graphic/builtin-symbol/diamond.js +3 -2
- package/cjs/graphic/builtin-symbol/diamond.js.map +1 -1
- package/cjs/graphic/builtin-symbol/line-h.js +3 -2
- package/cjs/graphic/builtin-symbol/line-h.js.map +1 -1
- package/cjs/graphic/builtin-symbol/line-v.js +3 -2
- package/cjs/graphic/builtin-symbol/line-v.js.map +1 -1
- package/cjs/graphic/builtin-symbol/rect.js +3 -2
- package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
- package/cjs/graphic/builtin-symbol/square.js +3 -2
- package/cjs/graphic/builtin-symbol/square.js.map +1 -1
- package/cjs/graphic/builtin-symbol/star.js +3 -2
- package/cjs/graphic/builtin-symbol/star.js.map +1 -1
- package/cjs/graphic/builtin-symbol/stroke.js +3 -2
- package/cjs/graphic/builtin-symbol/stroke.js.map +1 -1
- package/cjs/graphic/builtin-symbol/thin-triangle.js +3 -2
- package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-down.js +3 -2
- package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-left.js +3 -2
- package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-right.js +3 -2
- package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-up.js +3 -2
- package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle.js +3 -1
- package/cjs/graphic/builtin-symbol/triangle.js.map +1 -1
- package/cjs/graphic/builtin-symbol/utils.js +1 -6
- package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
- package/cjs/graphic/builtin-symbol/wedge.js +3 -2
- package/cjs/graphic/builtin-symbol/wedge.js.map +1 -1
- package/cjs/graphic/builtin-symbol/wye.js +3 -2
- package/cjs/graphic/builtin-symbol/wye.js.map +1 -1
- package/cjs/graphic/circle.js +6 -8
- package/cjs/graphic/circle.js.map +1 -1
- package/cjs/graphic/config.js +32 -58
- package/cjs/graphic/config.js.map +1 -1
- package/cjs/graphic/glyph.js +9 -10
- package/cjs/graphic/glyph.js.map +1 -1
- package/cjs/graphic/graphic-service/graphic-service.js +8 -12
- package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
- package/cjs/graphic/graphic.js +44 -27
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/group.js +5 -9
- package/cjs/graphic/group.js.map +1 -1
- package/cjs/graphic/image.js +16 -18
- package/cjs/graphic/image.js.map +1 -1
- package/cjs/graphic/line.js +6 -11
- package/cjs/graphic/line.js.map +1 -1
- package/cjs/graphic/node-tree.js +44 -25
- package/cjs/graphic/node-tree.js.map +1 -1
- package/cjs/graphic/path.js +6 -12
- package/cjs/graphic/path.js.map +1 -1
- package/cjs/graphic/polygon.js +4 -7
- package/cjs/graphic/polygon.js.map +1 -1
- package/cjs/graphic/pyramid3d.js +3 -4
- package/cjs/graphic/pyramid3d.js.map +1 -1
- package/cjs/graphic/rect.js +3 -7
- package/cjs/graphic/rect.js.map +1 -1
- package/cjs/graphic/rect3d.js +4 -5
- package/cjs/graphic/rect3d.js.map +1 -1
- package/cjs/graphic/richtext/frame.js +0 -19
- package/cjs/graphic/richtext/frame.js.map +1 -1
- package/cjs/graphic/richtext/icon.js +6 -14
- package/cjs/graphic/richtext/icon.js.map +1 -1
- package/cjs/graphic/richtext/line.js +2 -14
- package/cjs/graphic/richtext/line.js.map +1 -1
- package/cjs/graphic/richtext/paragraph.js +0 -22
- package/cjs/graphic/richtext/paragraph.js.map +1 -1
- package/cjs/graphic/richtext/utils.js +2 -1
- package/cjs/graphic/richtext/utils.js.map +1 -1
- package/cjs/graphic/richtext/wrapper.js +0 -12
- package/cjs/graphic/richtext/wrapper.js.map +1 -1
- package/cjs/graphic/richtext.js +45 -38
- package/cjs/graphic/richtext.js.map +1 -1
- package/cjs/graphic/shadow-root.js +1 -2
- package/cjs/graphic/shadow-root.js.map +1 -1
- package/cjs/graphic/symbol.js +5 -12
- package/cjs/graphic/symbol.js.map +1 -1
- package/cjs/graphic/text.js +45 -45
- package/cjs/graphic/text.js.map +1 -1
- package/cjs/graphic/theme.js +0 -4
- package/cjs/graphic/theme.js.map +1 -1
- package/cjs/graphic/tools.js +44 -16
- package/cjs/graphic/tools.js.map +1 -1
- package/cjs/graphic/wrap-text.js +7 -7
- package/cjs/graphic/wrap-text.js.map +1 -1
- package/cjs/picker/global-picker-service.js +0 -1
- package/cjs/picker/global-picker-service.js.map +1 -1
- package/cjs/picker/pick-interceptor.js +15 -5
- package/cjs/picker/pick-interceptor.js.map +1 -1
- package/cjs/picker/picker-service.js +5 -5
- package/cjs/picker/picker-service.js.map +1 -1
- package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js +20 -26
- package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/auto-render-plugin.js +4 -5
- package/cjs/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js +4 -5
- package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +8 -11
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +19 -28
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js +8 -12
- package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/react-attribute-plugin.js +7 -6
- package/cjs/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
- package/cjs/plugins/plugin-service.js +0 -1
- package/cjs/plugins/plugin-service.js.map +1 -1
- package/cjs/render/contributions/render/arc-render.js +4 -6
- package/cjs/render/contributions/render/arc-render.js.map +1 -1
- package/cjs/render/contributions/render/arc3d-render.js +7 -5
- package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
- package/cjs/render/contributions/render/area-render.js +23 -21
- package/cjs/render/contributions/render/area-render.js.map +1 -1
- package/cjs/render/contributions/render/base-render.js +0 -5
- package/cjs/render/contributions/render/base-render.js.map +1 -1
- package/cjs/render/contributions/render/circle-render.js +4 -6
- package/cjs/render/contributions/render/circle-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/arc-contribution-render.js +4 -3
- package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js +9 -6
- package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-contribution-render.js +8 -10
- package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js +4 -4
- package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/circle-contribution-render.js +4 -3
- package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/group-contribution-render.js +3 -1
- package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.js +3 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js +14 -11
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +4 -3
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/text-contribution-render.js +8 -6
- package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/draw-contribution.js +14 -12
- package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/draw-interceptor.js +21 -11
- package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
- package/cjs/render/contributions/render/glyph-render.js +3 -2
- package/cjs/render/contributions/render/glyph-render.js.map +1 -1
- package/cjs/render/contributions/render/graphic-render.js +1 -4
- package/cjs/render/contributions/render/graphic-render.js.map +1 -1
- package/cjs/render/contributions/render/group-render.js +3 -7
- package/cjs/render/contributions/render/group-render.js.map +1 -1
- package/cjs/render/contributions/render/image-render.js +2 -4
- package/cjs/render/contributions/render/image-render.js.map +1 -1
- package/cjs/render/contributions/render/incremental-area-render.js +3 -1
- package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
- package/cjs/render/contributions/render/incremental-draw-contribution.js +109 -80
- package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/incremental-line-render.js +3 -1
- package/cjs/render/contributions/render/incremental-line-render.js.map +1 -1
- package/cjs/render/contributions/render/line-render.js +16 -12
- package/cjs/render/contributions/render/line-render.js.map +1 -1
- package/cjs/render/contributions/render/path-render.js +7 -8
- package/cjs/render/contributions/render/path-render.js.map +1 -1
- package/cjs/render/contributions/render/polygon-render.js +4 -6
- package/cjs/render/contributions/render/polygon-render.js.map +1 -1
- package/cjs/render/contributions/render/pyramid3d-render.js +5 -3
- package/cjs/render/contributions/render/pyramid3d-render.js.map +1 -1
- package/cjs/render/contributions/render/rect-render.js +7 -8
- package/cjs/render/contributions/render/rect-render.js.map +1 -1
- package/cjs/render/contributions/render/rect3d-render.js +7 -5
- package/cjs/render/contributions/render/rect3d-render.js.map +1 -1
- package/cjs/render/contributions/render/richtext-render.js +3 -4
- package/cjs/render/contributions/render/richtext-render.js.map +1 -1
- package/cjs/render/contributions/render/symbol-render.js +14 -11
- package/cjs/render/contributions/render/symbol-render.js.map +1 -1
- package/cjs/render/contributions/render/text-render.js +8 -8
- package/cjs/render/contributions/render/text-render.js.map +1 -1
- package/cjs/render/contributions/render/utils.js +1 -1
- package/cjs/render/contributions/render/utils.js.map +1 -1
- package/cjs/render/render-service.js +2 -11
- package/cjs/render/render-service.js.map +1 -1
- package/cjs/resource-loader/loader.js +16 -13
- package/cjs/resource-loader/loader.js.map +1 -1
- package/cjs/tapable/Hook.js +0 -3
- package/cjs/tapable/Hook.js.map +1 -1
- package/dist/index.es.js +1759 -2166
- package/es/allocator/bounds-allocate.js +1 -1
- package/es/allocator/bounds-allocate.js.map +1 -1
- package/es/allocator/canvas-allocate.js +9 -11
- package/es/allocator/canvas-allocate.js.map +1 -1
- package/es/allocator/graphic-allocate.js +9 -5
- package/es/allocator/graphic-allocate.js.map +1 -1
- package/es/allocator/matrix-allocate.js +6 -2
- package/es/allocator/matrix-allocate.js.map +1 -1
- package/es/animate/Ticker/default-ticker.js +14 -25
- package/es/animate/Ticker/default-ticker.js.map +1 -1
- package/es/animate/animate.js +8 -7
- package/es/animate/animate.js.map +1 -1
- package/es/animate/custom-animate.d.ts +1 -0
- package/es/animate/custom-animate.js +81 -65
- package/es/animate/custom-animate.js.map +1 -1
- package/es/animate/easing.js +8 -18
- package/es/animate/easing.js.map +1 -1
- package/es/animate/morphing.js +23 -20
- package/es/animate/morphing.js.map +1 -1
- package/es/application.js +1 -7
- package/es/application.js.map +1 -1
- package/es/canvas/conical-gradient.js +6 -12
- package/es/canvas/conical-gradient.js.map +1 -1
- package/es/canvas/contributions/base-canvas.js +7 -19
- package/es/canvas/contributions/base-canvas.js.map +1 -1
- package/es/color-string/interpolate.js +3 -5
- package/es/color-string/interpolate.js.map +1 -1
- package/es/color-string/store.js +2 -2
- package/es/color-string/store.js.map +1 -1
- package/es/common/bounds-context.js +0 -1
- package/es/common/bounds-context.js.map +1 -1
- package/es/common/canvas-utils.js +6 -3
- package/es/common/canvas-utils.js.map +1 -1
- package/es/common/contribution-provider.js +0 -3
- package/es/common/contribution-provider.js.map +1 -1
- package/es/common/custom-path2d.js +1 -7
- package/es/common/custom-path2d.js.map +1 -1
- package/es/common/generator.js +2 -1
- package/es/common/generator.js.map +1 -1
- package/es/common/inversify/binding.js +0 -12
- package/es/common/inversify/binding.js.map +1 -1
- package/es/common/inversify/container.js +0 -4
- package/es/common/inversify/container.js.map +1 -1
- package/es/common/inversify/cotainer-module.js +0 -2
- package/es/common/inversify/cotainer-module.js.map +1 -1
- package/es/common/inversify/meta-data.js +0 -2
- package/es/common/inversify/meta-data.js.map +1 -1
- package/es/common/inversify/syntax/binding_in_syntax.js +0 -1
- package/es/common/inversify/syntax/binding_in_syntax.js.map +1 -1
- package/es/common/inversify/syntax/binding_to_syntax.js +0 -1
- package/es/common/inversify/syntax/binding_to_syntax.js.map +1 -1
- package/es/common/inversify-lite/annotation/lazy_service_identifier.js +0 -1
- package/es/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
- package/es/common/inversify-lite/bindings/binding.js +0 -14
- package/es/common/inversify-lite/bindings/binding.js.map +1 -1
- package/es/common/inversify-lite/container/container.js +48 -22
- package/es/common/inversify-lite/container/container.js.map +1 -1
- package/es/common/inversify-lite/container/container_module.js +0 -4
- package/es/common/inversify-lite/container/container_module.js.map +1 -1
- package/es/common/inversify-lite/container/lookup.js +0 -1
- package/es/common/inversify-lite/container/lookup.js.map +1 -1
- package/es/common/inversify-lite/planning/context.js +0 -4
- package/es/common/inversify-lite/planning/context.js.map +1 -1
- package/es/common/inversify-lite/planning/metadata.js +0 -2
- package/es/common/inversify-lite/planning/metadata.js.map +1 -1
- package/es/common/inversify-lite/planning/plan.js +0 -2
- package/es/common/inversify-lite/planning/plan.js.map +1 -1
- package/es/common/inversify-lite/planning/queryable_string.js +0 -1
- package/es/common/inversify-lite/planning/queryable_string.js.map +1 -1
- package/es/common/inversify-lite/planning/request.js +0 -8
- package/es/common/inversify-lite/planning/request.js.map +1 -1
- package/es/common/inversify-lite/planning/target.js +0 -7
- package/es/common/inversify-lite/planning/target.js.map +1 -1
- package/es/common/inversify-lite/resolution/instantiation.js +44 -16
- package/es/common/inversify-lite/resolution/instantiation.js.map +1 -1
- package/es/common/inversify-lite/scope/scope.js +29 -3
- package/es/common/inversify-lite/scope/scope.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_in_syntax.js +0 -1
- package/es/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js +0 -3
- package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_on_syntax.js +0 -1
- package/es/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_to_syntax.js +0 -1
- package/es/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_when_on_syntax.js +0 -2
- package/es/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_when_syntax.js +0 -1
- package/es/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
- package/es/common/polygon.js +2 -1
- package/es/common/polygon.js.map +1 -1
- package/es/common/render-area.js +3 -2
- package/es/common/render-area.js.map +1 -1
- package/es/common/render-curve.js +8 -4
- package/es/common/render-curve.js.map +1 -1
- package/es/common/seg-context.js +3 -12
- package/es/common/seg-context.js.map +1 -1
- package/es/common/segment/basis.js +0 -13
- package/es/common/segment/basis.js.map +1 -1
- package/es/common/segment/common.js +1 -1
- package/es/common/segment/common.js.map +1 -1
- package/es/common/segment/curve/arc.js +1 -2
- package/es/common/segment/curve/arc.js.map +1 -1
- package/es/common/segment/curve/base.js +0 -4
- package/es/common/segment/curve/base.js.map +1 -1
- package/es/common/segment/curve/cubic-bezier.js +2 -2
- package/es/common/segment/curve/cubic-bezier.js.map +1 -1
- package/es/common/segment/curve/curve-context.js +0 -4
- package/es/common/segment/curve/curve-context.js.map +1 -1
- package/es/common/segment/curve/ellipse.js +3 -3
- package/es/common/segment/curve/ellipse.js.map +1 -1
- package/es/common/segment/curve/line.js +1 -2
- package/es/common/segment/curve/line.js.map +1 -1
- package/es/common/segment/curve/move.js +1 -2
- package/es/common/segment/curve/move.js.map +1 -1
- package/es/common/segment/curve/path.js +0 -2
- package/es/common/segment/curve/path.js.map +1 -1
- package/es/common/segment/curve/quadratic-bezier.js +2 -2
- package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
- package/es/common/segment/linear.js +0 -10
- package/es/common/segment/linear.js.map +1 -1
- package/es/common/segment/monotone.js +0 -13
- package/es/common/segment/monotone.js.map +1 -1
- package/es/common/segment/step.js +1 -12
- package/es/common/segment/step.js.map +1 -1
- package/es/common/sort.js +34 -3
- package/es/common/sort.js.map +1 -1
- package/es/common/split-path.js +11 -4
- package/es/common/split-path.js.map +1 -1
- package/es/common/utils.js +5 -7
- package/es/common/utils.js.map +1 -1
- package/es/common/xml/parser.js +2 -2
- package/es/common/xml/parser.js.map +1 -1
- package/es/core/camera.js +4 -11
- package/es/core/camera.js.map +1 -1
- package/es/core/contributions/env/base-contribution.js +0 -6
- package/es/core/contributions/env/base-contribution.js.map +1 -1
- package/es/core/contributions/layerHandler/canvas2d-contribution.js +11 -20
- package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
- package/es/core/contributions/layerHandler/empty-contribution.js +8 -8
- package/es/core/contributions/layerHandler/empty-contribution.js.map +1 -1
- package/es/core/contributions/layerHandler/offscreen2d-contribution.js +6 -5
- package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
- package/es/core/contributions/textMeasure/AtextMeasure.js +8 -11
- package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
- package/es/core/contributions/textMeasure/layout.js +0 -3
- package/es/core/contributions/textMeasure/layout.js.map +1 -1
- package/es/core/contributions/window/base-contribution.js +0 -2
- package/es/core/contributions/window/base-contribution.js.map +1 -1
- package/es/core/global.js +0 -8
- package/es/core/global.js.map +1 -1
- package/es/core/graphic-utils.js +5 -16
- package/es/core/graphic-utils.js.map +1 -1
- package/es/core/layer-service.js +7 -7
- package/es/core/layer-service.js.map +1 -1
- package/es/core/layer.js +9 -7
- package/es/core/layer.js.map +1 -1
- package/es/core/stage.js +34 -68
- package/es/core/stage.js.map +1 -1
- package/es/core/window.js +14 -16
- package/es/core/window.js.map +1 -1
- package/es/event/event-manager.js +145 -153
- package/es/event/event-manager.js.map +1 -1
- package/es/event/event-system.js +43 -60
- package/es/event/event-system.js.map +1 -1
- package/es/event/event-target.js +3 -1
- package/es/event/event-target.js.map +1 -1
- package/es/event/federated-event/base-event.js +15 -43
- package/es/event/federated-event/base-event.js.map +1 -1
- package/es/event/federated-event/mouse-event.js +18 -27
- package/es/event/federated-event/mouse-event.js.map +1 -1
- package/es/event/federated-event/pointer-event.js +8 -12
- package/es/event/federated-event/pointer-event.js.map +1 -1
- package/es/event/federated-event/wheel-event.js +11 -12
- package/es/event/federated-event/wheel-event.js.map +1 -1
- package/es/graphic/arc.js +6 -9
- package/es/graphic/arc.js.map +1 -1
- package/es/graphic/arc3d.js +5 -6
- package/es/graphic/arc3d.js.map +1 -1
- package/es/graphic/area.js +10 -13
- package/es/graphic/area.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow.js +3 -2
- package/es/graphic/builtin-symbol/arrow.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow2-down.js +3 -2
- package/es/graphic/builtin-symbol/arrow2-down.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow2-left.js +3 -2
- package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow2-right.js +3 -2
- package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow2-up.js +3 -2
- package/es/graphic/builtin-symbol/arrow2-up.js.map +1 -1
- package/es/graphic/builtin-symbol/circle.js +3 -2
- package/es/graphic/builtin-symbol/circle.js.map +1 -1
- package/es/graphic/builtin-symbol/close.js +3 -2
- package/es/graphic/builtin-symbol/close.js.map +1 -1
- package/es/graphic/builtin-symbol/cross.js +3 -2
- package/es/graphic/builtin-symbol/cross.js.map +1 -1
- package/es/graphic/builtin-symbol/diamond.js +3 -2
- package/es/graphic/builtin-symbol/diamond.js.map +1 -1
- package/es/graphic/builtin-symbol/line-h.js +3 -2
- package/es/graphic/builtin-symbol/line-h.js.map +1 -1
- package/es/graphic/builtin-symbol/line-v.js +3 -2
- package/es/graphic/builtin-symbol/line-v.js.map +1 -1
- package/es/graphic/builtin-symbol/rect.js +3 -2
- package/es/graphic/builtin-symbol/rect.js.map +1 -1
- package/es/graphic/builtin-symbol/square.js +3 -2
- package/es/graphic/builtin-symbol/square.js.map +1 -1
- package/es/graphic/builtin-symbol/star.js +3 -2
- package/es/graphic/builtin-symbol/star.js.map +1 -1
- package/es/graphic/builtin-symbol/stroke.js +3 -2
- package/es/graphic/builtin-symbol/stroke.js.map +1 -1
- package/es/graphic/builtin-symbol/thin-triangle.js +3 -2
- package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-down.js +3 -2
- package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-left.js +3 -2
- package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-right.js +3 -2
- package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-up.js +3 -2
- package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle.js +3 -1
- package/es/graphic/builtin-symbol/triangle.js.map +1 -1
- package/es/graphic/builtin-symbol/utils.js +2 -6
- package/es/graphic/builtin-symbol/utils.js.map +1 -1
- package/es/graphic/builtin-symbol/wedge.js +3 -2
- package/es/graphic/builtin-symbol/wedge.js.map +1 -1
- package/es/graphic/builtin-symbol/wye.js +3 -2
- package/es/graphic/builtin-symbol/wye.js.map +1 -1
- package/es/graphic/circle.js +6 -7
- package/es/graphic/circle.js.map +1 -1
- package/es/graphic/config.js +44 -72
- package/es/graphic/config.js.map +1 -1
- package/es/graphic/glyph.js +9 -9
- package/es/graphic/glyph.js.map +1 -1
- package/es/graphic/graphic-service/graphic-service.js +8 -12
- package/es/graphic/graphic-service/graphic-service.js.map +1 -1
- package/es/graphic/graphic.js +44 -27
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/group.js +5 -8
- package/es/graphic/group.js.map +1 -1
- package/es/graphic/image.js +16 -17
- package/es/graphic/image.js.map +1 -1
- package/es/graphic/line.js +7 -10
- package/es/graphic/line.js.map +1 -1
- package/es/graphic/node-tree.js +44 -25
- package/es/graphic/node-tree.js.map +1 -1
- package/es/graphic/path.js +7 -11
- package/es/graphic/path.js.map +1 -1
- package/es/graphic/polygon.js +4 -6
- package/es/graphic/polygon.js.map +1 -1
- package/es/graphic/pyramid3d.js +3 -3
- package/es/graphic/pyramid3d.js.map +1 -1
- package/es/graphic/rect.js +4 -6
- package/es/graphic/rect.js.map +1 -1
- package/es/graphic/rect3d.js +4 -4
- package/es/graphic/rect3d.js.map +1 -1
- package/es/graphic/richtext/frame.js +0 -19
- package/es/graphic/richtext/frame.js.map +1 -1
- package/es/graphic/richtext/icon.js +6 -14
- package/es/graphic/richtext/icon.js.map +1 -1
- package/es/graphic/richtext/line.js +2 -14
- package/es/graphic/richtext/line.js.map +1 -1
- package/es/graphic/richtext/paragraph.js +0 -22
- package/es/graphic/richtext/paragraph.js.map +1 -1
- package/es/graphic/richtext/utils.js +2 -1
- package/es/graphic/richtext/utils.js.map +1 -1
- package/es/graphic/richtext/wrapper.js +0 -12
- package/es/graphic/richtext/wrapper.js.map +1 -1
- package/es/graphic/richtext.js +46 -37
- package/es/graphic/richtext.js.map +1 -1
- package/es/graphic/shadow-root.js +1 -2
- package/es/graphic/shadow-root.js.map +1 -1
- package/es/graphic/symbol.js +6 -11
- package/es/graphic/symbol.js.map +1 -1
- package/es/graphic/text.js +40 -39
- package/es/graphic/text.js.map +1 -1
- package/es/graphic/theme.js +0 -4
- package/es/graphic/theme.js.map +1 -1
- package/es/graphic/tools.js +44 -16
- package/es/graphic/tools.js.map +1 -1
- package/es/graphic/wrap-text.js +6 -6
- package/es/graphic/wrap-text.js.map +1 -1
- package/es/picker/global-picker-service.js +0 -1
- package/es/picker/global-picker-service.js.map +1 -1
- package/es/picker/pick-interceptor.js +15 -5
- package/es/picker/pick-interceptor.js.map +1 -1
- package/es/picker/picker-service.js +5 -5
- package/es/picker/picker-service.js.map +1 -1
- package/es/plugins/builtin-plugin/3dview-transform-plugin.js +20 -26
- package/es/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/auto-render-plugin.js +4 -5
- package/es/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/dirty-bounds-plugin.js +4 -5
- package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/flex-layout-plugin.js +8 -11
- package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/html-attribute-plugin.js +17 -28
- package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js +8 -12
- package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/react-attribute-plugin.js +6 -6
- package/es/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
- package/es/plugins/plugin-service.js +0 -1
- package/es/plugins/plugin-service.js.map +1 -1
- package/es/render/contributions/render/arc-render.js +4 -6
- package/es/render/contributions/render/arc-render.js.map +1 -1
- package/es/render/contributions/render/arc3d-render.js +7 -5
- package/es/render/contributions/render/arc3d-render.js.map +1 -1
- package/es/render/contributions/render/area-render.js +23 -21
- package/es/render/contributions/render/area-render.js.map +1 -1
- package/es/render/contributions/render/base-render.js +0 -5
- package/es/render/contributions/render/base-render.js.map +1 -1
- package/es/render/contributions/render/circle-render.js +4 -6
- package/es/render/contributions/render/circle-render.js.map +1 -1
- package/es/render/contributions/render/contributions/arc-contribution-render.js +3 -3
- package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/area-texture-contribution-render.js +5 -2
- package/es/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-contribution-render.js +7 -10
- package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-texture-contribution-render.js +3 -4
- package/es/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/circle-contribution-render.js +3 -3
- package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/group-contribution-render.js +3 -1
- package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.js +3 -1
- package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/rect-contribution-render.js +11 -11
- package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.js +3 -3
- package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/text-contribution-render.js +8 -6
- package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/es/render/contributions/render/draw-contribution.js +14 -12
- package/es/render/contributions/render/draw-contribution.js.map +1 -1
- package/es/render/contributions/render/draw-interceptor.js +21 -11
- package/es/render/contributions/render/draw-interceptor.js.map +1 -1
- package/es/render/contributions/render/glyph-render.js +3 -2
- package/es/render/contributions/render/glyph-render.js.map +1 -1
- package/es/render/contributions/render/graphic-render.js +1 -4
- package/es/render/contributions/render/graphic-render.js.map +1 -1
- package/es/render/contributions/render/group-render.js +3 -7
- package/es/render/contributions/render/group-render.js.map +1 -1
- package/es/render/contributions/render/image-render.js +2 -5
- package/es/render/contributions/render/image-render.js.map +1 -1
- package/es/render/contributions/render/incremental-area-render.js +3 -1
- package/es/render/contributions/render/incremental-area-render.js.map +1 -1
- package/es/render/contributions/render/incremental-draw-contribution.js +109 -80
- package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/es/render/contributions/render/incremental-line-render.js +3 -1
- package/es/render/contributions/render/incremental-line-render.js.map +1 -1
- package/es/render/contributions/render/line-render.js +16 -12
- package/es/render/contributions/render/line-render.js.map +1 -1
- package/es/render/contributions/render/path-render.js +6 -8
- package/es/render/contributions/render/path-render.js.map +1 -1
- package/es/render/contributions/render/polygon-render.js +4 -6
- package/es/render/contributions/render/polygon-render.js.map +1 -1
- package/es/render/contributions/render/pyramid3d-render.js +5 -3
- package/es/render/contributions/render/pyramid3d-render.js.map +1 -1
- package/es/render/contributions/render/rect-render.js +6 -8
- package/es/render/contributions/render/rect-render.js.map +1 -1
- package/es/render/contributions/render/rect3d-render.js +7 -5
- package/es/render/contributions/render/rect3d-render.js.map +1 -1
- package/es/render/contributions/render/richtext-render.js +3 -4
- package/es/render/contributions/render/richtext-render.js.map +1 -1
- package/es/render/contributions/render/symbol-render.js +14 -11
- package/es/render/contributions/render/symbol-render.js.map +1 -1
- package/es/render/contributions/render/text-render.js +8 -9
- package/es/render/contributions/render/text-render.js.map +1 -1
- package/es/render/contributions/render/utils.js +1 -1
- package/es/render/contributions/render/utils.js.map +1 -1
- package/es/render/render-service.js +2 -11
- package/es/render/render-service.js.map +1 -1
- package/es/resource-loader/loader.js +17 -12
- package/es/resource-loader/loader.js.map +1 -1
- package/es/tapable/Hook.js +0 -3
- package/es/tapable/Hook.js.map +1 -1
- package/package.json +6 -5
|
@@ -7,10 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
const generator_1 = require("../generator"), binding_1 = require("./binding"), literal_types_1 = require("./literal_types"), metadata_keys_1 = require("./metadata_keys"), metadata_reader_1 = require("./metadata_reader"), binding_to_syntax_1 = require("./syntax/binding_to_syntax");
|
|
8
8
|
|
|
9
9
|
class Container {
|
|
10
|
-
id;
|
|
11
|
-
options;
|
|
12
|
-
_bindingDictionary;
|
|
13
|
-
_metadataReader;
|
|
14
10
|
constructor(containerOptions) {
|
|
15
11
|
const options = containerOptions || {};
|
|
16
12
|
options.defaultScope = options.defaultScope || literal_types_1.BindingScopeEnum.Transient,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify/container.ts"],"names":[],"mappings":"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","file":"container.js","sourcesContent":["import { Generator } from '../generator';\nimport { Binding } from './binding';\nimport type { interfaces } from './interfaces';\nimport { BindingScopeEnum, BindingTypeEnum } from './literal_types';\nimport { Metadata } from './meta-data';\nimport { INJECT_TAG, MULTI_INJECT_TAG, NAMED_TAG } from './metadata_keys';\nimport { MetadataReader } from './metadata_reader';\nimport { BindingToSyntax } from './syntax/binding_to_syntax';\n\ninterface IChildRequest {\n injectIdentifier: any;\n metadata: interfaces.Metadata<unknown>[];\n bindings: Binding<unknown>[];\n}\n\ninterface GetArgs<T> {\n avoidConstraints: boolean;\n isMultiInject: boolean;\n serviceIdentifier: interfaces.ServiceIdentifier<T>;\n key: string | symbol;\n value: any;\n}\n\nexport class Container {\n id: number;\n readonly options: interfaces.ContainerOptions;\n private _bindingDictionary: Map<any, Binding<unknown>[]>;\n private _metadataReader: interfaces.MetadataReader;\n\n constructor(containerOptions?: interfaces.ContainerOptions) {\n const options = containerOptions || {};\n options.defaultScope = options.defaultScope || BindingScopeEnum.Transient;\n // console.log(this);\n this.options = options;\n this.id = Generator.GenAutoIncrementId();\n this._bindingDictionary = new Map();\n this._metadataReader = new MetadataReader();\n }\n\n load(module: interfaces.ContainerModule) {\n const getHelpers = this._getContainerModuleHelpersFactory();\n\n const containerModuleHelpers = getHelpers(module.id);\n\n module.registry(\n containerModuleHelpers.bindFunction as interfaces.Bind,\n containerModuleHelpers.unbindFunction,\n containerModuleHelpers.isboundFunction,\n containerModuleHelpers.rebindFunction as interfaces.Rebind\n );\n }\n\n get<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false);\n\n return this._get<T>(getArgs) as T;\n }\n\n getAll<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T[] {\n const getArgs = this._getAllArgs(serviceIdentifier);\n\n return this._get<T>(getArgs) as T[];\n }\n\n getTagged<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, key: string | number | symbol, value: unknown): T {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false, key, value);\n\n return this._get<T>(getArgs) as T;\n }\n\n getNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string | number | symbol): T {\n return this.getTagged<T>(serviceIdentifier, NAMED_TAG, named);\n }\n\n isBound(serviceIdentifier: interfaces.ServiceIdentifier<unknown>): boolean {\n return this._bindingDictionary.has(serviceIdentifier);\n }\n\n // Registers a type binding\n bind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n const scope = this.options.defaultScope;\n const binding = new Binding<T>(serviceIdentifier, scope);\n const list = this._bindingDictionary.get(serviceIdentifier) || [];\n list.push(binding);\n this._bindingDictionary.set(serviceIdentifier, list);\n return new BindingToSyntax<T>(binding);\n }\n\n unbind(serviceIdentifier: interfaces.ServiceIdentifier): void {\n this._bindingDictionary.delete(serviceIdentifier);\n }\n\n rebind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n this.unbind(serviceIdentifier);\n return this.bind(serviceIdentifier);\n }\n\n private _getContainerModuleHelpersFactory() {\n const setModuleId = (\n bindingToSyntax: interfaces.BindingToSyntax<unknown>,\n moduleId: interfaces.ContainerModuleBase['id']\n ) => {\n // TODO: Implement an internal type `_BindingToSyntax<T>` wherein this member\n // can be public. Let `BindingToSyntax<T>` be the presentational type that\n // depends on it, and does not expose this member as public.\n (\n bindingToSyntax as unknown as { _binding: { moduleId: interfaces.ContainerModuleBase['id'] } }\n )._binding.moduleId = moduleId;\n };\n\n const getBindFunction =\n <T>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.bind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n\n const getUnbindFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.unbind(serviceIdentifier);\n };\n\n const getUnbindAsyncFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return null as any;\n // return this.unbindAsync(serviceIdentifier);\n };\n\n const getIsboundFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.isBound(serviceIdentifier);\n };\n\n const getRebindFunction =\n <T = unknown>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.rebind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n return (mId: interfaces.ContainerModuleBase['id']) => ({\n bindFunction: getBindFunction(mId),\n isboundFunction: getIsboundFunction(),\n rebindFunction: getRebindFunction(mId),\n unbindFunction: getUnbindFunction(),\n unbindAsyncFunction: getUnbindAsyncFunction()\n });\n }\n\n private _getNotAllArgs<T>(\n serviceIdentifier: interfaces.ServiceIdentifier<T>,\n isMultiInject: boolean,\n key?: string | number | symbol | undefined,\n value?: unknown\n ): any {\n return {\n avoidConstraints: false,\n isMultiInject,\n serviceIdentifier,\n key,\n value\n };\n }\n\n private _getAllArgs<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): any {\n return {\n avoidConstraints: true,\n isMultiInject: true,\n serviceIdentifier\n };\n }\n\n private _get<T>(getArgs: GetArgs<T>): T | T[] {\n const result: T[] = [];\n const bindings = this._bindingDictionary.get(getArgs.serviceIdentifier).filter(b => {\n return b.constraint(getArgs as any);\n }) as Binding<T>[];\n bindings.forEach(binding => {\n result.push(this._resolveFromBinding<T>(binding));\n });\n\n return !getArgs.isMultiInject && result.length === 1 ? result[0] : result;\n }\n\n private _getChildRequest(binding: Binding<unknown>) {\n const constr = binding.implementationType;\n const { userGeneratedMetadata } = this._metadataReader.getConstructorMetadata(constr as any);\n const keys = Object.keys(userGeneratedMetadata);\n const arr = [];\n for (let i = 0; i < keys.length; i++) {\n const constructorArgsMetadata = userGeneratedMetadata[i];\n const targetMetadataMap = {};\n constructorArgsMetadata.forEach(md => {\n targetMetadataMap[md.key] = md.value;\n });\n const metadata = {\n inject: targetMetadataMap[INJECT_TAG],\n multiInject: targetMetadataMap[MULTI_INJECT_TAG]\n };\n const injectIdentifier = metadata.inject || metadata.multiInject;\n const target = {\n serviceIdentifier: injectIdentifier,\n constructorArgsMetadata\n };\n const bindings = this._bindingDictionary.get(injectIdentifier).filter(b => {\n return b.constraint(target as any);\n });\n const request = {\n injectIdentifier,\n metadata: constructorArgsMetadata,\n bindings\n };\n\n arr.push(request);\n }\n\n return arr;\n }\n\n private _resolveFromBinding<T>(binding: Binding<T>): T {\n const result = this._getResolvedFromBinding<T>(binding);\n\n this._saveToScope(binding, result);\n\n return result;\n }\n\n private _getResolvedFromBinding<T>(binding: Binding<T>) {\n let result: T;\n switch (binding.type) {\n case BindingTypeEnum.ConstantValue:\n case BindingTypeEnum.Function:\n result = binding.cache as T;\n break;\n case BindingTypeEnum.Instance:\n result = this._resolveInstance<T>(binding, binding.implementationType as interfaces.Newable<T>);\n break;\n default:\n result = binding.dynamicValue({ container: this } as any);\n }\n\n return result;\n }\n\n private _resolveInstance<T>(binding: Binding<T>, constr: interfaces.Newable<T>): T {\n if (binding.activated) {\n return binding.cache;\n }\n\n const childRequests = this._getChildRequest(binding);\n return this._createInstance(constr, childRequests);\n }\n\n private _createInstance<T>(constr: interfaces.Newable<T>, childRequests: IChildRequest[]) {\n if (childRequests.length) {\n const resolved = this._resolveRequests(childRequests);\n const obj = new constr(...resolved);\n return obj;\n }\n const obj = new constr();\n return obj;\n }\n\n private _resolveRequests(childRequests: IChildRequest[]): any[] {\n return childRequests.map(request => {\n return request.bindings.length > 1\n ? request.bindings.map(binding => this._resolveFromBinding(binding))\n : this._resolveFromBinding(request.bindings[0]);\n });\n }\n\n private _saveToScope(binding: Binding<unknown>, result: any) {\n if (binding.scope === BindingScopeEnum.Singleton) {\n binding.cache = result;\n binding.activated = true;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify/container.ts"],"names":[],"mappings":"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","file":"container.js","sourcesContent":["import { Generator } from '../generator';\nimport { Binding } from './binding';\nimport type { interfaces } from './interfaces';\nimport { BindingScopeEnum, BindingTypeEnum } from './literal_types';\nimport { Metadata } from './meta-data';\nimport { INJECT_TAG, MULTI_INJECT_TAG, NAMED_TAG } from './metadata_keys';\nimport { MetadataReader } from './metadata_reader';\nimport { BindingToSyntax } from './syntax/binding_to_syntax';\n\ninterface IChildRequest {\n injectIdentifier: any;\n metadata: interfaces.Metadata<unknown>[];\n bindings: Binding<unknown>[];\n}\n\ninterface GetArgs<T> {\n avoidConstraints: boolean;\n isMultiInject: boolean;\n serviceIdentifier: interfaces.ServiceIdentifier<T>;\n key: string | symbol;\n value: any;\n}\n\nexport class Container {\n id: number;\n readonly options: interfaces.ContainerOptions;\n private _bindingDictionary: Map<any, Binding<unknown>[]>;\n private _metadataReader: interfaces.MetadataReader;\n\n constructor(containerOptions?: interfaces.ContainerOptions) {\n const options = containerOptions || {};\n options.defaultScope = options.defaultScope || BindingScopeEnum.Transient;\n // console.log(this);\n this.options = options;\n this.id = Generator.GenAutoIncrementId();\n this._bindingDictionary = new Map();\n this._metadataReader = new MetadataReader();\n }\n\n load(module: interfaces.ContainerModule) {\n const getHelpers = this._getContainerModuleHelpersFactory();\n\n const containerModuleHelpers = getHelpers(module.id);\n\n module.registry(\n containerModuleHelpers.bindFunction as interfaces.Bind,\n containerModuleHelpers.unbindFunction,\n containerModuleHelpers.isboundFunction,\n containerModuleHelpers.rebindFunction as interfaces.Rebind\n );\n }\n\n get<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false);\n\n return this._get<T>(getArgs) as T;\n }\n\n getAll<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T[] {\n const getArgs = this._getAllArgs(serviceIdentifier);\n\n return this._get<T>(getArgs) as T[];\n }\n\n getTagged<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, key: string | number | symbol, value: unknown): T {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false, key, value);\n\n return this._get<T>(getArgs) as T;\n }\n\n getNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string | number | symbol): T {\n return this.getTagged<T>(serviceIdentifier, NAMED_TAG, named);\n }\n\n isBound(serviceIdentifier: interfaces.ServiceIdentifier<unknown>): boolean {\n return this._bindingDictionary.has(serviceIdentifier);\n }\n\n // Registers a type binding\n bind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n const scope = this.options.defaultScope;\n const binding = new Binding<T>(serviceIdentifier, scope);\n const list = this._bindingDictionary.get(serviceIdentifier) || [];\n list.push(binding);\n this._bindingDictionary.set(serviceIdentifier, list);\n return new BindingToSyntax<T>(binding);\n }\n\n unbind(serviceIdentifier: interfaces.ServiceIdentifier): void {\n this._bindingDictionary.delete(serviceIdentifier);\n }\n\n rebind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n this.unbind(serviceIdentifier);\n return this.bind(serviceIdentifier);\n }\n\n private _getContainerModuleHelpersFactory() {\n const setModuleId = (\n bindingToSyntax: interfaces.BindingToSyntax<unknown>,\n moduleId: interfaces.ContainerModuleBase['id']\n ) => {\n // TODO: Implement an internal type `_BindingToSyntax<T>` wherein this member\n // can be public. Let `BindingToSyntax<T>` be the presentational type that\n // depends on it, and does not expose this member as public.\n (\n bindingToSyntax as unknown as { _binding: { moduleId: interfaces.ContainerModuleBase['id'] } }\n )._binding.moduleId = moduleId;\n };\n\n const getBindFunction =\n <T>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.bind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n\n const getUnbindFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.unbind(serviceIdentifier);\n };\n\n const getUnbindAsyncFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return null as any;\n // return this.unbindAsync(serviceIdentifier);\n };\n\n const getIsboundFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.isBound(serviceIdentifier);\n };\n\n const getRebindFunction =\n <T = unknown>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.rebind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n return (mId: interfaces.ContainerModuleBase['id']) => ({\n bindFunction: getBindFunction(mId),\n isboundFunction: getIsboundFunction(),\n rebindFunction: getRebindFunction(mId),\n unbindFunction: getUnbindFunction(),\n unbindAsyncFunction: getUnbindAsyncFunction()\n });\n }\n\n private _getNotAllArgs<T>(\n serviceIdentifier: interfaces.ServiceIdentifier<T>,\n isMultiInject: boolean,\n key?: string | number | symbol | undefined,\n value?: unknown\n ): any {\n return {\n avoidConstraints: false,\n isMultiInject,\n serviceIdentifier,\n key,\n value\n };\n }\n\n private _getAllArgs<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): any {\n return {\n avoidConstraints: true,\n isMultiInject: true,\n serviceIdentifier\n };\n }\n\n private _get<T>(getArgs: GetArgs<T>): T | T[] {\n const result: T[] = [];\n const bindings = this._bindingDictionary.get(getArgs.serviceIdentifier).filter(b => {\n return b.constraint(getArgs as any);\n }) as Binding<T>[];\n bindings.forEach(binding => {\n result.push(this._resolveFromBinding<T>(binding));\n });\n\n return !getArgs.isMultiInject && result.length === 1 ? result[0] : result;\n }\n\n private _getChildRequest(binding: Binding<unknown>) {\n const constr = binding.implementationType;\n const { userGeneratedMetadata } = this._metadataReader.getConstructorMetadata(constr as any);\n const keys = Object.keys(userGeneratedMetadata);\n const arr = [];\n for (let i = 0; i < keys.length; i++) {\n const constructorArgsMetadata = userGeneratedMetadata[i];\n const targetMetadataMap = {};\n constructorArgsMetadata.forEach(md => {\n targetMetadataMap[md.key] = md.value;\n });\n const metadata = {\n inject: targetMetadataMap[INJECT_TAG],\n multiInject: targetMetadataMap[MULTI_INJECT_TAG]\n };\n const injectIdentifier = metadata.inject || metadata.multiInject;\n const target = {\n serviceIdentifier: injectIdentifier,\n constructorArgsMetadata\n };\n const bindings = this._bindingDictionary.get(injectIdentifier).filter(b => {\n return b.constraint(target as any);\n });\n const request = {\n injectIdentifier,\n metadata: constructorArgsMetadata,\n bindings\n };\n\n arr.push(request);\n }\n\n return arr;\n }\n\n private _resolveFromBinding<T>(binding: Binding<T>): T {\n const result = this._getResolvedFromBinding<T>(binding);\n\n this._saveToScope(binding, result);\n\n return result;\n }\n\n private _getResolvedFromBinding<T>(binding: Binding<T>) {\n let result: T;\n switch (binding.type) {\n case BindingTypeEnum.ConstantValue:\n case BindingTypeEnum.Function:\n result = binding.cache as T;\n break;\n case BindingTypeEnum.Instance:\n result = this._resolveInstance<T>(binding, binding.implementationType as interfaces.Newable<T>);\n break;\n default:\n result = binding.dynamicValue({ container: this } as any);\n }\n\n return result;\n }\n\n private _resolveInstance<T>(binding: Binding<T>, constr: interfaces.Newable<T>): T {\n if (binding.activated) {\n return binding.cache;\n }\n\n const childRequests = this._getChildRequest(binding);\n return this._createInstance(constr, childRequests);\n }\n\n private _createInstance<T>(constr: interfaces.Newable<T>, childRequests: IChildRequest[]) {\n if (childRequests.length) {\n const resolved = this._resolveRequests(childRequests);\n const obj = new constr(...resolved);\n return obj;\n }\n const obj = new constr();\n return obj;\n }\n\n private _resolveRequests(childRequests: IChildRequest[]): any[] {\n return childRequests.map(request => {\n return request.bindings.length > 1\n ? request.bindings.map(binding => this._resolveFromBinding(binding))\n : this._resolveFromBinding(request.bindings[0]);\n });\n }\n\n private _saveToScope(binding: Binding<unknown>, result: any) {\n if (binding.scope === BindingScopeEnum.Singleton) {\n binding.cache = result;\n binding.activated = true;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify/cotainer-module.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AAGzC,MAAa,eAAe;
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify/cotainer-module.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AAGzC,MAAa,eAAe;IAI1B,YAAY,QAA4C;QACtD,IAAI,CAAC,EAAE,GAAG,qBAAS,CAAC,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AARD,0CAQC","file":"cotainer-module.js","sourcesContent":["import { Generator } from '../generator';\nimport type { interfaces } from '../inversify-lite';\n\nexport class ContainerModule {\n id: number;\n registry: interfaces.ContainerModuleCallBack;\n\n constructor(registry: interfaces.ContainerModuleCallBack) {\n this.id = Generator.GenAutoIncrementId();\n this.registry = registry;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify/meta-data.ts"],"names":[],"mappings":";;;AAAA,mDAA4C;AAE5C,MAAa,QAAQ;
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify/meta-data.ts"],"names":[],"mappings":";;;AAAA,mDAA4C;AAE5C,MAAa,QAAQ;IAInB,YAAY,GAA6B,EAAE,KAAc;QACvD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,GAAG,KAAK,yBAAS,EAAE;YAC1B,OAAO,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC;SACnD;QACD,OAAO,iBAAiB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAChF,CAAC;CACF;AAfD,4BAeC","file":"meta-data.js","sourcesContent":["import { NAMED_TAG } from './metadata_keys';\n\nexport class Metadata {\n key: string | number | symbol;\n value: unknown;\n\n constructor(key: string | number | symbol, value: unknown) {\n this.key = key;\n this.value = value;\n }\n\n toString() {\n if (this.key === NAMED_TAG) {\n return `named: ${String(this.value).toString()} `;\n }\n return `tagged: { key:${this.key.toString()}, value: ${String(this.value)} }`;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify/syntax/binding_in_syntax.ts"],"names":[],"mappings":";;;AACA,oDAAoD;AACpD,6DAAuD;AAEvD,MAAM,eAAe;
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify/syntax/binding_in_syntax.ts"],"names":[],"mappings":";;;AACA,oDAAoD;AACpD,6DAAuD;AAEvD,MAAM,eAAe;IAGnB,YAAY,OAA8B;QACxC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,cAAc;QAGZ,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,gCAAgB,CAAC,SAAS,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,gCAAgB,CAAC,SAAS,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,IAA8B;QAC5C,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAA,oCAAe,EAAC,IAAI,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAEQ,0CAAe","file":"binding_in_syntax.js","sourcesContent":["import type { interfaces } from '../interfaces';\nimport { BindingScopeEnum } from '../literal_types';\nimport { namedConstraint } from './constraint_helpers';\n\nclass BindingInSyntax<T> implements interfaces.BindingInSyntax<T> {\n private _binding: interfaces.Binding<T>;\n\n constructor(binding: interfaces.Binding<T>) {\n this._binding = binding;\n }\n\n inRequestScope(): interfaces.BindingInSyntax<T> {\n // this._binding.scope = BindingScopeEnum.Request;\n // return new BindingWhenOnSyntax<T>(this._binding);\n throw new Error('暂未实现');\n }\n\n inSingletonScope(): interfaces.BindingInSyntax<T> {\n this._binding.scope = BindingScopeEnum.Singleton;\n return this;\n }\n\n inTransientScope(): interfaces.BindingInSyntax<T> {\n this._binding.scope = BindingScopeEnum.Transient;\n return this;\n }\n\n whenTargetNamed(name: string | number | symbol): interfaces.BindingOnSyntax<T> {\n this._binding.constraint = namedConstraint(name);\n return this;\n }\n}\n\nexport { BindingInSyntax };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify/syntax/binding_to_syntax.ts"],"names":[],"mappings":";;;AACA,oDAAqE;AACrE,2DAAsD;AAEtD,MAAM,eAAe;
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify/syntax/binding_to_syntax.ts"],"names":[],"mappings":";;;AACA,oDAAqE;AACrE,2DAAsD;AAEtD,MAAM,eAAe;IAMnB,YAAY,OAA8B;QACxC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,EAAE,CAAC,WAAkC;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,+BAAe,CAAC,QAAQ,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,WAAW,CAAC;QAC/C,OAAO,IAAI,mCAAe,CAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC7C,OAAO,IAAI,CAAC,EAAE,CAAC,IAAW,CAAC,CAAC;IAC9B,CAAC;IAED,cAAc,CAAC,IAAgC;QAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,+BAAe,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACxC,OAAO,IAAI,mCAAe,CAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,eAAe,CAAC,KAAQ;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,+BAAe,CAAC,aAAa,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,gCAAgB,CAAC,SAAS,CAAC;QACjD,OAAO,IAAI,mCAAe,CAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAK,OAAsC;QAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,+BAAe,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,gCAAgB,CAAC,SAAS,CAAC;QACjD,OAAO,IAAI,mCAAe,CAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,OAAyE;QACjF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAI,OAAO,CAAC,CAAC,CAAC;IACpE,CAAC;CACF;AAEQ,0CAAe","file":"binding_to_syntax.js","sourcesContent":["import type { interfaces } from '../interfaces';\nimport { BindingScopeEnum, BindingTypeEnum } from '../literal_types';\nimport { BindingInSyntax } from './binding_in_syntax';\n\nclass BindingToSyntax<T> implements interfaces.BindingToSyntax<T> {\n // TODO: Implement an internal type `_BindingToSyntax<T>` wherein this member\n // can be public. Let `BindingToSyntax<T>` be the presentational type that\n // depends on it, and does not expose this member as public.\n private _binding: interfaces.Binding<T>;\n\n constructor(binding: interfaces.Binding<T>) {\n this._binding = binding;\n }\n\n to(constructor: interfaces.Newable<T>): interfaces.BindingInWhenOnSyntax<T> {\n this._binding.type = BindingTypeEnum.Instance;\n this._binding.implementationType = constructor;\n return new BindingInSyntax<T>(this._binding);\n }\n\n toSelf(): interfaces.BindingInWhenOnSyntax<T> {\n const self = this._binding.serviceIdentifier;\n return this.to(self as any);\n }\n\n toDynamicValue(func: interfaces.DynamicValue<T>): interfaces.BindingInWhenOnSyntax<T> {\n this._binding.type = BindingTypeEnum.DynamicValue;\n this._binding.cache = null;\n this._binding.dynamicValue = func;\n this._binding.implementationType = null;\n return new BindingInSyntax<T>(this._binding);\n }\n\n toConstantValue(value: T): interfaces.BindingInSyntax<T> {\n this._binding.type = BindingTypeEnum.ConstantValue;\n this._binding.cache = value;\n this._binding.dynamicValue = null;\n this._binding.implementationType = null;\n this._binding.scope = BindingScopeEnum.Singleton;\n return new BindingInSyntax<T>(this._binding);\n }\n\n toFactory<T2>(factory: interfaces.FactoryCreator<T2>): interfaces.BindingInWhenOnSyntax<T> {\n this._binding.type = BindingTypeEnum.Factory;\n this._binding.factory = factory;\n this._binding.scope = BindingScopeEnum.Singleton;\n return new BindingInSyntax<T>(this._binding);\n }\n\n toService(service: string | symbol | interfaces.Newable<T> | interfaces.Abstract<T>): void {\n this.toDynamicValue(context => context.container.get<T>(service));\n }\n}\n\nexport { BindingToSyntax };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify-lite/annotation/lazy_service_identifier.ts"],"names":[],"mappings":";;;AAIA,MAAa,oBAAoB;
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify-lite/annotation/lazy_service_identifier.ts"],"names":[],"mappings":";;;AAIA,MAAa,oBAAoB;IAE/B,YAAY,EAAyC;QACnD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;CACF;AATD,oDASC","file":"lazy_service_identifier.js","sourcesContent":["import type { interfaces } from '../interfaces/interfaces';\n\nexport type ServiceIdentifierOrFunc<T> = interfaces.ServiceIdentifier<T> | LazyServiceIdentifer<T>;\n\nexport class LazyServiceIdentifer<T = unknown> {\n private _cb: () => interfaces.ServiceIdentifier<T>;\n constructor(cb: () => interfaces.ServiceIdentifier<T>) {\n this._cb = cb;\n }\n\n unwrap() {\n return this._cb();\n }\n}\n"]}
|
|
@@ -7,20 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
const literal_types_1 = require("../constants/literal_types"), id_1 = require("../utils/id");
|
|
8
8
|
|
|
9
9
|
class Binding {
|
|
10
|
-
id;
|
|
11
|
-
moduleId;
|
|
12
|
-
activated;
|
|
13
|
-
serviceIdentifier;
|
|
14
|
-
implementationType;
|
|
15
|
-
cache;
|
|
16
|
-
dynamicValue;
|
|
17
|
-
scope;
|
|
18
|
-
type;
|
|
19
|
-
factory;
|
|
20
|
-
provider;
|
|
21
|
-
constraint;
|
|
22
|
-
onActivation;
|
|
23
|
-
onDeactivation;
|
|
24
10
|
constructor(serviceIdentifier, scope) {
|
|
25
11
|
this.id = (0, id_1.id)(), this.activated = !1, this.serviceIdentifier = serviceIdentifier,
|
|
26
12
|
this.scope = scope, this.type = literal_types_1.BindingTypeEnum.Invalid, this.constraint = request => !0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify-lite/bindings/binding.ts"],"names":[],"mappings":";;;AAAA,8DAA+E;AAE/E,oCAAiC;AAEjC,MAAM,OAAO;
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify-lite/bindings/binding.ts"],"names":[],"mappings":";;;AAAA,8DAA+E;AAE/E,oCAAiC;AAEjC,MAAM,OAAO;IA0CX,YAAY,iBAA2D,EAAE,KAA8B;QACrG,IAAI,CAAC,EAAE,GAAG,IAAA,OAAE,GAAE,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,+BAAe,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,CAAC,OAAkC,EAAE,EAAE,CAAC,IAAI,CAAC;QAC/D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,KAAK,gCAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QACtF,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACnD,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAEQ,0BAAO","file":"binding.js","sourcesContent":["import { BindingScopeEnum, BindingTypeEnum } from '../constants/literal_types';\nimport type { interfaces } from '../interfaces/interfaces';\nimport { id } from '../utils/id';\n\nclass Binding<TActivated> implements interfaces.Binding<TActivated> {\n id: number;\n moduleId!: interfaces.ContainerModuleBase['id'];\n\n // Determines weather the bindings has been already activated\n // The activation action takes place when an instance is resolved\n // If the scope is singleton it only happens once\n activated: boolean;\n\n // A runtime identifier because at runtime we don't have interfaces\n serviceIdentifier: interfaces.ServiceIdentifier<TActivated>;\n\n // constructor from binding to or toConstructor\n implementationType: interfaces.Newable<TActivated> | TActivated | null;\n\n // Cache used to allow singleton scope and BindingType.ConstantValue bindings\n cache: TActivated | Promise<TActivated> | null;\n\n // Cache used to allow BindingType.DynamicValue bindings\n dynamicValue: interfaces.DynamicValue<TActivated> | null;\n\n // The scope mode to be used\n scope: interfaces.BindingScope;\n\n // The kind of binding\n type: interfaces.BindingType;\n\n // A factory method used in BindingType.Factory bindings\n factory: interfaces.FactoryCreator<unknown> | null;\n\n // An async factory method used in BindingType.Provider bindings\n provider: interfaces.ProviderCreator<unknown> | null;\n\n // A constraint used to limit the contexts in which this binding is applicable\n constraint: interfaces.ConstraintFunction;\n\n // On activation handler (invoked just before an instance is added to cache and injected)\n onActivation: interfaces.BindingActivation<TActivated> | null;\n\n // On deactivation handler (invoked just before an instance is unbinded and removed from container)\n onDeactivation: interfaces.BindingDeactivation<TActivated> | null;\n\n constructor(serviceIdentifier: interfaces.ServiceIdentifier<TActivated>, scope: interfaces.BindingScope) {\n this.id = id();\n this.activated = false;\n this.serviceIdentifier = serviceIdentifier;\n this.scope = scope;\n this.type = BindingTypeEnum.Invalid;\n this.constraint = (request: interfaces.Request | null) => true;\n this.implementationType = null;\n this.cache = null;\n this.factory = null;\n this.provider = null;\n this.onActivation = null;\n this.onDeactivation = null;\n this.dynamicValue = null;\n }\n\n clone(): interfaces.Binding<TActivated> {\n const clone = new Binding(this.serviceIdentifier, this.scope);\n clone.activated = clone.scope === BindingScopeEnum.Singleton ? this.activated : false;\n clone.implementationType = this.implementationType;\n clone.dynamicValue = this.dynamicValue;\n clone.scope = this.scope;\n clone.type = this.type;\n clone.factory = this.factory;\n clone.provider = this.provider;\n clone.constraint = this.constraint;\n clone.onActivation = this.onActivation;\n clone.onDeactivation = this.onDeactivation;\n clone.cache = this.cache;\n return clone;\n }\n}\n\nexport { Binding };\n"]}
|
|
@@ -23,6 +23,30 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
|
|
|
23
23
|
var result = {};
|
|
24
24
|
if (null != mod) for (var k in mod) "default" !== k && Object.prototype.hasOwnProperty.call(mod, k) && __createBinding(result, mod, k);
|
|
25
25
|
return __setModuleDefault(result, mod), result;
|
|
26
|
+
}, __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
27
|
+
return new (P || (P = Promise))((function(resolve, reject) {
|
|
28
|
+
function fulfilled(value) {
|
|
29
|
+
try {
|
|
30
|
+
step(generator.next(value));
|
|
31
|
+
} catch (e) {
|
|
32
|
+
reject(e);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function rejected(value) {
|
|
36
|
+
try {
|
|
37
|
+
step(generator.throw(value));
|
|
38
|
+
} catch (e) {
|
|
39
|
+
reject(e);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function step(result) {
|
|
43
|
+
var value;
|
|
44
|
+
result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
|
|
45
|
+
resolve(value);
|
|
46
|
+
}))).then(fulfilled, rejected);
|
|
47
|
+
}
|
|
48
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
49
|
+
}));
|
|
26
50
|
}, __importDefault = this && this.__importDefault || function(mod) {
|
|
27
51
|
return mod && mod.__esModule ? mod : {
|
|
28
52
|
default: mod
|
|
@@ -36,11 +60,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
36
60
|
const binding_1 = require("../bindings/binding"), ERROR_MSGS = __importStar(require("../constants/error_msgs")), literal_types_1 = require("../constants/literal_types"), METADATA_KEY = __importStar(require("../constants/metadata_keys")), metadata_reader_1 = require("../planning/metadata_reader"), planner_1 = require("../planning/planner"), resolver_1 = require("../resolution/resolver"), binding_to_syntax_1 = require("../syntax/binding_to_syntax"), async_1 = require("../utils/async"), id_1 = require("../utils/id"), serialization_1 = require("../utils/serialization"), lookup_1 = require("./lookup"), Reflect_metadata_1 = __importDefault(require("../../Reflect-metadata"));
|
|
37
61
|
|
|
38
62
|
class Container {
|
|
39
|
-
id;
|
|
40
|
-
parent;
|
|
41
|
-
options;
|
|
42
|
-
_bindingDictionary;
|
|
43
|
-
_metadataReader;
|
|
44
63
|
static merge(container1, container2, ...containers) {
|
|
45
64
|
const container = new Container, targetContainers = [ container1, container2, ...containers ].map((targetContainer => (0,
|
|
46
65
|
planner_1.getBindingDictionary)(targetContainer))), bindingDictionary = (0, planner_1.getBindingDictionary)(container);
|
|
@@ -125,9 +144,11 @@ class Container {
|
|
|
125
144
|
const getArgs = this._getNotAllArgs(serviceIdentifier, !1);
|
|
126
145
|
return this._getButThrowIfAsync(getArgs);
|
|
127
146
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
147
|
+
getAsync(serviceIdentifier) {
|
|
148
|
+
return __awaiter(this, void 0, void 0, (function*() {
|
|
149
|
+
const getArgs = this._getNotAllArgs(serviceIdentifier, !1);
|
|
150
|
+
return this._get(getArgs);
|
|
151
|
+
}));
|
|
131
152
|
}
|
|
132
153
|
getTagged(serviceIdentifier, key, value) {
|
|
133
154
|
const getArgs = this._getNotAllArgs(serviceIdentifier, !1, key, value);
|
|
@@ -154,9 +175,9 @@ class Container {
|
|
|
154
175
|
return isBound || this.unbind(constructorFunction), resolved;
|
|
155
176
|
}
|
|
156
177
|
_preDestroy(constructor, instance) {
|
|
178
|
+
var _a, _b;
|
|
157
179
|
if (Reflect_metadata_1.default.hasMetadata(METADATA_KEY.PRE_DESTROY, constructor)) {
|
|
158
|
-
|
|
159
|
-
return instance[data.value]?.();
|
|
180
|
+
return null === (_b = (_a = instance)[Reflect_metadata_1.default.getMetadata(METADATA_KEY.PRE_DESTROY, constructor).value]) || void 0 === _b ? void 0 : _b.call(_a);
|
|
160
181
|
}
|
|
161
182
|
}
|
|
162
183
|
_removeModuleBindings(moduleId) {
|
|
@@ -171,12 +192,14 @@ class Container {
|
|
|
171
192
|
if (ex instanceof Error) throw new Error(ERROR_MSGS.ON_DEACTIVATION_ERROR(constructor.name, ex.message));
|
|
172
193
|
}
|
|
173
194
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
195
|
+
_handleDeactivationError(asyncResult, constructor) {
|
|
196
|
+
return __awaiter(this, void 0, void 0, (function*() {
|
|
197
|
+
try {
|
|
198
|
+
yield asyncResult;
|
|
199
|
+
} catch (ex) {
|
|
200
|
+
if (ex instanceof Error) throw new Error(ERROR_MSGS.ON_DEACTIVATION_ERROR(constructor.name, ex.message));
|
|
201
|
+
}
|
|
202
|
+
}));
|
|
180
203
|
}
|
|
181
204
|
_getContainerModuleHelpersFactory() {
|
|
182
205
|
const setModuleId = (bindingToSyntax, moduleId) => {
|
|
@@ -197,11 +220,10 @@ class Container {
|
|
|
197
220
|
});
|
|
198
221
|
}
|
|
199
222
|
_get(getArgs) {
|
|
200
|
-
const planAndResolveArgs = {
|
|
201
|
-
...getArgs,
|
|
223
|
+
const planAndResolveArgs = Object.assign(Object.assign({}, getArgs), {
|
|
202
224
|
contextInterceptor: context => context,
|
|
203
225
|
targetType: literal_types_1.TargetTypeEnum.Variable
|
|
204
|
-
};
|
|
226
|
+
});
|
|
205
227
|
return this._planAndResolve()(planAndResolveArgs);
|
|
206
228
|
}
|
|
207
229
|
_getButThrowIfAsync(getArgs) {
|
|
@@ -256,9 +278,11 @@ class Container {
|
|
|
256
278
|
}
|
|
257
279
|
return this._preDestroy(constructor, instance);
|
|
258
280
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
281
|
+
_bindingDeactivationAndPreDestroyAsync(binding, instance, constructor) {
|
|
282
|
+
return __awaiter(this, void 0, void 0, (function*() {
|
|
283
|
+
"function" == typeof binding.onDeactivation && (yield binding.onDeactivation(instance)),
|
|
284
|
+
yield this._preDestroy(constructor, instance);
|
|
285
|
+
}));
|
|
262
286
|
}
|
|
263
287
|
}
|
|
264
288
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify-lite/container/container.ts"],"names":[],"mappings":"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","file":"container.js","sourcesContent":["import { Binding } from '../bindings/binding';\nimport * as ERROR_MSGS from '../constants/error_msgs';\nimport { BindingScopeEnum, TargetTypeEnum } from '../constants/literal_types';\nimport * as METADATA_KEY from '../constants/metadata_keys';\nimport type { interfaces } from '../interfaces/interfaces';\nimport { MetadataReader } from '../planning/metadata_reader';\nimport { createMockRequest, getBindingDictionary, plan } from '../planning/planner';\nimport { resolve } from '../resolution/resolver';\nimport { BindingToSyntax } from '../syntax/binding_to_syntax';\nimport { isPromise, isPromiseOrContainsPromise } from '../utils/async';\nimport { id } from '../utils/id';\nimport { getServiceIdentifierAsString } from '../utils/serialization';\nimport { Lookup } from './lookup';\nimport Reflect from '../../Reflect-metadata';\n// import { ModuleActivationStore } from './module_activation_store';\n\ntype GetArgs<T> = Omit<interfaces.NextArgs<T>, 'contextInterceptor' | 'targetType'>;\n\nclass Container implements interfaces.Container {\n id: number;\n parent: interfaces.Container | null;\n readonly options: interfaces.ContainerOptions;\n // private _middleware: interfaces.Next | null;\n private _bindingDictionary: interfaces.Lookup<interfaces.Binding<unknown>>;\n // private _activations: interfaces.Lookup<interfaces.BindingActivation<unknown>>;\n // private _deactivations: interfaces.Lookup<interfaces.BindingDeactivation<unknown>>;\n private _metadataReader: interfaces.MetadataReader;\n // private _moduleActivationStore: interfaces.ModuleActivationStore;\n\n static merge(\n container1: interfaces.Container,\n container2: interfaces.Container,\n ...containers: interfaces.Container[]\n ): interfaces.Container {\n const container = new Container();\n const targetContainers: interfaces.Lookup<interfaces.Binding<unknown>>[] = [\n container1,\n container2,\n ...containers\n ].map(targetContainer => getBindingDictionary(targetContainer));\n const bindingDictionary: interfaces.Lookup<interfaces.Binding<unknown>> = getBindingDictionary(container);\n\n function copyDictionary(\n origin: interfaces.Lookup<interfaces.Binding<unknown>>,\n destination: interfaces.Lookup<interfaces.Binding<unknown>>\n ) {\n origin.traverse((_key, value) => {\n value.forEach(binding => {\n destination.add(binding.serviceIdentifier, binding.clone());\n });\n });\n }\n\n targetContainers.forEach(targetBindingDictionary => {\n copyDictionary(targetBindingDictionary, bindingDictionary);\n });\n\n return container;\n }\n\n constructor(containerOptions?: interfaces.ContainerOptions) {\n const options = containerOptions || {};\n if (typeof options !== 'object') {\n throw new Error(`${ERROR_MSGS.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT}`);\n }\n\n if (options.defaultScope === undefined) {\n options.defaultScope = BindingScopeEnum.Transient;\n } else if (\n options.defaultScope !== BindingScopeEnum.Singleton &&\n options.defaultScope !== BindingScopeEnum.Transient &&\n options.defaultScope !== BindingScopeEnum.Request\n ) {\n throw new Error(`${ERROR_MSGS.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE}`);\n }\n\n if (options.autoBindInjectable === undefined) {\n options.autoBindInjectable = false;\n } else if (typeof options.autoBindInjectable !== 'boolean') {\n throw new Error(`${ERROR_MSGS.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE}`);\n }\n\n if (options.skipBaseClassChecks === undefined) {\n options.skipBaseClassChecks = false;\n } else if (typeof options.skipBaseClassChecks !== 'boolean') {\n throw new Error(`${ERROR_MSGS.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK}`);\n }\n\n this.options = {\n autoBindInjectable: options.autoBindInjectable,\n defaultScope: options.defaultScope,\n skipBaseClassChecks: options.skipBaseClassChecks\n };\n\n this.id = id();\n this._bindingDictionary = new Lookup<interfaces.Binding<unknown>>();\n // this._middleware = null;\n // this._activations = new Lookup<interfaces.BindingActivation<unknown>>();\n // this._deactivations = new Lookup<interfaces.BindingDeactivation<unknown>>();\n this.parent = null;\n this._metadataReader = new MetadataReader();\n // this._moduleActivationStore = new ModuleActivationStore();\n }\n\n load(...modules: interfaces.ContainerModule[]) {\n const getHelpers = this._getContainerModuleHelpersFactory();\n\n for (const currentModule of modules) {\n const containerModuleHelpers = getHelpers(currentModule.id);\n\n currentModule.registry(\n containerModuleHelpers.bindFunction as interfaces.Bind,\n containerModuleHelpers.unbindFunction,\n containerModuleHelpers.isboundFunction,\n containerModuleHelpers.rebindFunction as interfaces.Rebind\n // containerModuleHelpers.unbindAsyncFunction,\n // containerModuleHelpers.onActivationFunction as interfaces.Container['onActivation'],\n // containerModuleHelpers.onDeactivationFunction as interfaces.Container['onDeactivation']\n );\n }\n }\n\n unload(...modules: interfaces.ContainerModuleBase[]): void {\n modules.forEach(module => {\n const deactivations = this._removeModuleBindings(module.id);\n this._deactivateSingletons(deactivations);\n\n // this._removeModuleHandlers(module.id);\n });\n }\n\n // Registers a type binding\n bind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n const scope = this.options.defaultScope || BindingScopeEnum.Transient;\n const binding = new Binding<T>(serviceIdentifier, scope);\n this._bindingDictionary.add(serviceIdentifier, binding as Binding<unknown>);\n return new BindingToSyntax<T>(binding);\n }\n\n rebind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n this.unbind(serviceIdentifier);\n return this.bind(serviceIdentifier);\n }\n\n // public async rebindAsync<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>\n // ): Promise<interfaces.BindingToSyntax<T>> {\n // await this.unbindAsync(serviceIdentifier);\n // return this.bind(serviceIdentifier);\n // }\n\n // Removes a type binding from the registry by its key\n unbind(serviceIdentifier: interfaces.ServiceIdentifier): void {\n if (this._bindingDictionary.hasKey(serviceIdentifier)) {\n const bindings = this._bindingDictionary.get(serviceIdentifier);\n\n this._deactivateSingletons(bindings);\n }\n\n this._removeServiceFromDictionary(serviceIdentifier);\n }\n\n // public async unbindAsync(serviceIdentifier: interfaces.ServiceIdentifier): Promise<void> {\n // if (this._bindingDictionary.hasKey(serviceIdentifier)) {\n // const bindings = this._bindingDictionary.get(serviceIdentifier);\n\n // await this._deactivateSingletonsAsync(bindings);\n // }\n\n // this._removeServiceFromDictionary(serviceIdentifier);\n // }\n\n // Removes all the type bindings from the registry\n unbindAll(): void {\n this._bindingDictionary.traverse((_key, value) => {\n this._deactivateSingletons(value);\n });\n\n this._bindingDictionary = new Lookup<Binding<unknown>>();\n }\n\n // public async unbindAllAsync(): Promise<void> {\n // const promises: Promise<void>[] = [];\n\n // this._bindingDictionary.traverse((_key, value) => {\n // promises.push(this._deactivateSingletonsAsync(value));\n // });\n\n // await Promise.all(promises);\n\n // this._bindingDictionary = new Lookup<Binding<unknown>>();\n // }\n\n // public onActivation<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // onActivation: interfaces.BindingActivation<T>\n // ) {\n // this._activations.add(serviceIdentifier, onActivation as interfaces.BindingActivation<unknown>);\n // }\n\n // public onDeactivation<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // onDeactivation: interfaces.BindingDeactivation<T>\n // ) {\n // this._deactivations.add(serviceIdentifier, onDeactivation as interfaces.BindingDeactivation<unknown>);\n // }\n\n // Allows to check if there are bindings available for serviceIdentifier\n isBound(serviceIdentifier: interfaces.ServiceIdentifier<unknown>): boolean {\n let bound = this._bindingDictionary.hasKey(serviceIdentifier);\n if (!bound && this.parent) {\n bound = this.parent.isBound(serviceIdentifier);\n }\n return bound;\n }\n\n // check binding dependency only in current container\n isCurrentBound<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): boolean {\n return this._bindingDictionary.hasKey(serviceIdentifier);\n }\n\n isBoundNamed(serviceIdentifier: interfaces.ServiceIdentifier, named: string | number | symbol): boolean {\n return this.isBoundTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n }\n\n // Check if a binding with a complex constraint is available without throwing a error. Ancestors are also verified.\n isBoundTagged(\n serviceIdentifier: interfaces.ServiceIdentifier,\n key: string | number | symbol,\n value: unknown\n ): boolean {\n let bound = false;\n\n // verify if there are bindings available for serviceIdentifier on current binding dictionary\n if (this._bindingDictionary.hasKey(serviceIdentifier)) {\n const bindings = this._bindingDictionary.get(serviceIdentifier);\n const request = createMockRequest(this, serviceIdentifier, key, value);\n bound = bindings.some(b => b.constraint(request));\n }\n\n // verify if there is a parent container that could solve the request\n if (!bound && this.parent) {\n bound = this.parent.isBoundTagged(serviceIdentifier, key, value);\n }\n\n return bound;\n }\n\n applyCustomMetadataReader(metadataReader: interfaces.MetadataReader) {\n this._metadataReader = metadataReader;\n }\n\n // Resolves a dependency by its runtime identifier\n // The runtime identifier must be associated with only one binding\n // use getAll when the runtime identifier is associated with multiple bindings\n get<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T {\n // if (!window.aaa) {\n // window.aaa = 0;\n // }\n // const t = performance.now();\n const getArgs = this._getNotAllArgs(serviceIdentifier, false);\n // const getArgs = {\n // avoidConstraints: false,\n // isMultiInject: false,\n // serviceIdentifier\n // };\n\n const data = this._getButThrowIfAsync<T>(getArgs) as T;\n // const delta = performance.now() - t;\n // window.aaa += delta;\n\n return data;\n }\n\n async getAsync<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): Promise<T> {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false);\n\n return this._get<T>(getArgs) as Promise<T> | T;\n }\n\n getTagged<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, key: string | number | symbol, value: unknown): T {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false, key, value);\n\n return this._getButThrowIfAsync<T>(getArgs) as T;\n }\n\n // public async getTaggedAsync<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // key: string | number | symbol,\n // value: unknown\n // ): Promise<T> {\n // const getArgs = this._getNotAllArgs(serviceIdentifier, false, key, value);\n\n // return this._get<T>(getArgs) as Promise<T> | T;\n // }\n\n getNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string | number | symbol): T {\n return this.getTagged<T>(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n }\n\n // public getNamedAsync<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // named: string | number | symbol\n // ): Promise<T> {\n // return this.getTaggedAsync<T>(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n // }\n\n // Resolves a dependency by its runtime identifier\n // The runtime identifier can be associated with one or multiple bindings\n getAll<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T[] {\n const getArgs = this._getAllArgs(serviceIdentifier);\n\n return this._getButThrowIfAsync<T>(getArgs) as T[];\n }\n\n // public getAllAsync<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): Promise<T[]> {\n // const getArgs = this._getAllArgs(serviceIdentifier);\n\n // return this._getAll(getArgs);\n // }\n\n getAllTagged<T>(\n serviceIdentifier: interfaces.ServiceIdentifier<T>,\n key: string | number | symbol,\n value: unknown\n ): T[] {\n const getArgs = this._getNotAllArgs(serviceIdentifier, true, key, value);\n\n return this._getButThrowIfAsync<T>(getArgs) as T[];\n }\n\n // public getAllTaggedAsync<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // key: string | number | symbol,\n // value: unknown\n // ): Promise<T[]> {\n // const getArgs = this._getNotAllArgs(serviceIdentifier, true, key, value);\n\n // return this._getAll(getArgs);\n // }\n\n getAllNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string | number | symbol): T[] {\n return this.getAllTagged<T>(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n }\n\n // public getAllNamedAsync<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // named: string | number | symbol\n // ): Promise<T[]> {\n // return this.getAllTaggedAsync<T>(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n // }\n\n resolve<T>(constructorFunction: interfaces.Newable<T>) {\n const isBound = this.isBound(constructorFunction);\n if (!isBound) {\n this.bind<T>(constructorFunction).toSelf();\n }\n const resolved = this.get<T>(constructorFunction);\n if (!isBound) {\n this.unbind(constructorFunction);\n }\n return resolved;\n }\n\n private _preDestroy<T>(constructor: NewableFunction, instance: T): Promise<void> | void {\n if ((Reflect as any).hasMetadata(METADATA_KEY.PRE_DESTROY, constructor)) {\n const data: interfaces.Metadata = (Reflect as any).getMetadata(METADATA_KEY.PRE_DESTROY, constructor);\n return (instance as interfaces.Instance<T>)[data.value as string]?.();\n }\n }\n // private _removeModuleHandlers(moduleId: number): void {\n // const moduleActivationsHandlers = this._moduleActivationStore.remove(moduleId);\n\n // this._activations.removeIntersection(moduleActivationsHandlers.onActivations);\n // this._deactivations.removeIntersection(moduleActivationsHandlers.onDeactivations);\n // }\n\n private _removeModuleBindings(moduleId: number): interfaces.Binding<unknown>[] {\n return this._bindingDictionary.removeByCondition(binding => binding.moduleId === moduleId);\n }\n\n private _deactivate<T>(binding: Binding<T>, instance: T): void | Promise<void> {\n const constructor: NewableFunction = Object.getPrototypeOf(instance).constructor;\n try {\n // if (this._deactivations.hasKey(binding.serviceIdentifier)) {\n // const result = this._deactivateContainer(instance, this._deactivations.get(binding.serviceIdentifier).values());\n\n // if (isPromise(result)) {\n // return this._handleDeactivationError(\n // result.then(() =>\n // this._propagateContainerDeactivationThenBindingAndPreDestroyAsync(binding, instance, constructor)\n // ),\n // constructor\n // );\n // }\n // }\n\n const propagateDeactivationResult = this._propagateContainerDeactivationThenBindingAndPreDestroy(\n binding,\n instance,\n constructor\n );\n\n if (isPromise(propagateDeactivationResult)) {\n return this._handleDeactivationError(propagateDeactivationResult, constructor);\n }\n } catch (ex) {\n if (ex instanceof Error) {\n throw new Error(ERROR_MSGS.ON_DEACTIVATION_ERROR(constructor.name, ex.message));\n }\n }\n }\n\n private async _handleDeactivationError(asyncResult: Promise<void>, constructor: NewableFunction): Promise<void> {\n try {\n await asyncResult;\n } catch (ex) {\n if (ex instanceof Error) {\n throw new Error(ERROR_MSGS.ON_DEACTIVATION_ERROR(constructor.name, ex.message));\n }\n }\n }\n\n // private _deactivateContainer<T>(\n // instance: T,\n // deactivationsIterator: IterableIterator<interfaces.BindingDeactivation<unknown>>\n // ): void | Promise<void> {\n // let deactivation = deactivationsIterator.next();\n\n // while (deactivation.value) {\n // const result = deactivation.value(instance);\n\n // if (isPromise(result)) {\n // return result.then(() => this._deactivateContainerAsync(instance, deactivationsIterator));\n // }\n\n // deactivation = deactivationsIterator.next();\n // }\n // }\n\n // private async _deactivateContainerAsync<T>(\n // instance: T,\n // deactivationsIterator: IterableIterator<interfaces.BindingDeactivation<unknown>>\n // ): Promise<void> {\n // let deactivation = deactivationsIterator.next();\n\n // while (deactivation.value) {\n // await deactivation.value(instance);\n // deactivation = deactivationsIterator.next();\n // }\n // }\n\n private _getContainerModuleHelpersFactory() {\n const setModuleId = (\n bindingToSyntax: interfaces.BindingToSyntax<unknown>,\n moduleId: interfaces.ContainerModuleBase['id']\n ) => {\n // TODO: Implement an internal type `_BindingToSyntax<T>` wherein this member\n // can be public. Let `BindingToSyntax<T>` be the presentational type that\n // depends on it, and does not expose this member as public.\n (\n bindingToSyntax as unknown as { _binding: { moduleId: interfaces.ContainerModuleBase['id'] } }\n )._binding.moduleId = moduleId;\n };\n\n const getBindFunction =\n <T>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.bind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n\n const getUnbindFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.unbind(serviceIdentifier);\n };\n\n const getUnbindAsyncFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return null as any;\n // return this.unbindAsync(serviceIdentifier);\n };\n\n const getIsboundFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.isBound(serviceIdentifier);\n };\n\n const getRebindFunction =\n <T = unknown>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.rebind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n\n // const getOnActivationFunction =\n // (moduleId: interfaces.ContainerModuleBase['id']) =>\n // (serviceIdentifier: interfaces.ServiceIdentifier, onActivation: interfaces.BindingActivation) => {\n // this._moduleActivationStore.addActivation(moduleId, serviceIdentifier, onActivation);\n // this.onActivation(serviceIdentifier, onActivation);\n // };\n\n // const getOnDeactivationFunction =\n // (moduleId: interfaces.ContainerModuleBase['id']) =>\n // (serviceIdentifier: interfaces.ServiceIdentifier, onDeactivation: interfaces.BindingDeactivation) => {\n // this._moduleActivationStore.addDeactivation(moduleId, serviceIdentifier, onDeactivation);\n // this.onDeactivation(serviceIdentifier, onDeactivation);\n // };\n\n return (mId: interfaces.ContainerModuleBase['id']) => ({\n bindFunction: getBindFunction(mId),\n isboundFunction: getIsboundFunction(),\n // onActivationFunction: getOnActivationFunction(mId),\n // onDeactivationFunction: getOnDeactivationFunction(mId),\n rebindFunction: getRebindFunction(mId),\n unbindFunction: getUnbindFunction(),\n unbindAsyncFunction: getUnbindAsyncFunction()\n });\n }\n // private _getAll<T>(getArgs: GetArgs<T>): Promise<T[]> {\n // return Promise.all(this._get<T>(getArgs) as (Promise<T> | T)[]);\n // }\n // Prepares arguments required for resolution and\n // delegates resolution to _middleware if available\n // otherwise it delegates resolution to _planAndResolve\n private _get<T>(getArgs: GetArgs<T>): interfaces.ContainerResolution<T> {\n const planAndResolveArgs: interfaces.NextArgs<T> = {\n ...getArgs,\n contextInterceptor: context => context,\n targetType: TargetTypeEnum.Variable\n };\n // if (this._middleware) {\n // const middlewareResult = this._middleware(planAndResolveArgs);\n // if (middlewareResult === undefined || middlewareResult === null) {\n // throw new Error(ERROR_MSGS.INVALID_MIDDLEWARE_RETURN);\n // }\n // return middlewareResult as interfaces.ContainerResolution<T>;\n // }\n\n return this._planAndResolve<T>()(planAndResolveArgs);\n }\n\n private _getButThrowIfAsync<T>(getArgs: GetArgs<T>): T | T[] {\n // console.count('_getButThrowIfAsync');\n const result = this._get<T>(getArgs);\n\n // if (isPromiseOrContainsPromise<T>(result)) {\n // throw new Error(ERROR_MSGS.LAZY_IN_SYNC(getArgs.serviceIdentifier));\n // }\n\n return result as T | T[];\n }\n\n private _getAllArgs<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): GetArgs<T> {\n const getAllArgs: GetArgs<T> = {\n avoidConstraints: true,\n isMultiInject: true,\n serviceIdentifier\n };\n\n return getAllArgs;\n }\n\n private _getNotAllArgs<T>(\n serviceIdentifier: interfaces.ServiceIdentifier<T>,\n isMultiInject: boolean,\n key?: string | number | symbol | undefined,\n value?: unknown\n ): GetArgs<T> {\n const getNotAllArgs: GetArgs<T> = {\n avoidConstraints: false,\n isMultiInject,\n serviceIdentifier,\n key,\n value\n };\n\n return getNotAllArgs;\n }\n\n // Planner creates a plan and Resolver resolves a plan\n // one of the jobs of the Container is to links the Planner\n // with the Resolver and that is what this function is about\n private _planAndResolve<T = unknown>(): (args: interfaces.NextArgs<T>) => interfaces.ContainerResolution<T> {\n return (args: interfaces.NextArgs<T>) => {\n // create a plan\n // if (!window.aaa) {\n // window.aaa = 0;\n // }\n // const t = performance.now();\n // debugger;\n let context = plan(\n this._metadataReader,\n this,\n args.isMultiInject,\n args.targetType,\n args.serviceIdentifier,\n args.key,\n args.value,\n args.avoidConstraints\n );\n\n // apply context interceptor\n context = args.contextInterceptor(context);\n // window.aaa += performance.now() - t;\n // resolve plan\n const result = resolve<T>(context);\n\n return result;\n };\n }\n\n private _deactivateIfSingleton(binding: Binding<unknown>): Promise<void> | void {\n if (!binding.activated) {\n return;\n }\n\n if (isPromise(binding.cache)) {\n return binding.cache.then(resolved => this._deactivate(binding, resolved));\n }\n\n return this._deactivate(binding, binding.cache);\n }\n\n private _deactivateSingletons(bindings: Binding<unknown>[]): void {\n for (const binding of bindings) {\n const result = this._deactivateIfSingleton(binding);\n\n if (isPromise(result)) {\n throw new Error(ERROR_MSGS.ASYNC_UNBIND_REQUIRED);\n }\n }\n }\n\n // private async _deactivateSingletonsAsync(bindings: Binding<unknown>[]): Promise<void> {\n // await Promise.all(bindings.map(b => this._deactivateIfSingleton(b)));\n // }\n\n private _propagateContainerDeactivationThenBindingAndPreDestroy<T>(\n binding: Binding<T>,\n instance: T,\n constructor: NewableFunction\n ): void | Promise<void> {\n if (this.parent) {\n return this._deactivate.bind(this.parent)(binding, instance);\n }\n return this._bindingDeactivationAndPreDestroy(binding, instance, constructor);\n }\n\n // private async _propagateContainerDeactivationThenBindingAndPreDestroyAsync<T>(\n // binding: Binding<T>,\n // instance: T,\n // constructor: NewableFunction\n // ): Promise<void> {\n // if (this.parent) {\n // await this._deactivate.bind(this.parent)(binding, instance);\n // } else {\n // await this._bindingDeactivationAndPreDestroyAsync(binding, instance, constructor);\n // }\n // }\n\n private _removeServiceFromDictionary(serviceIdentifier: interfaces.ServiceIdentifier): void {\n try {\n this._bindingDictionary.remove(serviceIdentifier);\n } catch (e) {\n throw new Error(`${ERROR_MSGS.CANNOT_UNBIND} ${getServiceIdentifierAsString(serviceIdentifier)}`);\n }\n }\n\n private _bindingDeactivationAndPreDestroy<T>(\n binding: Binding<T>,\n instance: T,\n constructor: NewableFunction\n ): void | Promise<void> {\n if (typeof binding.onDeactivation === 'function') {\n const result = binding.onDeactivation(instance);\n\n if (isPromise(result)) {\n return result.then(() => this._preDestroy(constructor, instance));\n }\n }\n\n return this._preDestroy(constructor, instance);\n }\n\n private async _bindingDeactivationAndPreDestroyAsync<T>(\n binding: Binding<T>,\n instance: T,\n constructor: NewableFunction\n ): Promise<void> {\n if (typeof binding.onDeactivation === 'function') {\n await binding.onDeactivation(instance);\n }\n\n await this._preDestroy(constructor, instance);\n }\n}\n\nexport { Container };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify-lite/container/container.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA8C;AAC9C,oEAAsD;AACtD,8DAA8E;AAC9E,yEAA2D;AAE3D,iEAA6D;AAC7D,iDAAoF;AACpF,qDAAiD;AACjD,mEAA8D;AAC9D,0CAAuE;AACvE,oCAAiC;AACjC,0DAAsE;AACtE,qCAAkC;AAClC,8EAA6C;AAK7C,MAAM,SAAS;IAWb,MAAM,CAAC,KAAK,CACV,UAAgC,EAChC,UAAgC,EAChC,GAAG,UAAkC;QAErC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,gBAAgB,GAAqD;YACzE,UAAU;YACV,UAAU;YACV,GAAG,UAAU;SACd,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,IAAA,8BAAoB,EAAC,eAAe,CAAC,CAAC,CAAC;QAChE,MAAM,iBAAiB,GAAmD,IAAA,8BAAoB,EAAC,SAAS,CAAC,CAAC;QAE1G,SAAS,cAAc,CACrB,MAAsD,EACtD,WAA2D;YAE3D,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC9B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBACtB,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,gBAAgB,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE;YACjD,cAAc,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,YAAY,gBAA8C;QACxD,MAAM,OAAO,GAAG,gBAAgB,IAAI,EAAE,CAAC;QACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,mCAAmC,EAAE,CAAC,CAAC;SACtE;QAED,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;YACtC,OAAO,CAAC,YAAY,GAAG,gCAAgB,CAAC,SAAS,CAAC;SACnD;aAAM,IACL,OAAO,CAAC,YAAY,KAAK,gCAAgB,CAAC,SAAS;YACnD,OAAO,CAAC,YAAY,KAAK,gCAAgB,CAAC,SAAS;YACnD,OAAO,CAAC,YAAY,KAAK,gCAAgB,CAAC,OAAO,EACjD;YACA,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,uCAAuC,EAAE,CAAC,CAAC;SAC1E;QAED,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE;YAC5C,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACpC;aAAM,IAAI,OAAO,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE;YAC1D,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,8CAA8C,EAAE,CAAC,CAAC;SACjF;QAED,IAAI,OAAO,CAAC,mBAAmB,KAAK,SAAS,EAAE;YAC7C,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC;SACrC;aAAM,IAAI,OAAO,OAAO,CAAC,mBAAmB,KAAK,SAAS,EAAE;YAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,yCAAyC,EAAE,CAAC,CAAC;SAC5E;QAED,IAAI,CAAC,OAAO,GAAG;YACb,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;SACjD,CAAC;QAEF,IAAI,CAAC,EAAE,GAAG,IAAA,OAAE,GAAE,CAAC;QACf,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAM,EAA+B,CAAC;QAIpE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,eAAe,GAAG,IAAI,gCAAc,EAAE,CAAC;IAE9C,CAAC;IAED,IAAI,CAAC,GAAG,OAAqC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAE5D,KAAK,MAAM,aAAa,IAAI,OAAO,EAAE;YACnC,MAAM,sBAAsB,GAAG,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAE5D,aAAa,CAAC,QAAQ,CACpB,sBAAsB,CAAC,YAA+B,EACtD,sBAAsB,CAAC,cAAc,EACrC,sBAAsB,CAAC,eAAe,EACtC,sBAAsB,CAAC,cAAmC,CAI3D,CAAC;SACH;IACH,CAAC;IAED,MAAM,CAAC,GAAG,OAAyC;QACjD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAG5C,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,CAAI,iBAAkD;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,gCAAgB,CAAC,SAAS,CAAC;QACtE,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAI,iBAAiB,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAA2B,CAAC,CAAC;QAC5E,OAAO,IAAI,mCAAe,CAAI,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAI,iBAAkD;QAC1D,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC;IAUD,MAAM,CAAC,iBAA+C;QACpD,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAEhE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SACtC;QAED,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;IACvD,CAAC;IAaD,SAAS;QACP,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC/C,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAM,EAAoB,CAAC;IAC3D,CAAC;IA6BD,OAAO,CAAC,iBAAwD;QAC9D,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YACzB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;SAChD;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,cAAc,CAAI,iBAAkD;QAClE,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC3D,CAAC;IAED,YAAY,CAAC,iBAA+C,EAAE,KAA+B;QAC3F,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9E,CAAC;IAGD,aAAa,CACX,iBAA+C,EAC/C,GAA6B,EAC7B,KAAc;QAEd,IAAI,KAAK,GAAG,KAAK,CAAC;QAGlB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,IAAA,2BAAiB,EAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACvE,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;SACnD;QAGD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YACzB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,iBAAiB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;SAClE;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yBAAyB,CAAC,cAAyC;QACjE,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAKD,GAAG,CAAI,iBAAkD;QAKvD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAO9D,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAI,OAAO,CAAM,CAAC;QAIvD,OAAO,IAAI,CAAC;IACd,CAAC;IAEK,QAAQ,CAAI,iBAAkD;;YAClE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;YAE9D,OAAO,IAAI,CAAC,IAAI,CAAI,OAAO,CAAmB,CAAC;QACjD,CAAC;KAAA;IAED,SAAS,CAAI,iBAAkD,EAAE,GAA6B,EAAE,KAAc;QAC5G,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAE1E,OAAO,IAAI,CAAC,mBAAmB,CAAI,OAAO,CAAM,CAAC;IACnD,CAAC;IAYD,QAAQ,CAAI,iBAAkD,EAAE,KAA+B;QAC7F,OAAO,IAAI,CAAC,SAAS,CAAI,iBAAiB,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAWD,MAAM,CAAI,iBAAkD;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAEpD,OAAO,IAAI,CAAC,mBAAmB,CAAI,OAAO,CAAQ,CAAC;IACrD,CAAC;IAQD,YAAY,CACV,iBAAkD,EAClD,GAA6B,EAC7B,KAAc;QAEd,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAEzE,OAAO,IAAI,CAAC,mBAAmB,CAAI,OAAO,CAAQ,CAAC;IACrD,CAAC;IAYD,WAAW,CAAI,iBAAkD,EAAE,KAA+B;QAChG,OAAO,IAAI,CAAC,YAAY,CAAI,iBAAiB,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChF,CAAC;IASD,OAAO,CAAI,mBAA0C;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,IAAI,CAAI,mBAAmB,CAAC,CAAC,MAAM,EAAE,CAAC;SAC5C;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAI,mBAAmB,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;SAClC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,WAAW,CAAI,WAA4B,EAAE,QAAW;;QAC9D,IAAK,0BAAe,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;YACvE,MAAM,IAAI,GAAyB,0BAAe,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACtG,OAAO,MAAA,MAAC,QAAmC,EAAC,IAAI,CAAC,KAAe,CAAC,kDAAI,CAAC;SACvE;IACH,CAAC;IAQO,qBAAqB,CAAC,QAAgB;QAC5C,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC7F,CAAC;IAEO,WAAW,CAAI,OAAmB,EAAE,QAAW;QACrD,MAAM,WAAW,GAAoB,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;QACjF,IAAI;YAcF,MAAM,2BAA2B,GAAG,IAAI,CAAC,uDAAuD,CAC9F,OAAO,EACP,QAAQ,EACR,WAAW,CACZ,CAAC;YAEF,IAAI,IAAA,iBAAS,EAAC,2BAA2B,CAAC,EAAE;gBAC1C,OAAO,IAAI,CAAC,wBAAwB,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAC;aAChF;SACF;QAAC,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,YAAY,KAAK,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;aACjF;SACF;IACH,CAAC;IAEa,wBAAwB,CAAC,WAA0B,EAAE,WAA4B;;YAC7F,IAAI;gBACF,MAAM,WAAW,CAAC;aACnB;YAAC,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,YAAY,KAAK,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;iBACjF;aACF;QACH,CAAC;KAAA;IA+BO,iCAAiC;QACvC,MAAM,WAAW,GAAG,CAClB,eAAoD,EACpD,QAA8C,EAC9C,EAAE;YAKA,eACD,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACjC,CAAC,CAAC;QAEF,MAAM,eAAe,GACnB,CAAI,QAA8C,EAAE,EAAE,CACtD,CAAC,iBAA+C,EAAE,EAAE;YAClD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrD,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YACvC,OAAO,eAAqC,CAAC;QAC/C,CAAC,CAAC;QAEJ,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,CAAC,iBAA+C,EAAE,EAAE;YAClF,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,CAAC,iBAA+C,EAAE,EAAE;YACvF,OAAO,IAAW,CAAC;QAErB,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,CAAC,iBAA+C,EAAE,EAAE;YACnF,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,MAAM,iBAAiB,GACrB,CAAc,QAA8C,EAAE,EAAE,CAChE,CAAC,iBAA+C,EAAE,EAAE;YAClD,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACvD,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YACvC,OAAO,eAAqC,CAAC;QAC/C,CAAC,CAAC;QAgBJ,OAAO,CAAC,GAAyC,EAAE,EAAE,CAAC,CAAC;YACrD,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC;YAClC,eAAe,EAAE,kBAAkB,EAAE;YAGrC,cAAc,EAAE,iBAAiB,CAAC,GAAG,CAAC;YACtC,cAAc,EAAE,iBAAiB,EAAE;YACnC,mBAAmB,EAAE,sBAAsB,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;IAOO,IAAI,CAAI,OAAmB;QACjC,MAAM,kBAAkB,mCACnB,OAAO,KACV,kBAAkB,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,EACtC,UAAU,EAAE,8BAAc,CAAC,QAAQ,GACpC,CAAC;QASF,OAAO,IAAI,CAAC,eAAe,EAAK,CAAC,kBAAkB,CAAC,CAAC;IACvD,CAAC;IAEO,mBAAmB,CAAI,OAAmB;QAEhD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAI,OAAO,CAAC,CAAC;QAMrC,OAAO,MAAiB,CAAC;IAC3B,CAAC;IAEO,WAAW,CAAI,iBAAkD;QACvE,MAAM,UAAU,GAAe;YAC7B,gBAAgB,EAAE,IAAI;YACtB,aAAa,EAAE,IAAI;YACnB,iBAAiB;SAClB,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,cAAc,CACpB,iBAAkD,EAClD,aAAsB,EACtB,GAA0C,EAC1C,KAAe;QAEf,MAAM,aAAa,GAAe;YAChC,gBAAgB,EAAE,KAAK;YACvB,aAAa;YACb,iBAAiB;YACjB,GAAG;YACH,KAAK;SACN,CAAC;QAEF,OAAO,aAAa,CAAC;IACvB,CAAC;IAKO,eAAe;QACrB,OAAO,CAAC,IAA4B,EAAE,EAAE;YAOtC,IAAI,OAAO,GAAG,IAAA,cAAI,EAChB,IAAI,CAAC,eAAe,EACpB,IAAI,EACJ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,gBAAgB,CACtB,CAAC;YAGF,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAG3C,MAAM,MAAM,GAAG,IAAA,kBAAO,EAAI,OAAO,CAAC,CAAC;YAEnC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,OAAyB;QACtD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACtB,OAAO;SACR;QAED,IAAI,IAAA,iBAAS,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;SAC5E;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAEO,qBAAqB,CAAC,QAA4B;QACxD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAEpD,IAAI,IAAA,iBAAS,EAAC,MAAM,CAAC,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;aACnD;SACF;IACH,CAAC;IAMO,uDAAuD,CAC7D,OAAmB,EACnB,QAAW,EACX,WAA4B;QAE5B,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SAC9D;QACD,OAAO,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChF,CAAC;IAcO,4BAA4B,CAAC,iBAA+C;QAClF,IAAI;YACF,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;SACnD;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,aAAa,IAAI,IAAA,4CAA4B,EAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;SACnG;IACH,CAAC;IAEO,iCAAiC,CACvC,OAAmB,EACnB,QAAW,EACX,WAA4B;QAE5B,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE;YAChD,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEhD,IAAI,IAAA,iBAAS,EAAC,MAAM,CAAC,EAAE;gBACrB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;aACnE;SACF;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAEa,sCAAsC,CAClD,OAAmB,EACnB,QAAW,EACX,WAA4B;;YAE5B,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE;gBAChD,MAAM,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;aACxC;YAED,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;KAAA;CACF;AAEQ,8BAAS","file":"container.js","sourcesContent":["import { Binding } from '../bindings/binding';\nimport * as ERROR_MSGS from '../constants/error_msgs';\nimport { BindingScopeEnum, TargetTypeEnum } from '../constants/literal_types';\nimport * as METADATA_KEY from '../constants/metadata_keys';\nimport type { interfaces } from '../interfaces/interfaces';\nimport { MetadataReader } from '../planning/metadata_reader';\nimport { createMockRequest, getBindingDictionary, plan } from '../planning/planner';\nimport { resolve } from '../resolution/resolver';\nimport { BindingToSyntax } from '../syntax/binding_to_syntax';\nimport { isPromise, isPromiseOrContainsPromise } from '../utils/async';\nimport { id } from '../utils/id';\nimport { getServiceIdentifierAsString } from '../utils/serialization';\nimport { Lookup } from './lookup';\nimport Reflect from '../../Reflect-metadata';\n// import { ModuleActivationStore } from './module_activation_store';\n\ntype GetArgs<T> = Omit<interfaces.NextArgs<T>, 'contextInterceptor' | 'targetType'>;\n\nclass Container implements interfaces.Container {\n id: number;\n parent: interfaces.Container | null;\n readonly options: interfaces.ContainerOptions;\n // private _middleware: interfaces.Next | null;\n private _bindingDictionary: interfaces.Lookup<interfaces.Binding<unknown>>;\n // private _activations: interfaces.Lookup<interfaces.BindingActivation<unknown>>;\n // private _deactivations: interfaces.Lookup<interfaces.BindingDeactivation<unknown>>;\n private _metadataReader: interfaces.MetadataReader;\n // private _moduleActivationStore: interfaces.ModuleActivationStore;\n\n static merge(\n container1: interfaces.Container,\n container2: interfaces.Container,\n ...containers: interfaces.Container[]\n ): interfaces.Container {\n const container = new Container();\n const targetContainers: interfaces.Lookup<interfaces.Binding<unknown>>[] = [\n container1,\n container2,\n ...containers\n ].map(targetContainer => getBindingDictionary(targetContainer));\n const bindingDictionary: interfaces.Lookup<interfaces.Binding<unknown>> = getBindingDictionary(container);\n\n function copyDictionary(\n origin: interfaces.Lookup<interfaces.Binding<unknown>>,\n destination: interfaces.Lookup<interfaces.Binding<unknown>>\n ) {\n origin.traverse((_key, value) => {\n value.forEach(binding => {\n destination.add(binding.serviceIdentifier, binding.clone());\n });\n });\n }\n\n targetContainers.forEach(targetBindingDictionary => {\n copyDictionary(targetBindingDictionary, bindingDictionary);\n });\n\n return container;\n }\n\n constructor(containerOptions?: interfaces.ContainerOptions) {\n const options = containerOptions || {};\n if (typeof options !== 'object') {\n throw new Error(`${ERROR_MSGS.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT}`);\n }\n\n if (options.defaultScope === undefined) {\n options.defaultScope = BindingScopeEnum.Transient;\n } else if (\n options.defaultScope !== BindingScopeEnum.Singleton &&\n options.defaultScope !== BindingScopeEnum.Transient &&\n options.defaultScope !== BindingScopeEnum.Request\n ) {\n throw new Error(`${ERROR_MSGS.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE}`);\n }\n\n if (options.autoBindInjectable === undefined) {\n options.autoBindInjectable = false;\n } else if (typeof options.autoBindInjectable !== 'boolean') {\n throw new Error(`${ERROR_MSGS.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE}`);\n }\n\n if (options.skipBaseClassChecks === undefined) {\n options.skipBaseClassChecks = false;\n } else if (typeof options.skipBaseClassChecks !== 'boolean') {\n throw new Error(`${ERROR_MSGS.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK}`);\n }\n\n this.options = {\n autoBindInjectable: options.autoBindInjectable,\n defaultScope: options.defaultScope,\n skipBaseClassChecks: options.skipBaseClassChecks\n };\n\n this.id = id();\n this._bindingDictionary = new Lookup<interfaces.Binding<unknown>>();\n // this._middleware = null;\n // this._activations = new Lookup<interfaces.BindingActivation<unknown>>();\n // this._deactivations = new Lookup<interfaces.BindingDeactivation<unknown>>();\n this.parent = null;\n this._metadataReader = new MetadataReader();\n // this._moduleActivationStore = new ModuleActivationStore();\n }\n\n load(...modules: interfaces.ContainerModule[]) {\n const getHelpers = this._getContainerModuleHelpersFactory();\n\n for (const currentModule of modules) {\n const containerModuleHelpers = getHelpers(currentModule.id);\n\n currentModule.registry(\n containerModuleHelpers.bindFunction as interfaces.Bind,\n containerModuleHelpers.unbindFunction,\n containerModuleHelpers.isboundFunction,\n containerModuleHelpers.rebindFunction as interfaces.Rebind\n // containerModuleHelpers.unbindAsyncFunction,\n // containerModuleHelpers.onActivationFunction as interfaces.Container['onActivation'],\n // containerModuleHelpers.onDeactivationFunction as interfaces.Container['onDeactivation']\n );\n }\n }\n\n unload(...modules: interfaces.ContainerModuleBase[]): void {\n modules.forEach(module => {\n const deactivations = this._removeModuleBindings(module.id);\n this._deactivateSingletons(deactivations);\n\n // this._removeModuleHandlers(module.id);\n });\n }\n\n // Registers a type binding\n bind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n const scope = this.options.defaultScope || BindingScopeEnum.Transient;\n const binding = new Binding<T>(serviceIdentifier, scope);\n this._bindingDictionary.add(serviceIdentifier, binding as Binding<unknown>);\n return new BindingToSyntax<T>(binding);\n }\n\n rebind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n this.unbind(serviceIdentifier);\n return this.bind(serviceIdentifier);\n }\n\n // public async rebindAsync<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>\n // ): Promise<interfaces.BindingToSyntax<T>> {\n // await this.unbindAsync(serviceIdentifier);\n // return this.bind(serviceIdentifier);\n // }\n\n // Removes a type binding from the registry by its key\n unbind(serviceIdentifier: interfaces.ServiceIdentifier): void {\n if (this._bindingDictionary.hasKey(serviceIdentifier)) {\n const bindings = this._bindingDictionary.get(serviceIdentifier);\n\n this._deactivateSingletons(bindings);\n }\n\n this._removeServiceFromDictionary(serviceIdentifier);\n }\n\n // public async unbindAsync(serviceIdentifier: interfaces.ServiceIdentifier): Promise<void> {\n // if (this._bindingDictionary.hasKey(serviceIdentifier)) {\n // const bindings = this._bindingDictionary.get(serviceIdentifier);\n\n // await this._deactivateSingletonsAsync(bindings);\n // }\n\n // this._removeServiceFromDictionary(serviceIdentifier);\n // }\n\n // Removes all the type bindings from the registry\n unbindAll(): void {\n this._bindingDictionary.traverse((_key, value) => {\n this._deactivateSingletons(value);\n });\n\n this._bindingDictionary = new Lookup<Binding<unknown>>();\n }\n\n // public async unbindAllAsync(): Promise<void> {\n // const promises: Promise<void>[] = [];\n\n // this._bindingDictionary.traverse((_key, value) => {\n // promises.push(this._deactivateSingletonsAsync(value));\n // });\n\n // await Promise.all(promises);\n\n // this._bindingDictionary = new Lookup<Binding<unknown>>();\n // }\n\n // public onActivation<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // onActivation: interfaces.BindingActivation<T>\n // ) {\n // this._activations.add(serviceIdentifier, onActivation as interfaces.BindingActivation<unknown>);\n // }\n\n // public onDeactivation<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // onDeactivation: interfaces.BindingDeactivation<T>\n // ) {\n // this._deactivations.add(serviceIdentifier, onDeactivation as interfaces.BindingDeactivation<unknown>);\n // }\n\n // Allows to check if there are bindings available for serviceIdentifier\n isBound(serviceIdentifier: interfaces.ServiceIdentifier<unknown>): boolean {\n let bound = this._bindingDictionary.hasKey(serviceIdentifier);\n if (!bound && this.parent) {\n bound = this.parent.isBound(serviceIdentifier);\n }\n return bound;\n }\n\n // check binding dependency only in current container\n isCurrentBound<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): boolean {\n return this._bindingDictionary.hasKey(serviceIdentifier);\n }\n\n isBoundNamed(serviceIdentifier: interfaces.ServiceIdentifier, named: string | number | symbol): boolean {\n return this.isBoundTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n }\n\n // Check if a binding with a complex constraint is available without throwing a error. Ancestors are also verified.\n isBoundTagged(\n serviceIdentifier: interfaces.ServiceIdentifier,\n key: string | number | symbol,\n value: unknown\n ): boolean {\n let bound = false;\n\n // verify if there are bindings available for serviceIdentifier on current binding dictionary\n if (this._bindingDictionary.hasKey(serviceIdentifier)) {\n const bindings = this._bindingDictionary.get(serviceIdentifier);\n const request = createMockRequest(this, serviceIdentifier, key, value);\n bound = bindings.some(b => b.constraint(request));\n }\n\n // verify if there is a parent container that could solve the request\n if (!bound && this.parent) {\n bound = this.parent.isBoundTagged(serviceIdentifier, key, value);\n }\n\n return bound;\n }\n\n applyCustomMetadataReader(metadataReader: interfaces.MetadataReader) {\n this._metadataReader = metadataReader;\n }\n\n // Resolves a dependency by its runtime identifier\n // The runtime identifier must be associated with only one binding\n // use getAll when the runtime identifier is associated with multiple bindings\n get<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T {\n // if (!window.aaa) {\n // window.aaa = 0;\n // }\n // const t = performance.now();\n const getArgs = this._getNotAllArgs(serviceIdentifier, false);\n // const getArgs = {\n // avoidConstraints: false,\n // isMultiInject: false,\n // serviceIdentifier\n // };\n\n const data = this._getButThrowIfAsync<T>(getArgs) as T;\n // const delta = performance.now() - t;\n // window.aaa += delta;\n\n return data;\n }\n\n async getAsync<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): Promise<T> {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false);\n\n return this._get<T>(getArgs) as Promise<T> | T;\n }\n\n getTagged<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, key: string | number | symbol, value: unknown): T {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false, key, value);\n\n return this._getButThrowIfAsync<T>(getArgs) as T;\n }\n\n // public async getTaggedAsync<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // key: string | number | symbol,\n // value: unknown\n // ): Promise<T> {\n // const getArgs = this._getNotAllArgs(serviceIdentifier, false, key, value);\n\n // return this._get<T>(getArgs) as Promise<T> | T;\n // }\n\n getNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string | number | symbol): T {\n return this.getTagged<T>(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n }\n\n // public getNamedAsync<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // named: string | number | symbol\n // ): Promise<T> {\n // return this.getTaggedAsync<T>(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n // }\n\n // Resolves a dependency by its runtime identifier\n // The runtime identifier can be associated with one or multiple bindings\n getAll<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T[] {\n const getArgs = this._getAllArgs(serviceIdentifier);\n\n return this._getButThrowIfAsync<T>(getArgs) as T[];\n }\n\n // public getAllAsync<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): Promise<T[]> {\n // const getArgs = this._getAllArgs(serviceIdentifier);\n\n // return this._getAll(getArgs);\n // }\n\n getAllTagged<T>(\n serviceIdentifier: interfaces.ServiceIdentifier<T>,\n key: string | number | symbol,\n value: unknown\n ): T[] {\n const getArgs = this._getNotAllArgs(serviceIdentifier, true, key, value);\n\n return this._getButThrowIfAsync<T>(getArgs) as T[];\n }\n\n // public getAllTaggedAsync<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // key: string | number | symbol,\n // value: unknown\n // ): Promise<T[]> {\n // const getArgs = this._getNotAllArgs(serviceIdentifier, true, key, value);\n\n // return this._getAll(getArgs);\n // }\n\n getAllNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string | number | symbol): T[] {\n return this.getAllTagged<T>(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n }\n\n // public getAllNamedAsync<T>(\n // serviceIdentifier: interfaces.ServiceIdentifier<T>,\n // named: string | number | symbol\n // ): Promise<T[]> {\n // return this.getAllTaggedAsync<T>(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n // }\n\n resolve<T>(constructorFunction: interfaces.Newable<T>) {\n const isBound = this.isBound(constructorFunction);\n if (!isBound) {\n this.bind<T>(constructorFunction).toSelf();\n }\n const resolved = this.get<T>(constructorFunction);\n if (!isBound) {\n this.unbind(constructorFunction);\n }\n return resolved;\n }\n\n private _preDestroy<T>(constructor: NewableFunction, instance: T): Promise<void> | void {\n if ((Reflect as any).hasMetadata(METADATA_KEY.PRE_DESTROY, constructor)) {\n const data: interfaces.Metadata = (Reflect as any).getMetadata(METADATA_KEY.PRE_DESTROY, constructor);\n return (instance as interfaces.Instance<T>)[data.value as string]?.();\n }\n }\n // private _removeModuleHandlers(moduleId: number): void {\n // const moduleActivationsHandlers = this._moduleActivationStore.remove(moduleId);\n\n // this._activations.removeIntersection(moduleActivationsHandlers.onActivations);\n // this._deactivations.removeIntersection(moduleActivationsHandlers.onDeactivations);\n // }\n\n private _removeModuleBindings(moduleId: number): interfaces.Binding<unknown>[] {\n return this._bindingDictionary.removeByCondition(binding => binding.moduleId === moduleId);\n }\n\n private _deactivate<T>(binding: Binding<T>, instance: T): void | Promise<void> {\n const constructor: NewableFunction = Object.getPrototypeOf(instance).constructor;\n try {\n // if (this._deactivations.hasKey(binding.serviceIdentifier)) {\n // const result = this._deactivateContainer(instance, this._deactivations.get(binding.serviceIdentifier).values());\n\n // if (isPromise(result)) {\n // return this._handleDeactivationError(\n // result.then(() =>\n // this._propagateContainerDeactivationThenBindingAndPreDestroyAsync(binding, instance, constructor)\n // ),\n // constructor\n // );\n // }\n // }\n\n const propagateDeactivationResult = this._propagateContainerDeactivationThenBindingAndPreDestroy(\n binding,\n instance,\n constructor\n );\n\n if (isPromise(propagateDeactivationResult)) {\n return this._handleDeactivationError(propagateDeactivationResult, constructor);\n }\n } catch (ex) {\n if (ex instanceof Error) {\n throw new Error(ERROR_MSGS.ON_DEACTIVATION_ERROR(constructor.name, ex.message));\n }\n }\n }\n\n private async _handleDeactivationError(asyncResult: Promise<void>, constructor: NewableFunction): Promise<void> {\n try {\n await asyncResult;\n } catch (ex) {\n if (ex instanceof Error) {\n throw new Error(ERROR_MSGS.ON_DEACTIVATION_ERROR(constructor.name, ex.message));\n }\n }\n }\n\n // private _deactivateContainer<T>(\n // instance: T,\n // deactivationsIterator: IterableIterator<interfaces.BindingDeactivation<unknown>>\n // ): void | Promise<void> {\n // let deactivation = deactivationsIterator.next();\n\n // while (deactivation.value) {\n // const result = deactivation.value(instance);\n\n // if (isPromise(result)) {\n // return result.then(() => this._deactivateContainerAsync(instance, deactivationsIterator));\n // }\n\n // deactivation = deactivationsIterator.next();\n // }\n // }\n\n // private async _deactivateContainerAsync<T>(\n // instance: T,\n // deactivationsIterator: IterableIterator<interfaces.BindingDeactivation<unknown>>\n // ): Promise<void> {\n // let deactivation = deactivationsIterator.next();\n\n // while (deactivation.value) {\n // await deactivation.value(instance);\n // deactivation = deactivationsIterator.next();\n // }\n // }\n\n private _getContainerModuleHelpersFactory() {\n const setModuleId = (\n bindingToSyntax: interfaces.BindingToSyntax<unknown>,\n moduleId: interfaces.ContainerModuleBase['id']\n ) => {\n // TODO: Implement an internal type `_BindingToSyntax<T>` wherein this member\n // can be public. Let `BindingToSyntax<T>` be the presentational type that\n // depends on it, and does not expose this member as public.\n (\n bindingToSyntax as unknown as { _binding: { moduleId: interfaces.ContainerModuleBase['id'] } }\n )._binding.moduleId = moduleId;\n };\n\n const getBindFunction =\n <T>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.bind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n\n const getUnbindFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.unbind(serviceIdentifier);\n };\n\n const getUnbindAsyncFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return null as any;\n // return this.unbindAsync(serviceIdentifier);\n };\n\n const getIsboundFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.isBound(serviceIdentifier);\n };\n\n const getRebindFunction =\n <T = unknown>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.rebind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n\n // const getOnActivationFunction =\n // (moduleId: interfaces.ContainerModuleBase['id']) =>\n // (serviceIdentifier: interfaces.ServiceIdentifier, onActivation: interfaces.BindingActivation) => {\n // this._moduleActivationStore.addActivation(moduleId, serviceIdentifier, onActivation);\n // this.onActivation(serviceIdentifier, onActivation);\n // };\n\n // const getOnDeactivationFunction =\n // (moduleId: interfaces.ContainerModuleBase['id']) =>\n // (serviceIdentifier: interfaces.ServiceIdentifier, onDeactivation: interfaces.BindingDeactivation) => {\n // this._moduleActivationStore.addDeactivation(moduleId, serviceIdentifier, onDeactivation);\n // this.onDeactivation(serviceIdentifier, onDeactivation);\n // };\n\n return (mId: interfaces.ContainerModuleBase['id']) => ({\n bindFunction: getBindFunction(mId),\n isboundFunction: getIsboundFunction(),\n // onActivationFunction: getOnActivationFunction(mId),\n // onDeactivationFunction: getOnDeactivationFunction(mId),\n rebindFunction: getRebindFunction(mId),\n unbindFunction: getUnbindFunction(),\n unbindAsyncFunction: getUnbindAsyncFunction()\n });\n }\n // private _getAll<T>(getArgs: GetArgs<T>): Promise<T[]> {\n // return Promise.all(this._get<T>(getArgs) as (Promise<T> | T)[]);\n // }\n // Prepares arguments required for resolution and\n // delegates resolution to _middleware if available\n // otherwise it delegates resolution to _planAndResolve\n private _get<T>(getArgs: GetArgs<T>): interfaces.ContainerResolution<T> {\n const planAndResolveArgs: interfaces.NextArgs<T> = {\n ...getArgs,\n contextInterceptor: context => context,\n targetType: TargetTypeEnum.Variable\n };\n // if (this._middleware) {\n // const middlewareResult = this._middleware(planAndResolveArgs);\n // if (middlewareResult === undefined || middlewareResult === null) {\n // throw new Error(ERROR_MSGS.INVALID_MIDDLEWARE_RETURN);\n // }\n // return middlewareResult as interfaces.ContainerResolution<T>;\n // }\n\n return this._planAndResolve<T>()(planAndResolveArgs);\n }\n\n private _getButThrowIfAsync<T>(getArgs: GetArgs<T>): T | T[] {\n // console.count('_getButThrowIfAsync');\n const result = this._get<T>(getArgs);\n\n // if (isPromiseOrContainsPromise<T>(result)) {\n // throw new Error(ERROR_MSGS.LAZY_IN_SYNC(getArgs.serviceIdentifier));\n // }\n\n return result as T | T[];\n }\n\n private _getAllArgs<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): GetArgs<T> {\n const getAllArgs: GetArgs<T> = {\n avoidConstraints: true,\n isMultiInject: true,\n serviceIdentifier\n };\n\n return getAllArgs;\n }\n\n private _getNotAllArgs<T>(\n serviceIdentifier: interfaces.ServiceIdentifier<T>,\n isMultiInject: boolean,\n key?: string | number | symbol | undefined,\n value?: unknown\n ): GetArgs<T> {\n const getNotAllArgs: GetArgs<T> = {\n avoidConstraints: false,\n isMultiInject,\n serviceIdentifier,\n key,\n value\n };\n\n return getNotAllArgs;\n }\n\n // Planner creates a plan and Resolver resolves a plan\n // one of the jobs of the Container is to links the Planner\n // with the Resolver and that is what this function is about\n private _planAndResolve<T = unknown>(): (args: interfaces.NextArgs<T>) => interfaces.ContainerResolution<T> {\n return (args: interfaces.NextArgs<T>) => {\n // create a plan\n // if (!window.aaa) {\n // window.aaa = 0;\n // }\n // const t = performance.now();\n // debugger;\n let context = plan(\n this._metadataReader,\n this,\n args.isMultiInject,\n args.targetType,\n args.serviceIdentifier,\n args.key,\n args.value,\n args.avoidConstraints\n );\n\n // apply context interceptor\n context = args.contextInterceptor(context);\n // window.aaa += performance.now() - t;\n // resolve plan\n const result = resolve<T>(context);\n\n return result;\n };\n }\n\n private _deactivateIfSingleton(binding: Binding<unknown>): Promise<void> | void {\n if (!binding.activated) {\n return;\n }\n\n if (isPromise(binding.cache)) {\n return binding.cache.then(resolved => this._deactivate(binding, resolved));\n }\n\n return this._deactivate(binding, binding.cache);\n }\n\n private _deactivateSingletons(bindings: Binding<unknown>[]): void {\n for (const binding of bindings) {\n const result = this._deactivateIfSingleton(binding);\n\n if (isPromise(result)) {\n throw new Error(ERROR_MSGS.ASYNC_UNBIND_REQUIRED);\n }\n }\n }\n\n // private async _deactivateSingletonsAsync(bindings: Binding<unknown>[]): Promise<void> {\n // await Promise.all(bindings.map(b => this._deactivateIfSingleton(b)));\n // }\n\n private _propagateContainerDeactivationThenBindingAndPreDestroy<T>(\n binding: Binding<T>,\n instance: T,\n constructor: NewableFunction\n ): void | Promise<void> {\n if (this.parent) {\n return this._deactivate.bind(this.parent)(binding, instance);\n }\n return this._bindingDeactivationAndPreDestroy(binding, instance, constructor);\n }\n\n // private async _propagateContainerDeactivationThenBindingAndPreDestroyAsync<T>(\n // binding: Binding<T>,\n // instance: T,\n // constructor: NewableFunction\n // ): Promise<void> {\n // if (this.parent) {\n // await this._deactivate.bind(this.parent)(binding, instance);\n // } else {\n // await this._bindingDeactivationAndPreDestroyAsync(binding, instance, constructor);\n // }\n // }\n\n private _removeServiceFromDictionary(serviceIdentifier: interfaces.ServiceIdentifier): void {\n try {\n this._bindingDictionary.remove(serviceIdentifier);\n } catch (e) {\n throw new Error(`${ERROR_MSGS.CANNOT_UNBIND} ${getServiceIdentifierAsString(serviceIdentifier)}`);\n }\n }\n\n private _bindingDeactivationAndPreDestroy<T>(\n binding: Binding<T>,\n instance: T,\n constructor: NewableFunction\n ): void | Promise<void> {\n if (typeof binding.onDeactivation === 'function') {\n const result = binding.onDeactivation(instance);\n\n if (isPromise(result)) {\n return result.then(() => this._preDestroy(constructor, instance));\n }\n }\n\n return this._preDestroy(constructor, instance);\n }\n\n private async _bindingDeactivationAndPreDestroyAsync<T>(\n binding: Binding<T>,\n instance: T,\n constructor: NewableFunction\n ): Promise<void> {\n if (typeof binding.onDeactivation === 'function') {\n await binding.onDeactivation(instance);\n }\n\n await this._preDestroy(constructor, instance);\n }\n}\n\nexport { Container };\n"]}
|
|
@@ -7,8 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
const id_1 = require("../utils/id");
|
|
8
8
|
|
|
9
9
|
class ContainerModule {
|
|
10
|
-
id;
|
|
11
|
-
registry;
|
|
12
10
|
constructor(registry) {
|
|
13
11
|
this.id = (0, id_1.id)(), this.registry = registry;
|
|
14
12
|
}
|
|
@@ -17,8 +15,6 @@ class ContainerModule {
|
|
|
17
15
|
exports.ContainerModule = ContainerModule;
|
|
18
16
|
|
|
19
17
|
class AsyncContainerModule {
|
|
20
|
-
id;
|
|
21
|
-
registry;
|
|
22
18
|
constructor(registry) {
|
|
23
19
|
this.id = (0, id_1.id)(), this.registry = registry;
|
|
24
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify-lite/container/container_module.ts"],"names":[],"mappings":";;;AACA,oCAAiC;AAEjC,MAAa,eAAe;
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify-lite/container/container_module.ts"],"names":[],"mappings":";;;AACA,oCAAiC;AAEjC,MAAa,eAAe;IAI1B,YAAY,QAA4C;QACtD,IAAI,CAAC,EAAE,GAAG,IAAA,OAAE,GAAE,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AARD,0CAQC;AAED,MAAa,oBAAoB;IAI/B,YAAY,QAAiD;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAA,OAAE,GAAE,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AARD,oDAQC","file":"container_module.js","sourcesContent":["import type { interfaces } from '../interfaces/interfaces';\nimport { id } from '../utils/id';\n\nexport class ContainerModule implements interfaces.ContainerModule {\n id: number;\n registry: interfaces.ContainerModuleCallBack;\n\n constructor(registry: interfaces.ContainerModuleCallBack) {\n this.id = id();\n this.registry = registry;\n }\n}\n\nexport class AsyncContainerModule implements interfaces.AsyncContainerModule {\n id: number;\n registry: interfaces.AsyncContainerModuleCallBack;\n\n constructor(registry: interfaces.AsyncContainerModuleCallBack) {\n this.id = id();\n this.registry = registry;\n }\n}\n"]}
|