From: Eduardo San Martin Morote Date: Fri, 3 Sep 2021 10:55:56 +0000 (+0200) Subject: feat: support TS 4.4 (#656) X-Git-Tag: @pinia/nuxt@0.0.2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=39b2e15c0a2782280bd0de44230d2f3dc624b3c6;p=thirdparty%2Fvuejs%2Fpinia.git feat: support TS 4.4 (#656) --- diff --git a/packages/pinia/__tests__/storeSetup.spec.ts b/packages/pinia/__tests__/storeSetup.spec.ts index 14d0eda7..e42288e9 100644 --- a/packages/pinia/__tests__/storeSetup.spec.ts +++ b/packages/pinia/__tests__/storeSetup.spec.ts @@ -1,10 +1,10 @@ import { createPinia, defineStore, setActivePinia } from '../src' import { computed, nextTick, ref, watch } from 'vue' -function expectType(value: T): void {} +function expectType(_value: T): void {} describe('store with setup syntax', () => { - const useStore = defineStore('main', () => { + function mainFn() { const name = ref('Eduardo') const counter = ref(0) function increment(amount = 1) { @@ -13,7 +13,9 @@ describe('store with setup syntax', () => { const double = computed(() => counter.value * 2) return { name, counter, increment, double } - }) + } + + const useStore = defineStore('main', mainFn) beforeEach(() => { setActivePinia(createPinia()) diff --git a/packages/pinia/src/devtools/actions.ts b/packages/pinia/src/devtools/actions.ts index 443f3cc7..17b58635 100644 --- a/packages/pinia/src/devtools/actions.ts +++ b/packages/pinia/src/devtools/actions.ts @@ -9,14 +9,18 @@ export function checkClipboardAccess() { } } -function checkNotFocusedError(error: Error) { - if (error.message.toLowerCase().includes('document is not focused')) { +function checkNotFocusedError(error: unknown): error is Error { + if ( + error instanceof Error && + error.message.toLowerCase().includes('document is not focused') + ) { toastMessage( 'You need to activate the "Emulate a focused page" setting in the "Rendering" panel of devtools.', 'warn' ) return true } + return false } export async function actionGlobalCopyState(pinia: Pinia) { @@ -83,6 +87,7 @@ function getFileOpener() { if (!file) return resolve(null) return resolve({ text: await file.text(), file }) } + // @ts-ignore: TODO: changed from 4.3 to 4.4 fileInput!.oncancel = () => resolve(null) fileInput!.onerror = reject fileInput!.click() diff --git a/packages/pinia/src/devtools/file-saver.ts b/packages/pinia/src/devtools/file-saver.ts index 7731d725..bc4016f3 100644 --- a/packages/pinia/src/devtools/file-saver.ts +++ b/packages/pinia/src/devtools/file-saver.ts @@ -168,6 +168,7 @@ function msSaveAs(blob: Blob, name: string = 'download', opts?: Options) { }) } } else { + // @ts-ignore: works on windows navigator.msSaveOrOpenBlob(bom(blob, opts), name) } } diff --git a/packages/pinia/src/store.ts b/packages/pinia/src/store.ts index 94c50471..d450d88c 100644 --- a/packages/pinia/src/store.ts +++ b/packages/pinia/src/store.ts @@ -35,7 +35,6 @@ import { StoreOnActionListener, ActionsTree, SubscriptionCallbackMutation, - _UnionToTuple, DefineSetupStoreOptions, DefineStoreOptionsInPlugin, StoreGeneric, diff --git a/packages/pinia/src/types.ts b/packages/pinia/src/types.ts index 0196e28c..04d2b3cf 100644 --- a/packages/pinia/src/types.ts +++ b/packages/pinia/src/types.ts @@ -572,59 +572,31 @@ export type ActionsTree = Record /** * @internal */ -type _SpreadStateFromStore = K extends readonly [ - infer A, - ...infer Rest -] - ? A extends string | number | symbol - ? SS extends Record> - ? _SpreadStateFromStore - : SS extends Record - ? Record> & _SpreadStateFromStore - : never - : {} - : {} - -/** - * @internal - */ -type _SpreadPropertiesFromObject< - SS, - K extends readonly any[], - T -> = K extends readonly [infer A, ...infer Rest] - ? A extends string | number | symbol - ? SS extends Record - ? Record> & _SpreadPropertiesFromObject - : _SpreadPropertiesFromObject - : {} - : {} - -/** - * @internal - */ -export type _ExtractStateFromSetupStore = _SpreadStateFromStore< - SS, - _UnionToTuple -> +export type _ExtractStateFromSetupStore = SS extends undefined | void + ? {} + : { + [K in keyof SS as SS[K] extends _Method | ComputedRef + ? never + : K]: UnwrapRef + } /** * @internal */ -export type _ExtractActionsFromSetupStore = _SpreadPropertiesFromObject< - SS, - _UnionToTuple, - _Method -> +export type _ExtractActionsFromSetupStore = SS extends undefined | void + ? {} + : { + [K in keyof SS as SS[K] extends _Method ? K : never]: SS[K] + } /** * @internal */ -export type _ExtractGettersFromSetupStore = _SpreadPropertiesFromObject< - SS, - _UnionToTuple, - ComputedRef -> +export type _ExtractGettersFromSetupStore = SS extends undefined | void + ? {} + : { + [K in keyof SS as SS[K] extends ComputedRef ? K : never]: UnwrapRef + } /** * Options passed to `defineStore()` that are common between option and setup @@ -725,34 +697,3 @@ export interface DefineStoreOptionsInPlugin< */ id?: Id } - -export type _UnionToTuple = _UnionToTupleRecursively<[], U> - -type _Overwrite = { - [P in keyof T]: P extends keyof S ? S[P] : never -} -type _TupleUnshift = T extends any - ? ((x: X, ...t: T) => void) extends (...t: infer R) => void - ? R - : never - : never -type TuplePush = T extends any - ? _Overwrite<_TupleUnshift, T & { [x: string]: X }> - : never -type _UnionToIntersection = ( - U extends any ? (k: U) => void : never -) extends (k: infer I) => void - ? I - : never -type _UnionToOvlds = _UnionToIntersection< - U extends any ? (f: U) => void : never -> -type _PopUnion = _UnionToOvlds extends (a: infer A) => void ? A : never -/* end helpers */ -/* main work */ -type _UnionToTupleRecursively = { - 1: T - 0: _PopUnion extends infer SELF - ? _UnionToTupleRecursively, Exclude> - : never -}[[U] extends [never] ? 1 : 0] diff --git a/yarn.lock b/yarn.lock index 464c989b..8a376307 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8296,7 +8296,12 @@ typedoc@^0.21.6: shiki "^0.9.8" typedoc-default-themes "^0.12.10" -typescript@^4.3.5, typescript@~4.3.5: +typescript@^4.3.5: + version "4.4.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.2.tgz#6d618640d430e3569a1dfb44f7d7e600ced3ee86" + integrity sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ== + +typescript@~4.3.5: version "4.3.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==