cypress 13.11.0 → 13.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. package/angular/angular/dist/index.d.ts +1 -2
  2. package/angular/angular/dist/index.js +239 -239
  3. package/angular/angular/package.json +1 -1
  4. package/angular/dist/index.d.ts +1 -2
  5. package/angular/dist/index.js +239 -239
  6. package/angular/package.json +1 -1
  7. package/angular-signals/README.md +11 -0
  8. package/angular-signals/angular-signals/README.md +11 -0
  9. package/angular-signals/angular-signals/dist/index.d.ts +136 -0
  10. package/angular-signals/angular-signals/dist/index.js +1861 -0
  11. package/angular-signals/angular-signals/package.json +74 -0
  12. package/angular-signals/dist/index.d.ts +136 -0
  13. package/angular-signals/dist/index.js +1861 -0
  14. package/angular-signals/package.json +74 -0
  15. package/lib/cli.js +0 -1
  16. package/lib/exec/xvfb.js +0 -1
  17. package/lib/logger.js +0 -3
  18. package/mount-utils/dist/index.d.ts +1 -1
  19. package/mount-utils/mount-utils/dist/index.d.ts +1 -1
  20. package/mount-utils/mount-utils/package.json +1 -1
  21. package/mount-utils/package.json +1 -1
  22. package/package.json +11 -5
  23. package/react/dist/cypress-react.cjs.js +237 -237
  24. package/react/dist/cypress-react.esm-bundler.js +237 -237
  25. package/react/dist/index.d.ts +1 -1
  26. package/react/package.json +3 -3
  27. package/react/react/dist/cypress-react.cjs.js +237 -237
  28. package/react/react/dist/cypress-react.esm-bundler.js +237 -237
  29. package/react/react/dist/index.d.ts +1 -1
  30. package/react/react/package.json +3 -3
  31. package/react18/dist/cypress-react.cjs.js +222 -222
  32. package/react18/dist/cypress-react.esm-bundler.js +222 -222
  33. package/react18/dist/index.d.ts +1 -1
  34. package/react18/package.json +1 -1
  35. package/react18/react18/dist/cypress-react.cjs.js +222 -222
  36. package/react18/react18/dist/cypress-react.esm-bundler.js +222 -222
  37. package/react18/react18/dist/index.d.ts +1 -1
  38. package/react18/react18/package.json +1 -1
  39. package/svelte/dist/cypress-svelte.cjs.js +61 -61
  40. package/svelte/dist/cypress-svelte.esm-bundler.js +61 -61
  41. package/svelte/dist/index.d.ts +2 -2
  42. package/svelte/package.json +1 -1
  43. package/svelte/svelte/dist/cypress-svelte.cjs.js +61 -61
  44. package/svelte/svelte/dist/cypress-svelte.esm-bundler.js +61 -61
  45. package/svelte/svelte/dist/index.d.ts +2 -2
  46. package/svelte/svelte/package.json +1 -1
  47. package/vue/dist/cypress-vue.cjs.js +128 -128
  48. package/vue/dist/cypress-vue.esm-bundler.js +128 -128
  49. package/vue/dist/index.d.ts +5 -5
  50. package/vue/package.json +5 -5
  51. package/vue/vue/dist/cypress-vue.cjs.js +128 -128
  52. package/vue/vue/dist/cypress-vue.esm-bundler.js +128 -128
  53. package/vue/vue/dist/index.d.ts +5 -5
  54. package/vue/vue/package.json +5 -5
  55. package/vue2/dist/cypress-vue2.cjs.js +211 -211
  56. package/vue2/dist/cypress-vue2.esm-bundler.js +211 -211
  57. package/vue2/dist/index.d.ts +11 -11
  58. package/vue2/package.json +1 -1
  59. package/vue2/vue2/dist/cypress-vue2.cjs.js +211 -211
  60. package/vue2/vue2/dist/cypress-vue2.esm-bundler.js +211 -211
  61. package/vue2/vue2/dist/index.d.ts +11 -11
  62. package/vue2/vue2/package.json +1 -1
@@ -19826,217 +19826,217 @@ function setupHooks(optionalCallback) {
19826
19826
  });
19827
19827
  }
19828
19828
 
19829
- /// <reference types="cypress" />
19830
- const defaultOptions = [
19831
- 'vue',
19832
- 'extensions',
19833
- ];
19834
- const DEFAULT_COMP_NAME = 'unknown';
19835
- const registerGlobalComponents = (Vue, options) => {
19836
- const globalComponents = Cypress._.get(options, 'extensions.components');
19837
- if (Cypress._.isPlainObject(globalComponents)) {
19838
- Cypress._.forEach(globalComponents, (component, id) => {
19839
- Vue.component(id, component);
19840
- });
19841
- }
19842
- };
19843
- const installFilters = (Vue, options) => {
19844
- const filters = Cypress._.get(options, 'extensions.filters');
19845
- if (Cypress._.isPlainObject(filters)) {
19846
- Object.keys(filters).forEach((name) => {
19847
- Vue.filter(name, filters[name]);
19848
- });
19849
- }
19850
- };
19851
- const installPlugins = (Vue, options, props) => {
19852
- const plugins = Cypress._.get(props, 'plugins') ||
19853
- Cypress._.get(options, 'extensions.use') ||
19854
- Cypress._.get(options, 'extensions.plugins') ||
19855
- [];
19856
- // @ts-ignore
19857
- plugins.forEach((p) => {
19858
- Array.isArray(p) ? Vue.use(...p) : Vue.use(p);
19859
- });
19860
- };
19861
- const installMixins = (Vue, options) => {
19862
- const mixins = Cypress._.get(options, 'extensions.mixin') ||
19863
- Cypress._.get(options, 'extensions.mixins');
19864
- if (Cypress._.isArray(mixins)) {
19865
- mixins.forEach((mixin) => {
19866
- Vue.mixin(mixin);
19867
- });
19868
- }
19869
- };
19870
- const registerGlobalDirectives = (Vue, options) => {
19871
- const directives = Cypress._.get(options, 'extensions.directives');
19872
- if (Cypress._.isPlainObject(directives)) {
19873
- Object.keys(directives).forEach((name) => {
19874
- Vue.directive(name, directives[name]);
19875
- });
19876
- }
19877
- };
19878
- const hasStore = ({ store }) => Boolean(store && store._vm);
19879
- const forEachValue = (obj, fn) => {
19880
- return Object.keys(obj).forEach((key) => fn(obj[key], key));
19881
- };
19882
- const resetStoreVM = (Vue, { store }) => {
19883
- // bind store public getters
19884
- store.getters = {};
19885
- const wrappedGetters = store._wrappedGetters;
19886
- const computed = {};
19887
- forEachValue(wrappedGetters, (fn, key) => {
19888
- // use computed to leverage its lazy-caching mechanism
19889
- computed[key] = () => fn(store);
19890
- Object.defineProperty(store.getters, key, {
19891
- get: () => store._vm[key],
19892
- enumerable: true, // for local getters
19893
- });
19894
- });
19895
- store._watcherVM = new Vue();
19896
- store._vm = new Vue({
19897
- data: {
19898
- $$state: store._vm._data.$$state,
19899
- },
19900
- computed,
19901
- });
19902
- return store;
19903
- };
19904
- const cleanup = () => {
19905
- var _a;
19906
- (_a = Cypress.vueWrapper) === null || _a === void 0 ? void 0 : _a.destroy();
19907
- };
19908
- /**
19909
- * Direct Vue errors to the top error handler
19910
- * where they will fail Cypress test
19911
- * @see https://vuejs.org/v2/api/#errorHandler
19912
- * @see https://github.com/cypress-io/cypress/issues/7910
19913
- */
19914
- function failTestOnVueError(err, vm, info) {
19915
- // Vue 2 try catches the error-handler so push the error to be caught outside
19916
- // of the handler.
19917
- setTimeout(() => {
19918
- throw err;
19919
- });
19920
- }
19921
- /**
19922
- * Extract the component name from the object passed to mount
19923
- * @param componentOptions the component passed to mount
19924
- * @returns name of the component
19925
- */
19926
- function getComponentDisplayName(componentOptions) {
19927
- var _a;
19928
- if (componentOptions.name) {
19929
- return componentOptions.name;
19930
- }
19931
- if (componentOptions.__file) {
19932
- const filepathSplit = componentOptions.__file.split('/');
19933
- const fileName = (_a = filepathSplit[filepathSplit.length - 1]) !== null && _a !== void 0 ? _a : DEFAULT_COMP_NAME;
19934
- // remove the extension .js, .ts or .vue from the filename to get the name of the component
19935
- const baseFileName = fileName.replace(/\.(js|ts|vue)?$/, '');
19936
- // if the filename is index, then we can use the direct parent foldername, else use the name itself
19937
- return (baseFileName === 'index' ? filepathSplit[filepathSplit.length - 2] : baseFileName);
19938
- }
19939
- return DEFAULT_COMP_NAME;
19940
- }
19941
- /**
19942
- * Mounts a Vue component inside Cypress browser.
19943
- * @param {VueComponent} component imported from Vue file
19944
- * @param {MountOptionsArgument} optionsOrProps used to pass options to component being mounted
19945
- * @returns {Cypress.Chainable<{wrapper: Wrapper<T>, component: T}
19946
- * @example
19947
- * import { mount } from '@cypress/vue'
19948
- * import { Stepper } from './Stepper.vue'
19949
- *
19950
- * it('mounts', () => {
19951
- * cy.mount(Stepper)
19952
- * cy.get('[data-cy=increment]').click()
19953
- * cy.get('[data-cy=counter]').should('have.text', '1')
19954
- * })
19955
- * @see {@link https://on.cypress.io/mounting-vue} for more details.
19956
- *
19957
- */
19958
- const mount = (component, optionsOrProps = {}) => {
19959
- checkForRemovedStyleOptions(optionsOrProps);
19960
- // Remove last mounted component if cy.mount is called more than once in a test
19961
- cleanup();
19962
- const options = Cypress._.pick(optionsOrProps, defaultOptions);
19963
- const props = Cypress._.omit(optionsOrProps, defaultOptions);
19964
- const componentName = getComponentDisplayName(component);
19965
- const message = `<${componentName} ... />`;
19966
- return cy
19967
- .window({
19968
- log: false,
19969
- })
19970
- .then((win) => {
19971
- const localVue = createLocalVue();
19972
- // @ts-ignore
19973
- win.Vue = localVue;
19974
- localVue.config.errorHandler = failTestOnVueError;
19975
- // set global Vue instance:
19976
- // 1. convenience for debugging in DevTools
19977
- // 2. some libraries might check for this global
19978
- // appIframe.contentWindow.Vue = localVue
19979
- // refresh inner Vue instance of Vuex store
19980
- // @ts-ignore
19981
- if (hasStore(component)) {
19982
- // @ts-ignore
19983
- component.store = resetStoreVM(localVue, component);
19984
- }
19985
- // @ts-ignore
19986
- const document = cy.state('document');
19987
- let el = getContainerEl();
19988
- const componentNode = document.createElement('div');
19989
- el.append(componentNode);
19990
- // setup Vue instance
19991
- installFilters(localVue, options);
19992
- installMixins(localVue, options);
19993
- installPlugins(localVue, options, props);
19994
- registerGlobalDirectives(localVue, options);
19995
- registerGlobalComponents(localVue, options);
19996
- props.attachTo = componentNode;
19997
- const wrapper = localVue.extend(component);
19998
- const VTUWrapper = mount$1(wrapper, Object.assign({ localVue }, props));
19999
- Cypress.vue = VTUWrapper.vm;
20000
- Cypress.vueWrapper = VTUWrapper;
20001
- return {
20002
- wrapper: VTUWrapper,
20003
- component: VTUWrapper.vm,
20004
- };
20005
- })
20006
- .then(() => {
20007
- if (optionsOrProps.log !== false) {
20008
- return Vue.nextTick(() => {
20009
- Cypress.log({
20010
- name: 'mount',
20011
- message: [message],
20012
- });
20013
- });
20014
- }
20015
- });
20016
- };
20017
- /**
20018
- * Helper function for mounting a component quickly in test hooks.
20019
- * @example
20020
- * import {mountCallback} from '@cypress/vue2'
20021
- * beforeEach(mountVue(component, options))
20022
- *
20023
- * Removed as of Cypress 11.0.0.
20024
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
20025
- */
20026
- const mountCallback = (component, options) => {
20027
- return () => {
20028
- // @ts-expect-error - undocumented API
20029
- Cypress.utils.throwErrByPath('mount.mount_callback');
20030
- };
20031
- };
20032
- // Side effects from "import { mount } from '@cypress/<my-framework>'" are annoying, we should avoid doing this
20033
- // by creating an explicit function/import that the user can register in their 'component.js' support file,
20034
- // such as:
20035
- // import 'cypress/<my-framework>/support'
20036
- // or
20037
- // import { registerCT } from 'cypress/<my-framework>'
20038
- // registerCT()
20039
- // Note: This would be a breaking change
19829
+ /// <reference types="cypress" />
19830
+ const defaultOptions = [
19831
+ 'vue',
19832
+ 'extensions',
19833
+ ];
19834
+ const DEFAULT_COMP_NAME = 'unknown';
19835
+ const registerGlobalComponents = (Vue, options) => {
19836
+ const globalComponents = Cypress._.get(options, 'extensions.components');
19837
+ if (Cypress._.isPlainObject(globalComponents)) {
19838
+ Cypress._.forEach(globalComponents, (component, id) => {
19839
+ Vue.component(id, component);
19840
+ });
19841
+ }
19842
+ };
19843
+ const installFilters = (Vue, options) => {
19844
+ const filters = Cypress._.get(options, 'extensions.filters');
19845
+ if (Cypress._.isPlainObject(filters)) {
19846
+ Object.keys(filters).forEach((name) => {
19847
+ Vue.filter(name, filters[name]);
19848
+ });
19849
+ }
19850
+ };
19851
+ const installPlugins = (Vue, options, props) => {
19852
+ const plugins = Cypress._.get(props, 'plugins') ||
19853
+ Cypress._.get(options, 'extensions.use') ||
19854
+ Cypress._.get(options, 'extensions.plugins') ||
19855
+ [];
19856
+ // @ts-ignore
19857
+ plugins.forEach((p) => {
19858
+ Array.isArray(p) ? Vue.use(...p) : Vue.use(p);
19859
+ });
19860
+ };
19861
+ const installMixins = (Vue, options) => {
19862
+ const mixins = Cypress._.get(options, 'extensions.mixin') ||
19863
+ Cypress._.get(options, 'extensions.mixins');
19864
+ if (Cypress._.isArray(mixins)) {
19865
+ mixins.forEach((mixin) => {
19866
+ Vue.mixin(mixin);
19867
+ });
19868
+ }
19869
+ };
19870
+ const registerGlobalDirectives = (Vue, options) => {
19871
+ const directives = Cypress._.get(options, 'extensions.directives');
19872
+ if (Cypress._.isPlainObject(directives)) {
19873
+ Object.keys(directives).forEach((name) => {
19874
+ Vue.directive(name, directives[name]);
19875
+ });
19876
+ }
19877
+ };
19878
+ const hasStore = ({ store }) => Boolean(store && store._vm);
19879
+ const forEachValue = (obj, fn) => {
19880
+ return Object.keys(obj).forEach((key) => fn(obj[key], key));
19881
+ };
19882
+ const resetStoreVM = (Vue, { store }) => {
19883
+ // bind store public getters
19884
+ store.getters = {};
19885
+ const wrappedGetters = store._wrappedGetters;
19886
+ const computed = {};
19887
+ forEachValue(wrappedGetters, (fn, key) => {
19888
+ // use computed to leverage its lazy-caching mechanism
19889
+ computed[key] = () => fn(store);
19890
+ Object.defineProperty(store.getters, key, {
19891
+ get: () => store._vm[key],
19892
+ enumerable: true, // for local getters
19893
+ });
19894
+ });
19895
+ store._watcherVM = new Vue();
19896
+ store._vm = new Vue({
19897
+ data: {
19898
+ $$state: store._vm._data.$$state,
19899
+ },
19900
+ computed,
19901
+ });
19902
+ return store;
19903
+ };
19904
+ const cleanup = () => {
19905
+ var _a;
19906
+ (_a = Cypress.vueWrapper) === null || _a === void 0 ? void 0 : _a.destroy();
19907
+ };
19908
+ /**
19909
+ * Direct Vue errors to the top error handler
19910
+ * where they will fail Cypress test
19911
+ * @see https://vuejs.org/v2/api/#errorHandler
19912
+ * @see https://github.com/cypress-io/cypress/issues/7910
19913
+ */
19914
+ function failTestOnVueError(err, vm, info) {
19915
+ // Vue 2 try catches the error-handler so push the error to be caught outside
19916
+ // of the handler.
19917
+ setTimeout(() => {
19918
+ throw err;
19919
+ });
19920
+ }
19921
+ /**
19922
+ * Extract the component name from the object passed to mount
19923
+ * @param componentOptions the component passed to mount
19924
+ * @returns name of the component
19925
+ */
19926
+ function getComponentDisplayName(componentOptions) {
19927
+ var _a;
19928
+ if (componentOptions.name) {
19929
+ return componentOptions.name;
19930
+ }
19931
+ if (componentOptions.__file) {
19932
+ const filepathSplit = componentOptions.__file.split('/');
19933
+ const fileName = (_a = filepathSplit[filepathSplit.length - 1]) !== null && _a !== void 0 ? _a : DEFAULT_COMP_NAME;
19934
+ // remove the extension .js, .ts or .vue from the filename to get the name of the component
19935
+ const baseFileName = fileName.replace(/\.(js|ts|vue)?$/, '');
19936
+ // if the filename is index, then we can use the direct parent foldername, else use the name itself
19937
+ return (baseFileName === 'index' ? filepathSplit[filepathSplit.length - 2] : baseFileName);
19938
+ }
19939
+ return DEFAULT_COMP_NAME;
19940
+ }
19941
+ /**
19942
+ * Mounts a Vue component inside Cypress browser.
19943
+ * @param {VueComponent} component imported from Vue file
19944
+ * @param {MountOptionsArgument} optionsOrProps used to pass options to component being mounted
19945
+ * @returns {Cypress.Chainable<{wrapper: Wrapper<T>, component: T}
19946
+ * @example
19947
+ * import { mount } from '@cypress/vue'
19948
+ * import { Stepper } from './Stepper.vue'
19949
+ *
19950
+ * it('mounts', () => {
19951
+ * cy.mount(Stepper)
19952
+ * cy.get('[data-cy=increment]').click()
19953
+ * cy.get('[data-cy=counter]').should('have.text', '1')
19954
+ * })
19955
+ * @see {@link https://on.cypress.io/mounting-vue} for more details.
19956
+ *
19957
+ */
19958
+ const mount = (component, optionsOrProps = {}) => {
19959
+ checkForRemovedStyleOptions(optionsOrProps);
19960
+ // Remove last mounted component if cy.mount is called more than once in a test
19961
+ cleanup();
19962
+ const options = Cypress._.pick(optionsOrProps, defaultOptions);
19963
+ const props = Cypress._.omit(optionsOrProps, defaultOptions);
19964
+ const componentName = getComponentDisplayName(component);
19965
+ const message = `<${componentName} ... />`;
19966
+ return cy
19967
+ .window({
19968
+ log: false,
19969
+ })
19970
+ .then((win) => {
19971
+ const localVue = createLocalVue();
19972
+ // @ts-ignore
19973
+ win.Vue = localVue;
19974
+ localVue.config.errorHandler = failTestOnVueError;
19975
+ // set global Vue instance:
19976
+ // 1. convenience for debugging in DevTools
19977
+ // 2. some libraries might check for this global
19978
+ // appIframe.contentWindow.Vue = localVue
19979
+ // refresh inner Vue instance of Vuex store
19980
+ // @ts-ignore
19981
+ if (hasStore(component)) {
19982
+ // @ts-ignore
19983
+ component.store = resetStoreVM(localVue, component);
19984
+ }
19985
+ // @ts-ignore
19986
+ const document = cy.state('document');
19987
+ let el = getContainerEl();
19988
+ const componentNode = document.createElement('div');
19989
+ el.append(componentNode);
19990
+ // setup Vue instance
19991
+ installFilters(localVue, options);
19992
+ installMixins(localVue, options);
19993
+ installPlugins(localVue, options, props);
19994
+ registerGlobalDirectives(localVue, options);
19995
+ registerGlobalComponents(localVue, options);
19996
+ props.attachTo = componentNode;
19997
+ const wrapper = localVue.extend(component);
19998
+ const VTUWrapper = mount$1(wrapper, Object.assign({ localVue }, props));
19999
+ Cypress.vue = VTUWrapper.vm;
20000
+ Cypress.vueWrapper = VTUWrapper;
20001
+ return {
20002
+ wrapper: VTUWrapper,
20003
+ component: VTUWrapper.vm,
20004
+ };
20005
+ })
20006
+ .then(() => {
20007
+ if (optionsOrProps.log !== false) {
20008
+ return Vue.nextTick(() => {
20009
+ Cypress.log({
20010
+ name: 'mount',
20011
+ message: [message],
20012
+ });
20013
+ });
20014
+ }
20015
+ });
20016
+ };
20017
+ /**
20018
+ * Helper function for mounting a component quickly in test hooks.
20019
+ * @example
20020
+ * import {mountCallback} from '@cypress/vue2'
20021
+ * beforeEach(mountVue(component, options))
20022
+ *
20023
+ * Removed as of Cypress 11.0.0.
20024
+ * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
20025
+ */
20026
+ const mountCallback = (component, options) => {
20027
+ return () => {
20028
+ // @ts-expect-error - undocumented API
20029
+ Cypress.utils.throwErrByPath('mount.mount_callback');
20030
+ };
20031
+ };
20032
+ // Side effects from "import { mount } from '@cypress/<my-framework>'" are annoying, we should avoid doing this
20033
+ // by creating an explicit function/import that the user can register in their 'component.js' support file,
20034
+ // such as:
20035
+ // import 'cypress/<my-framework>/support'
20036
+ // or
20037
+ // import { registerCT } from 'cypress/<my-framework>'
20038
+ // registerCT()
20039
+ // Note: This would be a breaking change
20040
20040
  setupHooks(cleanup);
20041
20041
 
20042
20042
  export { mount, mountCallback };
@@ -13,29 +13,29 @@ import { ComponentPublicInstanceConstructor } from 'vue/types/v3-component-publi
13
13
  * ^^^^^ this type
14
14
  * mount(Hello)
15
15
  */
16
- declare type VueComponent = Vue.ComponentOptions<any> | Vue.VueConstructor | ComponentPublicInstanceConstructor;
16
+ type VueComponent = Vue.ComponentOptions<any> | Vue.VueConstructor | ComponentPublicInstanceConstructor;
17
17
  /**
18
18
  * Options to pass to the component when creating it, like
19
19
  * props.
20
20
  *
21
21
  * @interface ComponentOptions
22
22
  */
23
- declare type ComponentOptions = Record<string, unknown>;
24
- declare type VueLocalComponents = Record<string, VueComponent>;
25
- declare type VueFilters = {
23
+ type ComponentOptions = Record<string, unknown>;
24
+ type VueLocalComponents = Record<string, VueComponent>;
25
+ type VueFilters = {
26
26
  [key: string]: (value: string) => string;
27
27
  };
28
- declare type VueDirectives = {
28
+ type VueDirectives = {
29
29
  [key: string]: Function | Object;
30
30
  };
31
- declare type VueMixin = unknown;
32
- declare type VueMixins = VueMixin | VueMixin[];
33
- declare type VuePluginOptions = unknown;
34
- declare type VuePlugin = unknown | [unknown, VuePluginOptions];
31
+ type VueMixin = unknown;
32
+ type VueMixins = VueMixin | VueMixin[];
33
+ type VuePluginOptions = unknown;
34
+ type VuePlugin = unknown | [unknown, VuePluginOptions];
35
35
  /**
36
36
  * A single Vue plugin or a list of plugins to register
37
37
  */
38
- declare type VuePlugins = VuePlugin[];
38
+ type VuePlugins = VuePlugin[];
39
39
  /**
40
40
  * Additional Vue services to register while mounting the component, like
41
41
  * local components, plugins, etc.
@@ -152,7 +152,7 @@ interface MountOptions {
152
152
  /**
153
153
  * Utility type for union of options passed to "mount(..., options)"
154
154
  */
155
- declare type MountOptionsArgument = Partial<ComponentOptions & MountOptions & VueTestUtilsConfigOptions>;
155
+ type MountOptionsArgument = Partial<ComponentOptions & MountOptions & VueTestUtilsConfigOptions>;
156
156
  declare global {
157
157
  namespace Cypress {
158
158
  interface Cypress {
@@ -18,7 +18,7 @@
18
18
  "@rollup/plugin-replace": "^2.3.1",
19
19
  "@vue/test-utils": "^1.3.1",
20
20
  "tslib": "^2.1.0",
21
- "typescript": "^4.7.4",
21
+ "typescript": "~5.4.5",
22
22
  "vue": "2.7.16"
23
23
  },
24
24
  "peerDependencies": {