annil 1.17.0 → 1.18.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/README.md +38 -169
- package/dist/api/ChunkComponent/ChunkComputed/ChunkComputedConstraint.d.ts +1 -0
- package/dist/api/ChunkComponent/ChunkComputed/ChunkComputedConstraint.js +2 -0
- package/dist/api/ChunkComponent/ChunkComputed/ChunkComputedConstraint.js.map +1 -0
- package/dist/api/ChunkComponent/ChunkComputed/ChunkComputedOption.d.ts +10 -0
- package/dist/api/ChunkComponent/ChunkComputed/ChunkComputedOption.js +2 -0
- package/dist/api/ChunkComponent/ChunkComputed/ChunkComputedOption.js.map +1 -0
- package/dist/api/ChunkComponent/ChunkData/chunkDataOption.d.ts +9 -0
- package/dist/api/ChunkComponent/ChunkData/chunkDataOption.js +2 -0
- package/dist/api/ChunkComponent/ChunkData/chunkDataOption.js.map +1 -0
- package/dist/api/ChunkComponent/ChunkData/validatePrefix.d.ts +2 -0
- package/dist/api/ChunkComponent/ChunkData/validatePrefix.js +2 -0
- package/dist/api/ChunkComponent/ChunkData/validatePrefix.js.map +1 -0
- package/dist/api/ChunkComponent/ChunkMethods/ChunkMethodsOption.d.ts +10 -0
- package/dist/api/ChunkComponent/ChunkMethods/ChunkMethodsOption.js +2 -0
- package/dist/api/ChunkComponent/ChunkMethods/ChunkMethodsOption.js.map +1 -0
- package/dist/api/ChunkComponent/ChunkStore/ChunkStoreConstraint.d.ts +2 -0
- package/dist/api/ChunkComponent/ChunkStore/ChunkStoreConstraint.js +2 -0
- package/dist/api/ChunkComponent/ChunkStore/ChunkStoreConstraint.js.map +1 -0
- package/dist/api/ChunkComponent/ChunkStore/ChunkStoreOption.d.ts +12 -0
- package/dist/api/ChunkComponent/ChunkStore/ChunkStoreOption.js +2 -0
- package/dist/api/ChunkComponent/ChunkStore/ChunkStoreOption.js.map +1 -0
- package/dist/api/ChunkComponent/ChunklEvents/ChunkEventsConstraint.d.ts +2 -0
- package/dist/api/ChunkComponent/ChunklEvents/ChunkEventsConstraint.js +2 -0
- package/dist/api/ChunkComponent/ChunklEvents/ChunkEventsConstraint.js.map +1 -0
- package/dist/api/ChunkComponent/ChunklEvents/ChunkEventsOption.d.ts +10 -0
- package/dist/api/ChunkComponent/ChunklEvents/ChunkEventsOption.js +2 -0
- package/dist/api/ChunkComponent/ChunklEvents/ChunkEventsOption.js.map +1 -0
- package/dist/api/ChunkComponent/SlotComponentReturnType.d.ts +20 -0
- package/dist/api/ChunkComponent/SlotComponentReturnType.js +2 -0
- package/dist/api/ChunkComponent/SlotComponentReturnType.js.map +1 -0
- package/dist/api/ChunkComponent/index.d.ts +24 -0
- package/dist/api/ChunkComponent/index.js +4 -0
- package/dist/api/ChunkComponent/index.js.map +1 -0
- package/dist/api/CustomComponent/CustomComputed/CustomComputedConstraint.d.ts +3 -0
- package/dist/api/CustomComponent/CustomComputed/CustomComputedConstraint.js +2 -0
- package/dist/api/CustomComponent/CustomComputed/CustomComputedConstraint.js.map +1 -0
- package/dist/api/{SubComponent/SubComputed/SubComputedOption.d.ts → CustomComponent/CustomComputed/CustomComputedOption.d.ts} +1 -1
- package/dist/api/CustomComponent/CustomComputed/CustomComputedOption.js +2 -0
- package/dist/api/CustomComponent/CustomComputed/CustomComputedOption.js.map +1 -0
- package/dist/api/CustomComponent/CustomComputed/GetCustomComputedDoc.d.ts +3 -0
- package/dist/api/CustomComponent/CustomComputed/GetCustomComputedDoc.js +2 -0
- package/dist/api/CustomComponent/CustomComputed/GetCustomComputedDoc.js.map +1 -0
- package/dist/api/CustomComponent/CustomData/CustomDataConstraint.d.ts +3 -0
- package/dist/api/CustomComponent/CustomData/CustomDataConstraint.js +2 -0
- package/dist/api/CustomComponent/CustomData/CustomDataConstraint.js.map +1 -0
- package/dist/api/{SubComponent/SubData/SubDataOption.d.ts → CustomComponent/CustomData/CustomDataOption.d.ts} +1 -1
- package/dist/api/CustomComponent/CustomData/CustomDataOption.js +2 -0
- package/dist/api/CustomComponent/CustomData/CustomDataOption.js.map +1 -0
- package/dist/api/{SubComponent/SubEvents/SubEventsConstraint.d.ts → CustomComponent/CustomEvents/CustomEventsConstraint.d.ts} +1 -1
- package/dist/api/CustomComponent/CustomEvents/CustomEventsConstraint.js +2 -0
- package/dist/api/CustomComponent/CustomEvents/CustomEventsConstraint.js.map +1 -0
- package/dist/api/CustomComponent/CustomEvents/CustomEventsOption.d.ts +4 -0
- package/dist/api/CustomComponent/CustomEvents/CustomEventsOption.js +2 -0
- package/dist/api/CustomComponent/CustomEvents/CustomEventsOption.js.map +1 -0
- package/dist/api/{SubComponent/SubInherit/SubInheritConstraint.d.ts → CustomComponent/CustomInherit/CustomInheritConstraint.d.ts} +1 -1
- package/dist/api/CustomComponent/CustomInherit/CustomInheritConstraint.js +2 -0
- package/dist/api/CustomComponent/CustomInherit/CustomInheritConstraint.js.map +1 -0
- package/dist/api/{SubComponent/SubInherit/SubInheritOption.d.ts → CustomComponent/CustomInherit/CustomInheritOption.d.ts} +1 -1
- package/dist/api/CustomComponent/CustomInherit/CustomInheritOption.js +2 -0
- package/dist/api/CustomComponent/CustomInherit/CustomInheritOption.js.map +1 -0
- package/dist/api/CustomComponent/CustomInstance/CustomInstance.d.ts +2 -0
- package/dist/api/CustomComponent/CustomInstance/CustomInstance.js +2 -0
- package/dist/api/CustomComponent/CustomInstance/CustomInstance.js.map +1 -0
- package/dist/api/{SubComponent/SubLifetimes/SubLifetimesOption.d.ts → CustomComponent/CustomLifetimes/CustomLifetimesOption.d.ts} +1 -1
- package/dist/api/CustomComponent/CustomLifetimes/CustomLifetimesOption.js +2 -0
- package/dist/api/CustomComponent/CustomLifetimes/CustomLifetimesOption.js.map +1 -0
- package/dist/api/CustomComponent/CustomMethods/CustomMethodsConstraint.d.ts +2 -0
- package/dist/api/CustomComponent/CustomMethods/CustomMethodsConstraint.js +2 -0
- package/dist/api/CustomComponent/CustomMethods/CustomMethodsConstraint.js.map +1 -0
- package/dist/api/CustomComponent/CustomMethods/CustomMethodsOption.d.ts +5 -0
- package/dist/api/CustomComponent/CustomMethods/CustomMethodsOption.js +2 -0
- package/dist/api/CustomComponent/CustomMethods/CustomMethodsOption.js.map +1 -0
- package/dist/api/CustomComponent/CustomObservers/CustomObserversOption.d.ts +2 -0
- package/dist/api/CustomComponent/CustomObservers/CustomObserversOption.js +2 -0
- package/dist/api/CustomComponent/CustomObservers/CustomObserversOption.js.map +1 -0
- package/dist/api/CustomComponent/CustomPageLifetimes/CustomPageLifetimesOption.d.ts +2 -0
- package/dist/api/CustomComponent/CustomPageLifetimes/CustomPageLifetimesOption.js +2 -0
- package/dist/api/CustomComponent/CustomPageLifetimes/CustomPageLifetimesOption.js.map +1 -0
- package/dist/api/{SubComponent/SubReturnType/CreateSubComponentDoc.d.ts → CustomComponent/CustomReturnType/CreateCustomComponentDoc.d.ts} +1 -1
- package/dist/api/CustomComponent/CustomReturnType/CreateCustomComponentDoc.js +2 -0
- package/dist/api/CustomComponent/CustomReturnType/CreateCustomComponentDoc.js.map +1 -0
- package/dist/api/{SubComponent/SubStore/SubStoreConstraint.d.ts → CustomComponent/CustomStore/CustomStoreConstraint.d.ts} +1 -1
- package/dist/api/CustomComponent/CustomStore/CustomStoreConstraint.js +2 -0
- package/dist/api/CustomComponent/CustomStore/CustomStoreConstraint.js.map +1 -0
- package/dist/api/{SubComponent/SubStore/SubStoreOption.d.ts → CustomComponent/CustomStore/CustomStoreOption.d.ts} +1 -1
- package/dist/api/CustomComponent/CustomStore/CustomStoreOption.js +2 -0
- package/dist/api/CustomComponent/CustomStore/CustomStoreOption.js.map +1 -0
- package/dist/api/CustomComponent/CustomWatch/CustomWatchOption.d.ts +2 -0
- package/dist/api/CustomComponent/CustomWatch/CustomWatchOption.js +2 -0
- package/dist/api/CustomComponent/CustomWatch/CustomWatchOption.js.map +1 -0
- package/dist/api/CustomComponent/index.d.ts +49 -0
- package/dist/api/CustomComponent/index.js +4 -0
- package/dist/api/CustomComponent/index.js.map +1 -0
- package/dist/api/{SubComponent → CustomComponent}/returnType.d.ts +3 -3
- package/dist/api/CustomComponent/returnType.js.map +1 -0
- package/dist/api/DefineComponent/SubComponents/SubComponentsOption.d.ts +2 -2
- package/dist/api/DefineComponent/index.d.ts +4 -4
- package/dist/api/DefineComponent/normalizeOptions/__throttleDebounce__FieldCheck.d.ts +3 -2
- package/dist/api/DefineComponent/normalizeOptions/__throttleDebounce__FieldCheck.js.map +1 -1
- package/dist/api/DefineComponent/normalizeOptions/customEventsHandle.js +3 -3
- package/dist/api/DefineComponent/normalizeOptions/customEventsHandle.js.map +1 -1
- package/dist/api/DefineComponent/normalizeOptions/handleStore/reactionRegister.js +1 -2
- package/dist/api/DefineComponent/normalizeOptions/handleStore/reactionRegister.js.map +1 -1
- package/dist/api/DefineComponent/normalizeOptions/handleSubComponents.d.ts +3 -2
- package/dist/api/DefineComponent/normalizeOptions/handleSubComponents.js.map +1 -1
- package/dist/api/DefineComponent/normalizeOptions/index.js +1 -2
- package/dist/api/DefineComponent/normalizeOptions/index.js.map +1 -1
- package/dist/api/DefineComponent/normalizeOptions/sameFuncFieldsCollect.d.ts +3 -2
- package/dist/api/DefineComponent/normalizeOptions/sameFuncFieldsCollect.js +1 -2
- package/dist/api/DefineComponent/normalizeOptions/sameFuncFieldsCollect.js.map +1 -1
- package/dist/api/DefineComponent/normalizeOptions/watchHandler/getPathsValue.js +1 -1
- package/dist/api/DefineComponent/normalizeOptions/watchHandler/getPathsValue.js.map +1 -1
- package/dist/api/DefineComponent/normalizeOptions/watchHandler/index.js +3 -4
- package/dist/api/DefineComponent/normalizeOptions/watchHandler/index.js.map +1 -1
- package/dist/api/DefineComponent/returnType/ComponentDoc.d.ts +1 -4
- package/dist/api/DefineComponent/returnType/GenerateComponentDoc.d.ts +3 -3
- package/dist/api/DefineComponent/returnType/GetCustomEventDocOfSubDoc.d.ts +3 -3
- package/dist/api/InstanceInject/instanceConfig.js +1 -3
- package/dist/api/InstanceInject/instanceConfig.js.map +1 -1
- package/dist/api/RootComponent/Events/EventsConstraint.d.ts +9 -7
- package/dist/api/RootComponent/index.d.ts +4 -3
- package/dist/api/RootComponent/index.js.map +1 -1
- package/dist/behaviors/BbeforeCreated.d.ts +1 -1
- package/dist/behaviors/BthrottleDebounce.d.ts +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/thirdLib/vant/Button.d.ts +2 -2
- package/dist/thirdLib/vant/NoticeBar.d.ts +2 -2
- package/dist/thirdLib/vant/Popup.d.ts +2 -2
- package/dist/thirdLib/wm/Textarea.d.ts +2 -2
- package/dist/thirdLib/wm/map.d.ts +2 -2
- package/dist/thirdLib/wm/scrollView.d.ts +2 -2
- package/dist/thirdLib/wm/swiper.d.ts +2 -2
- package/dist/thirdLib/wm/view.d.ts +2 -2
- package/dist/types/{CreateComponentType.d.ts → CreateComponentDoc.d.ts} +5 -2
- package/dist/types/CreateComponentDoc.js +2 -0
- package/dist/types/CreateComponentDoc.js.map +1 -0
- package/dist/utils/nonNullable.js +1 -1
- package/dist/utils/nonNullable.js.map +1 -1
- package/package.json +8 -11
- package/CHANGELOG.md +0 -950
- package/dist/api/SubComponent/SubComputed/GetSubComputedDoc.d.ts +0 -3
- package/dist/api/SubComponent/SubComputed/GetSubComputedDoc.js +0 -2
- package/dist/api/SubComponent/SubComputed/GetSubComputedDoc.js.map +0 -1
- package/dist/api/SubComponent/SubComputed/SubComputedConstraint.d.ts +0 -3
- package/dist/api/SubComponent/SubComputed/SubComputedConstraint.js +0 -2
- package/dist/api/SubComponent/SubComputed/SubComputedConstraint.js.map +0 -1
- package/dist/api/SubComponent/SubComputed/SubComputedOption.js +0 -2
- package/dist/api/SubComponent/SubComputed/SubComputedOption.js.map +0 -1
- package/dist/api/SubComponent/SubData/SubDataConstraint.d.ts +0 -3
- package/dist/api/SubComponent/SubData/SubDataConstraint.js +0 -2
- package/dist/api/SubComponent/SubData/SubDataConstraint.js.map +0 -1
- package/dist/api/SubComponent/SubData/SubDataOption.js +0 -2
- package/dist/api/SubComponent/SubData/SubDataOption.js.map +0 -1
- package/dist/api/SubComponent/SubEvents/SubEventsConstraint.js +0 -2
- package/dist/api/SubComponent/SubEvents/SubEventsConstraint.js.map +0 -1
- package/dist/api/SubComponent/SubEvents/SubEventsOption.d.ts +0 -4
- package/dist/api/SubComponent/SubEvents/SubEventsOption.js +0 -2
- package/dist/api/SubComponent/SubEvents/SubEventsOption.js.map +0 -1
- package/dist/api/SubComponent/SubInherit/SubInheritConstraint.js +0 -2
- package/dist/api/SubComponent/SubInherit/SubInheritConstraint.js.map +0 -1
- package/dist/api/SubComponent/SubInherit/SubInheritOption.js +0 -2
- package/dist/api/SubComponent/SubInherit/SubInheritOption.js.map +0 -1
- package/dist/api/SubComponent/SubInstance/SubInstance.d.ts +0 -2
- package/dist/api/SubComponent/SubInstance/SubInstance.js +0 -2
- package/dist/api/SubComponent/SubInstance/SubInstance.js.map +0 -1
- package/dist/api/SubComponent/SubLifetimes/SubLifetimesOption.js +0 -2
- package/dist/api/SubComponent/SubLifetimes/SubLifetimesOption.js.map +0 -1
- package/dist/api/SubComponent/SubMethods/SubMethodsConstraint.d.ts +0 -2
- package/dist/api/SubComponent/SubMethods/SubMethodsConstraint.js +0 -2
- package/dist/api/SubComponent/SubMethods/SubMethodsConstraint.js.map +0 -1
- package/dist/api/SubComponent/SubMethods/SubMethodsOption.d.ts +0 -5
- package/dist/api/SubComponent/SubMethods/SubMethodsOption.js +0 -2
- package/dist/api/SubComponent/SubMethods/SubMethodsOption.js.map +0 -1
- package/dist/api/SubComponent/SubObservers/SubObserversOption.d.ts +0 -2
- package/dist/api/SubComponent/SubObservers/SubObserversOption.js +0 -2
- package/dist/api/SubComponent/SubObservers/SubObserversOption.js.map +0 -1
- package/dist/api/SubComponent/SubPageLifetimes/SubPageLifetimesOption.d.ts +0 -2
- package/dist/api/SubComponent/SubPageLifetimes/SubPageLifetimesOption.js +0 -2
- package/dist/api/SubComponent/SubPageLifetimes/SubPageLifetimesOption.js.map +0 -1
- package/dist/api/SubComponent/SubReturnType/CreateSubComponentDoc.js +0 -2
- package/dist/api/SubComponent/SubReturnType/CreateSubComponentDoc.js.map +0 -1
- package/dist/api/SubComponent/SubStore/SubStoreConstraint.js +0 -2
- package/dist/api/SubComponent/SubStore/SubStoreConstraint.js.map +0 -1
- package/dist/api/SubComponent/SubStore/SubStoreOption.js +0 -2
- package/dist/api/SubComponent/SubStore/SubStoreOption.js.map +0 -1
- package/dist/api/SubComponent/SubWatch/SubWatchOption.d.ts +0 -2
- package/dist/api/SubComponent/SubWatch/SubWatchOption.js +0 -2
- package/dist/api/SubComponent/SubWatch/SubWatchOption.js.map +0 -1
- package/dist/api/SubComponent/index.d.ts +0 -49
- package/dist/api/SubComponent/index.js +0 -4
- package/dist/api/SubComponent/index.js.map +0 -1
- package/dist/api/SubComponent/returnType.js.map +0 -1
- package/dist/types/CreateComponentType.js +0 -2
- package/dist/types/CreateComponentType.js.map +0 -1
- package/dist/types/ExtendComponentType.d.ts +0 -7
- package/dist/types/ExtendComponentType.js +0 -2
- package/dist/types/ExtendComponentType.js.map +0 -1
- package/dist/types/RemoveNullOfRequired.d.ts +0 -4
- package/dist/types/RemoveNullOfRequired.js +0 -2
- package/dist/types/RemoveNullOfRequired.js.map +0 -1
- package/src/api/DefineComponent/NameOrPath/NameOrPathOption.ts +0 -31
- package/src/api/DefineComponent/NameOrPath/test/error.test.ts +0 -32
- package/src/api/DefineComponent/NameOrPath/test/normal.test.ts +0 -13
- package/src/api/DefineComponent/RootComponent/RootComponentOption.ts +0 -11
- package/src/api/DefineComponent/SubComponents/SubComponentsOption.ts +0 -13
- package/src/api/DefineComponent/SubComponents/test/normal.test.ts +0 -1049
- package/src/api/DefineComponent/index.ts +0 -58
- package/src/api/DefineComponent/normalizeOptions/__throttleDebounce__FieldCheck.ts +0 -29
- package/src/api/DefineComponent/normalizeOptions/customEventsHandle.ts +0 -55
- package/src/api/DefineComponent/normalizeOptions/handleRootComponent.ts +0 -33
- package/src/api/DefineComponent/normalizeOptions/handleStore/disposeStore.ts +0 -10
- package/src/api/DefineComponent/normalizeOptions/handleStore/initStore.ts +0 -9
- package/src/api/DefineComponent/normalizeOptions/handleStore/reactionRegister.ts +0 -70
- package/src/api/DefineComponent/normalizeOptions/handleSubComponents.ts +0 -23
- package/src/api/DefineComponent/normalizeOptions/hijackHandle/addDetachedData.ts +0 -10
- package/src/api/DefineComponent/normalizeOptions/hijackHandle/hijack.ts +0 -26
- package/src/api/DefineComponent/normalizeOptions/hijackHandle/index.ts +0 -57
- package/src/api/DefineComponent/normalizeOptions/hijackHandle/isPageCheck.ts +0 -22
- package/src/api/DefineComponent/normalizeOptions/hijackHandle/loadReceivedDataHandle.ts +0 -25
- package/src/api/DefineComponent/normalizeOptions/hijackHandle/onLoadReceivedDataHandle.ts +0 -33
- package/src/api/DefineComponent/normalizeOptions/hijackHandle/pagePathCheck.ts +0 -9
- package/src/api/DefineComponent/normalizeOptions/index.ts +0 -143
- package/src/api/DefineComponent/normalizeOptions/initComputed/computedUpdater.ts +0 -51
- package/src/api/DefineComponent/normalizeOptions/initComputed/data-tracer.ts +0 -62
- package/src/api/DefineComponent/normalizeOptions/initComputed/dependencesOptimize.ts +0 -45
- package/src/api/DefineComponent/normalizeOptions/initComputed/index.ts +0 -42
- package/src/api/DefineComponent/normalizeOptions/initComputed/initComputedAndGetCache.ts +0 -105
- package/src/api/DefineComponent/normalizeOptions/injectInfoHandler.ts +0 -51
- package/src/api/DefineComponent/normalizeOptions/internalFieldProtection.ts +0 -27
- package/src/api/DefineComponent/normalizeOptions/otherFieldsHandle.ts +0 -29
- package/src/api/DefineComponent/normalizeOptions/sameFuncFieldsCollect.ts +0 -23
- package/src/api/DefineComponent/normalizeOptions/sameFuncOptionsHandle.ts +0 -36
- package/src/api/DefineComponent/normalizeOptions/watchHandler/getPathsValue.ts +0 -31
- package/src/api/DefineComponent/normalizeOptions/watchHandler/getPropertiesValue.ts +0 -51
- package/src/api/DefineComponent/normalizeOptions/watchHandler/hasComputedPath.ts +0 -9
- package/src/api/DefineComponent/normalizeOptions/watchHandler/index.ts +0 -78
- package/src/api/DefineComponent/returnType/ComponentDoc.ts +0 -25
- package/src/api/DefineComponent/returnType/GenerateComponentDoc.ts +0 -46
- package/src/api/DefineComponent/returnType/GeneratePageDoc.ts +0 -22
- package/src/api/DefineComponent/returnType/GetCustomEventDocOfSubDoc.ts +0 -24
- package/src/api/DefineComponent/returnType/GetPropertiesDocOfSubDoc.ts +0 -7
- package/src/api/DefineComponent/returnType/PageDoc.ts +0 -19
- package/src/api/DefineComponent/returnType/test/normalComponentDoc.test.ts +0 -248
- package/src/api/DefineComponent/returnType/test/normalPageDoc.test.ts +0 -49
- package/src/api/InstanceInject/inject.ts +0 -41
- package/src/api/InstanceInject/instanceConfig.ts +0 -49
- package/src/api/InstanceInject/test/normal.test.ts +0 -42
- package/src/api/RootComponent/Computed/ComputedConstraint.ts +0 -4
- package/src/api/RootComponent/Computed/ComputedOption.ts +0 -35
- package/src/api/RootComponent/Computed/GetComputedDef.ts +0 -10
- package/src/api/RootComponent/Computed/test/GetComputedDoc.test.ts +0 -25
- package/src/api/RootComponent/Computed/test/error.test.ts +0 -50
- package/src/api/RootComponent/Computed/test/normal.test.ts +0 -124
- package/src/api/RootComponent/CustomEvents/CustomEventConstraint.ts +0 -89
- package/src/api/RootComponent/CustomEvents/CustomEventsDef.ts +0 -4
- package/src/api/RootComponent/CustomEvents/CustomEventsDoc.ts +0 -4
- package/src/api/RootComponent/CustomEvents/CustomEventsOption.ts +0 -41
- package/src/api/RootComponent/CustomEvents/CustomEventsTag.ts +0 -59
- package/src/api/RootComponent/CustomEvents/GetCustomEventDef.ts +0 -29
- package/src/api/RootComponent/CustomEvents/GetCustomEventDoc.ts +0 -47
- package/src/api/RootComponent/CustomEvents/test/GetCustomEventDoc.test.ts +0 -38
- package/src/api/RootComponent/CustomEvents/test/GetFullEventDoc.test.ts +0 -57
- package/src/api/RootComponent/CustomEvents/test/GetShortEventDoc.test.ts +0 -36
- package/src/api/RootComponent/CustomEvents/test/error.test.ts +0 -101
- package/src/api/RootComponent/CustomEvents/test/normal.test.ts +0 -99
- package/src/api/RootComponent/Data/DataConstraint.ts +0 -1
- package/src/api/RootComponent/Data/DataOption.ts +0 -25
- package/src/api/RootComponent/Data/GetDataDef.ts +0 -8
- package/src/api/RootComponent/Data/GetDataDoc.ts +0 -8
- package/src/api/RootComponent/Data/test/GetDataDoc.test.ts +0 -32
- package/src/api/RootComponent/Data/test/error.test.ts +0 -14
- package/src/api/RootComponent/Data/test/normal.test.ts +0 -33
- package/src/api/RootComponent/Events/EventsConstraint.ts +0 -74
- package/src/api/RootComponent/Events/EventsOption.ts +0 -55
- package/src/api/RootComponent/Events/test/normal.test.ts +0 -161
- package/src/api/RootComponent/Instance/CustomEventMethods.ts +0 -11
- package/src/api/RootComponent/Instance/CustomSetData.ts +0 -17
- package/src/api/RootComponent/Instance/RootComponentInstance.ts +0 -46
- package/src/api/RootComponent/Instance/test/CustomEventsDoc.test.ts +0 -70
- package/src/api/RootComponent/Instance/test/CustomSetData.test.ts +0 -44
- package/src/api/RootComponent/Instance/test/customEvents/error.test.ts +0 -13
- package/src/api/RootComponent/Instance/test/customEvents/normal.test.ts +0 -71
- package/src/api/RootComponent/Instance/test/datas/mormal.test.ts +0 -43
- package/src/api/RootComponent/Instance/test/methods/error.test.ts +0 -14
- package/src/api/RootComponent/Instance/test/methods/mormal.test.ts +0 -27
- package/src/api/RootComponent/Instance/test/properties/mormal.test.ts +0 -58
- package/src/api/RootComponent/Instance/test/setData/error.test.ts +0 -65
- package/src/api/RootComponent/Instance/test/setData/normal.test.ts +0 -51
- package/src/api/RootComponent/IsPage/IsPageOption.ts +0 -6
- package/src/api/RootComponent/IsPage/test/normal.test.ts +0 -29
- package/src/api/RootComponent/Lifetimes/LifetimesConstraint.ts +0 -14
- package/src/api/RootComponent/Lifetimes/LifetimesOption.ts +0 -31
- package/src/api/RootComponent/Lifetimes/test/error.test.ts +0 -31
- package/src/api/RootComponent/Lifetimes/test/normal.test.ts +0 -34
- package/src/api/RootComponent/Methods/MethodsConstraint.ts +0 -3
- package/src/api/RootComponent/Methods/MethodsOption.ts +0 -15
- package/src/api/RootComponent/Methods/test/error.test.ts +0 -41
- package/src/api/RootComponent/Methods/test/mormal.test.ts +0 -25
- package/src/api/RootComponent/Observers/ObserversOption.ts +0 -58
- package/src/api/RootComponent/Observers/test/normal.test.ts +0 -30
- package/src/api/RootComponent/PageLifetimes/PageLifetimesOption.ts +0 -29
- package/src/api/RootComponent/PageLifetimes/test/error.test.ts +0 -37
- package/src/api/RootComponent/PageLifetimes/test/normal.test.ts +0 -71
- package/src/api/RootComponent/Properties/GetOptionalDef.ts +0 -18
- package/src/api/RootComponent/Properties/GetPropertiesDef.ts +0 -22
- package/src/api/RootComponent/Properties/GetRequiredDef.ts +0 -16
- package/src/api/RootComponent/Properties/PropertiesConstraint.ts +0 -38
- package/src/api/RootComponent/Properties/PropertiesOption.ts +0 -25
- package/src/api/RootComponent/Properties/PropertiesValueValidator.ts +0 -21
- package/src/api/RootComponent/Properties/test/error.test.ts +0 -49
- package/src/api/RootComponent/Properties/test/normalEmpty.test.ts +0 -42
- package/src/api/RootComponent/Properties/test/normalOptional.test.ts +0 -118
- package/src/api/RootComponent/Properties/test/normalRequired.test.ts +0 -107
- package/src/api/RootComponent/Store/GetStoreDef.ts +0 -34
- package/src/api/RootComponent/Store/StoreConstraint.ts +0 -2
- package/src/api/RootComponent/Store/StoreOption.ts +0 -53
- package/src/api/RootComponent/Store/test/error.test.ts +0 -30
- package/src/api/RootComponent/Store/test/normal.test.ts +0 -55
- package/src/api/RootComponent/Watch/WatchOption.ts +0 -67
- package/src/api/RootComponent/Watch/test/WatchComputed.test.ts +0 -40
- package/src/api/RootComponent/Watch/test/WatchData.test.ts +0 -55
- package/src/api/RootComponent/Watch/test/WatchProperties.test.ts +0 -170
- package/src/api/RootComponent/Watch/test/WtachInject.test.ts +0 -16
- package/src/api/RootComponent/Watch/test/error.test.ts +0 -54
- package/src/api/RootComponent/index.ts +0 -164
- package/src/api/RootComponent/returnType.ts +0 -57
- package/src/api/SubComponent/SubComputed/GetSubComputedDoc.ts +0 -4
- package/src/api/SubComponent/SubComputed/SubComputedConstraint.ts +0 -1
- package/src/api/SubComponent/SubComputed/SubComputedOption.ts +0 -11
- package/src/api/SubComponent/SubComputed/test/error.test.ts +0 -88
- package/src/api/SubComponent/SubComputed/test/normal.test.ts +0 -207
- package/src/api/SubComponent/SubData/SubDataConstraint.ts +0 -9
- package/src/api/SubComponent/SubData/SubDataOption.ts +0 -17
- package/src/api/SubComponent/SubData/test/error.test.ts +0 -64
- package/src/api/SubComponent/SubData/test/normal.test.ts +0 -91
- package/src/api/SubComponent/SubEvents/SubEventsConstraint.ts +0 -27
- package/src/api/SubComponent/SubEvents/SubEventsOption.ts +0 -12
- package/src/api/SubComponent/SubEvents/test/error.test.ts +0 -36
- package/src/api/SubComponent/SubEvents/test/normal.test.ts +0 -209
- package/src/api/SubComponent/SubInherit/SubInheritConstraint.ts +0 -17
- package/src/api/SubComponent/SubInherit/SubInheritOption.ts +0 -15
- package/src/api/SubComponent/SubInherit/test/error.test.ts +0 -84
- package/src/api/SubComponent/SubInherit/test/normal.test.ts +0 -81
- package/src/api/SubComponent/SubInstance/SubInstance.ts +0 -9
- package/src/api/SubComponent/SubInstance/test/error.test.ts +0 -22
- package/src/api/SubComponent/SubInstance/test/normal.test.ts +0 -87
- package/src/api/SubComponent/SubLifetimes/SubLifetimesOption.ts +0 -3
- package/src/api/SubComponent/SubMethods/SubMethodsConstraint.ts +0 -3
- package/src/api/SubComponent/SubMethods/SubMethodsOption.ts +0 -17
- package/src/api/SubComponent/SubMethods/test/error.test.ts +0 -51
- package/src/api/SubComponent/SubMethods/test/normarl.test.ts +0 -33
- package/src/api/SubComponent/SubObservers/SubObserversOption.ts +0 -3
- package/src/api/SubComponent/SubPageLifetimes/SubPageLifetimesOption.ts +0 -6
- package/src/api/SubComponent/SubPageLifetimes/test/error.test.ts +0 -1
- package/src/api/SubComponent/SubPageLifetimes/test/normal.test.ts +0 -1
- package/src/api/SubComponent/SubReturnType/CreateSubComponentDoc.ts +0 -41
- package/src/api/SubComponent/SubReturnType/test/error.test.ts +0 -18
- package/src/api/SubComponent/SubReturnType/test/normal.test.ts +0 -98
- package/src/api/SubComponent/SubStore/SubStoreConstraint.ts +0 -13
- package/src/api/SubComponent/SubStore/SubStoreOption.ts +0 -32
- package/src/api/SubComponent/SubStore/test/error.test.ts +0 -60
- package/src/api/SubComponent/SubStore/test/normal.test.ts +0 -43
- package/src/api/SubComponent/SubWatch/SubWatchOption.ts +0 -3
- package/src/api/SubComponent/SubWatch/test/WatchComputed.test.ts +0 -90
- package/src/api/SubComponent/SubWatch/test/WatchProperties.test.ts +0 -151
- package/src/api/SubComponent/SubWatch/test/WatchRootData.test.ts +0 -122
- package/src/api/SubComponent/SubWatch/test/WatchSubData.test.ts +0 -49
- package/src/api/SubComponent/SubWatch/test/WtachInject.test.ts +0 -16
- package/src/api/SubComponent/SubWatch/test/error.test.ts +0 -60
- package/src/api/SubComponent/index.ts +0 -301
- package/src/api/SubComponent/returnType.ts +0 -39
- package/src/api/wxSugar.ts +0 -107
- package/src/behaviors/BbeforeCreated.ts +0 -18
- package/src/behaviors/BthrottleDebounce.ts +0 -28
- package/src/index.ts +0 -46
- package/src/thirdLib/index.ts +0 -3
- package/src/thirdLib/vant/Button.ts +0 -23
- package/src/thirdLib/vant/NoticeBar.ts +0 -32
- package/src/thirdLib/vant/Popup.ts +0 -70
- package/src/thirdLib/vant/index.ts +0 -5
- package/src/thirdLib/wm/Textarea.ts +0 -117
- package/src/thirdLib/wm/baseEvents.ts +0 -54
- package/src/thirdLib/wm/index.ts +0 -9
- package/src/thirdLib/wm/map.ts +0 -266
- package/src/thirdLib/wm/scrollView.ts +0 -86
- package/src/thirdLib/wm/swiper.test.ts +0 -22
- package/src/thirdLib/wm/swiper.ts +0 -111
- package/src/thirdLib/wm/view.ts +0 -28
- package/src/types/AddNullForObject.ts +0 -6
- package/src/types/AddPrefix.ts +0 -10
- package/src/types/Assert.ts +0 -1
- package/src/types/Assign.ts +0 -1
- package/src/types/ComputeObject.ts +0 -1
- package/src/types/CreateComponentType.ts +0 -37
- package/src/types/DetailedType.ts +0 -15
- package/src/types/ExtendComponentType.ts +0 -60
- package/src/types/Extra.ts +0 -1
- package/src/types/GetComponentPrefix.ts +0 -36
- package/src/types/GetPropertiesDuplicatedKeys.ts +0 -14
- package/src/types/Has.ts +0 -1
- package/src/types/InferDetailedType.test.ts +0 -13
- package/src/types/InferDetailedType.ts +0 -12
- package/src/types/InnerData.ts +0 -1
- package/src/types/ListOfSamePrimitive.ts +0 -20
- package/src/types/OfficialTypeAlias.ts +0 -107
- package/src/types/RemoveInnerData.ts +0 -5
- package/src/types/RemoveNever.ts +0 -6
- package/src/types/RemoveNullOfRequired.ts +0 -8
- package/src/types/RemovePrefix.ts +0 -3
- package/src/types/Replace.ts +0 -24
- package/src/types/ReplacePrefix.ts +0 -46
- package/src/types/RequiredKeys.ts +0 -8
- package/src/types/Shift.ts +0 -2
- package/src/types/TwoParamsEqual.ts +0 -3
- package/src/types/UnionToComma.test.ts +0 -9
- package/src/types/Validators.ts +0 -17
- package/src/types/includes.ts +0 -3
- package/src/utils/InnerMarker.ts +0 -3
- package/src/utils/_utils.ts +0 -8
- package/src/utils/applyDebounceAndThrottle.ts +0 -31
- package/src/utils/debounce.ts +0 -22
- package/src/utils/deepClone.ts +0 -20
- package/src/utils/deepEqual.ts +0 -32
- package/src/utils/isEmptyObject.ts +0 -14
- package/src/utils/nonNullable.ts +0 -20
- package/src/utils/throttle.ts +0 -24
- package/src/utils/typeEqual.ts +0 -30
- package/src/utils/typeNotEqual.ts +0 -48
- package/tsconfig.json +0 -24
- /package/dist/api/{SubComponent → CustomComponent}/returnType.js +0 -0
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import type { IfExtends } from "hry-types/src/Any/IfExtends";
|
|
2
|
-
|
|
3
|
-
import type { RootComponentDefinition, RootComponentDefinitionRuntime } from "../RootComponent/returnType";
|
|
4
|
-
import type { SubComponentDefinition, SubComponentDefinitionRuntime } from "../SubComponent/returnType";
|
|
5
|
-
import type { NameOrPathOption } from "./NameOrPath/NameOrPathOption";
|
|
6
|
-
import { normalizeOptions } from "./normalizeOptions";
|
|
7
|
-
import type { GenerateComponentDoc } from "./returnType/GenerateComponentDoc";
|
|
8
|
-
import type { GeneratePageDoc } from "./returnType/GeneratePageDoc";
|
|
9
|
-
import type { RootComponentOption } from "./RootComponent/RootComponentOption";
|
|
10
|
-
import type { SubComponentsOption } from "./SubComponents/SubComponentsOption";
|
|
11
|
-
export type Path = `/${string}`;
|
|
12
|
-
|
|
13
|
-
type Options<
|
|
14
|
-
TRootComponentDefinition extends RootComponentDefinition,
|
|
15
|
-
TSubComponentDefinitionList extends SubComponentDefinition[],
|
|
16
|
-
TName extends string,
|
|
17
|
-
TPath extends Path,
|
|
18
|
-
> =
|
|
19
|
-
& NameOrPathOption<TName, TPath, NonNullable<TRootComponentDefinition["isPage"]>>
|
|
20
|
-
& RootComponentOption<TRootComponentDefinition>
|
|
21
|
-
& SubComponentsOption<TSubComponentDefinitionList>;
|
|
22
|
-
|
|
23
|
-
type Constructor = <
|
|
24
|
-
TRootComponentDefinition extends RootComponentDefinition = {},
|
|
25
|
-
TSubComponentDefinitionList extends SubComponentDefinition[] = [],
|
|
26
|
-
TName extends string = "",
|
|
27
|
-
TPath extends Path = "/",
|
|
28
|
-
>(
|
|
29
|
-
options: Options<TRootComponentDefinition, TSubComponentDefinitionList, TName, TPath>,
|
|
30
|
-
) => // 根据是否传入name字段(当isPage不为true时,类型约束name不为空字符串)来区分生成页面文档还是组件文档。
|
|
31
|
-
IfExtends<
|
|
32
|
-
"",
|
|
33
|
-
TName,
|
|
34
|
-
GeneratePageDoc<TRootComponentDefinition, TPath>,
|
|
35
|
-
GenerateComponentDoc<TRootComponentDefinition, TName, TSubComponentDefinitionList>
|
|
36
|
-
>;
|
|
37
|
-
/**
|
|
38
|
-
* DefineComponentOptionRuntime是DefineComponent的options参数的运行时类型。
|
|
39
|
-
*/
|
|
40
|
-
export type DefineComponentOptionRuntime = {
|
|
41
|
-
name?: string;
|
|
42
|
-
path?: string;
|
|
43
|
-
rootComponent?: RootComponentDefinitionRuntime;
|
|
44
|
-
subComponents?: SubComponentDefinitionRuntime[];
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* DefineComponent是构建组件的核心API,所有组件(页面组件和自定义组件)都通过它来构建的。
|
|
49
|
-
* 它返回的类型可能是页面文档(`PageDoc`)或者自定义组件文档(`ComponentDoc`),具体取决于传入rootComponent中isPage的值。
|
|
50
|
-
* 它的作用是把根组件定义(`RootComponentDefinition`)和子组件定义(`SubComponentDefinition`)整合成原生`Component`的选项配置,最终通过原生`Component`来构建组件。
|
|
51
|
-
*/
|
|
52
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- 返回类型由Constructor定义,实现无需。
|
|
53
|
-
export const DefineComponent: Constructor = function(options): any {
|
|
54
|
-
Component(
|
|
55
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Options泛型中properties字段类型与WechatMiniprogram.Component.Constructor中的properties字段类型不兼容,但运行时是兼容的,所以这里使用any。
|
|
56
|
-
normalizeOptions(options as DefineComponentOptionRuntime) as any,
|
|
57
|
-
);
|
|
58
|
-
};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { RootComponentDefinitionRuntime } from "../../RootComponent/returnType";
|
|
2
|
-
import type { SubComponentDefinitionRuntime } from "../../SubComponent/returnType";
|
|
3
|
-
|
|
4
|
-
export function __throttleDebounce__FieldCheck(
|
|
5
|
-
config: RootComponentDefinitionRuntime | SubComponentDefinitionRuntime[],
|
|
6
|
-
) {
|
|
7
|
-
if (Array.isArray(config)) {
|
|
8
|
-
for (const subComponent of config) {
|
|
9
|
-
__throttleDebounce__FieldCheck(subComponent);
|
|
10
|
-
}
|
|
11
|
-
} else {
|
|
12
|
-
const dataKeys: string[] = [];
|
|
13
|
-
if (config.data) {
|
|
14
|
-
dataKeys.push(...Object.keys(config.data));
|
|
15
|
-
}
|
|
16
|
-
if (config.computed) {
|
|
17
|
-
dataKeys.push(...Object.keys(config.computed));
|
|
18
|
-
}
|
|
19
|
-
if (config.properties) {
|
|
20
|
-
dataKeys.push(...Object.keys(config.properties));
|
|
21
|
-
}
|
|
22
|
-
if (config.store) {
|
|
23
|
-
dataKeys.push(...Object.keys(config.store));
|
|
24
|
-
}
|
|
25
|
-
if (dataKeys.includes("__throttleDebounce__")) {
|
|
26
|
-
throw Error(`__throttleDebounce__字段已被内部字段占用`);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
CustomEventConstraint,
|
|
3
|
-
CustomEvents,
|
|
4
|
-
FullCustomEvents,
|
|
5
|
-
} from "../../RootComponent/CustomEvents/CustomEventConstraint";
|
|
6
|
-
import type { Instance } from "../../RootComponent/Instance/RootComponentInstance";
|
|
7
|
-
import type { FinalOptionsOfComponent, ThrottleDebounce } from ".";
|
|
8
|
-
function getThrottleDebounceConfig(
|
|
9
|
-
methodsName: string,
|
|
10
|
-
customEventOptions: FullCustomEvents,
|
|
11
|
-
__throttleDebounce__: ThrottleDebounce,
|
|
12
|
-
) {
|
|
13
|
-
const { debounce, throttle } = customEventOptions;
|
|
14
|
-
|
|
15
|
-
if (debounce) {
|
|
16
|
-
__throttleDebounce__.debounce ||= {};
|
|
17
|
-
__throttleDebounce__.debounce[methodsName] = debounce;
|
|
18
|
-
} else if (throttle) {
|
|
19
|
-
__throttleDebounce__.throttle ||= {};
|
|
20
|
-
__throttleDebounce__.throttle[methodsName] = throttle;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// 类型守卫
|
|
25
|
-
function IsFullCustomEvents(
|
|
26
|
-
customEventOptions: CustomEvents,
|
|
27
|
-
): customEventOptions is FullCustomEvents {
|
|
28
|
-
return Object.prototype.toString.call(customEventOptions) === "[object Object]";
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* 把customEvents字段配置变成函数放入到componentOptions.methods中
|
|
32
|
-
*/
|
|
33
|
-
export function customEventsHandle(
|
|
34
|
-
finalOptions: FinalOptionsOfComponent,
|
|
35
|
-
customEventsConfig: CustomEventConstraint,
|
|
36
|
-
) {
|
|
37
|
-
const methods = finalOptions.methods;
|
|
38
|
-
const data = finalOptions.data;
|
|
39
|
-
|
|
40
|
-
for (const key in customEventsConfig) {
|
|
41
|
-
const customEventOptions = customEventsConfig[key];
|
|
42
|
-
if (IsFullCustomEvents(customEventOptions)) {
|
|
43
|
-
methods[key] = function(this: Instance, detail: unknown) {
|
|
44
|
-
this.triggerEvent(key, detail, customEventOptions.options);
|
|
45
|
-
};
|
|
46
|
-
data.__throttleDebounce__ ||= {};
|
|
47
|
-
// 全配置允许设置防抖和节流,在这里保留配置到data.__throttleDebounce__中,以便后续使用
|
|
48
|
-
getThrottleDebounceConfig(key, customEventOptions, data.__throttleDebounce__);
|
|
49
|
-
} else {
|
|
50
|
-
methods[key] = function(this: Instance, detail: unknown) {
|
|
51
|
-
this.triggerEvent(key, detail);
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { isEmptyObject } from "../../../utils/isEmptyObject";
|
|
2
|
-
|
|
3
|
-
import type { RootComponentDefinitionRuntime } from "../../RootComponent/returnType";
|
|
4
|
-
import type { FinalOptionsOfComponent, SameFuncOptions } from ".";
|
|
5
|
-
import { __throttleDebounce__FieldCheck } from "./__throttleDebounce__FieldCheck";
|
|
6
|
-
import { customEventsHandle } from "./customEventsHandle";
|
|
7
|
-
import { otherFieldsHandle } from "./otherFieldsHandle";
|
|
8
|
-
import { sameFuncFieldsCollect } from "./sameFuncFieldsCollect";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* 收集 rootComponentOptions 配置到 finalOptions 和 funcOptions 中
|
|
12
|
-
* @param finalOptions - 收集配置对象`
|
|
13
|
-
* @param rootComponent - 被收集的源配置对象
|
|
14
|
-
* @param funcOptions - 收集特殊配置对象字段
|
|
15
|
-
*/
|
|
16
|
-
export function handleRootComponent(
|
|
17
|
-
finalOptions: FinalOptionsOfComponent,
|
|
18
|
-
rootComponent: RootComponentDefinitionRuntime | undefined,
|
|
19
|
-
funcOptions: SameFuncOptions,
|
|
20
|
-
) {
|
|
21
|
-
if (rootComponent && !isEmptyObject(rootComponent)) {
|
|
22
|
-
// 验证配置中是否有内部字段__throttleDebounce__,有则报错,因为在rootComponentOptionHandle中会加入__throttleDebounce__字段到data中
|
|
23
|
-
__throttleDebounce__FieldCheck(rootComponent);
|
|
24
|
-
// 自定义事件处理时,如果配置了防抖节流,则需要在data.__throttleDebounce__保留配置信息,以便后续使用
|
|
25
|
-
if (rootComponent.customEvents) customEventsHandle(finalOptions, rootComponent.customEvents);
|
|
26
|
-
delete rootComponent.customEvents;
|
|
27
|
-
if (rootComponent.events) Object.assign(finalOptions.methods, rootComponent.events);
|
|
28
|
-
delete rootComponent.events;
|
|
29
|
-
sameFuncFieldsCollect(rootComponent, funcOptions);
|
|
30
|
-
|
|
31
|
-
otherFieldsHandle(finalOptions, rootComponent);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Instance } from "../../../RootComponent/Instance/RootComponentInstance";
|
|
2
|
-
|
|
3
|
-
export function disposeStore(this: Instance) {
|
|
4
|
-
const { disposer } = this;
|
|
5
|
-
for (const key in disposer) {
|
|
6
|
-
disposer[key]();
|
|
7
|
-
}
|
|
8
|
-
// 清除disposer
|
|
9
|
-
this.disposer = {};
|
|
10
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Instance } from "../../../RootComponent/Instance/RootComponentInstance";
|
|
2
|
-
import type { FinalOptionsOfComponent } from "..";
|
|
3
|
-
import { reactionRegister } from "./reactionRegister";
|
|
4
|
-
export function initStore(storeConfig: FinalOptionsOfComponent["store"] | undefined) {
|
|
5
|
-
return function(this: Instance) {
|
|
6
|
-
if (!storeConfig) return;
|
|
7
|
-
reactionRegister.call(this, storeConfig);
|
|
8
|
-
};
|
|
9
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import type mobx from "mobx";
|
|
2
|
-
import type { Instance } from "../../../RootComponent/Instance/RootComponentInstance";
|
|
3
|
-
import type { StoreConstraint } from "../../../RootComponent/Store/StoreConstraint";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* 为store字段注册reaction,以实现响应式更新。
|
|
7
|
-
* 注意:如果getter函数返回undefined,则不会注册reaction,该字段将不可响应式,但不报错(有警告)。如果getter函数没有依赖任何响应式数据,则不会注册reaction,该字段将不可响应式,并抛出错误。
|
|
8
|
-
* @param this
|
|
9
|
-
* @param storeConfig
|
|
10
|
-
*/
|
|
11
|
-
export function reactionRegister(this: Instance, storeConfig: StoreConstraint) {
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
13
|
-
const { comparer, getDependencyTree, reaction, toJS } = require("mobx") as typeof mobx;
|
|
14
|
-
// 1. 清理旧的reaction,避免重复注册(组件detached),虽然在detached时加入了清理reaction的逻辑,但在某些极端情况下可能无法触发(如组件未调用detached周期,就又运行了attached周期),因此在这里先清理一次,确保不会重复注册。
|
|
15
|
-
if (this.disposer) {
|
|
16
|
-
for (const key of Object.keys(this.disposer)) {
|
|
17
|
-
this.disposer[key]();
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
this.disposer = {};
|
|
21
|
-
const pendingSetData: Record<string, unknown> = {};
|
|
22
|
-
|
|
23
|
-
for (const key of Object.keys(storeConfig)) {
|
|
24
|
-
const getter = storeConfig[key];
|
|
25
|
-
|
|
26
|
-
// 1. 临时 reaction:只用来检测依赖
|
|
27
|
-
let hasObservableDependency = false;
|
|
28
|
-
let firstRunValue: unknown;
|
|
29
|
-
|
|
30
|
-
const tempDisposer = reaction(
|
|
31
|
-
() => {
|
|
32
|
-
const value = getter(this.data);
|
|
33
|
-
firstRunValue = value; // 顺便获取初始值
|
|
34
|
-
return value;
|
|
35
|
-
},
|
|
36
|
-
() => void 0, // 空回调,零副作用
|
|
37
|
-
{ fireImmediately: true },
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
// 2. 检查依赖
|
|
41
|
-
const deps = getDependencyTree(tempDisposer).dependencies ?? [];
|
|
42
|
-
hasObservableDependency = deps.length > 0;
|
|
43
|
-
// 3. 清理临时 reaction
|
|
44
|
-
tempDisposer();
|
|
45
|
-
|
|
46
|
-
// 4. 验证
|
|
47
|
-
if (firstRunValue === undefined) {
|
|
48
|
-
console.warn(`store字段 ${key} 的getter函数返回了undefined,该字段将不会被注册为响应式字段。`);
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (!hasObservableDependency) {
|
|
53
|
-
throw new Error(`store字段 ${key} 的getter函数没有依赖任何响应式数据。`);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// 5. 正式绑定
|
|
57
|
-
const disposer = reaction(
|
|
58
|
-
() => getter(this.data),
|
|
59
|
-
(value: unknown) => {
|
|
60
|
-
this.setData({ [key]: toJS(value) });
|
|
61
|
-
},
|
|
62
|
-
{ equals: comparer.structural },
|
|
63
|
-
);
|
|
64
|
-
|
|
65
|
-
pendingSetData[key] = toJS(firstRunValue);
|
|
66
|
-
this.disposer[key] = disposer;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
this.setData(pendingSetData);
|
|
70
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { SubComponentDefinitionRuntime } from "../../SubComponent/returnType";
|
|
2
|
-
import type { FinalOptionsOfComponent, SameFuncOptions } from ".";
|
|
3
|
-
import { __throttleDebounce__FieldCheck } from "./__throttleDebounce__FieldCheck";
|
|
4
|
-
import { otherFieldsHandle } from "./otherFieldsHandle";
|
|
5
|
-
import { sameFuncFieldsCollect } from "./sameFuncFieldsCollect";
|
|
6
|
-
|
|
7
|
-
export function handleSubComponents(
|
|
8
|
-
componentOptions: FinalOptionsOfComponent,
|
|
9
|
-
subComponents: SubComponentDefinitionRuntime[] | undefined,
|
|
10
|
-
funcOptions: SameFuncOptions,
|
|
11
|
-
) {
|
|
12
|
-
if (subComponents && subComponents.length !== 0) {
|
|
13
|
-
// 验证配置中是否有内部字段__throttleDebounce__,有则报错,因为在rootComponentOptionHandle中会加入__throttleDebounce__字段到data中
|
|
14
|
-
__throttleDebounce__FieldCheck(subComponents);
|
|
15
|
-
subComponents.forEach((subOption) => {
|
|
16
|
-
if (subOption.events) Object.assign(componentOptions.methods, subOption.events);
|
|
17
|
-
|
|
18
|
-
sameFuncFieldsCollect(subOption, funcOptions);
|
|
19
|
-
|
|
20
|
-
otherFieldsHandle(componentOptions, subOption);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Instance } from "../../../RootComponent/Instance/RootComponentInstance";
|
|
2
|
-
|
|
3
|
-
export function addDetachedData(this: Instance) {
|
|
4
|
-
// 如果 attached字段被占用,就不添加了
|
|
5
|
-
if (this.data.attached !== undefined) return;
|
|
6
|
-
this.setData({
|
|
7
|
-
// @ts-ignore
|
|
8
|
-
attached: true,
|
|
9
|
-
});
|
|
10
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { Func } from "hry-types/src/Misc/Func";
|
|
2
|
-
import type { FinalOptionsOfComponent } from "..";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* 劫持指定配置字段,在原有配置前执行指定函数
|
|
6
|
-
*/
|
|
7
|
-
export function hijack<T extends FinalOptionsOfComponent[keyof FinalOptionsOfComponent]>(
|
|
8
|
-
config: T,
|
|
9
|
-
field: keyof T,
|
|
10
|
-
before: Func[],
|
|
11
|
-
after: Func[] = [],
|
|
12
|
-
) {
|
|
13
|
-
// @ts-ignore 隐式索引
|
|
14
|
-
const originalFunc: Func | undefined = config[field];
|
|
15
|
-
|
|
16
|
-
// @ts-ignore 隐式索引
|
|
17
|
-
config[field] = function(...args: unknown[]) {
|
|
18
|
-
before.forEach(func => func.call(this, ...args));
|
|
19
|
-
|
|
20
|
-
if (originalFunc) originalFunc.apply(this, args);
|
|
21
|
-
|
|
22
|
-
after.forEach(func => func.call(this, ...args));
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import type { Instance } from "../../../RootComponent/Instance/RootComponentInstance";
|
|
2
|
-
import type { FinalOptionsOfComponent } from "..";
|
|
3
|
-
import { disposeStore } from "../handleStore/disposeStore";
|
|
4
|
-
import { initStore } from "../handleStore/initStore";
|
|
5
|
-
import { initComputed } from "../initComputed";
|
|
6
|
-
import { computedUpdater } from "../initComputed/computedUpdater";
|
|
7
|
-
import { addDetachedData } from "./addDetachedData";
|
|
8
|
-
import { hijack } from "./hijack";
|
|
9
|
-
import { isPageCheck } from "./isPageCheck";
|
|
10
|
-
// import { loadReceivedDataHandle } from "./loadReceivedDataHandle";
|
|
11
|
-
import { onLoadReceivedDataHandle } from "./onLoadReceivedDataHandle";
|
|
12
|
-
import { pagePathCheck } from "./pagePathCheck";
|
|
13
|
-
|
|
14
|
-
export function hijackHandle(
|
|
15
|
-
finalOptionsForComponent: FinalOptionsOfComponent,
|
|
16
|
-
isPage: boolean | undefined,
|
|
17
|
-
path: string | undefined,
|
|
18
|
-
) {
|
|
19
|
-
// if (finalOptionsForComponent.isPage) {
|
|
20
|
-
// hijack(finalOptionsForComponent.pageLifetimes, "load", [loadReceivedDataHandle]);
|
|
21
|
-
// }
|
|
22
|
-
|
|
23
|
-
hijack(finalOptionsForComponent.methods, "onLoad", [onLoadReceivedDataHandle]);
|
|
24
|
-
hijack(finalOptionsForComponent.observers, "**", [
|
|
25
|
-
computedUpdater,
|
|
26
|
-
]);
|
|
27
|
-
|
|
28
|
-
hijack(
|
|
29
|
-
finalOptionsForComponent.lifetimes,
|
|
30
|
-
"attached",
|
|
31
|
-
[
|
|
32
|
-
// 验证isPage字段是否配置正确
|
|
33
|
-
isPageCheck(isPage),
|
|
34
|
-
// 验证页面的Path字段是否配置正确
|
|
35
|
-
pagePathCheck(path),
|
|
36
|
-
initStore(finalOptionsForComponent.store),
|
|
37
|
-
// 计算属性的初始化应该在store初始化之后,因为计算属性可能依赖store。
|
|
38
|
-
initComputed(finalOptionsForComponent.computed, finalOptionsForComponent.watch),
|
|
39
|
-
// 在初始化计算属性后,再让构建组件时的observers的回调函数被调用.避免回调函数中用到了计算属性的值时报错。
|
|
40
|
-
function(this: Instance) {
|
|
41
|
-
const observerhandlers = this.data.__oberverHandler__;
|
|
42
|
-
if (observerhandlers) {
|
|
43
|
-
for (const observerhandler of observerhandlers) {
|
|
44
|
-
observerhandler.call(this);
|
|
45
|
-
}
|
|
46
|
-
Reflect.deleteProperty(this.data, "__oberverHandler__");
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
],
|
|
50
|
-
[addDetachedData],
|
|
51
|
-
);
|
|
52
|
-
hijack(
|
|
53
|
-
finalOptionsForComponent.lifetimes,
|
|
54
|
-
"detached",
|
|
55
|
-
[disposeStore],
|
|
56
|
-
);
|
|
57
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { Instance, PageInstance } from "../../../RootComponent/Instance/RootComponentInstance";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* 劫持attached,根据this.route做判断 isPage值是否正确
|
|
5
|
-
*/
|
|
6
|
-
export function isPageCheck(isPage: boolean | undefined) {
|
|
7
|
-
return function(this: Instance) {
|
|
8
|
-
const route = (this as PageInstance).route as string | undefined;
|
|
9
|
-
if (route && isPage !== true) {
|
|
10
|
-
// 页面isPage值错误
|
|
11
|
-
throw Error(
|
|
12
|
-
`页面 /${route} 中, RootComponent构建页面时,isPage字段值应为 true`,
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
if (!route && isPage !== false && isPage !== undefined) {
|
|
16
|
-
// 组件写了isPage = true
|
|
17
|
-
throw Error(
|
|
18
|
-
`组件 ${this.is} 中 RootComponent构建组件时,可不写isPage字段或值为 false`,
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// /**
|
|
2
|
-
// * 针对通过 navigateTo传过来的数据对组件load周期传入数据解析
|
|
3
|
-
// * @param option - option中的url是拼接了encodeURIComponent转码的data对象的,key为INNERMARKER.url
|
|
4
|
-
// */
|
|
5
|
-
|
|
6
|
-
// import { INNERMARKER } from "../../../../utils/InnerMarker";
|
|
7
|
-
// import type { PageInstance } from "../../../RootComponent/Instance/RootComponentInstance";
|
|
8
|
-
|
|
9
|
-
// /* istanbul ignore next miniprogram-simulate(当前版本 1.6.1) 无法测试load */
|
|
10
|
-
// export function loadReceivedDataHandle(
|
|
11
|
-
// this: PageInstance,
|
|
12
|
-
// option: Record<typeof INNERMARKER.url, string>,
|
|
13
|
-
// ) {
|
|
14
|
-
// const innerData: string | undefined = option[INNERMARKER.url];
|
|
15
|
-
// // 未使用自定义的navigateTo
|
|
16
|
-
// if (innerData === undefined) return;
|
|
17
|
-
// // 使用navigateTo API
|
|
18
|
-
// const decodeOption = JSON.parse(decodeURIComponent(innerData));
|
|
19
|
-
|
|
20
|
-
// for (const key in decodeOption) {
|
|
21
|
-
// option[key] = decodeOption[key];
|
|
22
|
-
// }
|
|
23
|
-
// // 给onLoad劫持函数一个标记,判断在新框架下已经被解析过了
|
|
24
|
-
// option[INNERMARKER.url] = INNERMARKER.url;
|
|
25
|
-
// }
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 原生Component会对传入的对象字段匹配的properties字段setData赋值。不符合字段或Page时不会赋值。
|
|
3
|
-
* 此函数为给实例setData赋值,默认传递值与properties相符(ts类型安全)。
|
|
4
|
-
* @param option - 传入onLoad的参数 有以下两种可能
|
|
5
|
-
* 1. 使用wx.navigateTo传值的。这种情况无内置字段 option[INNERMARKER.url] 等于 undefined
|
|
6
|
-
* 2. 使用插件提供的navigateTo传值。这种情况 INNERMARKER.url被load周期劫持函数解码后赋值INNERMARKER.url字段为本身,即option[INNERMARKER.url] 等于 INNERMARKER.url
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { INNERMARKER } from "../../../../utils/InnerMarker";
|
|
10
|
-
import type { PageInstance } from "../../../RootComponent/Instance/RootComponentInstance";
|
|
11
|
-
|
|
12
|
-
/* istanbul ignore next miniprogram-simulate(当前版本 1.6.1) 无法测试页面生命周期 */
|
|
13
|
-
export function onLoadReceivedDataHandle(
|
|
14
|
-
this: PageInstance,
|
|
15
|
-
option: Record<typeof INNERMARKER.url, string>,
|
|
16
|
-
) {
|
|
17
|
-
const innerData: string | undefined = option[INNERMARKER.url];
|
|
18
|
-
|
|
19
|
-
// 情况1为undefined,2为INNERMARKER.url有值但不是本身,说明是老框架。3所以innerData等于 INNERMARKER.url即有组件配置了load(新框架在pageLifetimes.load中提前解析了)
|
|
20
|
-
if (innerData === undefined) return;
|
|
21
|
-
if (innerData !== INNERMARKER.url) {
|
|
22
|
-
// 需要情况2 需要解析
|
|
23
|
-
const decodeOption = JSON.parse(decodeURIComponent(innerData));
|
|
24
|
-
for (const key in decodeOption) {
|
|
25
|
-
option[key] = decodeOption[key];
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
30
|
-
delete option[INNERMARKER.url];
|
|
31
|
-
|
|
32
|
-
this.setData(option);
|
|
33
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Instance } from "../../../RootComponent/Instance/RootComponentInstance";
|
|
2
|
-
|
|
3
|
-
export function pagePathCheck(path?: string) {
|
|
4
|
-
return function(this: Instance) {
|
|
5
|
-
if (path && `/${this.is}` !== path) {
|
|
6
|
-
throw new Error(`页面路径错误,应为 /${this.is}`);
|
|
7
|
-
}
|
|
8
|
-
};
|
|
9
|
-
}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import type { Func } from "hry-types/src/Misc/_api";
|
|
2
|
-
import { BBeforeCreate } from "../../../behaviors/BbeforeCreated";
|
|
3
|
-
import { BthrottleDebounce } from "../../../behaviors/BthrottleDebounce";
|
|
4
|
-
import { applyDebounceAndThrottle } from "../../../utils/applyDebounceAndThrottle";
|
|
5
|
-
import { instanceConfig } from "../../InstanceInject/instanceConfig";
|
|
6
|
-
import type { ComputedConstraint } from "../../RootComponent/Computed/ComputedConstraint";
|
|
7
|
-
import type { DataConstraint } from "../../RootComponent/Data/DataConstraint";
|
|
8
|
-
import type { LifetimesConstraint } from "../../RootComponent/Lifetimes/LifetimesConstraint";
|
|
9
|
-
import type { MethodsConstraint } from "../../RootComponent/Methods/MethodsConstraint";
|
|
10
|
-
import type { PageLifetimesOption } from "../../RootComponent/PageLifetimes/PageLifetimesOption";
|
|
11
|
-
import type { PropertiesConstraint } from "../../RootComponent/Properties/PropertiesConstraint";
|
|
12
|
-
import type { StoreConstraint } from "../../RootComponent/Store/StoreConstraint";
|
|
13
|
-
import type { DefineComponentOptionRuntime } from "..";
|
|
14
|
-
import { handleRootComponent } from "./handleRootComponent";
|
|
15
|
-
import { handleSubComponents } from "./handleSubComponents";
|
|
16
|
-
import { hijackHandle } from "./hijackHandle";
|
|
17
|
-
import type { ComputedCache } from "./initComputed/initComputedAndGetCache";
|
|
18
|
-
import { injectInfoHandler } from "./injectInfoHandler";
|
|
19
|
-
import { InternalFieldProtection } from "./internalFieldProtection";
|
|
20
|
-
import { sameFuncOptionsHandle } from "./sameFuncOptionsHandle";
|
|
21
|
-
import { handleWatchConfig } from "./watchHandler";
|
|
22
|
-
// 因为watch字段可能有多个变量,所以在这里定义的value是一个数组
|
|
23
|
-
export type WatchOldValue = Record<string, unknown[]>;
|
|
24
|
-
export type ThrottleDebounce = Partial<Record<"throttle" | "debounce", Record<string, number>>>;
|
|
25
|
-
export type OptionsInnerFields = {
|
|
26
|
-
data: {
|
|
27
|
-
__storeInited__?: boolean;
|
|
28
|
-
// 在attach周期结束后,为data.attached赋值为true
|
|
29
|
-
attached?: boolean;
|
|
30
|
-
// // 为data.attached赋值为true时会触发Observers["**"]的回调函数,进而运行computedUpdater,所以要设置一个标志位来避免触发computedUpdater。因为这是无意义的。
|
|
31
|
-
__computedInited__?: boolean;
|
|
32
|
-
__oberverHandler__?: Func[];
|
|
33
|
-
__computedCache__?: ComputedCache;
|
|
34
|
-
__watchOldValue__?: WatchOldValue;
|
|
35
|
-
__throttleDebounce__?: ThrottleDebounce;
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* 临时的函数配置项
|
|
41
|
-
* 把根组件与子组件中配置类型为函数的相同字段配置收集在一起(数组)
|
|
42
|
-
*/
|
|
43
|
-
export type SameFuncOptions = Record<"pageLifetimes" | "lifetimes" | "watch" | "observers", Record<string, Func[]>>;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* 最终传入原生Component的配置项
|
|
47
|
-
*/
|
|
48
|
-
export type FinalOptionsOfComponent = {
|
|
49
|
-
data: DataConstraint & OptionsInnerFields["data"];
|
|
50
|
-
observers: Record<string, Func>;
|
|
51
|
-
behaviors: string[];
|
|
52
|
-
methods: MethodsConstraint;
|
|
53
|
-
externalClasses: string[];
|
|
54
|
-
pageLifetimes: PageLifetimesOption<false, object>["pageLifetimes"] & {};
|
|
55
|
-
isPage: boolean;
|
|
56
|
-
options: WechatMiniprogram.Component.ComponentOptions;
|
|
57
|
-
properties: PropertiesConstraint;
|
|
58
|
-
store?: StoreConstraint;
|
|
59
|
-
computed: ComputedConstraint;
|
|
60
|
-
watch: Record<string, Func>;
|
|
61
|
-
lifetimes: LifetimesConstraint;
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* 把DefineComponentOption转化为原生Component API支持的配置
|
|
66
|
-
* @param defineComponentOption
|
|
67
|
-
* @returns 返回符合原生Component API配置
|
|
68
|
-
*/
|
|
69
|
-
export function normalizeOptions(
|
|
70
|
-
defineComponentOption: DefineComponentOptionRuntime,
|
|
71
|
-
): FinalOptionsOfComponent {
|
|
72
|
-
const { rootComponent, subComponents, path } = defineComponentOption;
|
|
73
|
-
const isPage = rootComponent?.isPage ?? false;
|
|
74
|
-
const finalOptionsForComponent: FinalOptionsOfComponent = {
|
|
75
|
-
observers: {},
|
|
76
|
-
data: {},
|
|
77
|
-
methods: {},
|
|
78
|
-
behaviors: [BthrottleDebounce],
|
|
79
|
-
externalClasses: [],
|
|
80
|
-
pageLifetimes: {},
|
|
81
|
-
isPage,
|
|
82
|
-
properties: {},
|
|
83
|
-
computed: {},
|
|
84
|
-
watch: {},
|
|
85
|
-
lifetimes: {},
|
|
86
|
-
options: {},
|
|
87
|
-
};
|
|
88
|
-
// 处理注入的实例配置项
|
|
89
|
-
injectInfoHandler(finalOptionsForComponent, instanceConfig.injectInfo);
|
|
90
|
-
/**
|
|
91
|
-
* 为了更高的效率,在处理rootComponentOption和subComponentsOption数据时,把相同字段配置(pageLifetimes,lifetimes,watch,observers)收集到funcOptions中。
|
|
92
|
-
* 后续再一起处理这些字段,整合进finalOptionsForComponent配置中。即funcConfig是一个临时中介对象。
|
|
93
|
-
*/
|
|
94
|
-
const sameFuncOptions: SameFuncOptions = {
|
|
95
|
-
pageLifetimes: {},
|
|
96
|
-
lifetimes: {},
|
|
97
|
-
watch: {},
|
|
98
|
-
observers: {},
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
handleRootComponent(finalOptionsForComponent, rootComponent, sameFuncOptions);
|
|
102
|
-
|
|
103
|
-
handleSubComponents(finalOptionsForComponent, subComponents, sameFuncOptions);
|
|
104
|
-
|
|
105
|
-
sameFuncOptionsHandle(finalOptionsForComponent, isPage, sameFuncOptions);
|
|
106
|
-
|
|
107
|
-
// 配置与内部字段冲突验证
|
|
108
|
-
InternalFieldProtection(finalOptionsForComponent);
|
|
109
|
-
|
|
110
|
-
// 页面时删除预设的虚拟组件字段
|
|
111
|
-
if (isPage && finalOptionsForComponent.options) {
|
|
112
|
-
Reflect.deleteProperty(finalOptionsForComponent.options, "virtualHost");
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// 处理debounce和throttle前缀的方法(事件)配置
|
|
116
|
-
applyDebounceAndThrottle(finalOptionsForComponent.methods);
|
|
117
|
-
|
|
118
|
-
// 处理watch配置,注意的是 oldValue中的计算属性初始赋值在计算属性初始化完毕后,即计算属性初始化后,再变化时才会被watch到。
|
|
119
|
-
handleWatchConfig(finalOptionsForComponent);
|
|
120
|
-
|
|
121
|
-
// BBeforeCreate在最后面,让BeforeCreate生命周期运行在最终建立组件时。用于测试。
|
|
122
|
-
finalOptionsForComponent.behaviors.push(BBeforeCreate);
|
|
123
|
-
|
|
124
|
-
// 劫持函数的处理
|
|
125
|
-
hijackHandle(finalOptionsForComponent, isPage, path);
|
|
126
|
-
|
|
127
|
-
return finalOptionsForComponent;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* computed设计逻辑
|
|
132
|
-
* 在之前的设计中,计算属性的初始化发生在beforeCreate阶段,通过通过监控observers["**"]来触发计算属性的更新。
|
|
133
|
-
* 有一些问题如下:
|
|
134
|
-
* 1. 如果依赖属性是properties的情况下(实际上大多数时候都是)初始化时的数据是无意义的,因为beforeCreate阶段properties数据还没传入。
|
|
135
|
-
* 如果想节省调用(可减少组件渲染时间),应该在properties数据传入后再初始化计算属性,且让初始化时发生的setData不引起watch和observers的响应。什么时候properties已经传入呢?那就是挂载阶段,可是小程序只有attached钩子,只能通过observers["**"]的第一次触发模拟attach周期(只要传入了properties字段定义的属性那么,observers.**就好比attach周期了,会在attached周期之前触发)。需要注意的是如果没有定义properties字段或者传入的属性不在properties中,那么observers["**"]就不会在attached之前触发,所以在attached阶段要做一次检测,如果没有初始化计算属性,就在这个周期中初始化计算属性。
|
|
136
|
-
* 在计算属性初始化函数中,要检测this.data.__computedCache__是否存在,如果存在就表示已经初始化过了,否则初始化计算属性,并把__initializing__设置为true。这样就可以避免在初始化计算属性时用到setData时,引起watch和observers的触发(watch的回调在执行前判断__initializing__,如果为false才执行)。
|
|
137
|
-
* 还有一个问题就是watch的oldValue,在watch的初始化函数中只针对不包含计算属性的path进行赋值,这样不影响非计算属性的监控。在计算属性初始化完毕后,再对包含计算属性的path进行赋值。这样oldValue的值才是正确的。这样可避免在observers.path中使用计算属性而报错。
|
|
138
|
-
*
|
|
139
|
-
* 整体实现思路:
|
|
140
|
-
* 1. 劫持observers["**"]事件,在observers["**"]触发时,看data.__computedCache__是否存在,如果不存在,就初始化计算属性。并把data.__computedCache__赋值为true。
|
|
141
|
-
* 2. 劫持attached事件,在attached阶段,如果data.__computedCache__不存在,就初始化计算属性。并把data.__computedCache__赋值为true。
|
|
142
|
-
* 这样j
|
|
143
|
-
*/
|