@composy/store-vue 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/README.md +169 -154
- package/dist/index.js +151 -53
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +242 -170
- package/dist/index.min.js.map +1 -1
- package/es/.dts-output-manifest.json +1 -0
- package/es/.dts.tsbuildinfo +1 -0
- package/es/composables/defineSetupStore.d.ts +0 -1
- package/es/composables/defineSetupStore.d.ts.map +1 -1
- package/es/composables/defineSetupStore.js +1 -1
- package/es/composables/defineSetupStore.js.map +1 -1
- package/es/composables/index.d.ts +8 -9
- package/es/composables/index.d.ts.map +1 -1
- package/es/composables/index.js +1 -1
- package/es/composables/useFormStore.d.ts +0 -1
- package/es/composables/useFormStore.d.ts.map +1 -1
- package/es/composables/useFormStore.js +1 -1
- package/es/composables/useFormStore.js.map +1 -1
- package/es/composables/useOptimistic.d.ts +1 -52
- package/es/composables/useOptimistic.d.ts.map +1 -1
- package/es/composables/useOptimistic.js +35 -20
- package/es/composables/useOptimistic.js.map +1 -1
- package/es/composables/usePersist.d.ts +0 -1
- package/es/composables/usePersist.d.ts.map +1 -1
- package/es/composables/usePersist.js +16 -7
- package/es/composables/usePersist.js.map +1 -1
- package/es/composables/usePersistedState.d.ts +0 -1
- package/es/composables/usePersistedState.d.ts.map +1 -1
- package/es/composables/usePersistedState.js +16 -3
- package/es/composables/usePersistedState.js.map +1 -1
- package/es/composables/useSharedState.d.ts +0 -1
- package/es/composables/useSharedState.d.ts.map +1 -1
- package/es/composables/useSharedState.js +25 -8
- package/es/composables/useSharedState.js.map +1 -1
- package/es/composables/useStore.d.ts +0 -1
- package/es/composables/useStore.js +1 -1
- package/es/composables/useStore.js.map +1 -1
- package/es/composables/useStoreDevtools.d.ts +0 -1
- package/es/composables/useStoreDevtools.d.ts.map +1 -1
- package/es/composables/useStoreDevtools.js +1 -1
- package/es/composables/useStoreDevtools.js.map +1 -1
- package/es/composables/useStoreSnapshot.d.ts +0 -1
- package/es/composables/useStoreSnapshot.d.ts.map +1 -1
- package/es/composables/useStoreSnapshot.js +18 -8
- package/es/composables/useStoreSnapshot.js.map +1 -1
- package/es/composables/useSubscribe.d.ts +0 -1
- package/es/composables/useSubscribe.d.ts.map +1 -1
- package/es/composables/useSubscribe.js +1 -1
- package/es/composables/useSubscribe.js.map +1 -1
- package/es/context/injection-keys.d.ts +0 -1
- package/es/context/injection-keys.d.ts.map +1 -1
- package/es/context/injection-keys.js +1 -1
- package/es/context/injection-keys.js.map +1 -1
- package/es/index.d.ts +1 -2
- package/es/index.js +2 -2
- package/es/index.js.map +1 -1
- package/es/plugins/engine-plugin.d.ts +1 -2
- package/es/plugins/engine-plugin.d.ts.map +1 -1
- package/es/plugins/engine-plugin.js +2 -2
- package/es/plugins/engine-plugin.js.map +1 -1
- package/es/plugins/enhanced-persist-plugin.d.ts +0 -1
- package/es/plugins/enhanced-persist-plugin.js +1 -1
- package/es/plugins/index.d.ts +0 -1
- package/es/plugins/index.js +1 -1
- package/es/plugins/pinia-plugin.d.ts +0 -1
- package/es/plugins/pinia-plugin.d.ts.map +1 -1
- package/es/plugins/pinia-plugin.js +24 -6
- package/es/plugins/pinia-plugin.js.map +1 -1
- package/es/plugins/registry-plugin.d.ts +0 -1
- package/es/plugins/registry-plugin.js +1 -1
- package/es/plugins/vue-plugin.d.ts +0 -1
- package/es/plugins/vue-plugin.d.ts.map +1 -1
- package/es/plugins/vue-plugin.js +1 -1
- package/es/plugins/vue-plugin.js.map +1 -1
- package/es/runtime/install-store-app.d.ts +0 -1
- package/es/runtime/install-store-app.js +1 -1
- package/es/runtime/install-store-app.js.map +1 -1
- package/es/runtime/store-plugin-options.d.ts +0 -1
- package/es/runtime/store-plugin-options.js +1 -1
- package/es/runtime/store-plugin-options.js.map +1 -1
- package/es/runtime/store-registry.d.ts +0 -1
- package/es/runtime/store-registry.d.ts.map +1 -1
- package/es/runtime/store-registry.js +14 -4
- package/es/runtime/store-registry.js.map +1 -1
- package/es/runtime/store-runtime.d.ts +1 -2
- package/es/runtime/store-runtime.d.ts.map +1 -1
- package/es/runtime/store-runtime.js +8 -2
- package/es/runtime/store-runtime.js.map +1 -1
- package/es/types.d.ts +2 -1
- package/es/types.d.ts.map +1 -1
- package/es/types.js +1 -1
- package/esm/composables/defineSetupStore.d.ts.map +1 -1
- package/esm/composables/defineSetupStore.js +1 -1
- package/esm/composables/defineSetupStore.js.map +1 -1
- package/esm/composables/index.d.ts +8 -8
- package/esm/composables/index.d.ts.map +1 -1
- package/esm/composables/index.js +1 -1
- package/esm/composables/useFormStore.d.ts.map +1 -1
- package/esm/composables/useFormStore.js +1 -1
- package/esm/composables/useFormStore.js.map +1 -1
- package/esm/composables/useOptimistic.d.ts +1 -51
- package/esm/composables/useOptimistic.d.ts.map +1 -1
- package/esm/composables/useOptimistic.js +35 -20
- package/esm/composables/useOptimistic.js.map +1 -1
- package/esm/composables/usePersist.d.ts.map +1 -1
- package/esm/composables/usePersist.js +16 -7
- package/esm/composables/usePersist.js.map +1 -1
- package/esm/composables/usePersistedState.d.ts.map +1 -1
- package/esm/composables/usePersistedState.js +16 -3
- package/esm/composables/usePersistedState.js.map +1 -1
- package/esm/composables/useSharedState.d.ts.map +1 -1
- package/esm/composables/useSharedState.js +25 -8
- package/esm/composables/useSharedState.js.map +1 -1
- package/esm/composables/useStore.js +1 -1
- package/esm/composables/useStore.js.map +1 -1
- package/esm/composables/useStoreDevtools.d.ts.map +1 -1
- package/esm/composables/useStoreDevtools.js +1 -1
- package/esm/composables/useStoreDevtools.js.map +1 -1
- package/esm/composables/useStoreSnapshot.d.ts.map +1 -1
- package/esm/composables/useStoreSnapshot.js +18 -8
- package/esm/composables/useStoreSnapshot.js.map +1 -1
- package/esm/composables/useSubscribe.d.ts.map +1 -1
- package/esm/composables/useSubscribe.js +1 -1
- package/esm/composables/useSubscribe.js.map +1 -1
- package/esm/context/injection-keys.d.ts.map +1 -1
- package/esm/context/injection-keys.js +1 -1
- package/esm/context/injection-keys.js.map +1 -1
- package/esm/index.d.ts +1 -1
- package/esm/index.js +2 -2
- package/esm/index.js.map +1 -1
- package/esm/plugins/engine-plugin.d.ts +1 -1
- package/esm/plugins/engine-plugin.d.ts.map +1 -1
- package/esm/plugins/engine-plugin.js +2 -2
- package/esm/plugins/engine-plugin.js.map +1 -1
- package/esm/plugins/enhanced-persist-plugin.js +1 -1
- package/esm/plugins/index.js +1 -1
- package/esm/plugins/pinia-plugin.d.ts.map +1 -1
- package/esm/plugins/pinia-plugin.js +24 -6
- package/esm/plugins/pinia-plugin.js.map +1 -1
- package/esm/plugins/registry-plugin.js +1 -1
- package/esm/plugins/vue-plugin.d.ts.map +1 -1
- package/esm/plugins/vue-plugin.js +1 -1
- package/esm/plugins/vue-plugin.js.map +1 -1
- package/esm/runtime/install-store-app.js +1 -1
- package/esm/runtime/install-store-app.js.map +1 -1
- package/esm/runtime/store-plugin-options.js +1 -1
- package/esm/runtime/store-plugin-options.js.map +1 -1
- package/esm/runtime/store-registry.d.ts.map +1 -1
- package/esm/runtime/store-registry.js +14 -4
- package/esm/runtime/store-registry.js.map +1 -1
- package/esm/runtime/store-runtime.d.ts +1 -1
- package/esm/runtime/store-runtime.d.ts.map +1 -1
- package/esm/runtime/store-runtime.js +8 -2
- package/esm/runtime/store-runtime.js.map +1 -1
- package/esm/types.d.ts +2 -0
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js +1 -1
- package/lib/composables/defineSetupStore.cjs +1 -1
- package/lib/composables/defineSetupStore.cjs.map +1 -1
- package/lib/composables/{defineSetupStore.d.ts → defineSetupStore.d.cts} +0 -1
- package/lib/composables/defineSetupStore.d.cts.map +1 -0
- package/lib/composables/index.cjs +1 -1
- package/lib/composables/{index.d.ts → index.d.cts} +8 -9
- package/lib/composables/index.d.cts.map +1 -0
- package/lib/composables/useFormStore.cjs +1 -1
- package/lib/composables/useFormStore.cjs.map +1 -1
- package/lib/composables/{useFormStore.d.ts → useFormStore.d.cts} +0 -1
- package/lib/composables/useFormStore.d.cts.map +1 -0
- package/lib/composables/useOptimistic.cjs +35 -20
- package/lib/composables/useOptimistic.cjs.map +1 -1
- package/lib/composables/useOptimistic.d.cts +16 -0
- package/lib/composables/useOptimistic.d.cts.map +1 -0
- package/lib/composables/usePersist.cjs +16 -7
- package/lib/composables/usePersist.cjs.map +1 -1
- package/lib/composables/{usePersist.d.ts → usePersist.d.cts} +0 -1
- package/lib/composables/usePersist.d.cts.map +1 -0
- package/lib/composables/usePersistedState.cjs +16 -3
- package/lib/composables/usePersistedState.cjs.map +1 -1
- package/lib/composables/{usePersistedState.d.ts → usePersistedState.d.cts} +0 -1
- package/lib/composables/usePersistedState.d.cts.map +1 -0
- package/lib/composables/useSharedState.cjs +24 -7
- package/lib/composables/useSharedState.cjs.map +1 -1
- package/lib/composables/{useSharedState.d.ts → useSharedState.d.cts} +0 -1
- package/lib/composables/useSharedState.d.cts.map +1 -0
- package/lib/composables/useStore.cjs +1 -1
- package/lib/composables/useStore.cjs.map +1 -1
- package/lib/composables/{useStore.d.ts → useStore.d.cts} +0 -1
- package/lib/composables/useStore.d.cts.map +1 -0
- package/lib/composables/useStoreDevtools.cjs +1 -1
- package/lib/composables/useStoreDevtools.cjs.map +1 -1
- package/lib/composables/{useStoreDevtools.d.ts → useStoreDevtools.d.cts} +0 -1
- package/lib/composables/useStoreDevtools.d.cts.map +1 -0
- package/lib/composables/useStoreSnapshot.cjs +18 -8
- package/lib/composables/useStoreSnapshot.cjs.map +1 -1
- package/lib/composables/{useStoreSnapshot.d.ts → useStoreSnapshot.d.cts} +0 -1
- package/lib/composables/useStoreSnapshot.d.cts.map +1 -0
- package/lib/composables/useSubscribe.cjs +1 -1
- package/lib/composables/useSubscribe.cjs.map +1 -1
- package/lib/composables/{useSubscribe.d.ts → useSubscribe.d.cts} +0 -1
- package/lib/composables/useSubscribe.d.cts.map +1 -0
- package/lib/context/injection-keys.cjs +1 -1
- package/lib/context/injection-keys.cjs.map +1 -1
- package/lib/context/{injection-keys.d.ts → injection-keys.d.cts} +0 -1
- package/lib/context/injection-keys.d.cts.map +1 -0
- package/lib/index.cjs +2 -2
- package/lib/index.cjs.map +1 -1
- package/lib/{index.d.ts → index.d.cts} +1 -2
- package/lib/index.d.cts.map +1 -0
- package/lib/plugins/engine-plugin.cjs +2 -2
- package/lib/plugins/engine-plugin.cjs.map +1 -1
- package/lib/plugins/{engine-plugin.d.ts → engine-plugin.d.cts} +1 -2
- package/lib/plugins/engine-plugin.d.cts.map +1 -0
- package/lib/plugins/enhanced-persist-plugin.cjs +1 -1
- package/lib/plugins/{enhanced-persist-plugin.d.ts → enhanced-persist-plugin.d.cts} +0 -1
- package/lib/plugins/enhanced-persist-plugin.d.cts.map +1 -0
- package/lib/plugins/index.cjs +1 -1
- package/lib/plugins/{index.d.ts → index.d.cts} +0 -1
- package/lib/plugins/index.d.cts.map +1 -0
- package/lib/plugins/pinia-plugin.cjs +24 -6
- package/lib/plugins/pinia-plugin.cjs.map +1 -1
- package/lib/plugins/{pinia-plugin.d.ts → pinia-plugin.d.cts} +0 -1
- package/lib/plugins/pinia-plugin.d.cts.map +1 -0
- package/lib/plugins/registry-plugin.cjs +1 -1
- package/lib/plugins/{registry-plugin.d.ts → registry-plugin.d.cts} +0 -1
- package/lib/plugins/registry-plugin.d.cts.map +1 -0
- package/lib/plugins/vue-plugin.cjs +1 -1
- package/lib/plugins/vue-plugin.cjs.map +1 -1
- package/lib/plugins/{vue-plugin.d.ts → vue-plugin.d.cts} +0 -1
- package/lib/plugins/vue-plugin.d.cts.map +1 -0
- package/lib/runtime/install-store-app.cjs +1 -1
- package/lib/runtime/install-store-app.cjs.map +1 -1
- package/lib/runtime/{install-store-app.d.ts → install-store-app.d.cts} +0 -1
- package/lib/runtime/install-store-app.d.cts.map +1 -0
- package/lib/runtime/store-plugin-options.cjs +1 -1
- package/lib/runtime/store-plugin-options.cjs.map +1 -1
- package/lib/runtime/{store-plugin-options.d.ts → store-plugin-options.d.cts} +0 -1
- package/lib/runtime/store-plugin-options.d.cts.map +1 -0
- package/lib/runtime/store-registry.cjs +14 -4
- package/lib/runtime/store-registry.cjs.map +1 -1
- package/lib/runtime/{store-registry.d.ts → store-registry.d.cts} +0 -1
- package/lib/runtime/store-registry.d.cts.map +1 -0
- package/lib/runtime/store-runtime.cjs +8 -2
- package/lib/runtime/store-runtime.cjs.map +1 -1
- package/lib/runtime/{store-runtime.d.ts → store-runtime.d.cts} +1 -2
- package/lib/runtime/store-runtime.d.cts.map +1 -0
- package/lib/types.cjs +1 -1
- package/lib/{types.d.ts → types.d.cts} +2 -1
- package/lib/types.d.cts.map +1 -0
- package/package.json +19 -16
- package/lib/composables/useOptimistic.d.ts +0 -67
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":1,"configuration":"f8cdba427be0d6657da5b6d9e0ef1a051963469a8ad04f632d3a9e79378f65b1","sources":{"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\composables\\defineSetupStore.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\composables\\defineSetupStore.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\composables\\useFormStore.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\composables\\useFormStore.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\composables\\useOptimistic.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\composables\\useOptimistic.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\types.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\types.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\composables\\usePersist.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\composables\\usePersist.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\composables\\usePersistedState.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\composables\\usePersistedState.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\composables\\useSharedState.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\composables\\useSharedState.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\composables\\useStore.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\composables\\useStore.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\composables\\useStoreDevtools.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\composables\\useStoreDevtools.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\composables\\useStoreSnapshot.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\composables\\useStoreSnapshot.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\composables\\useSubscribe.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\composables\\useSubscribe.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\composables\\index.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\composables\\index.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\plugins\\pinia-plugin.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\plugins\\pinia-plugin.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\runtime\\store-plugin-options.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\runtime\\store-plugin-options.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\runtime\\store-registry.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\runtime\\store-registry.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\runtime\\store-runtime.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\runtime\\store-runtime.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\context\\injection-keys.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\context\\injection-keys.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\runtime\\install-store-app.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\runtime\\install-store-app.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\plugins\\engine-plugin.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\plugins\\engine-plugin.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\plugins\\registry-plugin.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\plugins\\registry-plugin.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\plugins\\vue-plugin.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\plugins\\vue-plugin.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\plugins\\index.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\plugins\\index.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\index.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\index.d.ts"],"D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\src\\plugins\\enhanced-persist-plugin.ts":["D:\\WorkBench\\ldesign\\packages\\store\\packages\\vue\\es\\plugins\\enhanced-persist-plugin.d.ts"]}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../../node_modules/.pnpm/@vue+shared@3.5.32/node_modules/@vue/shared/dist/shared.d.ts","../../../../../node_modules/.pnpm/@babel+types@8.0.6/node_modules/@babel/types/lib/index.d.ts","../../../../../node_modules/.pnpm/@babel+types@7.29.7/node_modules/@babel/types/lib/index.d.ts","../../../../../node_modules/.pnpm/@babel+parser@7.29.7/node_modules/@babel/parser/typings/babel-parser.d.ts","../../../../../node_modules/.pnpm/@vue+compiler-core@3.5.32/node_modules/@vue/compiler-core/dist/compiler-core.d.ts","../../../../../node_modules/.pnpm/@vue+compiler-dom@3.5.32/node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts","../../../../../node_modules/.pnpm/@vue+reactivity@3.5.32/node_modules/@vue/reactivity/dist/reactivity.d.ts","../../../../../node_modules/.pnpm/@vue+runtime-core@3.5.32/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","../../../../../node_modules/.pnpm/csstype@3.2.3/node_modules/csstype/index.d.ts","../../../../../node_modules/.pnpm/@vue+runtime-dom@3.5.32/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts","../../../../../node_modules/.pnpm/vue@3.5.32_typescript@5.9.3/node_modules/vue/dist/vue.d.mts","../../../../../node_modules/.pnpm/pinia@3.0.4_typescript@5.9.3_vue@3.5.32_typescript@5.9.3_/node_modules/pinia/dist/pinia.d.ts","../src/composables/definesetupstore.ts","../../core/es/types/plugin.d.ts","../../core/es/types/subscription.d.ts","../../core/es/types/store.d.ts","../../core/es/types/middleware.d.ts","../../core/es/types/utility.d.ts","../../core/es/types/index.d.ts","../../core/es/core/async-action.d.ts","../../core/es/core/base-store.d.ts","../../core/es/core/batch-manager.d.ts","../../core/es/core/create-store.d.ts","../../core/es/core/event-bus.d.ts","../../core/es/core/pub-sub.d.ts","../../core/es/core/index.d.ts","../../core/es/engine/types.d.ts","../../core/es/engine/plugin.d.ts","../../core/es/engine/index.d.ts","../../core/es/errors/index.d.ts","../../core/es/middleware/logger.d.ts","../../core/es/middleware/middleware-manager.d.ts","../../core/es/middleware/persist.d.ts","../../core/es/middleware/time-travel.d.ts","../../core/es/middleware/validation.d.ts","../../core/es/middleware/index.d.ts","../../core/es/plugins/define-plugin.d.ts","../../core/es/plugins/plugin-manager.d.ts","../../core/es/plugins/index.d.ts","../../core/es/utils/debounce-throttle.d.ts","../../core/es/utils/deep-clone.d.ts","../../core/es/utils/selector.d.ts","../../core/es/utils/index.d.ts","../../core/es/index.d.ts","../src/composables/useformstore.ts","../src/composables/useoptimistic.ts","../src/types.ts","../src/composables/usepersist.ts","../src/composables/usepersistedstate.ts","../src/composables/usesharedstate.ts","../src/composables/usestore.ts","../src/composables/usestoredevtools.ts","../src/composables/usestoresnapshot.ts","../src/composables/usesubscribe.ts","../src/composables/index.ts","../src/plugins/pinia-plugin.ts","../src/runtime/store-plugin-options.ts","../src/runtime/store-registry.ts","../src/runtime/store-runtime.ts","../src/context/injection-keys.ts","../src/runtime/install-store-app.ts","../src/plugins/engine-plugin.ts","../src/plugins/registry-plugin.ts","../src/plugins/vue-plugin.ts","../src/plugins/index.ts","../src/index.ts","../src/plugins/enhanced-persist-plugin.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/globals.typedarray.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/buffer.buffer.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/globals.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/blob.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/console.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/crypto.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/domexception.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/encoding.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/events.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/utility.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/header.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/readable.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/fetch.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/formdata.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/connector.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/client-stats.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/client.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/errors.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/dispatcher.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/global-dispatcher.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/global-origin.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/pool-stats.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/pool.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/handlers.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/balanced-pool.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/round-robin-pool.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/h2c-client.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/agent.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/dispatcher1-wrapper.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-interceptor.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-call-history.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-client.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-pool.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/snapshot-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/mock-errors.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/proxy-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/socks5-proxy-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/retry-handler.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/retry-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/api.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cache-interceptor.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/interceptors.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/util.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cookies.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/patch.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/websocket.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/eventsource.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/content-type.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/cache.d.ts","../../../../../node_modules/.pnpm/undici-types@8.9.0/node_modules/undici-types/index.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/fetch.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/importmeta.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/messaging.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/navigator.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/performance.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/storage.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/streams.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/timers.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/web-globals/url.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/assert.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/assert/strict.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/async_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/buffer.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/child_process.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/cluster.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/console.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/constants.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/crypto.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/dgram.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/diagnostics_channel.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/dns.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/dns/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/domain.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/events.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/ffi.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/fs.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/fs/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/http.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/http2.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/https.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/inspector.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/inspector.generated.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/inspector/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/module.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/net.d.ts","../../../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/os.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/path.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/path/posix.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/path/win32.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/perf_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/process.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/punycode.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/querystring.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/quic.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/readline.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/readline/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/repl.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/sea.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/sqlite.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/stream.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/stream/consumers.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/stream/iter.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/stream/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/stream/web.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/string_decoder.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/test.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/test/reporters.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/timers.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/timers/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/tls.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/trace_events.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/tty.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/url.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/util.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/util/types.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/v8.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/vfs.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/vm.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/wasi.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/worker_threads.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/zlib.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/zlib/iter.d.ts","../../../../../node_modules/.pnpm/@types+node@26.6.3/node_modules/@types/node/index.d.ts"],"fileIdsList":[[64,130,195,203,208,211,213,214,215,228],[130,195,203,208,211,213,214,215,228],[130,192,193,195,203,208,211,213,214,215,228],[130,194,195,203,208,211,213,214,215,228],[195,203,208,211,213,214,215,228],[130,195,203,208,211,213,214,215,228,237],[130,195,196,201,203,206,208,211,213,214,215,217,228,233,246],[130,195,196,197,203,206,208,211,213,214,215,228],[130,195,198,203,208,211,213,214,215,228,247],[130,195,199,200,203,208,211,213,214,215,219,228],[130,195,200,203,208,211,213,214,215,228,233,243],[130,195,201,203,206,208,211,213,214,215,217,228],[130,194,195,202,203,208,211,213,214,215,228],[130,195,203,204,208,211,213,214,215,228],[130,195,203,205,206,208,211,213,214,215,228],[130,194,195,203,206,208,211,213,214,215,228],[130,195,203,206,208,209,211,213,214,215,228,233,246],[130,195,203,206,208,209,211,213,214,215,228,235,237],[130,182,195,203,206,208,210,211,213,214,215,217,228,233,246],[130,195,203,206,208,210,211,213,214,215,217,228,233,243,246],[130,195,203,208,210,211,212,213,214,215,228,233,243,246],[129,130,131,132,133,134,135,136,137,138,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],[130,195,203,206,208,211,213,214,215,228],[130,195,203,208,211,213,215,228],[130,195,203,208,211,213,214,215,216,228,246],[130,195,203,206,208,211,213,214,215,217,228,233],[130,195,203,208,211,213,214,215,219,228],[130,195,203,208,211,213,214,215,220,228],[130,195,203,206,208,211,213,214,215,223,228],[130,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254],[130,195,203,208,211,213,214,215,225,228],[130,195,203,208,211,213,214,215,226,228],[130,195,200,203,208,209,211,213,214,215,217,228,235,243],[130,195,203,206,208,211,213,214,215,228,229],[130,195,203,208,211,213,214,215,228,230,247,251],[130,195,203,206,208,211,213,214,215,228,233,235,236,237],[130,195,203,208,211,213,214,215,228,234,237],[130,195,203,206,208,211,213,214,215,228,233,235],[130,195,203,206,208,211,213,214,215,228,233,236,237],[130,195,203,208,211,213,214,215,228,237,247],[130,195,203,208,211,213,214,215,228,238],[130,192,195,203,208,211,213,214,215,228,233,240,246],[130,195,203,208,211,213,214,215,228,233,239],[130,195,203,206,208,211,213,214,215,228,241,242],[130,195,203,208,211,213,214,215,228,241,242],[130,195,200,203,208,211,213,214,215,217,228,233,243],[130,195,203,208,211,213,214,215,228,244],[130,195,203,208,211,213,214,215,217,228,245],[130,195,203,208,210,211,213,214,215,226,228,246],[130,195,203,208,211,213,214,215,228,247,248],[130,195,200,203,208,211,213,214,215,228,248],[130,195,203,208,211,213,214,215,228,233,249],[130,195,203,208,209,211,213,214,215,228],[130,195,203,208,211,213,214,215,216,228,251],[130,195,203,208,211,213,214,215,228,252],[130,195,198,203,208,211,213,214,215,228],[130,195,200,203,208,211,213,214,215,228],[130,195,203,208,211,213,214,215,228,247],[130,182,195,203,208,211,213,214,215,228],[130,195,203,208,211,213,214,215,228,246],[130,195,203,208,211,213,214,215,228,253],[130,195,203,208,211,213,214,215,223,228],[130,195,203,208,211,213,214,215,228,242],[130,182,195,203,206,208,209,211,213,214,215,217,223,228,233,237,246,249,251,253],[130,195,203,208,211,213,214,215,228,233,254],[130,195,203,208,211,213,214,215,228,235,255],[62,63,65,130,195,203,208,211,213,214,215,228],[66,130,195,203,208,211,213,214,215,228],[62,130,195,203,208,211,213,214,215,228],[62,68,69,71,130,195,203,208,211,213,214,215,228],[68,69,70,71,130,195,203,208,211,213,214,215,228],[72,73,130,195,203,208,211,213,214,215,228],[130,145,148,151,152,195,203,208,211,213,214,215,228,246],[130,148,195,203,208,211,213,214,215,228,233,246],[130,148,152,195,203,208,211,213,214,215,228,246],[130,195,203,208,211,213,214,215,228,233],[130,142,195,203,208,211,213,214,215,228],[130,146,195,203,208,211,213,214,215,228],[130,144,145,148,195,203,208,211,213,214,215,228,246],[130,195,203,208,211,213,214,215,217,228,243],[130,195,203,208,211,213,214,215,228,256],[130,142,195,203,208,211,213,214,215,228,256],[130,144,148,195,203,208,211,213,214,215,217,228,246],[130,139,140,141,143,147,195,203,206,208,211,213,214,215,228,233,246],[130,148,195,203,208,211,213,214,215,228],[130,148,157,166,195,203,208,211,213,214,215,228],[130,140,146,195,203,208,211,213,214,215,228],[130,148,176,177,195,203,208,211,213,214,215,228],[130,140,143,148,195,203,208,211,213,214,215,228,237,246,256],[130,144,148,195,203,208,211,213,214,215,228,246],[130,139,195,203,208,211,213,214,215,228],[130,142,143,144,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,177,178,179,180,181,195,203,208,211,213,214,215,228],[130,148,169,172,195,203,208,211,213,214,215,228],[130,148,157,159,160,195,203,208,211,213,214,215,228],[130,146,148,159,161,195,203,208,211,213,214,215,228],[130,147,195,203,208,211,213,214,215,228],[130,140,142,148,195,203,208,211,213,214,215,228],[130,148,152,159,161,195,203,208,211,213,214,215,228],[130,152,195,203,208,211,213,214,215,228],[130,146,148,151,195,203,208,211,213,214,215,228,246],[130,140,144,148,157,195,203,208,211,213,214,215,228],[130,148,169,195,203,208,211,213,214,215,228],[130,161,195,203,208,211,213,214,215,228],[130,140,144,148,152,195,203,208,211,213,214,215,228],[130,142,148,176,195,203,208,211,213,214,215,228,237,253,256],[67,71,130,195,203,208,211,213,214,215,228],[80,130,195,203,208,211,213,214,215,228],[81,82,83,84,85,86,130,195,203,208,211,213,214,215,228],[88,89,130,195,203,208,211,213,214,215,228],[88,130,195,203,208,211,213,214,215,228],[80,87,90,91,97,100,104,130,195,203,208,211,213,214,215,228],[92,93,94,95,96,130,195,203,208,211,213,214,215,228],[98,99,130,195,203,208,211,213,214,215,228],[75,76,77,78,79,130,195,203,208,211,213,214,215,228],[77,130,195,203,208,211,213,214,215,228],[75,76,78,130,195,203,208,211,213,214,215,228],[101,102,103,130,195,203,208,211,213,214,215,228],[74,106,107,109,110,111,112,113,114,115,130,195,203,208,211,213,214,215,228],[72,73,105,130,195,203,208,211,213,214,215,228],[72,73,108,130,195,203,208,211,213,214,215,228],[72,73,108,120,130,195,203,208,211,213,214,215,228],[73,105,108,116,126,130,195,203,208,211,213,214,215,228],[72,73,90,108,120,122,130,195,203,208,211,213,214,215,228],[117,130,195,203,208,211,213,214,215,228],[117,123,124,125,130,195,203,208,211,213,214,215,228],[73,105,108,130,195,203,208,211,213,214,215,228],[119,130,195,203,208,211,213,214,215,228],[72,73,118,120,122,130,195,203,208,211,213,214,215,228],[72,73,120,121,130,195,203,208,211,213,214,215,228],[73,117,130,195,203,208,211,213,214,215,228],[73,108,130,195,203,208,211,213,214,215,228],[73,108,117,118,119,130,195,203,208,211,213,214,215,228]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"f468b74459f1ad4473b36a36d49f2b255f3c6b5d536c81239c2b2971df089eaf","impliedFormat":1},{"version":"e66dd20f48d96e48ee9a807ba2697396978cdf09cca2a4cbf08fbc2d843e27e8","impliedFormat":99},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"524a409ad72186b7f6cb16898c349465cfa876f641d6cb6137b3123d5cfca619","impliedFormat":1},{"version":"ebe84ad8344962b7117a3b95065f47383215020eaf1b626463863b45b4d16e62","impliedFormat":1},{"version":"dc0c80f91a4d46c5c4f625a35601ff3c815e2395e6680bacfa12970fc6d49c93","impliedFormat":1},{"version":"3e74c6f34a28b7c948bfdaf19172000d589093660b3605f8c21c1b30173c729b","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"88ad1af02cacc61bf79683b021d326eeafc91231660a06495c5046d4649ec3a2","impliedFormat":1},{"version":"c0191592be8eb7906f99ac4b8798d80a585b94001ea1a5f50d6ce5b0d13a5c62","impliedFormat":99},{"version":"dce3621e6c42ff85a85c26f827081feb317a2b45bc35007b7158964a2a9e1ed4","impliedFormat":99},{"version":"e5d1d7291456ecbe63c8b6f68f825c17376a623a0e79b890072fcc68132b82d2","signature":"7c55159f14ba0f3d1801fe99e02fba03a5796a3ab7a2b4eacf30b6b8137c0c67"},"3f05b77becc517f5dadaf24bdbc510efcdb227f0ca63fb1c5299534a68237674","83527d25f7c73022b5dccdd2a1231dc94ee2827095fb34013d540c03cc50a1ca","87e0dd5a4c0bdd5c37db66243d545d2c64755f70b4b02fe9088ad8b392e25c9e","ea212c183d8b04da32541c7e952a1eaa04e45ab124a892333e78ae4d58720406","3b2cb5288f9cc8d807caafea1af34f842335139f89ac80e014375a2316266a68","14f58cc2a8b34852c8fb50350ca2bd19a332e7d530af15893d390211624b124e","2bf532472271798ef293d24dd108e335a79d9bdbc1ac7ac69c7895ad863dfc46","79976af3160c99d7f03122651638075c77d6b2996be89a7ac33193888be94d40","0b4216f3442c419ad3a0ce835a05204ed06b7db8606b52d1b8da1d0dc62928c1","6580ebeb73d80543bbc58927a1aa6216afa096a62fd3be35f492c802d89b00e1","eae1512688f6a022a20efaeaba05f065c569bd9f77076849f8156fe9b981c611","60c2c1e2420bf5c95136fd74676bb83a180acb65ac131db47db5a0cae8d7563e","1b66026f639bfd4ccd6c33c41e1b488c88ba4cfc03ae67abbed5b2e3d013584b","24880f4d105ebe7c9b020bf85e4065d24484b5cc069a992577644003f662cb0b","23a0edd70e4cae256846af4607eff9ca50c9097bacda6ca178469764dde3029e","10538996409da0f2067d71d7b01d9146b85278a43640b6af79f9df04c9ada281","8bfd5283befeabca9891f54865329159997efbd29eee4e682172b8fb47298a3c","7d11afe26ccf77278d41ed28dfd4d4822215f52baf4eb486a4a8b043422c7539","fae9333987f4a785f80ede454f2ce9aa19ce6037c1ab6fa9598ae30c30af4a6c","65abcb3ee5b5330be7f607359640f372b05bf527cb84a73ab33acc6c6503f255","dc9495f857eb9390de9b6796e142b052efbcd924e84eed96c30b0d0d180e1d9a","310e9599a97a473dae2797736d74c9371f01b959907320a03e8dcdb11b27bed7","3d6d11b0111c8b6fba9a50fbddfa71a5ea3e593426968589184a127a4df6caff","27757e0678feb012a2ca9ae941f8495c144b7eb48fcb462ffeded4b2e57a10b1","a4891c9b14940ff373b011cd0ff9e291867b37c51dc58f3ea59a2ad0d3eae54e","0cfa3a9bba207ac1f5a8c9660df48c3b9387dc08c8eafe8ee11078efa645cf36","1012a4d32059beea614f4d928e1bf85cc4f4f003c577486858d0f09d87284e29","579d9af2ccf89932b696879fcac182952f73d457b90bc6932936d9351c83ffed","9a55486468a7520720925529e1de7c9fe0810b2b5ddc03ea619f0023cb71e23c","f5d3bf3ab61384495c1f9f18ae2fe0b83e629a50c7a703027f885dc0f2ff2535","1d326d12354de75f3385752ddfa94df753442fe9e463257a37a8f367645f9fca",{"version":"499ff24c53f317159c373feee4d635707a84838796405fd358cf720381aeb1f5","signature":"6241d0e41ec9e1e89a70c3e5858caa236a51b5e63756e3bc00ea7bc721fb989e"},{"version":"703b096cfe87173494c7b902642e3f74680125299861066fc64b37e9aa442222","signature":"906e9510194cacf7a39ecb432b87737555abd621468e6c053958d7e91a827dce"},{"version":"0f5d4115c627a9295de7162ad9a7459ebe8e6d942c309a0cb0b6885d9d4c049a","signature":"fc6392c57e0cf22af06320906b45e081d8418607bdbc7c13faaa30fa2b99685d"},{"version":"cd1eeddcc9bd8727ea741a2f9fbd74c2583c345d828a320225cd3c8049341082","signature":"4a354ef24adfb7510b2a590e0da3c36e65996acb5827953c74837d49fe8591f7"},{"version":"d2d451964a02e7814c47a8ae0facb7b178251d8fd4ed3d97011b8cd4aa440a54","signature":"eba7ead4f05bb298a5a7d6fd5b59ea3e47a0df1bb1319a3d4b4e2227b555cbb2"},{"version":"0a5ebef7611b957c5b64ecc5ce5cea7e91050c826fb0ea41eb885d8a2b6eef87","signature":"63f6b9e31c663147d1813f4b25300072242c33a091e9778a4ba0329474815fee"},{"version":"55fef17da9d0798069a42cae4f198c541a58bb8d1a864fcaaea6e509f1798c46","signature":"65c858b05a494360d9a09412b142b0d0382d671a5db2f27cc19eb89e7cf24a4d"},{"version":"5e5ad6bb0d02aa71022538599bb7d62c4293e8914dd44f2cc2caf5af578a7881","signature":"eee9b6e3beb4369f8071ac8f9b8d9523bcb560162fefe8c84fc5c5bdb8c5df1c"},{"version":"be0bd10d9a94b18e68b83524adf962cafd953c16da15c2c3730a6982fd0bae8c","signature":"6616b29c22efa41fe203b70eadfbc54246d93825777e8cb7f0dd68bce513151e"},{"version":"419da54b344330b37a4756e3b80a3d2e9e5f11e9e7a990b38966be10f156e707","signature":"1a2ad6e00b6caea88c7d05b3970bcdde5971b2dce9b75acc86288a708a255c27"},{"version":"de69de9428da855a3721e9bb156dab98bbd1cddd796752fb59c4ed068f67ee1f","signature":"2334449e2625cddd1abdd0257db060be9adb9c0f4cb8d4b8c1945abcd9f922ce"},{"version":"59ec310198b1e5117a7e6f0d8ed18be100b59e679b12e81141e41853bc900ac7","signature":"09925f5ccc646e6e8b381a8b11d342562fa1c93146c44fbb7e143b5525dc4a4f"},{"version":"523101618ddc8f2595efac6bb18407943ca3706c421018cd2640766147e39f08","signature":"b26a5afa85893d8a4036a0a42329830ad26136a454b71d4dbedeb78111be4dfb"},{"version":"3c05175e40d5ccf6e2a793e42d665c0522233a04ad069021c46d434c4dabecbb","signature":"b3f2dc16623483d235fb11a357bf1f4d97dc16337968e004bac5929eba8d49c4"},{"version":"1c86e3891db51a10218c73c18d531089cbc4aaaeb276fb94b80bbed01669622d","signature":"a0143a71d9e9c6d7e5d80d7045352eab694384114aa503e70fbbce7b32fab5d4"},{"version":"4cff5bfda0f278fb857b4f8df7d8f7793afd6c421eb4db5aae0f6c3dcdcc8c4b","signature":"509ba995627703e8b97b3bde4d1c5648bc436dbd48c8856fa19283ef286d3a85"},{"version":"709769c4da4dc771c4a138ae8ebc743f09ca47bb4ce1b9b3b346d942727e87c8","signature":"a521881ed0e555c3cb21e87c7bb8c7796a3065fc5d24cec0b17893e9e01bb75a"},{"version":"8fae2654ffc4c03e8a341e24ef056c6e23b46c28f7729acf76a097e53a1dcb40","signature":"94de022490d8dbc21829021c29b874e1f13724177a9066ea00bdbbef7428b023"},{"version":"936563424c2aec6248014b4ba4c60b75ef2cda9d00547fb7aca790e6d9f26bab","signature":"98d026ac61f8b1fcda798ca2f266053419e021f5341cfc65f4181e8eab3f0962"},{"version":"86c6a22736181aec784994a6cb7eac6f6f3d7a23b498164f381dccd720f37cdd","signature":"6fbc2c4b3d3a8e3165b47ae42b798bdcf615c04bb7aaae8894345343f287676e"},{"version":"537e329de06a698827dd4bf9eb4a51bc12270bd283551fb379484a3ea4ce5a0c","signature":"70f11afc50d023bcbd47279c3fcc3384a52d6270e7ac2245c03e715fb8773a71"},{"version":"1e131c26ac6ca2ce3d6143a423fd555485805e95cbf53b30539de01b40cbd55f","signature":"c9c8187315d2315d5d7ba6fbaf20df0313eed767c43cde327a17e33f03aaac88"},{"version":"215233eaa6fd32c5322952645b4c351859d1218a8880958119f90cbc87f94dcf","signature":"dd8d00b1f5bb3b3d42aa74951509eec57ff9fe0d333924c7fcb212aeed0c7df6"},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9b68a1c3f8f45b4c199fa5b3ac09497230cb8f2f0cdcfebe5817b30b836a64a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"21d7fab00c101ddf754b392e11534e6b20c6bda269b2ccbcdf3453cbe21d8a39","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"d3c85d4dde1a4918009e37426ee4a940cbbd4100e2e74d03e2de0d50a77bb488","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"60e3ba4b2d24548107060e5d13bffafbbbaa53d001c07bbe40386deda569b5e8","impliedFormat":1},{"version":"a712be2c8cbe0154bd17d1d7bff503d7c04331e0745eb9eea3d303e0e5d9401e","impliedFormat":1},{"version":"25bd6ae1b97ea991433337310fc406cc7c9f271b67b7c79dd24eee384759f3d4","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"4ca7fb8f6018ea836b1ad24f67d5e7c2cf7410af7462e0ccc90b012944f5d7ae","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"57354d2f022ed64ede57b2e052306dd076a138b551abc7d30ef5e6718ce2f76a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"358f74dc35927dc88ea86dd201a2b98e701c281615e6b30a4c153eb0bb90ef71","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"706abfbafe0ed5f685357375e89bbf48879549ea1772185d77d15f587c5c9400","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"013ff793053d33a15be4614efdd6c50247bbf0b26d6bc58ba338622a7441b543","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"279d0cc1a72879918854265c3405369aa2d4d23509b8694ea102995b298cc5e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"575aa163c4c32e5b82e0e99b1f9f80806e1d78bfa259706e05139251c022277b","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fb21326854faaa31ef02c9d51629fb6acedacb9396e74bf22ff8409441ea9ae","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"9019e48ace02a7f39315d84261f4a3dd23b7a3b1f6584e694001ac93971791b7","impliedFormat":1},{"version":"2f78692a85ada51c8f0988184d34d28436c1040e8ccf0758ba70d4b32b9776ad","impliedFormat":1},{"version":"97581dc7099ef3d844c83706d53a7ecf895c0e867fbf6b9dc035bb3080f677bd","impliedFormat":1},{"version":"e494b286c8e27c52f8c7f945aa80ff223f2a3cd4f7a2619fa8991f1459e26f07","impliedFormat":1},{"version":"f54f5f9e10bbceba7515dfad0ffc89dffdb8d749d0604594c57a725cf6d79c20","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f487e411f9657df0e76572e500c1209b8fe95ee3b4cc6e6e7913c15f56207d","impliedFormat":1},{"version":"9d37b8a9678efbcdf38238b59ce8e6f7db70aba1a516f3a4a671a301dbacfb3d","impliedFormat":1},{"version":"a47a792b8cff71443be8dfb199f2b77e102a7bf9d4f90c18059f05d9af2d7413","impliedFormat":1},{"version":"ad50512520720d10294c629cb4e2df23891c3fcbeaca00fbfb9e6bbea65f3dd6","impliedFormat":1},{"version":"189769511b45c93b23ba76069f7701d3b631cfbedc1eb94c7753486c78736f78","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"ba389fd3d7fba6670e97bc82eb12469dcb371d22f24e63859c1df5a083c823ed","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"961dec547748827cb6b45f6fdc66273f7bacd9c73103c6779f070f2fd07f23f9","impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"73eeb740dacc45adc607a4f59f90fa9dbe2717d93d82f115f45f34e18f8d644a","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"d251cda16f3f6a3e07f07c9e6e823ef6c583c63f653eb8777dafa749a78298e3","impliedFormat":1},{"version":"361939136b496a38b3e6b7be750bbb6998ef289bb8dd304c673138542ca16137","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"89e2568ebc2ec1e4149384b105e80e8bbf41eb4d711547f1121f4f628028de96","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"925734f303b7f0cc111d42aeb21781d38a79e6d5ac05b2b1400cd1861a75d27b","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"7286e4e5f80c0b1ab16addbdbbc9dd47fbae1c42034189261177b84d745cde3b","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"cd2a656ba1d250c2002190b683e3826bf4362b6919450bc0f9bbf5612ebad837","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"3e221ff0522e6ff95aa74a5211126aaf4d7e85ed8c8ff19290d591ad4bef988f","impliedFormat":1},{"version":"7da83f6429c6298ebf2be43d296b56ecfc94c9c28f5471b2f23b87545b914cea","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"751048d4aa67e20e5ecd2692340ea0d19bae42a20cc651d6f56d095e411ce3ac","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"aed8f3e5c7e53462565eedf34a9bcb700393cb2c1ab0c768602b929c3ed3145d","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"7ec8d7d483f7394f9da611b10d3a0e402f76ff5c991261e6ce43a15f81ca4258","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"9021dc5be8f3a87af5cede29221188a6497e2092b6889e0be212ef6b6b7153e9","impliedFormat":1},{"version":"4a8c8fd951d9fd9e0775f0aae8ed1f8b528204e24a2600bea3a1228ea83de52c","impliedFormat":1},{"version":"5b9cc0c724a8ebc7a873ab8e73c20b2416cef04b9e9d7f95ef1fa0fdcd4e0ec8","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"80a4b7023a2cc9f14d3f2e4635d6615ab3eff4b5b3630f62a8e73992fdd8cdb9","impliedFormat":1},{"version":"ec62d16f95636123624a69191a35b5df44b4b0a6428977e856c5739c0a787471","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1}],"root":[74,[106,128]],"options":{"allowImportingTsExtensions":false,"allowJs":false,"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationDir":"./","declarationMap":false,"emitDeclarationOnly":true,"emitDecoratorMetadata":false,"esModuleInterop":true,"experimentalDecorators":true,"jsx":1,"module":99,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.dts.tsbuildinfo"},"referencedMap":[[65,1],[64,2],[63,2],[192,3],[193,3],[194,4],[130,5],[195,6],[196,7],[197,8],[198,9],[199,10],[200,11],[201,12],[202,13],[203,14],[204,14],[205,15],[206,16],[207,2],[208,17],[209,18],[131,2],[129,2],[210,19],[211,20],[212,21],[256,22],[213,23],[214,24],[215,23],[216,25],[217,26],[219,27],[220,28],[221,28],[222,28],[223,29],[224,30],[225,31],[226,32],[227,33],[228,34],[229,34],[230,35],[231,2],[232,2],[233,36],[234,37],[235,38],[236,39],[237,40],[238,41],[239,42],[240,43],[241,44],[242,45],[243,46],[244,47],[245,48],[246,49],[247,50],[248,51],[249,52],[250,53],[251,54],[252,55],[132,23],[133,2],[134,56],[135,57],[136,2],[137,58],[138,2],[183,59],[184,60],[185,61],[186,61],[187,62],[188,2],[189,6],[190,63],[191,60],[253,64],[254,65],[255,66],[66,67],[67,68],[68,69],[69,70],[71,71],[62,2],[218,2],[70,2],[73,72],[60,2],[61,2],[10,2],[11,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[22,2],[23,2],[4,2],[24,2],[28,2],[25,2],[26,2],[27,2],[29,2],[30,2],[31,2],[5,2],[32,2],[33,2],[34,2],[35,2],[6,2],[39,2],[36,2],[37,2],[38,2],[40,2],[7,2],[41,2],[46,2],[47,2],[42,2],[43,2],[44,2],[45,2],[8,2],[51,2],[48,2],[49,2],[50,2],[52,2],[9,2],[53,2],[54,2],[55,2],[57,2],[56,2],[1,2],[58,2],[59,2],[157,73],[171,74],[154,75],[172,76],[181,77],[145,78],[146,79],[144,80],[180,81],[175,82],[179,83],[148,84],[158,85],[168,86],[147,87],[178,88],[142,89],[143,82],[149,85],[150,2],[156,90],[153,85],[140,91],[182,92],[173,93],[161,94],[160,85],[162,95],[165,96],[159,97],[163,98],[176,81],[151,99],[152,100],[166,101],[141,76],[170,102],[169,85],[155,100],[164,103],[167,104],[174,2],[139,2],[177,105],[72,106],[81,107],[82,107],[83,107],[84,107],[85,107],[87,108],[86,107],[90,109],[89,110],[88,107],[91,2],[105,111],[97,112],[92,107],[93,107],[94,107],[95,107],[96,107],[98,107],[100,113],[99,107],[80,114],[78,115],[75,115],[77,116],[76,115],[79,2],[101,2],[102,2],[104,117],[103,107],[74,72],[116,118],[106,119],[107,119],[109,120],[110,119],[111,119],[112,72],[113,119],[114,119],[115,120],[121,121],[127,122],[123,123],[128,124],[126,125],[117,126],[124,127],[125,128],[122,129],[118,130],[119,131],[120,132],[108,72]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256],"latestChangedDtsFile":"./plugins/enhanced-persist-plugin.d.ts","version":"5.9.3"}
|
|
@@ -117,4 +117,3 @@ export declare function createStoreState<T extends Record<string, unknown>>(init
|
|
|
117
117
|
export declare function createStoreGetters<T extends Record<string, () => unknown>>(getters: T): {
|
|
118
118
|
[K in keyof T]: ComputedRef<ReturnType<T[K]>>;
|
|
119
119
|
};
|
|
120
|
-
//# sourceMappingURL=defineSetupStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineSetupStore.d.ts","sourceRoot":"","sources":["../../src/composables/defineSetupStore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"defineSetupStore.d.ts","sourceRoot":"","sources":["../../src/composables/defineSetupStore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAI3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,+LAE7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,OAAO,EAAE,CAAC,GACT;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAM/B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,EACxE,OAAO,EAAE,CAAC,GACT;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAQnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineSetupStore.js","names":[],"sources":["../../src/composables/defineSetupStore.ts"],"sourcesContent":["/**\n * defineSetupStore - Setup 风格 Store 定义助手\n *\n * 提供更简洁的 composition API 风格来定义 Pinia Store。\n * 本质是对 defineStore 的 setup 语法的薄封装,增加类型推断和开发体验。\n *\n * @module composables/defineSetupStore\n */\n\nimport type {ComputedRef, Ref} from 'vue'
|
|
1
|
+
{"version":3,"file":"defineSetupStore.js","names":[],"sources":["../../src/composables/defineSetupStore.ts"],"sourcesContent":["/**\r\n * defineSetupStore - Setup 风格 Store 定义助手\r\n *\r\n * 提供更简洁的 composition API 风格来定义 Pinia Store。\r\n * 本质是对 defineStore 的 setup 语法的薄封装,增加类型推断和开发体验。\r\n *\r\n * @module composables/defineSetupStore\r\n */\r\n\r\nimport type { ComputedRef, Ref } from 'vue'\r\nimport { defineStore } from 'pinia'\r\nimport { computed, ref } from 'vue'\r\n\r\n/**\r\n * defineSetupStore - 使用 Composition API 风格定义 Store\r\n *\r\n * 与 defineStore 的 setup 语法等价,但提供更清晰的语义。\r\n * 适合喜欢 Composition API 风格的开发者。\r\n *\r\n * @param id - Store 唯一标识\r\n * @param setup - Setup 函数(在函数内使用 ref、computed、普通函数来定义 state、getters、actions)\r\n * @returns Pinia Store 定义\r\n *\r\n * @example\r\n * ```typescript\r\n * import { defineSetupStore } from '@composy/store-vue'\r\n * import { ref, computed } from 'vue'\r\n *\r\n * // Setup 风格定义(推荐)\r\n * export const useCounterStore = defineSetupStore('counter', () => {\r\n * // state(使用 ref)\r\n * const count = ref(0)\r\n * const step = ref(1)\r\n *\r\n * // getters(使用 computed)\r\n * const doubleCount = computed(() => count.value * 2)\r\n * const isPositive = computed(() => count.value > 0)\r\n *\r\n * // actions(普通函数)\r\n * function increment() {\r\n * count.value += step.value\r\n * }\r\n *\r\n * function decrement() {\r\n * count.value -= step.value\r\n * }\r\n *\r\n * async function fetchCount(id: string) {\r\n * const res = await fetch(`/api/count/${id}`)\r\n * count.value = await res.json()\r\n * }\r\n *\r\n * function reset() {\r\n * count.value = 0\r\n * step.value = 1\r\n * }\r\n *\r\n * return {\r\n * count, step,\r\n * doubleCount, isPositive,\r\n * increment, decrement, fetchCount, reset,\r\n * }\r\n * })\r\n * ```\r\n */\r\nexport function defineSetupStore<T>(id: string, setup: () => T) {\r\n return defineStore(id, setup)\r\n}\r\n\r\n/**\r\n * createStoreState - 创建带有类型推断的 Store State\r\n *\r\n * 工具函数,帮助在 setup store 中快速创建多个 ref 状态。\r\n *\r\n * @param initial - 初始状态对象\r\n * @returns 以 ref 包装的响应式状态对象\r\n *\r\n * @example\r\n * ```typescript\r\n * const useUserStore = defineSetupStore('user', () => {\r\n * const state = createStoreState({\r\n * name: '张三',\r\n * age: 25,\r\n * email: '',\r\n * })\r\n *\r\n * // state.name 是 Ref<string>\r\n * // state.age 是 Ref<number>\r\n *\r\n * function updateName(name: string) {\r\n * state.name.value = name\r\n * }\r\n *\r\n * return { ...state, updateName }\r\n * })\r\n * ```\r\n */\r\nexport function createStoreState<T extends Record<string, unknown>>(\r\n initial: T\r\n): { [K in keyof T]: Ref<T[K]> } {\r\n const result = {} as { [K in keyof T]: Ref<T[K]> }\r\n for (const key of Object.keys(initial) as Array<keyof T>) {\r\n result[key] = ref(initial[key]) as Ref<T[typeof key]>\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * createStoreGetters - 创建带有类型推断的 Store Getters\r\n *\r\n * 工具函数,帮助在 setup store 中快速创建多个 computed getter。\r\n *\r\n * @param getters - getter 函数映射\r\n * @returns 以 computed 包装的响应式 getter 对象\r\n *\r\n * @example\r\n * ```typescript\r\n * const useUserStore = defineSetupStore('user', () => {\r\n * const name = ref('张三')\r\n * const age = ref(25)\r\n *\r\n * const getters = createStoreGetters({\r\n * displayName: () => `${name.value} (${age.value}岁)`,\r\n * isAdult: () => age.value >= 18,\r\n * })\r\n *\r\n * return { name, age, ...getters }\r\n * })\r\n * ```\r\n */\r\nexport function createStoreGetters<T extends Record<string, () => unknown>>(\r\n getters: T\r\n): { [K in keyof T]: ComputedRef<ReturnType<T[K]>> } {\r\n const result = {} as { [K in keyof T]: ComputedRef<ReturnType<T[K]>> }\r\n for (const key of Object.keys(getters) as Array<keyof T>) {\r\n result[key] = computed(getters[key]) as ComputedRef<\r\n ReturnType<T[typeof key]>\r\n >\r\n }\r\n return result\r\n}\r\n"],"mappings":";;;;;;;;;;;;AAiEO,SAAS,iBAAoB,IAAY,OAAgB;CAC9D,OAAO,YAAY,IAAI,KAAK;AAC9B;AA8BO,SAAS,iBACd,SAC+B;CAC/B,MAAM,SAAS,CAAC;CAChB,KAAA,MAAW,OAAO,OAAO,KAAK,OAAO,GACnC,OAAO,OAAO,IAAI,QAAQ,IAAI;CAEhC,OAAO;AACT;AAyBO,SAAS,mBACd,SACmD;CACnD,MAAM,SAAS,CAAC;CAChB,KAAA,MAAW,OAAO,OAAO,KAAK,OAAO,GACnC,OAAO,OAAO,SAAS,QAAQ,IAAI;CAIrC,OAAO;AACT"}
|
|
@@ -7,18 +7,17 @@
|
|
|
7
7
|
export { createStoreGetters, createStoreState, defineSetupStore, } from './defineSetupStore';
|
|
8
8
|
export { email, maxLength, minLength, numberRange, pattern, required, useFormStore, } from './useFormStore';
|
|
9
9
|
export type { FormFieldRules, FormFieldState, FormValidator, UseFormStoreOptions, UseFormStoreReturn, } from './useFormStore';
|
|
10
|
-
export { useOptimistic
|
|
11
|
-
export type { OptimisticEntry, UseOptimisticReturn
|
|
10
|
+
export { useOptimistic } from './useOptimistic';
|
|
11
|
+
export type { OptimisticEntry, UseOptimisticReturn } from './useOptimistic';
|
|
12
12
|
export { usePersist, usePersistedRef, usePersistedRefWithTTL, } from './usePersist';
|
|
13
|
-
export { usePersistedState
|
|
13
|
+
export { usePersistedState } from './usePersistedState';
|
|
14
14
|
export type { PersistedStateOptions, PersistedStateReturn, } from './usePersistedState';
|
|
15
|
-
export { useSharedState
|
|
15
|
+
export { useSharedState } from './useSharedState';
|
|
16
16
|
export type { UseSharedStateOptions, UseSharedStateReturn, } from './useSharedState';
|
|
17
|
-
export { useComputedStore, useSimpleStore, useStore
|
|
18
|
-
export { useStoreDevtools
|
|
17
|
+
export { useComputedStore, useSimpleStore, useStore } from './useStore';
|
|
18
|
+
export { useStoreDevtools } from './useStoreDevtools';
|
|
19
19
|
export type { EventLogEntry, StoreInfo, UseStoreDevtoolsReturn, } from './useStoreDevtools';
|
|
20
|
-
export { useStoreSnapshot
|
|
20
|
+
export { useStoreSnapshot } from './useStoreSnapshot';
|
|
21
21
|
export type { StateDiff, StateSnapshot, UseStoreSnapshotOptions, UseStoreSnapshotReturn, } from './useStoreSnapshot';
|
|
22
|
-
export { useOnAction, useSubscribe, useWatch
|
|
22
|
+
export { useOnAction, useSubscribe, useWatch } from './useSubscribe';
|
|
23
23
|
export type { ActionContext } from './useSubscribe';
|
|
24
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composables/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,QAAQ,EACR,YAAY,GACb,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composables/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,QAAQ,EACR,YAAY,GACb,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE3E,OAAO,EACL,UAAU,EACV,eAAe,EACf,sBAAsB,GACvB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,YAAY,EACV,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,YAAY,EACV,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,YAAY,EACV,aAAa,EACb,SAAS,EACT,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,YAAY,EACV,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEpE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA"}
|
package/es/composables/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormStore.d.ts","sourceRoot":"","sources":["../../src/composables/useFormStore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useFormStore.d.ts","sourceRoot":"","sources":["../../src/composables/useFormStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormStore.js","names":[],"sources":["../../src/composables/useFormStore.ts"],"sourcesContent":["/* ============================================================\n * useFormStore.ts\n * 表单状态管理 Composable\n * 提供表单值、字段状态、校验、提交、重置等完整表单生命周期管理\n * ============================================================ */\n\n/* 从 Vue 导入类型,用于声明响应式引用 */\nimport type { ComputedRef, Ref } from 'vue'\n/* 从 store-core 工具库导入深拷贝和深比较函数 */\nimport { deepClone, deepEqual } from '@composy/store-core'\n/* 从 Vue 导入响应式 API */\nimport { computed, reactive, ref, watch } from 'vue'\n\n/* ── 默认校验提示信息 ── */\n/* 必填项校验失败时的默认提示 */\nconst DEFAULT_REQUIRED_MESSAGE = '此字段为必填项'\n/* 正则匹配校验失败时的默认提示 */\nconst DEFAULT_PATTERN_MESSAGE = '格式不正确'\n/* 邮箱格式校验失败时的默认提示 */\nconst DEFAULT_EMAIL_MESSAGE = '邮箱格式不正确'\n/* 邮箱格式正则表达式 */\nconst EMAIL_PATTERN = /^[^\\s@]+@[^@][^.@]*\\.[^\\s@]+$/\n\n/* ── 类型定义 ── */\n\n/* 从泛型 T 中提取 string 类型的键名,用作字段标识 */\ntype FieldKey<T> = Extract<keyof T, string>\n\n/**\n * 表单校验器函数类型\n * @param value - 当前字段值\n * @param allValues - 表单所有字段的值(用于跨字段校验)\n * @returns 校验错误信息或 null(无错误),支持异步校验\n */\nexport type FormValidator<T = unknown> = (\n value: T,\n allValues: Record<string, unknown>,\n) => string | null | Promise<string | null>\n\n/**\n * 字段校验规则接口\n * @property required - 是否必填,可传 string 自定义提示\n * @property rules - 自定义校验器数组,按顺序依次执行\n */\nexport interface FormFieldRules<T = unknown> {\n required?: boolean | string\n rules?: FormValidator<T>[]\n}\n\n/**\n * useFormStore 的配置选项接口\n * @property initialValues - 表单初始值(必须提供完整对象)\n * @property validationRules - 各字段的校验规则映射\n * @property onSubmit - 表单提交回调(校验通过后调用)\n * @property validateOn - 触发校验的时机:'blur' | 'change' | 'submit'\n */\nexport interface UseFormStoreOptions<T extends Record<string, unknown>> {\n initialValues: T\n validationRules?: {\n [K in keyof T]?: FormFieldRules<T[K]>\n }\n onSubmit?: (values: T) => void | Promise<void>\n validateOn?: 'blur' | 'change' | 'submit'\n}\n\n/**\n * 单个字段的状态接口\n * @property touched - 字段是否被触碰过(获得过焦点或提交过)\n * @property dirty - 字段值是否与初始值不同(被修改过)\n * @property error - 当前校验错误信息,null 表示无错误\n * @property validating - 字段是否正在异步校验中\n */\nexport interface FormFieldState {\n touched: boolean\n dirty: boolean\n error: string | null\n validating: boolean\n}\n\n/**\n * useFormStore 返回值接口\n * @property values - 表单当前值(reactive 对象)\n * @property fields - 各字段的状态映射\n * @property isDirty - 是否有任意字段被修改过(计算属性)\n * @property isValid - 是否所有字段都无校验错误(计算属性)\n * @property isSubmitting - 表单是否正在提交中\n * @property submitError - 提交失败的错误信息\n * @property submitCount - 累计提交次数\n * @property setFieldValue - 设置指定字段的值\n * @property setFieldTouched - 标记字段为已触碰\n * @property validateField - 校验单个字段(异步)\n * @property validateAll - 校验所有字段(异步)\n * @property handleSubmit - 提交表单\n * @property reset - 重置整个表单(可传新的初始值)\n * @property resetField - 重置单个字段\n * @property errors - 所有字段错误信息的计算属性\n */\nexport interface UseFormStoreReturn<T extends Record<string, unknown>> {\n values: T\n fields: Record<string, FormFieldState>\n isDirty: ComputedRef<boolean>\n isValid: ComputedRef<boolean>\n isSubmitting: Ref<boolean>\n submitError: Ref<string | null>\n submitCount: Ref<number>\n setFieldValue: <K extends keyof T>(field: K, value: T[K]) => void\n setFieldTouched: (field: keyof T) => void\n validateField: (field: keyof T) => Promise<string | null>\n validateAll: () => Promise<boolean>\n handleSubmit: () => Promise<void>\n reset: (newInitialValues?: Partial<T>) => void\n resetField: (field: keyof T) => void\n errors: ComputedRef<Record<string, string | null>>\n}\n\n/**\n * 表单状态管理 Composable\n * 提供完整的表单生命周期管理能力,包括值管理、字段状态追踪、校验、提交和重置\n *\n * @param options - 表单配置选项\n * @returns 包含表单状态和操作方法的对象\n */\nexport function useFormStore<T extends Record<string, unknown>>(\n options: UseFormStoreOptions<T>,\n): UseFormStoreReturn<T> {\n /* 解构配置选项,设置默认值 */\n const {\n initialValues, /* 表单初始值 */\n validationRules = {} as NonNullable<UseFormStoreOptions<T>['validationRules']>, /* 校验规则,默认空对象 */\n onSubmit, /* 提交回调 */\n validateOn = 'blur', /* 校验时机,默认 blur 时触发 */\n } = options\n\n /* 深拷贝初始值并保存,用于后续重置和脏值比较 */\n const storedInitialValues = deepClone(initialValues) as T\n /* 创建响应式表单值对象(从初始值的深拷贝开始) */\n const values = reactive(deepClone(storedInitialValues)) as T\n /* 将 values 转为通用 Record 类型,便于动态属性访问 */\n const valueRecord = values as Record<string, unknown>\n /* 将初始值也转为 Record 类型,用于脏值比较 */\n const initialValueRecord = storedInitialValues as Record<string, unknown>\n /* 获取所有字段名列表 */\n const fieldKeys = Object.keys(storedInitialValues) as Array<FieldKey<T>>\n\n /* 创建每个字段的响应式状态对象(touched/dirty/error/validating) */\n const fields = reactive(\n fieldKeys.reduce<Record<string, FormFieldState>>((acc, key) => {\n acc[key] = {\n touched: false, /* 字段未被触碰 */\n dirty: false, /* 字段值未被修改 */\n error: null, /* 无校验错误 */\n validating: false, /* 未在校验中 */\n }\n return acc\n }, {}),\n )\n\n /* ── 全局状态 ── */\n /* 是否正在提交中 */\n const isSubmitting = ref(false)\n /* 提交错误信息 */\n const submitError = ref<string | null>(null)\n /* 累计提交次数 */\n const submitCount = ref(0)\n\n /* ── 计算属性 ── */\n /* 是否有任意字段被修改过 */\n const isDirty = computed(() => fieldKeys.some(key => fields[key]?.dirty))\n /* 是否所有字段都无错误 */\n const isValid = computed(() => fieldKeys.every(key => !fields[key]?.error))\n\n /* 所有字段错误信息的映射 */\n const errors = computed(() => {\n return fieldKeys.reduce<Record<string, string | null>>((acc, key) => {\n acc[key] = fields[key]?.error ?? null\n return acc\n }, {})\n })\n\n /* ── 值变化监听 ── */\n /* 为每个字段创建 watch,当值变化时更新脏状态并按需触发校验 */\n fieldKeys.forEach((key) => {\n watch(\n () => valueRecord[key], /* 监听字段值 */\n (newValue) => {\n const field = fields[key]\n if (field) {\n /* 比较当前值与初始值,判断是否为脏值 */\n field.dirty = !deepEqual(newValue, initialValueRecord[key])\n }\n\n /* 如果校验时机为 'change' 且字段已被触碰,则触发校验 */\n if (validateOn === 'change' && field?.touched) {\n void validateField(key)\n }\n },\n { deep: true }, /* 深度监听,支持嵌套对象变化 */\n )\n })\n\n /* ── 操作方法 ── */\n\n /**\n * 设置指定字段的值\n * @param field - 字段名\n * @param value - 新值\n */\n function setFieldValue<K extends keyof T>(field: K, value: T[K]): void {\n valueRecord[field as string] = value\n }\n\n /**\n * 标记字段为已触碰状态\n * 如果校验时机为 'blur',同时触发该字段的校验\n * @param field - 字段名\n */\n function setFieldTouched(field: keyof T): void {\n const fieldState = fields[field as string]\n if (fieldState) {\n fieldState.touched = true\n }\n\n /* blur 时自动触发校验 */\n if (validateOn === 'blur') {\n void validateField(field)\n }\n }\n\n /**\n * 校验单个字段\n * 按顺序执行:必填校验 → 自定义规则校验\n * @param field - 字段名\n * @returns 错误信息或 null(无错误)\n */\n async function validateField(field: keyof T): Promise<string | null> {\n const fieldKey = field as string\n const fieldState = fields[fieldKey]\n\n /* 字段状态不存在则跳过 */\n if (!fieldState) {\n return null\n }\n\n /* 获取该字段的校验规则 */\n const fieldRules = validationRules[field]\n /* 无规则则清除错误并返回 */\n if (!fieldRules) {\n fieldState.error = null\n return null\n }\n\n /* 标记开始校验 */\n fieldState.validating = true\n\n try {\n const value = values[field]\n\n /* 第一步:必填校验 */\n if (fieldRules.required) {\n const isEmpty = value === '' || value === null || value === undefined\n if (isEmpty) {\n /* 支持自定义必填提示信息 */\n const message = typeof fieldRules.required === 'string'\n ? fieldRules.required\n : DEFAULT_REQUIRED_MESSAGE\n fieldState.error = message\n return message\n }\n }\n\n /* 第二步:自定义规则校验(按顺序执行,遇到第一个错误即停止) */\n if (fieldRules.rules) {\n for (const rule of fieldRules.rules) {\n const error = await rule(\n value as T[keyof T],\n valueRecord, /* 传入所有表单值,支持跨字段校验 */\n )\n\n if (error) {\n fieldState.error = error\n return error\n }\n }\n }\n\n /* 所有校验通过,清除错误 */\n fieldState.error = null\n return null\n }\n finally {\n /* 无论成功失败,标记校验结束 */\n fieldState.validating = false\n }\n }\n\n /**\n * 校验所有字段\n * @returns 是否所有字段都校验通过\n */\n async function validateAll(): Promise<boolean> {\n const results = await Promise.all(fieldKeys.map(key => validateField(key)))\n return results.every(result => result === null)\n }\n\n /**\n * 提交流程\n * 1. 递增提交计数\n * 2. 标记所有字段为已触碰\n * 3. 执行全量校验\n * 4. 校验通过且有 onSubmit 回调时,调用提交\n */\n async function handleSubmit(): Promise<void> {\n submitCount.value++\n submitError.value = null\n\n /* 标记所有字段为已触碰 */\n fieldKeys.forEach((key) => {\n const field = fields[key]\n if (field) {\n field.touched = true\n }\n })\n\n /* 执行全量校验 */\n const valid = await validateAll()\n /* 校验未通过或没有提交回调则退出 */\n if (!valid || !onSubmit) {\n return\n }\n\n /* 开始提交 */\n isSubmitting.value = true\n try {\n /* 深拷贝 values 后传给 onSubmit,避免外部修改响应式数据 */\n await onSubmit(deepClone(values) as T)\n }\n catch (error) {\n /* 捕获提交异常,保存错误信息 */\n submitError.value = error instanceof Error ? error.message : String(error)\n }\n finally {\n /* 无论成功失败,标记提交结束 */\n isSubmitting.value = false\n }\n }\n\n /**\n * 重置整个表单\n * 可选传入新的初始值(部分更新)\n * @param newInitialValues - 新的初始值(可选,会与现有初始值合并)\n */\n function reset(newInitialValues?: Partial<T>): void {\n /* 如果传入了新初始值,合并到存储的初始值中 */\n if (newInitialValues) {\n Object.assign(initialValueRecord, deepClone(newInitialValues))\n }\n\n /* 恢复每个字段的值和状态 */\n fieldKeys.forEach((key) => {\n /* 恢复为初始值的深拷贝 */\n valueRecord[key] = deepClone(initialValueRecord[key])\n\n /* 重置字段状态 */\n const field = fields[key]\n if (field) {\n field.touched = false /* 清除触碰状态 */\n field.dirty = false /* 清除脏值标记 */\n field.error = null /* 清除校验错误 */\n field.validating = false /* 清除校验中标记 */\n }\n })\n\n /* 清除提交错误 */\n submitError.value = null\n }\n\n /**\n * 重置单个字段\n * @param field - 要重置的字段名\n */\n function resetField(field: keyof T): void {\n const fieldKey = field as string\n /* 恢复字段值为初始值的深拷贝 */\n valueRecord[fieldKey] = deepClone(initialValueRecord[fieldKey])\n\n /* 重置字段状态 */\n const fieldState = fields[fieldKey]\n if (fieldState) {\n fieldState.touched = false\n fieldState.dirty = false\n fieldState.error = null\n fieldState.validating = false\n }\n }\n\n /* ── 返回所有状态和方法 ── */\n return {\n values, /* 表单当前值(响应式) */\n fields, /* 字段状态映射(响应式) */\n isDirty, /* 是否有脏值 */\n isValid, /* 是否全部有效 */\n isSubmitting, /* 是否正在提交 */\n submitError, /* 提交错误信息 */\n submitCount, /* 提交次数 */\n setFieldValue, /* 设置字段值 */\n setFieldTouched, /* 标记字段已触碰 */\n validateField, /* 校验单个字段 */\n validateAll, /* 校验所有字段 */\n handleSubmit, /* 提交表单 */\n reset, /* 重置表单 */\n resetField, /* 重置单个字段 */\n errors, /* 错误信息映射 */\n }\n}\n\n/* ============================================================\n * 预置校验器工厂函数\n * 提供常用的表单校验规则创建函数\n * ============================================================ */\n\n/**\n * 创建必填校验器\n * @param message - 自定义错误提示,默认为 '此字段为必填项'\n * @returns 校验器函数\n */\nexport function required(message = DEFAULT_REQUIRED_MESSAGE): FormValidator {\n return (value) => {\n /* 空字符串、null、undefined 均视为\"空\" */\n if (value === '' || value === null || value === undefined) {\n return message\n }\n\n return null /* 通过校验 */\n }\n}\n\n/**\n * 创建最小长度校验器\n * @param min - 最小字符数\n * @param message - 自定义错误提示\n * @returns 字符串校验器函数\n */\nexport function minLength(min: number, message?: string): FormValidator<string> {\n return (value) => {\n if (typeof value === 'string' && value.length < min) {\n return message ?? `至少需要 ${min} 个字符`\n }\n\n return null\n }\n}\n\n/**\n * 创建最大长度校验器\n * @param max - 最大字符数\n * @param message - 自定义错误提示\n * @returns 字符串校验器函数\n */\nexport function maxLength(max: number, message?: string): FormValidator<string> {\n return (value) => {\n if (typeof value === 'string' && value.length > max) {\n return message ?? `不能超过 ${max} 个字符`\n }\n\n return null\n }\n}\n\n/**\n * 创建正则匹配校验器\n * @param regex - 正则表达式\n * @param message - 自定义错误提示,默认为 '格式不正确'\n * @returns 字符串校验器函数\n */\nexport function pattern(\n regex: RegExp,\n message = DEFAULT_PATTERN_MESSAGE,\n): FormValidator<string> {\n return (value) => {\n if (typeof value === 'string' && !regex.test(value)) {\n return message\n }\n\n return null\n }\n}\n\n/**\n * 创建邮箱格式校验器\n * 基于内置的 EMAIL_PATTERN 正则\n * @param message - 自定义错误提示,默认为 '邮箱格式不正确'\n * @returns 字符串校验器函数\n */\nexport function email(message = DEFAULT_EMAIL_MESSAGE): FormValidator<string> {\n return pattern(EMAIL_PATTERN, message)\n}\n\n/**\n * 创建数值范围校验器\n * @param min - 最小值\n * @param max - 最大值\n * @param message - 自定义错误提示\n * @returns 数字校验器函数\n */\nexport function numberRange(\n min: number,\n max: number,\n message?: string,\n): FormValidator<number> {\n return (value) => {\n if (typeof value === 'number' && (value < min || value > max)) {\n return message ?? `必须在 ${min} 到 ${max} 之间`\n }\n\n return null\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useFormStore.js","names":[],"sources":["../../src/composables/useFormStore.ts"],"sourcesContent":["/* ============================================================\r\n * useFormStore.ts\r\n * 表单状态管理 Composable\r\n * 提供表单值、字段状态、校验、提交、重置等完整表单生命周期管理\r\n * ============================================================ */\r\n\r\n/* 从 Vue 导入类型,用于声明响应式引用 */\r\nimport type { ComputedRef, Ref } from 'vue'\r\n/* 从 store-core 工具库导入深拷贝和深比较函数 */\r\nimport { deepClone, deepEqual } from '@composy/store-core'\r\n/* 从 Vue 导入响应式 API */\r\nimport { computed, reactive, ref, watch } from 'vue'\r\n\r\n/* ── 默认校验提示信息 ── */\r\n/* 必填项校验失败时的默认提示 */\r\nconst DEFAULT_REQUIRED_MESSAGE = '此字段为必填项'\r\n/* 正则匹配校验失败时的默认提示 */\r\nconst DEFAULT_PATTERN_MESSAGE = '格式不正确'\r\n/* 邮箱格式校验失败时的默认提示 */\r\nconst DEFAULT_EMAIL_MESSAGE = '邮箱格式不正确'\r\n/* 邮箱格式正则表达式 */\r\nconst EMAIL_PATTERN = /^[^\\s@]+@[^@][^.@]*\\.[^\\s@]+$/\r\n\r\n/* ── 类型定义 ── */\r\n\r\n/* 从泛型 T 中提取 string 类型的键名,用作字段标识 */\r\ntype FieldKey<T> = Extract<keyof T, string>\r\n\r\n/**\r\n * 表单校验器函数类型\r\n * @param value - 当前字段值\r\n * @param allValues - 表单所有字段的值(用于跨字段校验)\r\n * @returns 校验错误信息或 null(无错误),支持异步校验\r\n */\r\nexport type FormValidator<T = unknown> = (\r\n value: T,\r\n allValues: Record<string, unknown>\r\n) => string | null | Promise<string | null>\r\n\r\n/**\r\n * 字段校验规则接口\r\n * @property required - 是否必填,可传 string 自定义提示\r\n * @property rules - 自定义校验器数组,按顺序依次执行\r\n */\r\nexport interface FormFieldRules<T = unknown> {\r\n required?: boolean | string\r\n rules?: FormValidator<T>[]\r\n}\r\n\r\n/**\r\n * useFormStore 的配置选项接口\r\n * @property initialValues - 表单初始值(必须提供完整对象)\r\n * @property validationRules - 各字段的校验规则映射\r\n * @property onSubmit - 表单提交回调(校验通过后调用)\r\n * @property validateOn - 触发校验的时机:'blur' | 'change' | 'submit'\r\n */\r\nexport interface UseFormStoreOptions<T extends Record<string, unknown>> {\r\n initialValues: T\r\n validationRules?: {\r\n [K in keyof T]?: FormFieldRules<T[K]>\r\n }\r\n onSubmit?: (values: T) => void | Promise<void>\r\n validateOn?: 'blur' | 'change' | 'submit'\r\n}\r\n\r\n/**\r\n * 单个字段的状态接口\r\n * @property touched - 字段是否被触碰过(获得过焦点或提交过)\r\n * @property dirty - 字段值是否与初始值不同(被修改过)\r\n * @property error - 当前校验错误信息,null 表示无错误\r\n * @property validating - 字段是否正在异步校验中\r\n */\r\nexport interface FormFieldState {\r\n touched: boolean\r\n dirty: boolean\r\n error: string | null\r\n validating: boolean\r\n}\r\n\r\n/**\r\n * useFormStore 返回值接口\r\n * @property values - 表单当前值(reactive 对象)\r\n * @property fields - 各字段的状态映射\r\n * @property isDirty - 是否有任意字段被修改过(计算属性)\r\n * @property isValid - 是否所有字段都无校验错误(计算属性)\r\n * @property isSubmitting - 表单是否正在提交中\r\n * @property submitError - 提交失败的错误信息\r\n * @property submitCount - 累计提交次数\r\n * @property setFieldValue - 设置指定字段的值\r\n * @property setFieldTouched - 标记字段为已触碰\r\n * @property validateField - 校验单个字段(异步)\r\n * @property validateAll - 校验所有字段(异步)\r\n * @property handleSubmit - 提交表单\r\n * @property reset - 重置整个表单(可传新的初始值)\r\n * @property resetField - 重置单个字段\r\n * @property errors - 所有字段错误信息的计算属性\r\n */\r\nexport interface UseFormStoreReturn<T extends Record<string, unknown>> {\r\n values: T\r\n fields: Record<string, FormFieldState>\r\n isDirty: ComputedRef<boolean>\r\n isValid: ComputedRef<boolean>\r\n isSubmitting: Ref<boolean>\r\n submitError: Ref<string | null>\r\n submitCount: Ref<number>\r\n setFieldValue: <K extends keyof T>(field: K, value: T[K]) => void\r\n setFieldTouched: (field: keyof T) => void\r\n validateField: (field: keyof T) => Promise<string | null>\r\n validateAll: () => Promise<boolean>\r\n handleSubmit: () => Promise<void>\r\n reset: (newInitialValues?: Partial<T>) => void\r\n resetField: (field: keyof T) => void\r\n errors: ComputedRef<Record<string, string | null>>\r\n}\r\n\r\n/**\r\n * 表单状态管理 Composable\r\n * 提供完整的表单生命周期管理能力,包括值管理、字段状态追踪、校验、提交和重置\r\n *\r\n * @param options - 表单配置选项\r\n * @returns 包含表单状态和操作方法的对象\r\n */\r\nexport function useFormStore<T extends Record<string, unknown>>(\r\n options: UseFormStoreOptions<T>\r\n): UseFormStoreReturn<T> {\r\n /* 解构配置选项,设置默认值 */\r\n const {\r\n initialValues /* 表单初始值 */,\r\n validationRules = {} as NonNullable<\r\n UseFormStoreOptions<T>['validationRules']\r\n > /* 校验规则,默认空对象 */,\r\n onSubmit /* 提交回调 */,\r\n validateOn = 'blur' /* 校验时机,默认 blur 时触发 */,\r\n } = options\r\n\r\n /* 深拷贝初始值并保存,用于后续重置和脏值比较 */\r\n const storedInitialValues = deepClone(initialValues) as T\r\n /* 创建响应式表单值对象(从初始值的深拷贝开始) */\r\n const values = reactive(deepClone(storedInitialValues)) as T\r\n /* 将 values 转为通用 Record 类型,便于动态属性访问 */\r\n const valueRecord = values as Record<string, unknown>\r\n /* 将初始值也转为 Record 类型,用于脏值比较 */\r\n const initialValueRecord = storedInitialValues as Record<string, unknown>\r\n /* 获取所有字段名列表 */\r\n const fieldKeys = Object.keys(storedInitialValues) as Array<FieldKey<T>>\r\n\r\n /* 创建每个字段的响应式状态对象(touched/dirty/error/validating) */\r\n const fields = reactive(\r\n fieldKeys.reduce<Record<string, FormFieldState>>((acc, key) => {\r\n acc[key] = {\r\n touched: false /* 字段未被触碰 */,\r\n dirty: false /* 字段值未被修改 */,\r\n error: null /* 无校验错误 */,\r\n validating: false /* 未在校验中 */,\r\n }\r\n return acc\r\n }, {})\r\n )\r\n\r\n /* ── 全局状态 ── */\r\n /* 是否正在提交中 */\r\n const isSubmitting = ref(false)\r\n /* 提交错误信息 */\r\n const submitError = ref<string | null>(null)\r\n /* 累计提交次数 */\r\n const submitCount = ref(0)\r\n\r\n /* ── 计算属性 ── */\r\n /* 是否有任意字段被修改过 */\r\n const isDirty = computed(() => fieldKeys.some(key => fields[key]?.dirty))\r\n /* 是否所有字段都无错误 */\r\n const isValid = computed(() => fieldKeys.every(key => !fields[key]?.error))\r\n\r\n /* 所有字段错误信息的映射 */\r\n const errors = computed(() => {\r\n return fieldKeys.reduce<Record<string, string | null>>((acc, key) => {\r\n acc[key] = fields[key]?.error ?? null\r\n return acc\r\n }, {})\r\n })\r\n\r\n /* ── 值变化监听 ── */\r\n /* 为每个字段创建 watch,当值变化时更新脏状态并按需触发校验 */\r\n fieldKeys.forEach(key => {\r\n watch(\r\n () => valueRecord[key] /* 监听字段值 */,\r\n newValue => {\r\n const field = fields[key]\r\n if (field) {\r\n /* 比较当前值与初始值,判断是否为脏值 */\r\n field.dirty = !deepEqual(newValue, initialValueRecord[key])\r\n }\r\n\r\n /* 如果校验时机为 'change' 且字段已被触碰,则触发校验 */\r\n if (validateOn === 'change' && field?.touched) {\r\n void validateField(key)\r\n }\r\n },\r\n { deep: true } /* 深度监听,支持嵌套对象变化 */\r\n )\r\n })\r\n\r\n /* ── 操作方法 ── */\r\n\r\n /**\r\n * 设置指定字段的值\r\n * @param field - 字段名\r\n * @param value - 新值\r\n */\r\n function setFieldValue<K extends keyof T>(field: K, value: T[K]): void {\r\n valueRecord[field as string] = value\r\n }\r\n\r\n /**\r\n * 标记字段为已触碰状态\r\n * 如果校验时机为 'blur',同时触发该字段的校验\r\n * @param field - 字段名\r\n */\r\n function setFieldTouched(field: keyof T): void {\r\n const fieldState = fields[field as string]\r\n if (fieldState) {\r\n fieldState.touched = true\r\n }\r\n\r\n /* blur 时自动触发校验 */\r\n if (validateOn === 'blur') {\r\n void validateField(field)\r\n }\r\n }\r\n\r\n /**\r\n * 校验单个字段\r\n * 按顺序执行:必填校验 → 自定义规则校验\r\n * @param field - 字段名\r\n * @returns 错误信息或 null(无错误)\r\n */\r\n async function validateField(field: keyof T): Promise<string | null> {\r\n const fieldKey = field as string\r\n const fieldState = fields[fieldKey]\r\n\r\n /* 字段状态不存在则跳过 */\r\n if (!fieldState) {\r\n return null\r\n }\r\n\r\n /* 获取该字段的校验规则 */\r\n const fieldRules = validationRules[field]\r\n /* 无规则则清除错误并返回 */\r\n if (!fieldRules) {\r\n fieldState.error = null\r\n return null\r\n }\r\n\r\n /* 标记开始校验 */\r\n fieldState.validating = true\r\n\r\n try {\r\n const value = values[field]\r\n\r\n /* 第一步:必填校验 */\r\n if (fieldRules.required) {\r\n const isEmpty = value === '' || value === null || value === undefined\r\n if (isEmpty) {\r\n /* 支持自定义必填提示信息 */\r\n const message =\r\n typeof fieldRules.required === 'string'\r\n ? fieldRules.required\r\n : DEFAULT_REQUIRED_MESSAGE\r\n fieldState.error = message\r\n return message\r\n }\r\n }\r\n\r\n /* 第二步:自定义规则校验(按顺序执行,遇到第一个错误即停止) */\r\n if (fieldRules.rules) {\r\n for (const rule of fieldRules.rules) {\r\n const error = await rule(\r\n value as T[keyof T],\r\n valueRecord /* 传入所有表单值,支持跨字段校验 */\r\n )\r\n\r\n if (error) {\r\n fieldState.error = error\r\n return error\r\n }\r\n }\r\n }\r\n\r\n /* 所有校验通过,清除错误 */\r\n fieldState.error = null\r\n return null\r\n } finally {\r\n /* 无论成功失败,标记校验结束 */\r\n fieldState.validating = false\r\n }\r\n }\r\n\r\n /**\r\n * 校验所有字段\r\n * @returns 是否所有字段都校验通过\r\n */\r\n async function validateAll(): Promise<boolean> {\r\n const results = await Promise.all(fieldKeys.map(key => validateField(key)))\r\n return results.every(result => result === null)\r\n }\r\n\r\n /**\r\n * 提交流程\r\n * 1. 递增提交计数\r\n * 2. 标记所有字段为已触碰\r\n * 3. 执行全量校验\r\n * 4. 校验通过且有 onSubmit 回调时,调用提交\r\n */\r\n async function handleSubmit(): Promise<void> {\r\n submitCount.value++\r\n submitError.value = null\r\n\r\n /* 标记所有字段为已触碰 */\r\n fieldKeys.forEach(key => {\r\n const field = fields[key]\r\n if (field) {\r\n field.touched = true\r\n }\r\n })\r\n\r\n /* 执行全量校验 */\r\n const valid = await validateAll()\r\n /* 校验未通过或没有提交回调则退出 */\r\n if (!valid || !onSubmit) {\r\n return\r\n }\r\n\r\n /* 开始提交 */\r\n isSubmitting.value = true\r\n try {\r\n /* 深拷贝 values 后传给 onSubmit,避免外部修改响应式数据 */\r\n await onSubmit(deepClone(values) as T)\r\n } catch (error) {\r\n /* 捕获提交异常,保存错误信息 */\r\n submitError.value = error instanceof Error ? error.message : String(error)\r\n } finally {\r\n /* 无论成功失败,标记提交结束 */\r\n isSubmitting.value = false\r\n }\r\n }\r\n\r\n /**\r\n * 重置整个表单\r\n * 可选传入新的初始值(部分更新)\r\n * @param newInitialValues - 新的初始值(可选,会与现有初始值合并)\r\n */\r\n function reset(newInitialValues?: Partial<T>): void {\r\n /* 如果传入了新初始值,合并到存储的初始值中 */\r\n if (newInitialValues) {\r\n Object.assign(initialValueRecord, deepClone(newInitialValues))\r\n }\r\n\r\n /* 恢复每个字段的值和状态 */\r\n fieldKeys.forEach(key => {\r\n /* 恢复为初始值的深拷贝 */\r\n valueRecord[key] = deepClone(initialValueRecord[key])\r\n\r\n /* 重置字段状态 */\r\n const field = fields[key]\r\n if (field) {\r\n field.touched = false /* 清除触碰状态 */\r\n field.dirty = false /* 清除脏值标记 */\r\n field.error = null /* 清除校验错误 */\r\n field.validating = false /* 清除校验中标记 */\r\n }\r\n })\r\n\r\n /* 清除提交错误 */\r\n submitError.value = null\r\n }\r\n\r\n /**\r\n * 重置单个字段\r\n * @param field - 要重置的字段名\r\n */\r\n function resetField(field: keyof T): void {\r\n const fieldKey = field as string\r\n /* 恢复字段值为初始值的深拷贝 */\r\n valueRecord[fieldKey] = deepClone(initialValueRecord[fieldKey])\r\n\r\n /* 重置字段状态 */\r\n const fieldState = fields[fieldKey]\r\n if (fieldState) {\r\n fieldState.touched = false\r\n fieldState.dirty = false\r\n fieldState.error = null\r\n fieldState.validating = false\r\n }\r\n }\r\n\r\n /* ── 返回所有状态和方法 ── */\r\n return {\r\n values /* 表单当前值(响应式) */,\r\n fields /* 字段状态映射(响应式) */,\r\n isDirty /* 是否有脏值 */,\r\n isValid /* 是否全部有效 */,\r\n isSubmitting /* 是否正在提交 */,\r\n submitError /* 提交错误信息 */,\r\n submitCount /* 提交次数 */,\r\n setFieldValue /* 设置字段值 */,\r\n setFieldTouched /* 标记字段已触碰 */,\r\n validateField /* 校验单个字段 */,\r\n validateAll /* 校验所有字段 */,\r\n handleSubmit /* 提交表单 */,\r\n reset /* 重置表单 */,\r\n resetField /* 重置单个字段 */,\r\n errors /* 错误信息映射 */,\r\n }\r\n}\r\n\r\n/* ============================================================\r\n * 预置校验器工厂函数\r\n * 提供常用的表单校验规则创建函数\r\n * ============================================================ */\r\n\r\n/**\r\n * 创建必填校验器\r\n * @param message - 自定义错误提示,默认为 '此字段为必填项'\r\n * @returns 校验器函数\r\n */\r\nexport function required(message = DEFAULT_REQUIRED_MESSAGE): FormValidator {\r\n return value => {\r\n /* 空字符串、null、undefined 均视为\"空\" */\r\n if (value === '' || value === null || value === undefined) {\r\n return message\r\n }\r\n\r\n return null /* 通过校验 */\r\n }\r\n}\r\n\r\n/**\r\n * 创建最小长度校验器\r\n * @param min - 最小字符数\r\n * @param message - 自定义错误提示\r\n * @returns 字符串校验器函数\r\n */\r\nexport function minLength(\r\n min: number,\r\n message?: string\r\n): FormValidator<string> {\r\n return value => {\r\n if (typeof value === 'string' && value.length < min) {\r\n return message ?? `至少需要 ${min} 个字符`\r\n }\r\n\r\n return null\r\n }\r\n}\r\n\r\n/**\r\n * 创建最大长度校验器\r\n * @param max - 最大字符数\r\n * @param message - 自定义错误提示\r\n * @returns 字符串校验器函数\r\n */\r\nexport function maxLength(\r\n max: number,\r\n message?: string\r\n): FormValidator<string> {\r\n return value => {\r\n if (typeof value === 'string' && value.length > max) {\r\n return message ?? `不能超过 ${max} 个字符`\r\n }\r\n\r\n return null\r\n }\r\n}\r\n\r\n/**\r\n * 创建正则匹配校验器\r\n * @param regex - 正则表达式\r\n * @param message - 自定义错误提示,默认为 '格式不正确'\r\n * @returns 字符串校验器函数\r\n */\r\nexport function pattern(\r\n regex: RegExp,\r\n message = DEFAULT_PATTERN_MESSAGE\r\n): FormValidator<string> {\r\n return value => {\r\n if (typeof value === 'string' && !regex.test(value)) {\r\n return message\r\n }\r\n\r\n return null\r\n }\r\n}\r\n\r\n/**\r\n * 创建邮箱格式校验器\r\n * 基于内置的 EMAIL_PATTERN 正则\r\n * @param message - 自定义错误提示,默认为 '邮箱格式不正确'\r\n * @returns 字符串校验器函数\r\n */\r\nexport function email(message = DEFAULT_EMAIL_MESSAGE): FormValidator<string> {\r\n return pattern(EMAIL_PATTERN, message)\r\n}\r\n\r\n/**\r\n * 创建数值范围校验器\r\n * @param min - 最小值\r\n * @param max - 最大值\r\n * @param message - 自定义错误提示\r\n * @returns 数字校验器函数\r\n */\r\nexport function numberRange(\r\n min: number,\r\n max: number,\r\n message?: string\r\n): FormValidator<number> {\r\n return value => {\r\n if (typeof value === 'number' && (value < min || value > max)) {\r\n return message ?? `必须在 ${min} 到 ${max} 之间`\r\n }\r\n\r\n return null\r\n }\r\n}\r\n"],"mappings":"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"}
|
|
@@ -1,67 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useOptimistic - 乐观更新 Hook
|
|
3
|
-
*
|
|
4
|
-
* 提供乐观更新模式:先立即更新 UI,再异步确认,失败时自动回滚
|
|
5
|
-
* @module composables/useOptimistic
|
|
6
|
-
*/
|
|
1
|
+
/** Optimistic state helper with an operation log for overlapping mutations. */
|
|
7
2
|
import type { Ref } from 'vue';
|
|
8
|
-
/**
|
|
9
|
-
* 乐观更新操作记录
|
|
10
|
-
*/
|
|
11
3
|
export interface OptimisticEntry<T> {
|
|
12
|
-
/** 操作 ID */
|
|
13
4
|
id: string;
|
|
14
|
-
/** 提交前的快照 */
|
|
15
5
|
snapshot: T;
|
|
16
|
-
/** 操作状态 */
|
|
17
6
|
status: 'pending' | 'confirmed' | 'rolled-back';
|
|
18
|
-
/** 时间戳 */
|
|
19
7
|
timestamp: number;
|
|
20
8
|
}
|
|
21
|
-
/**
|
|
22
|
-
* useOptimistic 返回值
|
|
23
|
-
*/
|
|
24
9
|
export interface UseOptimisticReturn<T> {
|
|
25
|
-
/** 响应式状态 */
|
|
26
10
|
state: Ref<T>;
|
|
27
|
-
/** 是否有挂起的操作 */
|
|
28
11
|
isPending: Ref<boolean>;
|
|
29
|
-
/** 挂起的操作记录 */
|
|
30
12
|
pending: Ref<OptimisticEntry<T>[]>;
|
|
31
|
-
/** 最近一次操作是否已回滚 */
|
|
32
13
|
isRolledBack: Ref<boolean>;
|
|
33
|
-
/** 执行乐观更新: 先 apply 新值,然后 confirm 异步确认 */
|
|
34
14
|
mutate: (optimisticValue: T | ((prev: T) => T), confirm: () => Promise<void>) => Promise<void>;
|
|
35
15
|
}
|
|
36
|
-
/**
|
|
37
|
-
* 乐观更新 Hook
|
|
38
|
-
*
|
|
39
|
-
* 先立即更新 UI(乐观),再执行异步确认操作。
|
|
40
|
-
* 若确认失败则自动回滚到更新前的状态。
|
|
41
|
-
*
|
|
42
|
-
* @template T - 状态类型
|
|
43
|
-
* @param initialState - 初始状态
|
|
44
|
-
* @returns 乐观更新 API
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* ```typescript
|
|
48
|
-
* const { state, isPending, isRolledBack, mutate } = useOptimistic({
|
|
49
|
-
* items: ['Apple', 'Banana'],
|
|
50
|
-
* })
|
|
51
|
-
*
|
|
52
|
-
* // 乐观添加
|
|
53
|
-
* await mutate(
|
|
54
|
-
* (prev) => ({ ...prev, items: [...prev.items, 'Cherry'] }),
|
|
55
|
-
* async () => {
|
|
56
|
-
* await fetch('/api/items', {
|
|
57
|
-
* method: 'POST',
|
|
58
|
-
* body: JSON.stringify({ name: 'Cherry' }),
|
|
59
|
-
* })
|
|
60
|
-
* }
|
|
61
|
-
* )
|
|
62
|
-
* // 成功: state 保持新值
|
|
63
|
-
* // 失败: state 自动回滚到添加之前
|
|
64
|
-
* ```
|
|
65
|
-
*/
|
|
66
16
|
export declare function useOptimistic<T>(initialState: T): UseOptimisticReturn<T>;
|
|
67
|
-
//# sourceMappingURL=useOptimistic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOptimistic.d.ts","sourceRoot":"","sources":["../../src/composables/useOptimistic.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"useOptimistic.d.ts","sourceRoot":"","sources":["../../src/composables/useOptimistic.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAI9B,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,CAAC,CAAA;IACX,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,CAAA;IAC/C,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IACb,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAClC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IAC1B,MAAM,EAAE,CACN,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EACrC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACzB,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB;AAUD,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CA4ExE"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* ***********************************
|
|
3
3
|
* @composy/store-vue v0.0.1 *
|
|
4
4
|
* Built with rollup *
|
|
5
|
-
* Build time: 2024-
|
|
5
|
+
* Build time: 2024-10-12 17:40:04 *
|
|
6
6
|
* Build mode: production *
|
|
7
7
|
* Minified: No *
|
|
8
8
|
* ***********************************
|
|
@@ -15,39 +15,54 @@ function uid() {
|
|
|
15
15
|
}
|
|
16
16
|
function useOptimistic(initialState) {
|
|
17
17
|
const state = ref(deepClone(initialState));
|
|
18
|
+
let committedState = deepClone(initialState);
|
|
19
|
+
const operations = [];
|
|
18
20
|
const isPending = ref(false);
|
|
19
21
|
const isRolledBack = ref(false);
|
|
20
22
|
const pending = ref([]);
|
|
23
|
+
const refresh = () => {
|
|
24
|
+
let nextState = deepClone(committedState);
|
|
25
|
+
operations.forEach((operation) => {
|
|
26
|
+
if (operation.status !== "rolled-back") nextState = operation.apply(nextState);
|
|
27
|
+
});
|
|
28
|
+
state.value = deepClone(nextState);
|
|
29
|
+
pending.value = operations.filter((operation) => operation.status === "pending").map((operation) => ({
|
|
30
|
+
id: operation.id,
|
|
31
|
+
snapshot: deepClone(operation.snapshot),
|
|
32
|
+
status: operation.status,
|
|
33
|
+
timestamp: operation.timestamp
|
|
34
|
+
}));
|
|
35
|
+
isPending.value = pending.value.length > 0;
|
|
36
|
+
};
|
|
37
|
+
const reconcile = () => {
|
|
38
|
+
while (operations[0] && operations[0].status !== "pending") {
|
|
39
|
+
const operation = operations.shift();
|
|
40
|
+
if (!operation || operation.status === "rolled-back") continue;
|
|
41
|
+
committedState = operation.apply(deepClone(committedState));
|
|
42
|
+
}
|
|
43
|
+
refresh();
|
|
44
|
+
};
|
|
21
45
|
async function mutate(optimisticValue, confirm) {
|
|
22
46
|
const snapshot = deepClone(state.value);
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
id:
|
|
47
|
+
const apply = typeof optimisticValue === "function" ? (previous) => deepClone(optimisticValue(deepClone(previous))) : () => deepClone(optimisticValue);
|
|
48
|
+
const operation = {
|
|
49
|
+
id: uid(),
|
|
26
50
|
snapshot,
|
|
27
51
|
status: "pending",
|
|
28
|
-
timestamp: Date.now()
|
|
52
|
+
timestamp: Date.now(),
|
|
53
|
+
apply
|
|
29
54
|
};
|
|
30
|
-
|
|
31
|
-
isPending.value = true;
|
|
55
|
+
operations.push(operation);
|
|
32
56
|
isRolledBack.value = false;
|
|
33
|
-
|
|
34
|
-
else state.value = optimisticValue;
|
|
57
|
+
refresh();
|
|
35
58
|
try {
|
|
36
59
|
await confirm();
|
|
37
|
-
|
|
38
|
-
...e,
|
|
39
|
-
status: "confirmed"
|
|
40
|
-
} : e);
|
|
60
|
+
operation.status = "confirmed";
|
|
41
61
|
} catch {
|
|
42
|
-
|
|
62
|
+
operation.status = "rolled-back";
|
|
43
63
|
isRolledBack.value = true;
|
|
44
|
-
pending.value = pending.value.map((e) => e.id === entryId ? {
|
|
45
|
-
...e,
|
|
46
|
-
status: "rolled-back"
|
|
47
|
-
} : e);
|
|
48
64
|
} finally {
|
|
49
|
-
|
|
50
|
-
isPending.value = pending.value.length > 0;
|
|
65
|
+
reconcile();
|
|
51
66
|
}
|
|
52
67
|
}
|
|
53
68
|
return {
|