Просмотр исходного кода

chore: Update Typescript to 4.4.4 (#4188)

vanilla_orig
Lipis 3 лет назад
Родитель
Сommit
8d4f455cd3
Аккаунт пользователя с таким Email не найден

+ 2
- 1
.eslintrc.json Просмотреть файл

1
 {
1
 {
2
   "extends": ["@excalidraw/eslint-config", "react-app"],
2
   "extends": ["@excalidraw/eslint-config", "react-app"],
3
   "rules": {
3
   "rules": {
4
-    "import/no-anonymous-default-export": "off"
4
+    "import/no-anonymous-default-export": "off",
5
+    "no-restricted-globals": "off"
5
   }
6
   }
6
 }
7
 }

+ 5
- 1
package.json Просмотреть файл

52
     "roughjs": "4.4.1",
52
     "roughjs": "4.4.1",
53
     "sass": "1.43.4",
53
     "sass": "1.43.4",
54
     "socket.io-client": "2.3.1",
54
     "socket.io-client": "2.3.1",
55
-    "typescript": "4.2.4"
55
+    "typescript": "4.4.4"
56
   },
56
   },
57
   "devDependencies": {
57
   "devDependencies": {
58
     "@excalidraw/eslint-config": "1.0.0",
58
     "@excalidraw/eslint-config": "1.0.0",
61
     "@types/lodash.throttle": "4.1.6",
61
     "@types/lodash.throttle": "4.1.6",
62
     "@types/pako": "1.0.2",
62
     "@types/pako": "1.0.2",
63
     "@types/resize-observer-browser": "0.1.6",
63
     "@types/resize-observer-browser": "0.1.6",
64
+    "@types/web": "0.0.45",
64
     "chai": "4.3.4",
65
     "chai": "4.3.4",
65
     "eslint-config-prettier": "8.3.0",
66
     "eslint-config-prettier": "8.3.0",
66
     "eslint-plugin-prettier": "3.3.1",
67
     "eslint-plugin-prettier": "3.3.1",
72
     "prettier": "2.4.1",
73
     "prettier": "2.4.1",
73
     "rewire": "5.0.0"
74
     "rewire": "5.0.0"
74
   },
75
   },
76
+  "resolutions": {
77
+    "@typescript-eslint/typescript-estree": "5.3.0"
78
+  },
75
   "engines": {
79
   "engines": {
76
     "node": ">=14.0.0"
80
     "node": ">=14.0.0"
77
   },
81
   },

+ 2
- 2
scripts/autorelease.js Просмотреть файл

15
     execSync(`yarn --frozen-lockfile`, { cwd: excalidrawDir });
15
     execSync(`yarn --frozen-lockfile`, { cwd: excalidrawDir });
16
     execSync(`yarn run build:umd`, { cwd: excalidrawDir });
16
     execSync(`yarn run build:umd`, { cwd: excalidrawDir });
17
     execSync(`yarn --cwd ${excalidrawDir} publish`);
17
     execSync(`yarn --cwd ${excalidrawDir} publish`);
18
-  } catch (e) {
19
-    console.error(e);
18
+  } catch (error) {
19
+    console.error(error);
20
   }
20
   }
21
 };
21
 };
22
 
22
 

+ 2
- 2
scripts/release.js Просмотреть файл

25
     );
25
     );
26
     /* eslint-disable no-console */
26
     /* eslint-disable no-console */
27
     console.log("Done!");
27
     console.log("Done!");
28
-  } catch (e) {
29
-    console.error(e);
28
+  } catch (error) {
29
+    console.error(error);
30
     process.exit(1);
30
     process.exit(1);
31
   }
31
   }
32
 };
32
 };

+ 2
- 2
scripts/updateChangelog.js Просмотреть файл

28
       `git log --format=format:"%H" --grep=${commitMessage}`,
28
       `git log --format=format:"%H" --grep=${commitMessage}`,
29
     );
29
     );
30
     return stdout;
30
     return stdout;
31
-  } catch (e) {
32
-    console.error(e);
31
+  } catch (error) {
32
+    console.error(error);
33
   }
33
   }
34
 };
34
 };
35
 
35
 

+ 2
- 2
src/actions/actionClipboard.tsx Просмотреть файл

56
       return {
56
       return {
57
         commitToHistory: false,
57
         commitToHistory: false,
58
       };
58
       };
59
-    } catch (error) {
59
+    } catch (error: any) {
60
       console.error(error);
60
       console.error(error);
61
       return {
61
       return {
62
         appState: {
62
         appState: {
106
         },
106
         },
107
         commitToHistory: false,
107
         commitToHistory: false,
108
       };
108
       };
109
-    } catch (error) {
109
+    } catch (error: any) {
110
       console.error(error);
110
       console.error(error);
111
       return {
111
       return {
112
         appState: {
112
         appState: {

+ 3
- 3
src/actions/actionExport.tsx Просмотреть файл

151
             : null,
151
             : null,
152
         },
152
         },
153
       };
153
       };
154
-    } catch (error) {
154
+    } catch (error: any) {
155
       if (error?.name !== "AbortError") {
155
       if (error?.name !== "AbortError") {
156
         console.error(error);
156
         console.error(error);
157
       }
157
       }
181
         app.files,
181
         app.files,
182
       );
182
       );
183
       return { commitToHistory: false, appState: { ...appState, fileHandle } };
183
       return { commitToHistory: false, appState: { ...appState, fileHandle } };
184
-    } catch (error) {
184
+    } catch (error: any) {
185
       if (error?.name !== "AbortError") {
185
       if (error?.name !== "AbortError") {
186
         console.error(error);
186
         console.error(error);
187
       }
187
       }
219
         files,
219
         files,
220
         commitToHistory: true,
220
         commitToHistory: true,
221
       };
221
       };
222
-    } catch (error) {
222
+    } catch (error: any) {
223
       if (error?.name === "AbortError") {
223
       if (error?.name === "AbortError") {
224
         return false;
224
         return false;
225
       }
225
       }

+ 4
- 4
src/clipboard.ts Просмотреть файл

74
   try {
74
   try {
75
     PREFER_APP_CLIPBOARD = false;
75
     PREFER_APP_CLIPBOARD = false;
76
     await copyTextToSystemClipboard(json);
76
     await copyTextToSystemClipboard(json);
77
-  } catch (error) {
77
+  } catch (error: any) {
78
     PREFER_APP_CLIPBOARD = true;
78
     PREFER_APP_CLIPBOARD = true;
79
     console.error(error);
79
     console.error(error);
80
   }
80
   }
87
 
87
 
88
   try {
88
   try {
89
     return JSON.parse(CLIPBOARD);
89
     return JSON.parse(CLIPBOARD);
90
-  } catch (error) {
90
+  } catch (error: any) {
91
     console.error(error);
91
     console.error(error);
92
     return {};
92
     return {};
93
   }
93
   }
179
       // not focused
179
       // not focused
180
       await navigator.clipboard.writeText(text || "");
180
       await navigator.clipboard.writeText(text || "");
181
       copied = true;
181
       copied = true;
182
-    } catch (error) {
182
+    } catch (error: any) {
183
       console.error(error);
183
       console.error(error);
184
     }
184
     }
185
   }
185
   }
219
     textarea.setSelectionRange(0, textarea.value.length);
219
     textarea.setSelectionRange(0, textarea.value.length);
220
 
220
 
221
     success = document.execCommand("copy");
221
     success = document.execCommand("copy");
222
-  } catch (error) {
222
+  } catch (error: any) {
223
     console.error(error);
223
     console.error(error);
224
   }
224
   }
225
 
225
 

+ 10
- 10
src/components/App.tsx Просмотреть файл

621
     this.onBlur();
621
     this.onBlur();
622
   };
622
   };
623
 
623
 
624
-  private disableEvent: EventHandlerNonNull = (event) => {
624
+  private disableEvent: EventListener = (event) => {
625
     event.preventDefault();
625
     event.preventDefault();
626
   };
626
   };
627
 
627
 
665
         }
665
         }
666
         this.setState({ isLibraryOpen: true });
666
         this.setState({ isLibraryOpen: true });
667
       }
667
       }
668
-    } catch (error) {
668
+    } catch (error: any) {
669
       window.alert(t("alerts.errorLoadingLibrary"));
669
       window.alert(t("alerts.errorLoadingLibrary"));
670
       console.error(error);
670
       console.error(error);
671
     } finally {
671
     } finally {
1294
           if ((await this.props.onPaste(data, event)) === false) {
1294
           if ((await this.props.onPaste(data, event)) === false) {
1295
             return;
1295
             return;
1296
           }
1296
           }
1297
-        } catch (e) {
1298
-          console.error(e);
1297
+        } catch (error: any) {
1298
+          console.error(error);
1299
         }
1299
         }
1300
       }
1300
       }
1301
       if (data.errorMessage) {
1301
       if (data.errorMessage) {
3705
               this.actionManager.executeAction(actionFinalize);
3705
               this.actionManager.executeAction(actionFinalize);
3706
             },
3706
             },
3707
           );
3707
           );
3708
-        } catch (error) {
3708
+        } catch (error: any) {
3709
           console.error(error);
3709
           console.error(error);
3710
           this.scene.replaceAllElements(
3710
           this.scene.replaceAllElements(
3711
             this.scene
3711
             this.scene
3974
           await normalizeSVG(await imageFile.text()),
3974
           await normalizeSVG(await imageFile.text()),
3975
           imageFile.name,
3975
           imageFile.name,
3976
         );
3976
         );
3977
-      } catch (error) {
3977
+      } catch (error: any) {
3978
         console.warn(error);
3978
         console.warn(error);
3979
         throw new Error(t("errors.svgImageInsertError"));
3979
         throw new Error(t("errors.svgImageInsertError"));
3980
       }
3980
       }
4000
           imageFile,
4000
           imageFile,
4001
           DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT,
4001
           DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT,
4002
         );
4002
         );
4003
-      } catch (error) {
4003
+      } catch (error: any) {
4004
         console.error("error trying to resing image file on insertion", error);
4004
         console.error("error trying to resing image file on insertion", error);
4005
       }
4005
       }
4006
 
4006
 
4061
             this.initializeImageDimensions(imageElement, true);
4061
             this.initializeImageDimensions(imageElement, true);
4062
           }
4062
           }
4063
           resolve(imageElement);
4063
           resolve(imageElement);
4064
-        } catch (error) {
4064
+        } catch (error: any) {
4065
           console.error(error);
4065
           console.error(error);
4066
           reject(new Error(t("errors.imageInsertError")));
4066
           reject(new Error(t("errors.imageInsertError")));
4067
         } finally {
4067
         } finally {
4092
         imageElement,
4092
         imageElement,
4093
         showCursorImagePreview,
4093
         showCursorImagePreview,
4094
       });
4094
       });
4095
-    } catch (error) {
4095
+    } catch (error: any) {
4096
       mutateElement(imageElement, {
4096
       mutateElement(imageElement, {
4097
         isDeleted: true,
4097
         isDeleted: true,
4098
       });
4098
       });
4187
           },
4187
           },
4188
         );
4188
         );
4189
       }
4189
       }
4190
-    } catch (error) {
4190
+    } catch (error: any) {
4191
       if (error.name !== "AbortError") {
4191
       if (error.name !== "AbortError") {
4192
         console.error(error);
4192
         console.error(error);
4193
       }
4193
       }

+ 1
- 1
src/components/ToolButton.tsx Просмотреть файл

61
       try {
61
       try {
62
         setIsLoading(true);
62
         setIsLoading(true);
63
         await ret;
63
         await ret;
64
-      } catch (error) {
64
+      } catch (error: any) {
65
         if (!(error instanceof AbortError)) {
65
         if (!(error instanceof AbortError)) {
66
           throw error;
66
           throw error;
67
         }
67
         }

+ 3
- 3
src/components/TopErrorBoundary.tsx Просмотреть файл

27
     for (const [key, value] of Object.entries({ ...localStorage })) {
27
     for (const [key, value] of Object.entries({ ...localStorage })) {
28
       try {
28
       try {
29
         _localStorage[key] = JSON.parse(value);
29
         _localStorage[key] = JSON.parse(value);
30
-      } catch (error) {
30
+      } catch (error: any) {
31
         _localStorage[key] = value;
31
         _localStorage[key] = value;
32
       }
32
       }
33
     }
33
     }
60
         )
60
         )
61
       ).default;
61
       ).default;
62
       body = encodeURIComponent(templateStrFn(this.state.sentryEventId));
62
       body = encodeURIComponent(templateStrFn(this.state.sentryEventId));
63
-    } catch (error) {
63
+    } catch (error: any) {
64
       console.error(error);
64
       console.error(error);
65
     }
65
     }
66
 
66
 
86
                 try {
86
                 try {
87
                   localStorage.clear();
87
                   localStorage.clear();
88
                   window.location.reload();
88
                   window.location.reload();
89
-                } catch (error) {
89
+                } catch (error: any) {
90
                   console.error(error);
90
                   console.error(error);
91
                 }
91
                 }
92
               }}
92
               }}

+ 5
- 5
src/data/blob.ts Просмотреть файл

24
       return await (
24
       return await (
25
         await import(/* webpackChunkName: "image" */ "./image")
25
         await import(/* webpackChunkName: "image" */ "./image")
26
       ).decodePngMetadata(blob);
26
       ).decodePngMetadata(blob);
27
-    } catch (error) {
27
+    } catch (error: any) {
28
       if (error.message === "INVALID") {
28
       if (error.message === "INVALID") {
29
         throw new DOMException(
29
         throw new DOMException(
30
           t("alerts.imageDoesNotContainScene"),
30
           t("alerts.imageDoesNotContainScene"),
58
         ).decodeSvgMetadata({
58
         ).decodeSvgMetadata({
59
           svg: contents,
59
           svg: contents,
60
         });
60
         });
61
-      } catch (error) {
61
+      } catch (error: any) {
62
         if (error.message === "INVALID") {
62
         if (error.message === "INVALID") {
63
           throw new DOMException(
63
           throw new DOMException(
64
             t("alerts.imageDoesNotContainScene"),
64
             t("alerts.imageDoesNotContainScene"),
156
     );
156
     );
157
 
157
 
158
     return result;
158
     return result;
159
-  } catch (error) {
159
+  } catch (error: any) {
160
     console.error(error.message);
160
     console.error(error.message);
161
     throw new Error(t("alerts.couldNotLoadInvalidFile"));
161
     throw new Error(t("alerts.couldNotLoadInvalidFile"));
162
   }
162
   }
187
         }
187
         }
188
         resolve(blob);
188
         resolve(blob);
189
       });
189
       });
190
-    } catch (error) {
190
+    } catch (error: any) {
191
       reject(error);
191
       reject(error);
192
     }
192
     }
193
   });
193
   });
208
         // convert to hex string
208
         // convert to hex string
209
         .map((byte) => byte.toString(16).padStart(2, "0"))
209
         .map((byte) => byte.toString(16).padStart(2, "0"))
210
         .join("") as FileId;
210
         .join("") as FileId;
211
-  } catch (error) {
211
+  } catch (error: any) {
212
     console.error(error);
212
     console.error(error);
213
     // length 40 to align with the HEX length of SHA-1 (which is 160 bit)
213
     // length 40 to align with the HEX length of SHA-1 (which is 160 bit)
214
     id = nanoid(40) as FileId;
214
     id = nanoid(40) as FileId;

+ 2
- 2
src/data/encode.ts Просмотреть файл

85
   if (compress !== false) {
85
   if (compress !== false) {
86
     try {
86
     try {
87
       deflated = await toByteString(deflate(text));
87
       deflated = await toByteString(deflate(text));
88
-    } catch (error) {
88
+    } catch (error: any) {
89
       console.error("encode: cannot deflate", error);
89
       console.error("encode: cannot deflate", error);
90
     }
90
     }
91
   }
91
   }
367
       /** data can be anything so the caller must decode it */
367
       /** data can be anything so the caller must decode it */
368
       data: contentsBuffer,
368
       data: contentsBuffer,
369
     };
369
     };
370
-  } catch (error) {
370
+  } catch (error: any) {
371
     console.error(
371
     console.error(
372
       `Error during decompressing and decrypting the file.`,
372
       `Error during decompressing and decrypting the file.`,
373
       encodingMetadata,
373
       encodingMetadata,

+ 2
- 2
src/data/image.ts Просмотреть файл

76
         throw new Error("FAILED");
76
         throw new Error("FAILED");
77
       }
77
       }
78
       return await decode(encodedData);
78
       return await decode(encodedData);
79
-    } catch (error) {
79
+    } catch (error: any) {
80
       console.error(error);
80
       console.error(error);
81
       throw new Error("FAILED");
81
       throw new Error("FAILED");
82
     }
82
     }
127
         throw new Error("FAILED");
127
         throw new Error("FAILED");
128
       }
128
       }
129
       return await decode(encodedData);
129
       return await decode(encodedData);
130
-    } catch (error) {
130
+    } catch (error: any) {
131
       console.error(error);
131
       console.error(error);
132
       throw new Error("FAILED");
132
       throw new Error("FAILED");
133
     }
133
     }

+ 1
- 1
src/data/index.ts Просмотреть файл

93
   } else if (type === "clipboard") {
93
   } else if (type === "clipboard") {
94
     try {
94
     try {
95
       await copyBlobToClipboardAsPng(blob);
95
       await copyBlobToClipboardAsPng(blob);
96
-    } catch (error) {
96
+    } catch (error: any) {
97
       if (error.name === "CANVAS_POSSIBLY_TOO_BIG") {
97
       if (error.name === "CANVAS_POSSIBLY_TOO_BIG") {
98
         throw error;
98
         throw error;
99
       }
99
       }

+ 2
- 2
src/data/library.ts Просмотреть файл

90
         this.libraryCache = JSON.parse(JSON.stringify(items));
90
         this.libraryCache = JSON.parse(JSON.stringify(items));
91
 
91
 
92
         resolve(items);
92
         resolve(items);
93
-      } catch (error) {
93
+      } catch (error: any) {
94
         console.error(error);
94
         console.error(error);
95
         resolve([]);
95
         resolve([]);
96
       }
96
       }
105
       // immediately
105
       // immediately
106
       this.libraryCache = JSON.parse(serializedItems);
106
       this.libraryCache = JSON.parse(serializedItems);
107
       await this.app.props.onLibraryChange?.(items);
107
       await this.app.props.onLibraryChange?.(items);
108
-    } catch (error) {
108
+    } catch (error: any) {
109
       this.libraryCache = prevLibraryItems;
109
       this.libraryCache = prevLibraryItems;
110
       throw error;
110
       throw error;
111
     }
111
     }

+ 1
- 1
src/element/image.ts Просмотреть файл

63
               const image = await imagePromise;
63
               const image = await imagePromise;
64
 
64
 
65
               imageCache.set(fileId, { ...data, image });
65
               imageCache.set(fileId, { ...data, image });
66
-            } catch (error) {
66
+            } catch (error: any) {
67
               erroredFiles.set(fileId, true);
67
               erroredFiles.set(fileId, true);
68
             }
68
             }
69
           })(),
69
           })(),

+ 2
- 2
src/excalidraw-app/collab/CollabWrapper.tsx Просмотреть файл

230
   ) => {
230
   ) => {
231
     try {
231
     try {
232
       await saveToFirebase(this.portal, syncableElements);
232
       await saveToFirebase(this.portal, syncableElements);
233
-    } catch (error) {
233
+    } catch (error: any) {
234
       console.error(error);
234
       console.error(error);
235
     }
235
     }
236
   };
236
   };
347
             scrollToContent: true,
347
             scrollToContent: true,
348
           });
348
           });
349
         }
349
         }
350
-      } catch (error) {
350
+      } catch (error: any) {
351
         // log the error and move on. other peers will sync us the scene.
351
         // log the error and move on. other peers will sync us the scene.
352
         console.error(error);
352
         console.error(error);
353
       }
353
       }

+ 1
- 1
src/excalidraw-app/collab/Portal.tsx Просмотреть файл

95
         elements: this.collab.excalidrawAPI.getSceneElementsIncludingDeleted(),
95
         elements: this.collab.excalidrawAPI.getSceneElementsIncludingDeleted(),
96
         files: this.collab.excalidrawAPI.getFiles(),
96
         files: this.collab.excalidrawAPI.getFiles(),
97
       });
97
       });
98
-    } catch (error) {
98
+    } catch (error: any) {
99
       if (error.name !== "AbortError") {
99
       if (error.name !== "AbortError") {
100
         this.collab.excalidrawAPI.updateScene({
100
         this.collab.excalidrawAPI.updateScene({
101
           appState: {
101
           appState: {

+ 2
- 2
src/excalidraw-app/collab/RoomDialog.tsx Просмотреть файл

53
   const copyRoomLink = async () => {
53
   const copyRoomLink = async () => {
54
     try {
54
     try {
55
       await copyTextToSystemClipboard(activeRoomLink);
55
       await copyTextToSystemClipboard(activeRoomLink);
56
-    } catch (error) {
56
+    } catch (error: any) {
57
       setErrorMessage(error.message);
57
       setErrorMessage(error.message);
58
     }
58
     }
59
     if (roomLinkInput.current) {
59
     if (roomLinkInput.current) {
68
         text: t("roomDialog.shareTitle"),
68
         text: t("roomDialog.shareTitle"),
69
         url: activeRoomLink,
69
         url: activeRoomLink,
70
       });
70
       });
71
-    } catch (error) {
71
+    } catch (error: any) {
72
       // Just ignore.
72
       // Just ignore.
73
     }
73
     }
74
   };
74
   };

+ 1
- 1
src/excalidraw-app/components/ExportToExcalidrawPlus.tsx Просмотреть файл

93
         onClick={async () => {
93
         onClick={async () => {
94
           try {
94
           try {
95
             await exportToExcalidrawPlus(elements, appState, files);
95
             await exportToExcalidrawPlus(elements, appState, files);
96
-          } catch (error) {
96
+          } catch (error: any) {
97
             console.error(error);
97
             console.error(error);
98
             if (error.name !== "AbortError") {
98
             if (error.name !== "AbortError") {
99
               onError(new Error(t("exportDialog.excalidrawplus_exportError")));
99
               onError(new Error(t("exportDialog.excalidrawplus_exportError")));

+ 3
- 3
src/excalidraw-app/data/firebase.ts Просмотреть файл

28
   if (!isFirebaseInitialized) {
28
   if (!isFirebaseInitialized) {
29
     try {
29
     try {
30
       firebase.initializeApp(FIREBASE_CONFIG);
30
       firebase.initializeApp(FIREBASE_CONFIG);
31
-    } catch (error) {
31
+    } catch (error: any) {
32
       // trying initialize again throws. Usually this is harmless, and happens
32
       // trying initialize again throws. Usually this is harmless, and happens
33
       // mainly in dev (HMR)
33
       // mainly in dev (HMR)
34
       if (error.code === "app/duplicate-app") {
34
       if (error.code === "app/duplicate-app") {
172
             },
172
             },
173
           );
173
           );
174
         savedFiles.set(id, true);
174
         savedFiles.set(id, true);
175
-      } catch (error) {
175
+      } catch (error: any) {
176
         erroredFiles.set(id, true);
176
         erroredFiles.set(id, true);
177
       }
177
       }
178
     }),
178
     }),
296
         } else {
296
         } else {
297
           erroredFiles.set(id, true);
297
           erroredFiles.set(id, true);
298
         }
298
         }
299
-      } catch (error) {
299
+      } catch (error: any) {
300
         erroredFiles.set(id, true);
300
         erroredFiles.set(id, true);
301
         console.error(error);
301
         console.error(error);
302
       }
302
       }

+ 4
- 4
src/excalidraw-app/data/index.ts Просмотреть файл

122
       new Uint8Array(decrypted),
122
       new Uint8Array(decrypted),
123
     );
123
     );
124
     return JSON.parse(decodedData);
124
     return JSON.parse(decodedData);
125
-  } catch (error) {
125
+  } catch (error: any) {
126
     window.alert(t("alerts.decryptFailed"));
126
     window.alert(t("alerts.decryptFailed"));
127
     console.error(error);
127
     console.error(error);
128
   }
128
   }
198
         const iv = buffer.slice(0, IV_LENGTH_BYTES);
198
         const iv = buffer.slice(0, IV_LENGTH_BYTES);
199
         const encrypted = buffer.slice(IV_LENGTH_BYTES, buffer.byteLength);
199
         const encrypted = buffer.slice(IV_LENGTH_BYTES, buffer.byteLength);
200
         decrypted = await decryptImported(iv, encrypted, privateKey);
200
         decrypted = await decryptImported(iv, encrypted, privateKey);
201
-      } catch (error) {
201
+      } catch (error: any) {
202
         // Fixed IV (old format, backward compatibility)
202
         // Fixed IV (old format, backward compatibility)
203
         const fixedIv = new Uint8Array(IV_LENGTH_BYTES);
203
         const fixedIv = new Uint8Array(IV_LENGTH_BYTES);
204
         decrypted = await decryptImported(fixedIv, buffer, privateKey);
204
         decrypted = await decryptImported(fixedIv, buffer, privateKey);
218
       elements: data.elements || null,
218
       elements: data.elements || null,
219
       appState: data.appState || null,
219
       appState: data.appState || null,
220
     };
220
     };
221
-  } catch (error) {
221
+  } catch (error: any) {
222
     window.alert(t("alerts.importBackendFailed"));
222
     window.alert(t("alerts.importBackendFailed"));
223
     console.error(error);
223
     console.error(error);
224
     return {};
224
     return {};
333
     } else {
333
     } else {
334
       window.alert(t("alerts.couldNotCreateShareableLink"));
334
       window.alert(t("alerts.couldNotCreateShareableLink"));
335
     }
335
     }
336
-  } catch (error) {
336
+  } catch (error: any) {
337
     console.error(error);
337
     console.error(error);
338
     window.alert(t("alerts.couldNotCreateShareableLink"));
338
     window.alert(t("alerts.couldNotCreateShareableLink"));
339
   }
339
   }

+ 8
- 8
src/excalidraw-app/data/localStorage.ts Просмотреть файл

20
       STORAGE_KEYS.LOCAL_STORAGE_COLLAB,
20
       STORAGE_KEYS.LOCAL_STORAGE_COLLAB,
21
       JSON.stringify({ username }),
21
       JSON.stringify({ username }),
22
     );
22
     );
23
-  } catch (error) {
23
+  } catch (error: any) {
24
     // Unable to access window.localStorage
24
     // Unable to access window.localStorage
25
     console.error(error);
25
     console.error(error);
26
   }
26
   }
32
     if (data) {
32
     if (data) {
33
       return JSON.parse(data).username;
33
       return JSON.parse(data).username;
34
     }
34
     }
35
-  } catch (error) {
35
+  } catch (error: any) {
36
     // Unable to access localStorage
36
     // Unable to access localStorage
37
     console.error(error);
37
     console.error(error);
38
   }
38
   }
53
       STORAGE_KEYS.LOCAL_STORAGE_APP_STATE,
53
       STORAGE_KEYS.LOCAL_STORAGE_APP_STATE,
54
       JSON.stringify(clearAppStateForLocalStorage(appState)),
54
       JSON.stringify(clearAppStateForLocalStorage(appState)),
55
     );
55
     );
56
-  } catch (error) {
56
+  } catch (error: any) {
57
     // Unable to access window.localStorage
57
     // Unable to access window.localStorage
58
     console.error(error);
58
     console.error(error);
59
   }
59
   }
66
   try {
66
   try {
67
     savedElements = localStorage.getItem(STORAGE_KEYS.LOCAL_STORAGE_ELEMENTS);
67
     savedElements = localStorage.getItem(STORAGE_KEYS.LOCAL_STORAGE_ELEMENTS);
68
     savedState = localStorage.getItem(STORAGE_KEYS.LOCAL_STORAGE_APP_STATE);
68
     savedState = localStorage.getItem(STORAGE_KEYS.LOCAL_STORAGE_APP_STATE);
69
-  } catch (error) {
69
+  } catch (error: any) {
70
     // Unable to access localStorage
70
     // Unable to access localStorage
71
     console.error(error);
71
     console.error(error);
72
   }
72
   }
75
   if (savedElements) {
75
   if (savedElements) {
76
     try {
76
     try {
77
       elements = clearElementsForLocalStorage(JSON.parse(savedElements));
77
       elements = clearElementsForLocalStorage(JSON.parse(savedElements));
78
-    } catch (error) {
78
+    } catch (error: any) {
79
       console.error(error);
79
       console.error(error);
80
       // Do nothing because elements array is already empty
80
       // Do nothing because elements array is already empty
81
     }
81
     }
90
           JSON.parse(savedState) as Partial<AppState>,
90
           JSON.parse(savedState) as Partial<AppState>,
91
         ),
91
         ),
92
       };
92
       };
93
-    } catch (error) {
93
+    } catch (error: any) {
94
       console.error(error);
94
       console.error(error);
95
       // Do nothing because appState is already null
95
       // Do nothing because appState is already null
96
     }
96
     }
103
     const elements = localStorage.getItem(STORAGE_KEYS.LOCAL_STORAGE_ELEMENTS);
103
     const elements = localStorage.getItem(STORAGE_KEYS.LOCAL_STORAGE_ELEMENTS);
104
     const elementsSize = elements?.length || 0;
104
     const elementsSize = elements?.length || 0;
105
     return elementsSize;
105
     return elementsSize;
106
-  } catch (error) {
106
+  } catch (error: any) {
107
     console.error(error);
107
     console.error(error);
108
     return 0;
108
     return 0;
109
   }
109
   }
122
     const librarySize = library?.length || 0;
122
     const librarySize = library?.length || 0;
123
 
123
 
124
     return appStateSize + collabSize + librarySize + getElementsStorageSize();
124
     return appStateSize + collabSize + librarySize + getElementsStorageSize();
125
-  } catch (error) {
125
+  } catch (error: any) {
126
     console.error(error);
126
     console.error(error);
127
     return 0;
127
     return 0;
128
   }
128
   }

+ 5
- 5
src/excalidraw-app/index.tsx Просмотреть файл

109
         try {
109
         try {
110
           await set(id, fileData, filesStore);
110
           await set(id, fileData, filesStore);
111
           savedFiles.set(id, true);
111
           savedFiles.set(id, true);
112
-        } catch (error) {
112
+        } catch (error: any) {
113
           console.error(error);
113
           console.error(error);
114
           erroredFiles.set(id, true);
114
           erroredFiles.set(id, true);
115
         }
115
         }
228
       ) {
228
       ) {
229
         return { scene: data, isExternalScene };
229
         return { scene: data, isExternalScene };
230
       }
230
       }
231
-    } catch (error) {
231
+    } catch (error: any) {
232
       return {
232
       return {
233
         scene: {
233
         scene: {
234
           appState: {
234
           appState: {
377
           JSON.parse(
377
           JSON.parse(
378
             localStorage.getItem(STORAGE_KEYS.LOCAL_STORAGE_LIBRARY) as string,
378
             localStorage.getItem(STORAGE_KEYS.LOCAL_STORAGE_LIBRARY) as string,
379
           ) || [];
379
           ) || [];
380
-      } catch (e) {
381
-        console.error(e);
380
+      } catch (error: any) {
381
+        console.error(error);
382
       }
382
       }
383
     };
383
     };
384
 
384
 
508
           },
508
           },
509
           files,
509
           files,
510
         );
510
         );
511
-      } catch (error) {
511
+      } catch (error: any) {
512
         if (error.name !== "AbortError") {
512
         if (error.name !== "AbortError") {
513
           const { width, height } = canvas;
513
           const { width, height } = canvas;
514
           console.error(error, { width, height });
514
           console.error(error, { width, height });

+ 1
- 1
src/packages/excalidraw/package.json Просмотреть файл

63
     "sass-loader": "12.3.0",
63
     "sass-loader": "12.3.0",
64
     "terser-webpack-plugin": "5.2.4",
64
     "terser-webpack-plugin": "5.2.4",
65
     "ts-loader": "9.2.6",
65
     "ts-loader": "9.2.6",
66
-    "typescript": "4.3.5",
66
+    "typescript": "4.4.4",
67
     "webpack": "5.61.0",
67
     "webpack": "5.61.0",
68
     "webpack-bundle-analyzer": "4.5.0",
68
     "webpack-bundle-analyzer": "4.5.0",
69
     "webpack-cli": "4.9.1"
69
     "webpack-cli": "4.9.1"

+ 4
- 4
src/packages/excalidraw/yarn.lock Просмотреть файл

2615
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
2615
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
2616
   integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
2616
   integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
2617
 
2617
 
2618
-typescript@4.3.5:
2619
-  version "4.3.5"
2620
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4"
2621
-  integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==
2618
+typescript@4.4.4:
2619
+  version "4.4.4"
2620
+  resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c"
2621
+  integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==
2622
 
2622
 
2623
 unicode-canonical-property-names-ecmascript@^1.0.4:
2623
 unicode-canonical-property-names-ecmascript@^1.0.4:
2624
   version "1.0.4"
2624
   version "1.0.4"

+ 3
- 3
src/renderer/renderScene.ts Просмотреть файл

274
   visibleElements.forEach((element) => {
274
   visibleElements.forEach((element) => {
275
     try {
275
     try {
276
       renderElement(element, rc, context, renderOptimizations, sceneState);
276
       renderElement(element, rc, context, renderOptimizations, sceneState);
277
-    } catch (error) {
277
+    } catch (error: any) {
278
       console.error(error);
278
       console.error(error);
279
     }
279
     }
280
   });
280
   });
298
         renderOptimizations,
298
         renderOptimizations,
299
         sceneState,
299
         sceneState,
300
       );
300
       );
301
-    } catch (error) {
301
+    } catch (error: any) {
302
       console.error(error);
302
       console.error(error);
303
     }
303
     }
304
   }
304
   }
822
           element.x + offsetX,
822
           element.x + offsetX,
823
           element.y + offsetY,
823
           element.y + offsetY,
824
         );
824
         );
825
-      } catch (error) {
825
+      } catch (error: any) {
826
         console.error(error);
826
         console.error(error);
827
       }
827
       }
828
     }
828
     }

+ 2
- 2
src/scene/export.ts Просмотреть файл

109
       ).encodeSvgMetadata({
109
       ).encodeSvgMetadata({
110
         text: serializeAsJSON(elements, appState, files || {}, "local"),
110
         text: serializeAsJSON(elements, appState, files || {}, "local"),
111
       });
111
       });
112
-    } catch (err) {
113
-      console.error(err);
112
+    } catch (error: any) {
113
+      console.error(error);
114
     }
114
     }
115
   }
115
   }
116
   const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);
116
   const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);

+ 1
- 1
src/tests/helpers/api.ts Просмотреть файл

197
           resolve(reader.result as string);
197
           resolve(reader.result as string);
198
         };
198
         };
199
         reader.readAsText(blob);
199
         reader.readAsText(blob);
200
-      } catch (error) {
200
+      } catch (error: any) {
201
         reject(error);
201
         reject(error);
202
       }
202
       }
203
     });
203
     });

+ 1
- 1
src/tests/reconciliation.test.ts Просмотреть файл

98
           ),
98
           ),
99
         ),
99
         ),
100
       ).deep.equal(cleanElements(remoteReconciled), "local re-reconciliation");
100
       ).deep.equal(cleanElements(remoteReconciled), "local re-reconciliation");
101
-    } catch (error) {
101
+    } catch (error: any) {
102
       console.error("local original", __local);
102
       console.error("local original", __local);
103
       console.error("remote reconciled", __remote);
103
       console.error("remote reconciled", __remote);
104
       throw error;
104
       throw error;

+ 1
- 1
tsconfig-types.json Просмотреть файл

7
     "outDir": "src/packages/excalidraw/types",
7
     "outDir": "src/packages/excalidraw/types",
8
     "jsx": "react-jsx",
8
     "jsx": "react-jsx",
9
     "target": "es6",
9
     "target": "es6",
10
-    "lib": ["dom", "dom.iterable", "esnext"],
10
+    "lib": ["esnext"],
11
     "module": "esnext",
11
     "module": "esnext",
12
     "moduleResolution": "node",
12
     "moduleResolution": "node",
13
     "resolveJsonModule": true,
13
     "resolveJsonModule": true,

+ 1
- 1
tsconfig.json Просмотреть файл

1
 {
1
 {
2
   "compilerOptions": {
2
   "compilerOptions": {
3
     "target": "es6",
3
     "target": "es6",
4
-    "lib": ["dom", "dom.iterable", "esnext"],
4
+    "lib": ["esnext"],
5
     "allowJs": true,
5
     "allowJs": true,
6
     "skipLibCheck": true,
6
     "skipLibCheck": true,
7
     "esModuleInterop": true,
7
     "esModuleInterop": true,

+ 43
- 41
yarn.lock Просмотреть файл

2435
   dependencies:
2435
   dependencies:
2436
     source-map "^0.6.1"
2436
     source-map "^0.6.1"
2437
 
2437
 
2438
+"@types/web@0.0.45":
2439
+  version "0.0.45"
2440
+  resolved "https://registry.yarnpkg.com/@types/web/-/web-0.0.45.tgz#835adbad37e3f6f13cb4708a93f9043af1345af4"
2441
+  integrity sha512-VbDWJoWuxfnqbOU5BYQWY6hF4lT20WrcwcBKf/DrdLS2s1mEywhPgqGp6ZazZnBlHmoyZVeEyZx/+9KylQV1vg==
2442
+
2438
 "@types/webpack-sources@*":
2443
 "@types/webpack-sources@*":
2439
   version "2.1.0"
2444
   version "2.1.0"
2440
   resolved "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz"
2445
   resolved "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz"
2540
   resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.19.0.tgz"
2545
   resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.19.0.tgz"
2541
   integrity sha512-A4iAlexVvd4IBsSTNxdvdepW0D4uR/fwxDrKUa+iEY9UWvGREu2ZyB8ylTENM1SH8F7bVC9ac9+si3LWNxcBuA==
2546
   integrity sha512-A4iAlexVvd4IBsSTNxdvdepW0D4uR/fwxDrKUa+iEY9UWvGREu2ZyB8ylTENM1SH8F7bVC9ac9+si3LWNxcBuA==
2542
 
2547
 
2543
-"@typescript-eslint/typescript-estree@3.10.1":
2544
-  version "3.10.1"
2545
-  resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz"
2546
-  integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==
2547
-  dependencies:
2548
-    "@typescript-eslint/types" "3.10.1"
2549
-    "@typescript-eslint/visitor-keys" "3.10.1"
2550
-    debug "^4.1.1"
2551
-    glob "^7.1.6"
2552
-    is-glob "^4.0.1"
2553
-    lodash "^4.17.15"
2554
-    semver "^7.3.2"
2555
-    tsutils "^3.17.1"
2556
-
2557
-"@typescript-eslint/typescript-estree@4.19.0":
2558
-  version "4.19.0"
2559
-  resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.19.0.tgz"
2560
-  integrity sha512-3xqArJ/A62smaQYRv2ZFyTA+XxGGWmlDYrsfZG68zJeNbeqRScnhf81rUVa6QG4UgzHnXw5VnMT5cg75dQGDkA==
2561
-  dependencies:
2562
-    "@typescript-eslint/types" "4.19.0"
2563
-    "@typescript-eslint/visitor-keys" "4.19.0"
2564
-    debug "^4.1.1"
2565
-    globby "^11.0.1"
2566
-    is-glob "^4.0.1"
2567
-    semver "^7.3.2"
2568
-    tsutils "^3.17.1"
2548
+"@typescript-eslint/types@5.3.0":
2549
+  version "5.3.0"
2550
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.3.0.tgz#af29fd53867c2df0028c57c36a655bd7e9e05416"
2551
+  integrity sha512-fce5pG41/w8O6ahQEhXmMV+xuh4+GayzqEogN24EK+vECA3I6pUwKuLi5QbXO721EMitpQne5VKXofPonYlAQg==
2569
 
2552
 
2570
-"@typescript-eslint/visitor-keys@3.10.1":
2571
-  version "3.10.1"
2572
-  resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz"
2573
-  integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==
2553
+"@typescript-eslint/typescript-estree@3.10.1", "@typescript-eslint/typescript-estree@4.19.0", "@typescript-eslint/typescript-estree@5.3.0":
2554
+  version "5.3.0"
2555
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.0.tgz#4f68ddd46dc2983182402d2ab21fb44ad94988cf"
2556
+  integrity sha512-FJ0nqcaUOpn/6Z4Jwbtf+o0valjBLkqc3MWkMvrhA2TvzFXtcclIM8F4MBEmYa2kgcI8EZeSAzwoSrIC8JYkug==
2574
   dependencies:
2557
   dependencies:
2575
-    eslint-visitor-keys "^1.1.0"
2558
+    "@typescript-eslint/types" "5.3.0"
2559
+    "@typescript-eslint/visitor-keys" "5.3.0"
2560
+    debug "^4.3.2"
2561
+    globby "^11.0.4"
2562
+    is-glob "^4.0.3"
2563
+    semver "^7.3.5"
2564
+    tsutils "^3.21.0"
2576
 
2565
 
2577
 "@typescript-eslint/visitor-keys@4.19.0":
2566
 "@typescript-eslint/visitor-keys@4.19.0":
2578
   version "4.19.0"
2567
   version "4.19.0"
2582
     "@typescript-eslint/types" "4.19.0"
2571
     "@typescript-eslint/types" "4.19.0"
2583
     eslint-visitor-keys "^2.0.0"
2572
     eslint-visitor-keys "^2.0.0"
2584
 
2573
 
2574
+"@typescript-eslint/visitor-keys@5.3.0":
2575
+  version "5.3.0"
2576
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.0.tgz#a6258790f3b7b2547f70ed8d4a1e0c3499994523"
2577
+  integrity sha512-oVIAfIQuq0x2TFDNLVavUn548WL+7hdhxYn+9j3YdJJXB7mH9dAmZNJsPDa7Jc+B9WGqoiex7GUDbyMxV0a/aw==
2578
+  dependencies:
2579
+    "@typescript-eslint/types" "5.3.0"
2580
+    eslint-visitor-keys "^3.0.0"
2581
+
2585
 "@webassemblyjs/ast@1.9.0":
2582
 "@webassemblyjs/ast@1.9.0":
2586
   version "1.9.0"
2583
   version "1.9.0"
2587
   resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz"
2584
   resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz"
6027
   resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz"
6024
   resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz"
6028
   integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
6025
   integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
6029
 
6026
 
6027
+eslint-visitor-keys@^3.0.0:
6028
+  version "3.0.0"
6029
+  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz#e32e99c6cdc2eb063f204eda5db67bfe58bb4186"
6030
+  integrity sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==
6031
+
6030
 eslint-webpack-plugin@^2.5.2:
6032
 eslint-webpack-plugin@^2.5.2:
6031
   version "2.5.2"
6033
   version "2.5.2"
6032
   resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.2.tgz"
6034
   resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.2.tgz"
7175
     merge2 "^1.3.0"
7177
     merge2 "^1.3.0"
7176
     slash "^3.0.0"
7178
     slash "^3.0.0"
7177
 
7179
 
7178
-globby@^11.0.1:
7180
+globby@^11.0.4:
7179
   version "11.0.4"
7181
   version "11.0.4"
7180
-  resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz"
7182
+  resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5"
7181
   integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==
7183
   integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==
7182
   dependencies:
7184
   dependencies:
7183
     array-union "^2.1.0"
7185
     array-union "^2.1.0"
8136
   dependencies:
8138
   dependencies:
8137
     is-extglob "^2.1.0"
8139
     is-extglob "^2.1.0"
8138
 
8140
 
8139
-is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
8141
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
8140
   version "4.0.3"
8142
   version "4.0.3"
8141
-  resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
8143
+  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
8142
   integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
8144
   integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
8143
   dependencies:
8145
   dependencies:
8144
     is-extglob "^2.1.1"
8146
     is-extglob "^2.1.1"
14243
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
14245
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
14244
   integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
14246
   integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
14245
 
14247
 
14246
-tsutils@^3.17.1:
14248
+tsutils@^3.17.1, tsutils@^3.21.0:
14247
   version "3.21.0"
14249
   version "3.21.0"
14248
-  resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz"
14250
+  resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
14249
   integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
14251
   integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
14250
   dependencies:
14252
   dependencies:
14251
     tslib "^1.8.1"
14253
     tslib "^1.8.1"
14359
   resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
14361
   resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
14360
   integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
14362
   integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
14361
 
14363
 
14362
-typescript@4.2.4:
14363
-  version "4.2.4"
14364
-  resolved "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz"
14365
-  integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==
14364
+typescript@4.4.4:
14365
+  version "4.4.4"
14366
+  resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c"
14367
+  integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==
14366
 
14368
 
14367
 typeson-registry@^1.0.0-alpha.20:
14369
 typeson-registry@^1.0.0-alpha.20:
14368
   version "1.0.0-alpha.39"
14370
   version "1.0.0-alpha.39"

Загрузка…
Отмена
Сохранить