vibrant-tool 0.1.1

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.
Files changed (197) hide show
  1. package/README.md +36 -0
  2. package/dist/App.d.ts +1 -0
  3. package/dist/index.d.ts +1 -0
  4. package/dist/lib/config.d.ts +2 -0
  5. package/dist/lib/hooks/applyImagePreset.d.ts +3 -0
  6. package/dist/lib/hooks/fitimagetopage.d.ts +2 -0
  7. package/dist/lib/hooks/qrUtils.d.ts +2 -0
  8. package/dist/lib/hooks/useBlackEffect.d.ts +2 -0
  9. package/dist/lib/hooks/useBlurEffect.d.ts +2 -0
  10. package/dist/lib/hooks/useBorderEffect.d.ts +2 -0
  11. package/dist/lib/hooks/useBrightnessEffect.d.ts +2 -0
  12. package/dist/lib/hooks/useCanvasZoom.d.ts +16 -0
  13. package/dist/lib/hooks/useContrastEffect.d.ts +2 -0
  14. package/dist/lib/hooks/useCornerRadiusEffect.d.ts +2 -0
  15. package/dist/lib/hooks/useDraggable.d.ts +2 -0
  16. package/dist/lib/hooks/useFabricDrawing.d.ts +1 -0
  17. package/dist/lib/hooks/useFabricShadow.d.ts +2 -0
  18. package/dist/lib/hooks/useKeyboardEvents.d.ts +2 -0
  19. package/dist/lib/hooks/useSaturationEffect.d.ts +2 -0
  20. package/dist/lib/hooks/useShadowEffect.d.ts +2 -0
  21. package/dist/lib/hooks/useSocialAuth.d.ts +16 -0
  22. package/dist/lib/hooks/useTemperatureEffect.d.ts +2 -0
  23. package/dist/lib/hooks/useVibranceEffect.d.ts +2 -0
  24. package/dist/lib/hooks/useWhiteEffect.d.ts +2 -0
  25. package/dist/lib/services/api.d.ts +12 -0
  26. package/dist/lib/services/crop-image.service.d.ts +23 -0
  27. package/dist/lib/services/font.service.d.ts +4 -0
  28. package/dist/lib/services/shape.service.d.ts +9 -0
  29. package/dist/lib/types/barcode.types.d.ts +12 -0
  30. package/dist/lib/types/color.types.d.ts +11 -0
  31. package/dist/lib/types/fabric.types.d.ts +38 -0
  32. package/dist/lib/types/font.types.d.ts +28 -0
  33. package/dist/lib/types/shape.types.d.ts +36 -0
  34. package/dist/lib/utils/background-utils.d.ts +4 -0
  35. package/dist/lib/utils/barcode-utils.d.ts +6 -0
  36. package/dist/lib/utils/canvas-handler.d.ts +78 -0
  37. package/dist/lib/utils/canvas-setup.d.ts +29 -0
  38. package/dist/lib/utils/color-conversions.utils.d.ts +19 -0
  39. package/dist/lib/utils/custom-controls.d.ts +5 -0
  40. package/dist/lib/utils/design-storage-utils.d.ts +4 -0
  41. package/dist/lib/utils/downloadCanvas.d.ts +7 -0
  42. package/dist/lib/utils/driver-tour.d.ts +2 -0
  43. package/dist/lib/utils/event-handlers.d.ts +10 -0
  44. package/dist/lib/utils/fabric-helper.d.ts +2 -0
  45. package/dist/lib/utils/gradient-converter-utils.d.ts +8 -0
  46. package/dist/lib/utils/history-recorder.d.ts +1 -0
  47. package/dist/lib/utils/icon-effects-utils.d.ts +4 -0
  48. package/dist/lib/utils/image-utils.d.ts +3 -0
  49. package/dist/lib/utils/imagePresets.d.ts +2 -0
  50. package/dist/lib/utils/overlay-manager.d.ts +3 -0
  51. package/dist/lib/utils/page-manager.d.ts +3 -0
  52. package/dist/lib/utils/pan-mode.d.ts +10 -0
  53. package/dist/lib/utils/qr-utils.d.ts +4 -0
  54. package/dist/lib/utils/svg-utils.d.ts +8 -0
  55. package/dist/lib/utils/text-utils.d.ts +4 -0
  56. package/dist/modules/canvas/index.d.ts +1 -0
  57. package/dist/modules/components/all-elements/index.d.ts +8 -0
  58. package/dist/modules/components/alpha-slider/index.d.ts +12 -0
  59. package/dist/modules/components/cmyk-inputs/index.d.ts +12 -0
  60. package/dist/modules/components/color-picker/index.d.ts +1 -0
  61. package/dist/modules/components/color-preview-box/index.d.ts +6 -0
  62. package/dist/modules/components/crop-image-button/index.d.ts +1 -0
  63. package/dist/modules/components/duplicate-button/index.d.ts +1 -0
  64. package/dist/modules/components/effect-section/index.d.ts +13 -0
  65. package/dist/modules/components/flip-button/index.d.ts +1 -0
  66. package/dist/modules/components/global-loader/index.d.ts +1 -0
  67. package/dist/modules/components/gradient-selector/index.d.ts +10 -0
  68. package/dist/modules/components/group-button/index.d.ts +1 -0
  69. package/dist/modules/components/home/aiimage.d.ts +5 -0
  70. package/dist/modules/components/home/animate.d.ts +3 -0
  71. package/dist/modules/components/home/design.d.ts +10 -0
  72. package/dist/modules/components/home/iconeffect.d.ts +7 -0
  73. package/dist/modules/components/home/index copy.d.ts +1 -0
  74. package/dist/modules/components/home/layer.d.ts +16 -0
  75. package/dist/modules/components/home/quotes.d.ts +6 -0
  76. package/dist/modules/components/home/shapeeffect.d.ts +7 -0
  77. package/dist/modules/components/home/size.d.ts +6 -0
  78. package/dist/modules/components/home/texteffect/components/BackgroundControl/index.d.ts +4 -0
  79. package/dist/modules/components/home/texteffect/components/CurvedTextControl/index.d.ts +4 -0
  80. package/dist/modules/components/home/texteffect/components/ShadowControl/index.d.ts +4 -0
  81. package/dist/modules/components/home/texteffect/components/blurControl/index.d.ts +4 -0
  82. package/dist/modules/components/home/texteffect/components/strokeControl/index.d.ts +4 -0
  83. package/dist/modules/components/home/texteffect/effect.d.ts +6 -0
  84. package/dist/modules/components/home/video.d.ts +6 -0
  85. package/dist/modules/components/home/videotrim.d.ts +7 -0
  86. package/dist/modules/components/hue-slider/index.d.ts +9 -0
  87. package/dist/modules/components/lock-button/index.d.ts +1 -0
  88. package/dist/modules/components/opacity-picker/index.d.ts +1 -0
  89. package/dist/modules/components/position-picker/index.d.ts +1 -0
  90. package/dist/modules/components/remove-button/index.d.ts +1 -0
  91. package/dist/modules/components/rotate-button/index.d.ts +1 -0
  92. package/dist/modules/components/shadow-control/index.d.ts +10 -0
  93. package/dist/modules/components/tour-runner/index.d.ts +1 -0
  94. package/dist/modules/components/ungroup-button/index.d.ts +1 -0
  95. package/dist/modules/components/zoom-controls/index.d.ts +1 -0
  96. package/dist/modules/data/elements.d.ts +6 -0
  97. package/dist/modules/data/mask.d.ts +4 -0
  98. package/dist/modules/data/templates.d.ts +126 -0
  99. package/dist/modules/icons/aiicon/index.d.ts +4 -0
  100. package/dist/modules/icons/aligncentericon/aligncentericon.d.ts +1 -0
  101. package/dist/modules/icons/alignlefticon/alignlefticon.d.ts +1 -0
  102. package/dist/modules/icons/alignrighticon/alignrighticon.d.ts +1 -0
  103. package/dist/modules/icons/arrowbottomlefticon/inedx.d.ts +1 -0
  104. package/dist/modules/icons/arrowbottomrighticon/inedx.d.ts +1 -0
  105. package/dist/modules/icons/arrowdownicon/inedx.d.ts +1 -0
  106. package/dist/modules/icons/arrowicon/inedx.d.ts +1 -0
  107. package/dist/modules/icons/arrowlefticon/inedx.d.ts +1 -0
  108. package/dist/modules/icons/arrowrighticon/inedx.d.ts +1 -0
  109. package/dist/modules/icons/arrowtoplefticon/inedx.d.ts +1 -0
  110. package/dist/modules/icons/arrowtoprighticon/inedx.d.ts +1 -0
  111. package/dist/modules/icons/arrowupicon/inedx.d.ts +1 -0
  112. package/dist/modules/icons/backgroundicon/index.d.ts +1 -0
  113. package/dist/modules/icons/colorpickericon/index.d.ts +1 -0
  114. package/dist/modules/icons/copyicon/index.d.ts +1 -0
  115. package/dist/modules/icons/cropicon/index.d.ts +1 -0
  116. package/dist/modules/icons/deleteicon/index.d.ts +1 -0
  117. package/dist/modules/icons/designicon/index.d.ts +1 -0
  118. package/dist/modules/icons/disableicon/index.d.ts +1 -0
  119. package/dist/modules/icons/downloadicon/index.d.ts +1 -0
  120. package/dist/modules/icons/drawicon/index.d.ts +4 -0
  121. package/dist/modules/icons/dropboxicon/index.d.ts +1 -0
  122. package/dist/modules/icons/effecticon/index.d.ts +1 -0
  123. package/dist/modules/icons/eyeicon/index.d.ts +1 -0
  124. package/dist/modules/icons/facebookicon/index.d.ts +1 -0
  125. package/dist/modules/icons/flickricon/index.d.ts +1 -0
  126. package/dist/modules/icons/fliphorizontalicon/index.d.ts +1 -0
  127. package/dist/modules/icons/flipicon/index.d.ts +1 -0
  128. package/dist/modules/icons/flipverticalicon/index.d.ts +1 -0
  129. package/dist/modules/icons/googledriveicon/index.d.ts +1 -0
  130. package/dist/modules/icons/googlephotosicon/index.d.ts +1 -0
  131. package/dist/modules/icons/groupicon/index.d.ts +1 -0
  132. package/dist/modules/icons/handicon/index.d.ts +1 -0
  133. package/dist/modules/icons/helpicon/index.d.ts +1 -0
  134. package/dist/modules/icons/iconsicon/index.d.ts +1 -0
  135. package/dist/modules/icons/instagramicon/index.d.ts +1 -0
  136. package/dist/modules/icons/layersicon/index.d.ts +1 -0
  137. package/dist/modules/icons/lockicon/index.d.ts +1 -0
  138. package/dist/modules/icons/menuicon/index.d.ts +1 -0
  139. package/dist/modules/icons/notfoundicon/index.d.ts +1 -0
  140. package/dist/modules/icons/opacityicon/index.d.ts +1 -0
  141. package/dist/modules/icons/pexelsicon/index.d.ts +1 -0
  142. package/dist/modules/icons/photosicon/index.d.ts +1 -0
  143. package/dist/modules/icons/pixabayicon/index.d.ts +1 -0
  144. package/dist/modules/icons/pointericon/index.d.ts +1 -0
  145. package/dist/modules/icons/qrcodeicon/index.d.ts +1 -0
  146. package/dist/modules/icons/quotesicon/index.d.ts +1 -0
  147. package/dist/modules/icons/redoicon/index.d.ts +1 -0
  148. package/dist/modules/icons/rotateicon/index.d.ts +1 -0
  149. package/dist/modules/icons/shapeicon/index.d.ts +1 -0
  150. package/dist/modules/icons/sizeicon/index.d.ts +1 -0
  151. package/dist/modules/icons/strikethroughicon/index.d.ts +1 -0
  152. package/dist/modules/icons/stylecopyicon/index.d.ts +1 -0
  153. package/dist/modules/icons/templateicon/index.d.ts +1 -0
  154. package/dist/modules/icons/texticon/index.d.ts +4 -0
  155. package/dist/modules/icons/undoicon/index.d.ts +1 -0
  156. package/dist/modules/icons/ungroupicon/index.d.ts +1 -0
  157. package/dist/modules/icons/unlockicon/index.d.ts +1 -0
  158. package/dist/modules/icons/uploadicon/index.d.ts +1 -0
  159. package/dist/modules/icons/usersicon/index.d.ts +1 -0
  160. package/dist/modules/icons/videoicon/index.d.ts +4 -0
  161. package/dist/modules/icons/zoomicon/index.d.ts +1 -0
  162. package/dist/modules/index.d.ts +1 -0
  163. package/dist/modules/side-panel/background-panel/index.d.ts +1 -0
  164. package/dist/modules/side-panel/bar-code-panel/index.d.ts +1 -0
  165. package/dist/modules/side-panel/draw-panel/index.d.ts +1 -0
  166. package/dist/modules/side-panel/effect-panel/index.d.ts +1 -0
  167. package/dist/modules/side-panel/elements-panel/index.d.ts +1 -0
  168. package/dist/modules/side-panel/font-panel/index.d.ts +1 -0
  169. package/dist/modules/side-panel/index.d.ts +10 -0
  170. package/dist/modules/side-panel/mask-panel/index.d.ts +1 -0
  171. package/dist/modules/side-panel/panel/index.d.ts +4 -0
  172. package/dist/modules/side-panel/photos-panel/index.d.ts +1 -0
  173. package/dist/modules/side-panel/qr-code-panel/index.d.ts +1 -0
  174. package/dist/modules/side-panel/quotes-panel/index.d.ts +1 -0
  175. package/dist/modules/side-panel/templates-panel/index.d.ts +1 -0
  176. package/dist/modules/side-panel/text-panel/index.d.ts +1 -0
  177. package/dist/modules/side-panel/upload-panel/index.d.ts +1 -0
  178. package/dist/modules/toolbar/barcode-toolbar/index.d.ts +1 -0
  179. package/dist/modules/toolbar/common-toolbar/index.d.ts +1 -0
  180. package/dist/modules/toolbar/index.d.ts +1 -0
  181. package/dist/modules/toolbar/picture-toolbar/index.d.ts +1 -0
  182. package/dist/modules/toolbar/qr-toolbar/index.d.ts +1 -0
  183. package/dist/modules/toolbar/text-toolbar/index.d.ts +11 -0
  184. package/dist/modules/topbar/download-popover.d.ts +3 -0
  185. package/dist/modules/topbar/index.d.ts +1 -0
  186. package/dist/vibrant-tool.css +3031 -0
  187. package/dist/vibrant-tool.es.js +123232 -0
  188. package/dist/vibrant-tool.umd.js +123234 -0
  189. package/dist/zustand/drawStore.d.ts +13 -0
  190. package/dist/zustand/editorStore.d.ts +15 -0
  191. package/dist/zustand/effectStore.d.ts +43 -0
  192. package/dist/zustand/historyStore.d.ts +20 -0
  193. package/dist/zustand/loaderStore.d.ts +8 -0
  194. package/dist/zustand/selectionStore.d.ts +10 -0
  195. package/dist/zustand/sidePanelStore.d.ts +8 -0
  196. package/dist/zustand/tourStore.d.ts +19 -0
  197. package/package.json +72 -0
@@ -0,0 +1,13 @@
1
+ export type DrawTool = "select" | "brush" | "highlighter";
2
+ interface DrawState {
3
+ drawTool: DrawTool;
4
+ strokeWidth: number;
5
+ opacity: number;
6
+ color: string;
7
+ setDrawTool: (tool: DrawTool) => void;
8
+ setStrokeWidth: (v: number) => void;
9
+ setOpacity: (v: number) => void;
10
+ setColor: (v: string) => void;
11
+ }
12
+ export declare const useDrawStore: import('zustand').UseBoundStore<import('zustand').StoreApi<DrawState>>;
13
+ export {};
@@ -0,0 +1,15 @@
1
+ import * as fabric from "fabric";
2
+ interface EditorState {
3
+ canvas: fabric.Canvas | null;
4
+ pages: Record<string, any>;
5
+ history: string[];
6
+ historyIndex: number;
7
+ isCropping: boolean;
8
+ startCropping: () => void;
9
+ stopCropping: () => void;
10
+ setCanvas: (canvas: fabric.Canvas | null) => void;
11
+ setPages: (pages: Record<string, any>) => void;
12
+ saveHistory: () => void;
13
+ }
14
+ export declare const useEditorStore: import('zustand').UseBoundStore<import('zustand').StoreApi<EditorState>>;
15
+ export {};
@@ -0,0 +1,43 @@
1
+ export type NumericEffectKey = "blur" | "brightness" | "temperature" | "contrast" | "shadows" | "white" | "black" | "vibrance" | "saturation" | "border" | "cornerradius";
2
+ type ToggleEffect = {
3
+ enabled: boolean;
4
+ value: number;
5
+ };
6
+ type BorderEffect = {
7
+ enabled: boolean;
8
+ value: number;
9
+ color: string;
10
+ };
11
+ export type ShadowEffect = {
12
+ enabled: boolean;
13
+ blur: number;
14
+ offsetX: number;
15
+ offsetY: number;
16
+ opacity: number;
17
+ color: string;
18
+ };
19
+ interface EffectStore {
20
+ blur: ToggleEffect;
21
+ brightness: ToggleEffect;
22
+ temperature: ToggleEffect;
23
+ contrast: ToggleEffect;
24
+ shadows: ToggleEffect;
25
+ white: ToggleEffect;
26
+ black: ToggleEffect;
27
+ vibrance: ToggleEffect;
28
+ saturation: ToggleEffect;
29
+ border: BorderEffect;
30
+ cornerradius: ToggleEffect;
31
+ shadow: ShadowEffect;
32
+ toggle: (key: NumericEffectKey) => void;
33
+ setValue: (key: NumericEffectKey, value: number) => void;
34
+ setBorderColor: (color: string) => void;
35
+ toggleShadow: () => void;
36
+ setShadow: (value: Partial<ShadowEffect>) => void;
37
+ reset: () => void;
38
+ setEffect: (key: NumericEffectKey, enabled: boolean, value: number) => void;
39
+ replaceState: (state: Partial<EffectStore>) => void;
40
+ }
41
+ export declare const initialState: Omit<EffectStore, "toggle" | "setValue" | "setBorderColor" | "toggleShadow" | "setShadow" | "reset" | "setEffect" | "replaceState">;
42
+ export declare const useEffectStore: import('zustand').UseBoundStore<import('zustand').StoreApi<EffectStore>>;
43
+ export {};
@@ -0,0 +1,20 @@
1
+ import { Canvas } from 'fabric';
2
+ export type PageSide = "front" | "back";
3
+ interface PageHistory {
4
+ history: any[];
5
+ redo: any[];
6
+ background?: string;
7
+ }
8
+ interface HistoryState {
9
+ canvas: Canvas | null;
10
+ currentPage: PageSide;
11
+ isRestoring: boolean;
12
+ pages: Record<PageSide, PageHistory>;
13
+ setCanvas: (canvas: Canvas) => void;
14
+ setPage: (page: PageSide) => void;
15
+ saveState: () => void;
16
+ undo: () => void;
17
+ redoAction: () => void;
18
+ }
19
+ export declare const useHistoryStore: import('zustand').UseBoundStore<import('zustand').StoreApi<HistoryState>>;
20
+ export {};
@@ -0,0 +1,8 @@
1
+ interface LoaderState {
2
+ isLoading: boolean;
3
+ startLoading: () => void;
4
+ stopLoading: () => void;
5
+ setLoading: (value: boolean) => void;
6
+ }
7
+ export declare const useLoaderStore: import('zustand').UseBoundStore<import('zustand').StoreApi<LoaderState>>;
8
+ export {};
@@ -0,0 +1,10 @@
1
+ import { FabricObject } from 'fabric';
2
+ export type SelectionType = "none" | "textbox" | "image" | "qr" | "multiple" | "group";
3
+ interface SelectionStore {
4
+ type: SelectionType;
5
+ objects: FabricObject[];
6
+ setSelection: (objects: FabricObject[]) => void;
7
+ clearSelection: () => void;
8
+ }
9
+ export declare const useSelectionStore: import('zustand').UseBoundStore<import('zustand').StoreApi<SelectionStore>>;
10
+ export {};
@@ -0,0 +1,8 @@
1
+ type SidePanelState = {
2
+ activePanel: string | null;
3
+ };
4
+ type SidePanelActions = {
5
+ setActivePanel: (data: string | null) => void;
6
+ };
7
+ export declare const useSidePanelStore: import('zustand').UseBoundStore<import('zustand').StoreApi<SidePanelState & SidePanelActions>>;
8
+ export {};
@@ -0,0 +1,19 @@
1
+ interface TourState {
2
+ hasSeenStaticTour: boolean;
3
+ markSeen: () => void;
4
+ reset: () => void;
5
+ }
6
+ export declare const useTourStore: import('zustand').UseBoundStore<Omit<import('zustand').StoreApi<TourState>, "setState" | "persist"> & {
7
+ setState(partial: TourState | Partial<TourState> | ((state: TourState) => TourState | Partial<TourState>), replace?: false | undefined): unknown;
8
+ setState(state: TourState | ((state: TourState) => TourState), replace: true): unknown;
9
+ persist: {
10
+ setOptions: (options: Partial<import('zustand/middleware').PersistOptions<TourState, TourState, unknown>>) => void;
11
+ clearStorage: () => void;
12
+ rehydrate: () => Promise<void> | void;
13
+ hasHydrated: () => boolean;
14
+ onHydrate: (fn: (state: TourState) => void) => () => void;
15
+ onFinishHydration: (fn: (state: TourState) => void) => () => void;
16
+ getOptions: () => Partial<import('zustand/middleware').PersistOptions<TourState, TourState, unknown>>;
17
+ };
18
+ }>;
19
+ export {};
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "vibrant-tool",
3
+ "version": "0.1.1",
4
+ "description": "Vibrant design editor (Vite + React)",
5
+ "type": "module",
6
+ "main": "./dist/vibrant-tool.umd.js",
7
+ "module": "./dist/vibrant-tool.es.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/vibrant-tool.es.js",
13
+ "require": "./dist/vibrant-tool.umd.js"
14
+ },
15
+ "./dist/vibrant-tool.css": "./dist/vibrant-tool.css"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "scripts": {
21
+ "dev": "vite",
22
+ "build": "vite build --mode lib",
23
+ "preview:build": "vite build",
24
+ "preview": "vite preview",
25
+ "lint": "eslint .",
26
+ "prepare": "npm run build"
27
+ },
28
+ "publishConfig": {
29
+ "access": "public"
30
+ },
31
+ "dependencies": {
32
+ "@react-oauth/google": "^0.13.4",
33
+ "bwip-js": "^4.8.0",
34
+ "driver.js": "^1.4.0",
35
+ "dropbox": "^10.34.0",
36
+ "fabric": "^6.9.0",
37
+ "firebase": "^12.9.0",
38
+ "gapi-script": "^1.2.0",
39
+ "pdfmake": "^0.3.3",
40
+ "qrcode": "^1.5.4",
41
+ "qrcode.react": "^4.2.0",
42
+ "react-loader-spinner": "^8.0.2",
43
+ "zustand": "^5.0.10"
44
+ },
45
+ "peerDependencies": {
46
+ "react": ">=18",
47
+ "react-dom": ">=18"
48
+ },
49
+ "devDependencies": {
50
+ "@tailwindcss/vite": "^4.2.1",
51
+ "@types/gapi": "^0.0.47",
52
+ "@types/gapi.auth2": "^0.0.61",
53
+ "@types/gapi.client.drive": "^3.0.15",
54
+ "@types/gapi.client.photoslibrary": "^1.0.0",
55
+ "@types/node": "^22",
56
+ "@types/pdfmake": "^0.3.1",
57
+ "@types/qrcode": "^1.5.6",
58
+ "@types/react": "^19.2.14",
59
+ "@types/react-dom": "^19.2.3",
60
+ "@vitejs/plugin-react": "^5.1.4",
61
+ "cross-env": "^7.0.3",
62
+ "eslint": "^9",
63
+ "eslint-plugin-react-hooks": "^5.0.0",
64
+ "eslint-plugin-react-refresh": "^0.4.14",
65
+ "react": "^19.2.4",
66
+ "react-dom": "^19.2.4",
67
+ "tailwindcss": "^4.2.1",
68
+ "typescript": "^5.9.3",
69
+ "vite": "^7.3.1",
70
+ "vite-plugin-dts": "^4.5.4"
71
+ }
72
+ }