]> git.ipfire.org Git - thirdparty/vuejs/pinia.git/commitdiff
test: add missing file
authorEduardo San Martin Morote <posva13@gmail.com>
Fri, 19 Mar 2021 14:31:19 +0000 (15:31 +0100)
committerEduardo San Martin Morote <posva@users.noreply.github.com>
Fri, 9 Apr 2021 11:08:56 +0000 (13:08 +0200)
src/mapHelpers.ts [new file with mode: 0644]

diff --git a/src/mapHelpers.ts b/src/mapHelpers.ts
new file mode 100644 (file)
index 0000000..6eff181
--- /dev/null
@@ -0,0 +1,28 @@
+import { GenericStoreDefinition, Store, StoreDefinition } from './types'
+
+type StoreObject<S> = S extends StoreDefinition<
+  infer Ids,
+  infer State,
+  infer Getters,
+  infer Actions
+>
+  ? {
+      [Id in Ids]: () => Store<Ids, State, Getters, Actions>
+    }
+  : {}
+
+type Spread<A extends readonly any[]> = A extends [infer L, ...infer R]
+  ? StoreObject<L> & Spread<R>
+  : unknown
+
+export function mapStores<Stores extends unknown[]>(
+  ...stores: [...Stores]
+): Spread<Stores> {
+  return stores.reduce((reduced, useStore) => {
+    // @ts-ignore
+    reduced[useStore.$id] = function () {
+      return (useStore as GenericStoreDefinition)((this as any).$pinia)
+    }
+    return reduced
+  }, {} as Spread<Stores>)
+}