{"id":77756,"date":"2024-09-23T17:12:08","date_gmt":"2024-09-23T13:42:08","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/"},"modified":"2024-09-23T17:12:08","modified_gmt":"2024-09-23T13:42:08","slug":"storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/","title":{"rendered":"Storage Wars: Web Edition \u2013 \u06cc\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u0645 \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u062b\u0631 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang <\/p>\n<p>  \u067e\u06cc\u0634 \u062f\u0631\u0622\u0645\u062f<\/p>\n<p>\u0647\u0645\u0647 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0631\u0627\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f. \u0627\u06af\u0631 \u0622\u0646\u0647\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0646\u0645\u06cc \u06a9\u0631\u062f\u0646\u062f\u060c \u062f\u0646\u06cc\u0627\u06cc \u0645\u0627 \u0646\u0633\u0628\u062a\u0627\u064b \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u06cc\u062f. \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0634\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628 \u0647\u0633\u062a\u06cc\u062f\u060c \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u0645 \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u062f\u0627\u0631\u06cc\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0628\u0647 \u0633\u0631\u0639\u062a \u0628\u0647 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645.<\/p>\n<p>\u0645\u0646 \u0627\u06cc\u0646 \u0631\u0627 \u062f\u0631 Google Docs \u0645\u06cc \u0646\u0648\u06cc\u0633\u0645. \u0641\u06a9\u0631 \u0645\u06cc \u06a9\u0646\u0645 \u0642\u0628\u0644 \u0627\u0632 \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u0628\u0627 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Google\u060c \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0686\u06cc\u0632 \u062e\u0648\u0628\u06cc \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0647\u0631 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u06a9\u0647 \u0645\u0646 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0645 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 Docs \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0628\u0647 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0628\u0648\u062f\u0646 \u0633\u0631\u0648\u0631 \u062e\u0627\u0631\u062c\u06cc \u0648\u0627\u0628\u0633\u062a\u0647 \u0646\u06cc\u0633\u062a.<\/p>\n<p>\u06a9\u0648\u06a9\u06cc\u200c\u0647\u0627 \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0647\u0633\u062a\u0646\u062f \u2013 \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0622\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062a\u0648\u0633\u0637 \u0627\u0634\u062e\u0627\u0635 \u062b\u0627\u0644\u062b \u0622\u0645\u0627\u062f\u0647 \u0647\u0633\u062a\u0646\u062f. \u0622\u0646\u0647\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0633\u0631\u0648\u0631\u0647\u0627 \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0622\u0646\u0647\u0627 \u06cc\u06a9 \u062f\u0627\u0633\u062a\u0627\u0646 \u0628\u0631\u0627\u06cc \u0632\u0645\u0627\u0646 \u062f\u06cc\u06af\u0631\u06cc \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0633\u067e\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062c\u0644\u0633\u0647 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u0645\u0646\u0627\u0633\u0628 \u062f\u0627\u0631\u06cc\u0645. \u0622\u0646\u0647\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u06cc\u06a9\u0633\u0627\u0646 \u0647\u0633\u062a\u0646\u062f\u060c \u0628\u0647 \u062c\u0632 \u062f\u0627\u0645\u0646\u0647 \u0648 \u0637\u0648\u0644 \u0639\u0645\u0631\u0634\u0627\u0646.<\/p>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0647\u0631 \u0645\u0628\u062f\u0623 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0647\u0631 \u0632\u0645\u0627\u0646 \u0648 \u0627\u0632 \u0647\u0631 \u0628\u0631\u06af\u0647 \u0627\u06cc \u06a9\u0647 \u0627\u0632 \u0647\u0645\u0627\u0646 URL \u0628\u0627\u0632\u062f\u06cc\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0647\u0645\u0627\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062c\u0644\u0633\u0647\u0627\u0632 \u0633\u0648\u06cc \u062f\u06cc\u06af\u0631\u060c \u062f\u0631 \u0647\u0631 \u0646\u0645\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0686\u0631\u062e\u0647 \u0639\u0645\u0631 \u0622\u0646 \u0628\u0647 \u06cc\u06a9 \u0628\u0631\u06af\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0627\u06cc \u0627\u0632 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u062f \u062a\u0627 \u062f\u0631 \u0648\u06cc\u0646\u062f\u0648\u0632\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u062f\u0648\u0646 \u062a\u062f\u0627\u062e\u0644 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f\u060c \u06a9\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0628 \u0627\u0633\u062a. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0645\u0627 \u0646\u06cc\u0633\u062a.<\/p>\n<p>\u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u062f\u0627\u0645 \u0627\u0644\u0632\u0627\u0645\u0627\u062a\u061f \u062f\u0642\u06cc\u0642\u0627 \u062f\u0646\u0628\u0627\u0644 \u0686\u06cc \u0647\u0633\u062a\u06cc\u0645\u061f<\/p>\n<p>\u0645\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0647\u0633\u062a\u06cc\u0645 \u062a\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc Scanbot Web SDK \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0627\u06cc\u0646 SDK \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 API \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627 \u0627\u0646\u0648\u0627\u0639 \u0645\u062e\u062a\u0644\u0641 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0633\u0631\u0648\u06a9\u0627\u0631 \u062f\u0627\u0631\u062f. \u0648\u0642\u062a\u06cc \u06cc\u06a9 \u0633\u0646\u062f \u0631\u0627 \u0628\u0627 \u0622\u0646 \u0627\u0633\u06a9\u0646 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0641\u0642\u0637 \u06cc\u06a9 \u062f\u0633\u062a\u0647 \u0631\u0634\u062a\u0647 \u0648 \u0627\u0639\u062f\u0627\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u0645\u06cc \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u06cc\u06a9\u060c \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u062a\u06cc\u062c\u0647 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0634\u0627\u0645\u0644 \u06cc\u06a9 \u0622\u0631\u0627\u06cc\u0647 \u0628\u0627 \u0645\u062e\u062a\u0635\u0627\u062a \u0645\u06a9\u0627\u0646 \u0633\u0646\u062f \u0631\u0648\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0627\u0633\u06a9\u0646 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc\u060c \u0634\u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062e\u0648\u062f \u062a\u0635\u0648\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0627\u062f\u0647 \u0628\u0627\u06cc\u0646\u0631\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u062f (\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0628\u06cc\u0634\u062a\u0631 \u062a\u0648\u0636\u06cc\u062d \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f). \u0647\u0645\u0647 \u0627\u06cc\u0646\u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0634\u0648\u0646\u062f \u0648 \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u0648\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u0645\u0648\u0646\u0647\u200c\u0627\u06cc \u0627\u0632 \u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645 (\u0645\u0646 \u0628\u0647\u200c\u062e\u0627\u0637\u0631 \u0627\u062e\u062a\u0635\u0627\u0631\u060c \u062d\u0627\u0634\u06cc\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc\u200c\u0647\u0627 \u0648 \u0627\u0646\u0648\u0627\u0639 \u0646\u0627\u0645\u0631\u0628\u0648\u0637 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0631\u062f\u0647\u200c\u0627\u0645):<\/p>\n<p>class CroppedDetectionResult {<br \/>\n    croppedImage: RawImage | null;<br \/>\n    originalImage: Image;<br \/>\n    status: DetectionStatus = &#8220;NOT_ACQUIRED&#8221;;<br \/>\n    detectionScores: DetectionScores;<br \/>\n    points: Point[];<br \/>\n    horizontalLines: LineSegment[];<br \/>\n    verticalLines: LineSegment[];<br \/>\n    aspectRatio: number;<br \/>\n    averageBrightness: number = 0;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f\u060c \u062e\u06cc\u0644\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0646\u06cc\u0633\u062a. \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u0639\u062f\u0627\u062f \u0648 \u0631\u0634\u062a\u0647 \u0647\u0627\u060c \u0628\u0631\u062e\u06cc \u0627\u0632 \u06a9\u0644\u0627\u0633 \u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0646\u0648\u0627\u0639.<\/p>\n<p>\u062a\u0646\u0647\u0627 \u062f\u0648 \u0628\u062e\u0634 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0645\u0634\u06a9\u0644 \u0633\u0627\u0632 \u0647\u0633\u062a\u0646\u062f: RawImage\u060c \u06a9\u0647 \u062d\u0627\u0648\u06cc Uint8Array \u062f\u0627\u062f\u0647 \u0647\u0627\u060c \u0648 Image\u060c \u06a9\u0647 \u0646\u0648\u0639\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0647\u0627 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u062f ImageData\u060c ArrayBuffer\u060c Uint8Array \u0648 RawImage \u062e\u0648\u062f<\/p>\n<p>\u067e\u0633 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0645\u0647 \u0627\u06cc\u0646\u0647\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645\u061f<\/p>\n<p>  \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647\u060c OG \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645: localStorage. \u0627\u0632 \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u0645 \u062e\u0648\u062f\u0645 \u0631\u0627 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0628\u0646\u0627\u0645\u0645\u060c \u0627\u0632 \u0633\u0627\u0644 2009 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0628\u0648\u062f\u0647 \u0627\u0633\u062a. \u0622\u0647\u060c \u0632\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u0633\u0627\u062f\u0647\u200c\u062a\u0631. localStorage \u0647\u0646\u0648\u0632 \u062f\u0631 \u0627\u0646\u0648\u0627\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 API \u062f\u0631 \u0637\u0648\u0644 \u0627\u0639\u0635\u0627\u0631 \u0646\u0633\u0628\u062a\u0627\u064b \u067e\u0627\u06cc\u062f\u0627\u0631 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0648\u0627\u0631\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u0634\u0648\u0645.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0634\u06cc \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645. \u0641\u0642\u0637 \u0627\u0633\u062a\u062e\u0648\u0627\u0646 \u0647\u0627\u06cc \u062e\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06cc\u06a9 \u0645\u0648\u0631\u062f \u0648 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0622\u0646 \u0628\u062f\u0648\u0646 \u0646\u06af\u0631\u0627\u0646\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u06cc\u0627 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc.<\/p>\n<p>\u062a\u062c\u0632\u06cc\u0647 JSON \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 localStorage \u0641\u0642\u0637 \u0631\u0634\u062a\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\u060c \u06a9\u0647 \u0646\u0634\u0627\u0646\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0628\u0632\u0631\u06af\u200c\u062a\u0631 \u0646\u06cc\u0633\u062a. \u0648 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a:<\/p>\n<p>export default class SBStorage {<\/p>\n<p>    static storeDocument(source: CroppedDetectionResult): void {<br \/>\n        localStorage.setItem(&#8220;document&#8221;, JSON.stringify(source));<br \/>\n    }<\/p>\n<p>    static getDocument(): CroppedDetectionResult {<br \/>\n        const item = localStorage.getItem(&#8220;document&#8221;);<br \/>\n        return item ? JSON.parse(item) : null;<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0645\u0646 \u0641\u0642\u0637 \u0645\u06cc\u200c\u062e\u0648\u0627\u0633\u062a\u0645 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u0645 \u06a9\u0647 \u06cc\u06a9 \u0633\u0646\u062f \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0634\u062f\u0647 \u0686\u06af\u0648\u0646\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f\u060c \u0627\u0645\u0627 \u067e\u0631\u0648\u0698\u0647 \u0634\u0631\u0648\u0639 React \u0645\u0646 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f:<\/p>\n<p>sb-storage.ts:7 Uncaught (in promise) DOMException: Failed to execute &#8216;setItem&#8217; on &#8216;Storage&#8217;: Setting the value of &#8216;document&#8217; exceeded the quota.<br \/>\n    at SBStorage.storeDocument (<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0622\u0646\u0644\u0627\u06cc\u0646 \u0632\u06cc\u0628\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0686\u0646\u062f \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0622\u0646 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a localStorage: https:\/\/arty.name\/localstorage.html. \u0627\u0632 \u0632\u0645\u0627\u0646 \u0646\u0648\u0634\u062a\u0646 \u0627\u06cc\u0646\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0645\u0646 5\u060c200\u060c000 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u0639\u062f\u062f \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0631\u0648\u0631\u06af\u0631 \u0648 \u0646\u0633\u062e\u0647 \u0627\u06cc \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u0645\u062a\u0641\u0627\u0648\u062a \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p>\u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0633\u0627\u06cc\u062a \u062d\u062a\u06cc \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<p>Chrome 6.0.472.36 \u0628\u062a\u0627 \u0628\u0647 \u0645\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f 2600-2700 \u0647\u0632\u0627\u0631 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0645\u060c \u0641\u0627\u06cc\u0631\u0641\u0627\u06a9\u0633 3.6.8 \u2013 5200-5300k\u060c Explorer 8 \u2013 4900-5000k\u060c \u0648 Opera 10.70 build 9013 \u06cc\u06a9 \u062f\u06cc\u0627\u0644\u0648\u06af \u0638\u0627\u0647\u0631 \u0634\u062f \u06a9\u0647 \u0628\u0647 \u0645\u0646 \u0627\u062c\u0627\u0632\u0647 \u062f\u0627\u062f \u062a\u0627 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0646\u0627\u0645\u062d\u062f\u0648\u062f \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0645. Spec \u062e\u0648\u062f\u0633\u0631\u0627\u0646\u0647 5 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u0686\u06cc\u0632\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0646\u0645\u06cc \u06af\u0648\u06cc\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 UTF-16 \u0634\u0645\u0627 \u062f\u0648 \u0628\u0631\u0627\u0628\u0631 \u06a9\u0645\u062a\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u0647 \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0627\u0632 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645. \u06cc\u06a9 \u062a\u063a\u06cc\u06cc\u0631 \u0633\u0631\u06cc\u0639 \u062f\u0631 \u0642\u0637\u0639\u0647 \u0645\u0648\u062c\u0648\u062f\u2026<\/p>\n<p>const value = JSON.stringify(source);<br \/>\nconsole.log(&#8220;Characters:&#8221;, value.length);<br \/>\nlocalStorage.setItem(&#8220;document&#8221;, value);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>&#8230; \u0648 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc \u06a9\u0647 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n<p>Characters: 68046772<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0639\u0644\u0648\u0645 \u0627\u0633\u062a\u060c localStorage \u062d\u062a\u06cc \u0646\u0645\u06cc \u062a\u0648\u0627\u0646 \u06cc\u06a9 \u062f\u0647\u0645 \u0622\u0646 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f.<\/p>\n<p>\u0627\u06af\u0631\u0686\u0647 \u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u062b\u0627\u0628\u062a \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0645\u0646\u0627\u0633\u0628\u06cc \u0646\u06cc\u0633\u062a\u060c \u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u0628\u0647 \u0627\u06cc\u0646 \u0648\u0627\u0642\u0639\u06cc\u062a \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u0645 \u06a9\u0647 localStorage \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0628\u0648\u062f \u06a9\u0647 \u0645\u0646 \u062f\u0631 \u0648\u0647\u0644\u0647 \u0627\u0648\u0644 \u0642\u0631\u0627\u0631 \u0628\u0648\u062f \u0628\u0647 \u0622\u0646 \u0628\u0631\u0633\u0645\u060c \u0627\u0645\u0627 \u062f\u0631 \u0639\u0648\u0636 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0628\u0627 \u0645\u0648\u0636\u0648\u0639 \u0633\u0647\u0645\u06cc\u0647 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u06cc\u0645.<\/p>\n<p>\u0645\u0646 \u0641\u0642\u0637 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u0628\u0647 \u0633\u0631\u0639\u062a \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u0645 \u06a9\u0647 \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc \u0628\u0627 \u0641\u0631\u0645\u062a \u062f\u0627\u062f\u0647 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0686\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639\u060c \u0642\u0627\u0644\u0628 \u0645\u0627 croppedImage \u062f\u0627\u062f\u0647 \u06cc\u06a9 \u0627\u0633\u062a Uint8Array. \u06a9\u0645 \u0648 \u0628\u06cc\u0634 \u0634\u0628\u06cc\u0647 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0634\u0645\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f (\u0627\u06cc\u0646 \u0622\u0631\u0627\u06cc\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 1,504,272 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0637\u0648\u0644 \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u0634\u0631\u0648\u0639 \u0622\u0646 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a):<\/p>\n[169, 195, 195, 169, 195, 195, 168, 194, 194, 168, &#8230;<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>After serialization, the same array looks like the following:<\/p>\n<p>{&#8220;0&#8243;:169,&#8221;1&#8243;:195,&#8221;2&#8243;:195,&#8221;3&#8243;:169,&#8221;4&#8243;:195,&#8221;5&#8243;:195,&#8221;6&#8243;:168,&#8221;7&#8243;:194,&#8221;8&#8243;:194,&#8221;9&#8221;:168, &#8230;<\/p>\n<p>    Enter fullscreen mode<\/p>\n<p>    Exit fullscreen mode<\/p>\n<p>We\u2019ll get into why this is in a later section, but what we need to know right now is that localStorage only accepts strings and therefore doesn\u2019t support binary formats out of the box.<\/p>\n<p>There are ways to get around this \u2013 you can probably already imagine an algorithm to turn this map of keys and values back into an array of integers. It\u2019s always going to be a hack, though. You just shouldn\u2019t have to manipulate binary data manually.<\/p>\n<p>  Base64<\/p>\n<p>The correct way to do this would be to convert the image data to a Base64 image first, which we can then store properly.<\/p>\n<p>Base64 is a family of binary-to-text encoding schemes that represent binary data in an ASCII string format by transforming it into a radix-64 representation.<\/p>\n<p>That may sound complicated, but it\u2019s really a straightforward process. You simply create a reader object, pass your array as a blob, and read it in as a data URL using the native JavaScript function. If necessary, also remove the descriptor part of the string. Here\u2019s the convenience function we use:<\/p>\n<p>public static async toBase64(data: Uint8Array): Promise&lt;string&gt; {<br \/>\n    \/\/ See https:\/\/stackoverflow.com\/a\/39452119<br \/>\n    const base64url = await new Promise&lt;string&gt;(resolve =&gt; {<br \/>\n        const reader = new FileReader()<br \/>\n        reader.onload = () =&gt; resolve(reader.result as string)<br \/>\n        reader.readAsDataURL(new Blob([data]))<br \/>\n    })\u061b<br \/>\n    \/\/ \u0642\u0633\u0645\u062a &#39;data:&#8230;;base64&#39; \u0631\u0627 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f<br \/>\n    \u0628\u0627\u0632\u06af\u0634\u062a base64url.\u0628\u0631\u0634(base64url.indexOf(&#39;\u060c&#39;) + 1)<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0648 \u0633\u067e\u0633 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631\u060c \u0627\u06af\u0631 \u062e\u06cc\u0644\u06cc \u0637\u0648\u0644\u0627\u0646\u06cc \u0646\u0628\u0627\u0634\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u062b\u0631 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0645\u062d\u0644\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0634\u0648\u0646\u062f:<\/p>\n<p>const base64 = await ImageUtils.toBase64(source.croppedImage.data);<br \/>\n\/\/ Base64: wsLQw8LQw8LQw8TRxMXSxMXTxcfUxcjVxMjVxcnXx8vaztHh1dbm19np2dvr2Nv&#8230;<br \/>\nconsole.log(&#8220;Base64: &#8220;, base64);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0647\u0631 \u0646\u0648\u0639 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0628\u0627 \u0627\u06cc\u0646 \u0628\u0632\u0631\u06af\u06cc \u0627\u0632 \u0646\u0638\u0631 \u0645\u062d\u0627\u0633\u0628\u0627\u062a\u06cc \u0633\u0646\u06af\u06cc\u0646 \u0627\u0633\u062a\u060c \u0686\u0647 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0646\u0642\u0634\u0647 \u06a9\u0644\u06cc\u062f-\u0645\u0642\u062f\u0627\u0631 \u06cc\u0627 \u0646\u0633\u062e\u0647 Base64\u060c \u0648 \u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0633\u0639\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0628\u0647\u06cc\u0646\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0647\u0645\u0647 \u0627\u06cc\u0646\u0647\u0627 \u0622\u0646 \u0631\u0627 \u0642\u0637\u0639 \u0646\u0645\u06cc \u06a9\u0646\u062f. \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0648 \u0627\u06cc\u0646 \u0645\u0627 \u0631\u0627 \u0628\u0647 \u2026<\/p>\n<p>  \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc<\/p>\n<p>\u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0648\u0628\u060c \u0645\u0627 \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u06a9\u0627\u0631 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0647\u0627 (\u0627\u06cc\u062c\u0627\u062f\u060c \u0622\u067e\u0644\u0648\u062f\u060c \u062f\u0627\u0646\u0644\u0648\u062f) \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc \u0634\u0648\u06cc\u0645. \u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0639\u0645\u0648\u0644\u060c \u067e\u0631\u062f\u0627\u0632\u0634 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0633\u062a &#8211; \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645.<\/p>\n<p>\u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u062f\u0631 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0645\u0627\u0646\u0646\u062f ArrayBuffer\u060c Uint8Array\u060c DataView\u060c Blob \u0648 File\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u0647\u0627\u06cc \u0638\u0631\u06cc\u0641 \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0628\u0647 \u0647\u0631 \u062d\u0627\u0644\u060c \u0647\u062f\u0641 \u0627\u0635\u0644\u06cc \u0627\u0633\u062a ArrayBuffer &#8211; \u0631\u06cc\u0634\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632\u060c \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u062e\u0627\u0645. \u0648 \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0628\u0627 \u0622\u0646 \u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f. \u0627\u0632 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc wrapper \u0641\u0648\u0642\u200c\u0627\u0644\u0630\u06a9\u0631 \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u062f\u0627\u0631\u0627\u06cc \u062a\u0646\u0648\u0639\u06cc \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u062a ArrayBuffer.<\/p>\n<p>  \u0647\u0645\u0647 \u0686\u06cc\u0632 \u06cc\u06a9 \u0634\u06cc \u0627\u0633\u062a (\u062a\u0642\u0631\u06cc\u0628\u0627)<\/p>\n<p>\u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631\u060c \u062a\u0648\u0636\u06cc\u062d \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0644\u06cc\u0644 \u0631\u0634\u062a\u0647 ArrayBuffer \u06cc\u0627 Uint8Array \u062a\u0628\u062f\u06cc\u0644 \u0622\u0646 \u0628\u0647 \u06a9\u0645\u06cc \u06a9\u0627\u0628\u0648\u0633 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0633\u06cc\u0627\u0631 \u062c\u0627\u0644\u0628 \u0627\u0633\u062a. \u0628\u0628\u06cc\u0646\u06cc\u062f\u060c \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062f\u0631 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062f\u0631 \u0648\u0627\u0642\u0639 \u06cc\u06a9 \u0634\u06cc \u0627\u0633\u062a\u060c \u0628\u0647 \u062c\u0632 \u0631\u0634\u062a\u0647 \u0647\u0627. \u0631\u0634\u062a\u0647 \u0647\u0627 \u0647\u0646\u0648\u0632 \u0647\u0645 \u0631\u0634\u062a\u0647 \u0647\u0633\u062a\u0646\u062f. \u0627\u0645\u0627 \u0628\u0627 \u0622\u0631\u0627\u06cc\u0647 \u0647\u0627\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u0627\u0631\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f:<\/p>\n<p>const a  = [1, 2, 3]; a.foo = &#8220;bar&#8221;console.log(a); \/\/ [ 1, 2, 3, foo: &#8216;bar&#8217;]\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0644\u06cc\u0644\u0634 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0628\u0648\u0645\u06cc\u060c \u06cc\u06a9 \u0622\u0631\u0627\u06cc\u0647 \u0647\u0646\u0648\u0632 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0634\u06cc \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062f\u0631 \u0622\u0646 \u0631\u0634\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0646 \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0622\u0631\u0627\u06cc\u0647 \u0633\u0627\u062f\u0647 \u0641\u0642\u0637 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 toString() \u062a\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc \u0631\u0627\u062d\u062a\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0632\u06cc\u0631\u0627 \u0627\u063a\u0644\u0628 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a.<\/p>\n<p>\u0648 \u062f\u0642\u06cc\u0642\u0627\u064b \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0628\u0646\u062f \u0646\u0627\u0641 Uint8Array \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0634\u06cc \u0627\u0632 \u062c\u0641\u062a \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f-\u0645\u0642\u062f\u0627\u0631 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f {&#8220;0&#8243;:169,&#8221;1&#8243;:195,&#8221;2&#8243;:195,&#8221;3&#8221;:169 \u2026} \u0645\u062b\u0627\u0644 \u0642\u0628\u0644\u06cc) \u0648 \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0631\u0627 \u0645\u0627 \u0628\u0647 \u0645\u0631\u0627\u062d\u0644 \u0627\u0636\u0627\u0641\u06cc \u0628\u0631\u0627\u06cc \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc \u0635\u062d\u06cc\u062d \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<p>  \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0631\u0632\u0634 \u0622\u0646 \u0631\u0627 \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u06a9\u062a\u0647 \u0627\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0647 \u0622\u0646 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f\u0645 \u062a\u0648\u0636\u06cc\u062d \u062f\u0647\u06cc\u0645: \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0642\u0627\u0628\u0644 \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f. \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0647\u0646\u0648\u0632 \u0627\u0633\u0627\u0633\u0627\u064b \u062f\u0631\u0633\u062a \u0627\u0633\u062a\u060c \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u06cc\u0646 \u0631\u0648\u0632\u0647\u0627 \u0627\u0632 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0628\u0648\u0645\u06cc \u0628\u0631\u0627\u06cc \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc \u0628\u0631\u062e\u0648\u0631\u062f\u0627\u0631 \u0627\u0633\u062a\u060c \u0628\u0627 \u0622\u062e\u0631\u06cc\u0646 \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 TextDecoder. \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n<p>const buffer = new TextEncoder().encode(&#8216;banana&#8217;);<br \/>\nconst testObj = { encodedText: buffer.toString() };<\/p>\n<p>const serializedTestObj = JSON.stringify(testObj);<br \/>\nconsole.log(serializedTestObj); \/\/ {&#8220;encodedText&#8221;:&#8221;98,97,110,97,110,97&#8243;}<\/p>\n<p>const deserializedTestObj = JSON.parse(serializedTestObj);<br \/>\nconst deserializedBuffer = deserializedTestObj.encodedText.split(&#8216;,&#8217;);<br \/>\nconst newBuffer = Uint8Array.from(deserializedBuffer);<br \/>\nconst str = new TextDecoder().decode(newBuffer);<br \/>\nconsole.log(str); \/\/ banana<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0627\u0632 \u0648\u06cc\u0644 \u0645\u0627\u0646\u0633\u0644\u0648 \u0627\u0632 dev.to \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0642\u0637\u0639\u0647!<\/p>\n<p>\u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0647\u0633\u062a \u0646\u0633\u0628\u062a\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc\u060c \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0645\u062a\u0648\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0628\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f:<\/p>\n<p>    \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0631\u0634\u062a\u0647\u200c\u0627\u06cc \u0628\u0627\u0634\u0646\u062f \u06a9\u0647 \u0628\u0627 \u06a9\u0644\u0627\u0633 \u06a9\u062f\u06af\u0630\u0627\u0631 \u0633\u0631\u06cc\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u06a9\u0647 \u06cc\u06a9 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0633\u0628\u062a\u0627\u064b \u063a\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644 \u0627\u0633\u062a (\u062f\u0631 \u0628\u06cc\u0634\u062a\u0631 \u0645\u0648\u0627\u0631\u062f \u0634\u0645\u0627 \u0628\u0627 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f).<br \/>\n    \u0634\u06a9\u0627\u0641\u062a\u0646 \u0631\u0634\u062a\u0647\u060c \u06a9\u0647 \u06cc\u06a9 \u0639\u0645\u0644 \u06af\u0631\u0627\u0646 \u0642\u06cc\u0645\u062a \u0627\u0633\u062a.<br \/>\n    \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646\u060c \u0647\u0645 \u0633\u0631\u06cc\u0627\u0644\u200c\u0632\u062f\u0627\u06cc\u06cc \u0628\u0627\u0641\u0631 \u0648 \u0647\u0645 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0645\u062a\u0646 \u062f\u0648\u0628\u0627\u0631\u0647.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0631\u0648\u0634 \u0628\u0639\u062f\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0648\u0628 \u0628\u0631\u0648\u06cc\u0645.<\/p>\n<p>  IndexedDB<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c IndexedDB \u0686\u06cc\u0633\u062a\u061f \u0645\u0646 \u0628\u0627 \u06a9\u0645\u0627\u0644 \u0645\u06cc\u0644 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0633\u062a\u0645 \u0646\u0645\u0627\u06cc \u06a9\u0648\u062a\u0627\u0647\u06cc \u0627\u0632 \u0645\u0641\u0647\u0648\u0645 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0645\u060c \u0627\u0645\u0627 MDN \u0628\u0647 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0648\u062c\u0647 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f:<\/p>\n<p>IndexedDB \u06cc\u06a9 API \u0633\u0637\u062d \u067e\u0627\u06cc\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 \u0633\u0645\u062a \u0645\u0634\u062a\u0631\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0633\u0627\u062e\u062a\u0627\u0631\u06cc\u0627\u0641\u062a\u0647\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627\/\u062d\u0628\u0627\u0628 \u0647\u0627 \u0627\u0633\u062a. \u0627\u06cc\u0646 API \u0627\u0632 \u0634\u0627\u062e\u0635 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u062c\u0633\u062a\u062c\u0648\u0647\u0627\u06cc \u0628\u0627 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0628\u0627\u0644\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0622\u0646\u0686\u0647 \u06a9\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0645\u0639\u0646\u06cc \u062f\u0627\u0631\u062f\u060c \u06cc\u06a9 \u0631\u0627\u0647 \u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0641\u0648\u0642 \u0627\u0644\u0630\u06a9\u0631 \u0627\u0633\u062a ArrayBuffer \u0642\u0627\u0644\u0628 \u0628\u0644\u0647\u060c \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0646\u0637\u0642 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0648 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647\u060c \u0645\u0632\u062e\u0631\u0641 \u0648 \u062a\u0634\u0646\u0647 \u0645\u0646\u0627\u0628\u0639 \u062e\u0628\u0631\u06cc \u0646\u06cc\u0633\u062a!<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631 \u0633\u0631\u06cc\u0639\u060c \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u0635\u0644\u06cc \u0628\u0627 localStorage \u0639\u0628\u0627\u0631\u062a\u0646\u062f \u0627\u0632:<\/p>\n<p>    \u0641\u0642\u0637 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0631\u0634\u062a\u0647 \u0647\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u062f.<br \/>\n    \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u062f\u0631\u067e\u0648\u0634 \u062f\u0627\u062f\u0647 \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0648\u0686\u06a9 \u0648 \u0646\u0627\u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u0633\u062a.<\/p>\n<p>IndexedDB \u0647\u0631 \u062f\u0648\u06cc \u0627\u06cc\u0646 \u0645\u0633\u0627\u0626\u0644 \u0631\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u062d\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0622\u0646\u060c \u0645\u0632\u0627\u06cc\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0646\u06cc\u0632 \u062f\u0627\u0631\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0622\u0646 \u062f\u0631 \u0648\u0628\u200c\u06a9\u0627\u0631\u06af\u0631\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f (\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0628\u06cc\u0634\u062a\u0631 \u062a\u0648\u0636\u06cc\u062d \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f). \u0647\u0645\u0686\u0646\u06cc\u0646 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0633\u062a\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0686\u0631\u062e\u0647 \u0631\u0646\u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0630\u062e\u06cc\u0631\u0647\/\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u0633\u062f\u0648\u062f \u0646\u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u062a\u0646\u0647\u0627 \u0686\u06cc\u0632 localStorage \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0633\u0627\u062f\u06af\u06cc API \u0622\u0646 \u0627\u0633\u062a. \u0641\u0642\u0637 \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a localStorage.setItem \u0648 localStorage.getItem. \u0686\u0646\u062f \u06a9\u0627\u0631\u06a9\u0631\u062f \u0631\u0627\u062d\u062a\u06cc \u0627\u0636\u0627\u0641\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a. \u0627\u0646\u062c\u0627\u0645 \u0634\u062f!<\/p>\n<p>  API \u0648 \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0622\u0634\u0641\u062a\u0647<\/p>\n<p>IndexedDB \u0646\u06cc\u0632 \u06a9\u0627\u0645\u0644 \u0646\u06cc\u0633\u062a: API \u0645\u0639\u0631\u0648\u0641 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0622\u0634\u0641\u062a\u06af\u06cc \u0634\u06af\u0641\u062a \u0627\u0646\u06af\u06cc\u0632 \u0627\u0633\u062a. \u062f\u0631 \u0648\u0627\u0642\u0639\u060c \u0627\u06cc\u0646 \u0686\u0646\u06cc\u0646 \u0622\u0634\u0641\u062a\u06af\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u06a9\u0627\u0645\u0644 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u062f\u0631 \u0627\u0637\u0631\u0627\u0641 \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a \u062a\u0627 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0645\u0639\u0645\u0648\u0644\u06cc \u0634\u0645\u0627 \u0645\u062c\u0628\u0648\u0631 \u0646\u0628\u0627\u0634\u062f \u0628\u0627 \u0645\u0632\u062e\u0631\u0641\u0627\u062a \u0622\u0646 \u062f\u0633\u062a \u0648 \u067e\u0646\u062c\u0647 \u0646\u0631\u0645 \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u062e\u0648\u062f \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0622\u0646\u0686\u0647 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 \u062a\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f.<\/p>\n<p>use-indexeddb \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0642\u0648\u0644 \u0645\u06cc\u200c\u062f\u0647\u062f \u0633\u0628\u06a9\u200c\u062a\u0631\u06cc\u0646 \u0645\u0648\u0631\u062f \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0641\u0642\u0637 \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u062f\u0631 \u0628\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0686\u0646\u062f\u0627\u0646 \u0631\u0627\u062d\u062a \u0646\u06cc\u0633\u062a\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0627\u0631\u0627\u06cc \u0628\u0631\u062e\u06cc \u06af\u0632\u0627\u0631\u0634\u200c\u0647\u0627\u06cc \u0646\u0641\u0648\u0630\u06cc \u0627\u0633\u062a \u06a9\u0647 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<p>\u0628\u0639\u062f\u06cc Dexie \u0627\u0633\u062a\u060c \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644 \u062a\u0631 \u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06a9\u0646\u0646\u062f\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f. API \u0622\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647\u060c \u0646\u0648\u0634\u062a\u0646 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0648 \u0627\u0641\u0632\u0648\u062f\u0646 \u0645\u062f\u062e\u0644 \u0647\u0627 \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0628\u0635\u0631\u06cc \u0627\u0633\u062a:<\/p>\n<p>const db = new Dexie(&#8216;MyDatabase&#8217;);<\/p>\n<p>\/\/ Declare tables, IDs and indexes<br \/>\ndb.version(1).stores({ friends: &#8216;++id, name, age&#8217; });<\/p>\n<p>\/\/ Find some old friends<br \/>\nconst oldFriends = await db.friends.where(&#8216;age&#8217;).above(75).toArray();<\/p>\n<p>\/\/ or make a new one<br \/>\nawait db.friends.add({<br \/>\n    name: &#8216;Camilla&#8217;,<br \/>\n    age: 25,<br \/>\n    street: &#8216;East 13:th Street&#8217;,<br \/>\n    picture: await getBlob(&#8216;camilla.png&#8217;)<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u06a9\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a LINQ C# \u0627\u0644\u0647\u0627\u0645 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627\u06cc \u0632\u0646\u062f\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0645\u062b\u0644\u0627\u064b Redux \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0648\u0644\u062a \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u0646 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u062e\u0648\u0628 \u0627\u0633\u062a\u060c Dexie \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0631\u0627\u06cc \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0627 \u06a9\u0645\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 idb \u0627\u0633\u062a \u06a9\u0647 \u0627\u062f\u0639\u0627 \u0645\u06cc \u06a9\u0646\u062f \u0628\u06cc\u0634\u062a\u0631 API IndexedDB \u0631\u0627 \u0645\u0646\u0639\u06a9\u0633 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u0628\u0627 \u0628\u0631\u062e\u06cc \u0628\u0647\u0628\u0648\u062f\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647 \u0627\u0633\u062a. \u0627\u0645\u0627 \u062f\u0631 \u0648\u0627\u0642\u0639\u060c \u0628\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f \u06a9\u0647 API \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0645\u06cc\u200c\u067e\u06cc\u0686\u062f Promise \u06a9\u0644\u0627\u0633 \u0648 \u0646\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631. \u0642\u0637\u0639\u0627\u064b \u0628\u0631\u0627\u06cc \u0686\u0646\u06cc\u0646 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062c\u0632\u0626\u06cc \u062f\u0631 \u0631\u0627\u062d\u062a\u06cc\u060c \u0627\u0631\u0632\u0634 \u0627\u0641\u0632\u0648\u062f\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0631\u0627 \u0646\u062f\u0627\u0631\u062f.<\/p>\n<p>\u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0645\u062d\u0628\u0648\u0628 \u0646\u0647\u0627\u06cc\u06cc JsStore \u0646\u0627\u0645 \u062f\u0627\u0631\u062f \u06a9\u0647 IndexedDB API \u0631\u0627 \u062f\u0631 \u06cc\u06a9 API \u0634\u0628\u06cc\u0647 \u0628\u0647 SQL \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>var insertCount = await connection.insert({ into: &#8216;Product&#8217;, values: [value] });<\/p>\n<p>var results = await connection.select({ from: &#8216;Product&#8217;, where: { id: 5 } });<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u06a9\u0647 \u0628\u0647 \u0646\u0638\u0631 \u062d\u0642\u06cc\u0631 \u0645\u0646 \u067e\u06cc\u0634\u0631\u0641\u062a \u0686\u0646\u062f\u0627\u0646\u06cc \u0646\u062f\u0627\u0631\u062f. SQL \u0647\u0646\u0648\u0632 \u0628\u0633\u06cc\u0627\u0631 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0633\u062a \u0648 \u0627\u06cc\u062c\u0627\u062f \u062a\u0631\u0627\u06a9\u0646\u0634 \u0647\u0627\u06cc \u06a9\u0645\u062a\u0631 \u0627\u0632 \u062d\u062f \u0628\u0647\u06cc\u0646\u0647 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a. \u0627\u06cc\u0646 SQL \u062e\u0627\u0645 \u0646\u06cc\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0634\u0627\u06cc\u062f \u062e\u06cc\u0644\u06cc \u0628\u062f \u0646\u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0645\u0646 \u0628\u0627\u0631\u0647\u0627 \u062a\u0648\u0633\u0637 SQL \u0633\u0648\u0632\u0627\u0646\u062f\u0647 \u0634\u062f\u0647\u200c\u0627\u0645 \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0645 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0647 \u0686\u0646\u06cc\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u0646\u0645.<\/p>\n<p>\u0628\u0647 \u0639\u0644\u0627\u0648\u0647\u060c \u0645\u0627\u0646\u0646\u062f Dexie\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f JsStore \u0628\u0631\u0627\u06cc \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0627 \u0646\u06cc\u0632 \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0627\u0633\u062a.<\/p>\n<p>\u0635\u0627\u062f\u0642\u0627\u0646\u0647 \u0628\u06af\u0648\u06cc\u0645\u060c \u0627\u0632 \u0642\u0628\u0644 \u0645\u06cc \u062f\u0627\u0646\u0633\u062a\u0645 \u06a9\u0647 \u062a\u062d\u062a \u062a\u0623\u062b\u06cc\u0631 \u0647\u06cc\u0686 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u0642\u0631\u0627\u0631 \u0646\u062e\u0648\u0627\u0647\u0645 \u06af\u0631\u0641\u062a. \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u062f\u0633\u062a\u0645\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0634 \u0627\u0633\u067e\u0627\u0631\u062a\u06cc \u06a9\u062b\u06cc\u0641 \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u06cc\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0647\u06cc\u0686 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0646\u062f \u0646\u062f\u0647\u06cc\u0645. \u0645\u0646 \u0641\u0642\u0637 \u0645\u06cc \u062e\u0648\u0627\u0633\u062a\u0645 \u06cc\u06a9 \u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0645. \u0627\u06af\u0631 \u0631\u0627\u0647 \u062d\u0644 \u0645\u0627 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u0628\u0648\u062f\u060c \u0645\u0646 \u0628\u0627 \u062f\u06a9\u0633\u06cc \u0647\u0645\u0631\u0627\u0647 \u0645\u06cc \u0634\u062f\u0645.<\/p>\n<p>  \u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u0633\u067e\u0627\u0631\u062a\u06cc<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0633\u0627\u062e\u062a \u06cc\u06a9 SDK \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0647\u0633\u062a\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0647 \u0647\u06cc\u0686 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u062e\u0627\u0631\u062c\u06cc \u062a\u06a9\u06cc\u0647 \u06a9\u0646\u06cc\u0645. \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a\u060c \u0648 \u0645\u0627 \u0627\u0632 \u0622\u0646\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0632\u06cc\u0631\u0627:<\/p>\n<p>    \u0622\u0646\u0647\u0627 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0627 \u0645\u062c\u0648\u0632 \u0645\u06cc \u0622\u06cc\u0646\u062f \u06a9\u0647 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0622\u0646 \u067e\u0627\u06cc\u0628\u0646\u062f \u0628\u0627\u0634\u06cc\u0645 \u0648 \u0627\u0641\u0634\u0627 \u06a9\u0646\u06cc\u0645.<br \/>\n    \u0622\u0646\u0647\u0627 \u0633\u0631\u0628\u0627\u0631 \u0631\u0627 \u0628\u0647 \u062a\u0648\u0633\u0639\u0647 \u0648 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a \u0622\u062a\u06cc \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f (\u0645\u0637\u0645\u0626\u0646\u0645 \u06a9\u0647 \u062f\u0631\u062f \u0627\u0631\u062a\u0642\u0627\u0621 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0631\u0627 \u0628\u0647 \u062e\u0648\u0628\u06cc \u0645\u06cc \u062f\u0627\u0646\u06cc\u062f).<br \/>\n    \u0622\u0646\u0647\u0627 \u0646\u0642\u0627\u0637 \u0634\u06a9\u0633\u062a \u0627\u0636\u0627\u0641\u06cc \u0631\u0627 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 \u0645\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0645\u06a9\u0627\u0646 \u0648 \u062f\u0631 \u062d\u062f \u0645\u0639\u0642\u0648\u0644\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0631 \u0622\u0646\u0686\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 SDK \u0645\u0627 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u062f\u060c \u06a9\u0646\u062a\u0631\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0631\u0627\u06cc \u0645\u0646\u0637\u0642 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u0627\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u062e\u0648\u062f\u0645\u0627\u0646 \u0631\u0627 \u0631\u0648\u0644 \u06a9\u0646\u06cc\u0645!<\/p>\n<p>\u0627\u0632 \u0646\u0638\u0631 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u060c \u0645\u0648\u0631\u062f \u0645\u0627 \u0646\u0633\u0628\u062a\u0627\u064b \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0628\u0647 \u062e\u0648\u062f\u06cc \u062e\u0648\u062f \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062a\u0631\u0627\u06a9\u0646\u0634 \u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u06cc\u0646\u0637\u0648\u0631 \u0646\u06cc\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0631\u062f\u0633\u0631 \u0632\u06cc\u0627\u062f\u06cc \u0631\u0627 \u0646\u062f\u0627\u0634\u062a\u0645. \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0633\u0627\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>const request = indexedDB.open(&#8220;SBSDKBase&#8221;, 1);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0646\u0627\u0645\u06cc \u0628\u0631\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645 \u0648 \u0634\u0645\u0627\u0631\u0647 \u0646\u0633\u062e\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u062a\u0639\u06cc\u06cc\u0646 \u0641\u0648\u0631\u06cc \u0634\u0645\u0627\u0631\u0647 \u0646\u0633\u062e\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f\u060c \u0627\u0645\u0627 \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u062f\u0644\u06cc\u0644 \u0622\u0646 \u0631\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0631\u0648\u0634\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f: \u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0645\u06cc\u0634\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0648 \u062f\u0627\u0634\u062a\u0646 \u06cc\u06a9 \u06af\u0632\u06cc\u0646\u0647 \u0622\u0633\u0627\u0646 \u0628\u0631\u0627\u06cc \u067e\u06cc\u06af\u06cc\u0631\u06cc \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0646\u0633\u062e\u0647 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0628\u0635\u0631\u06cc \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f.<\/p>\n<p>\u0634\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0627\u0631\u0627\u06cc \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a: onerror\u060c onupgradeneeded\u060c \u0648 onsuccess. \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u062e\u0637\u0627\u0647\u0627 \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0628\u06af\u06cc\u0631\u06cc\u0645\u060c \u0632\u06cc\u0631\u0627 \u0641\u0642\u0637 \u0633\u0639\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u0633\u0646\u0627\u062f \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u0645. \u0647\u06cc\u0686 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u062f\u0631 \u0645\u062f\u0644 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0647\u06cc\u0686 \u0646\u0645\u0627\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0645\u0627 \u0641\u0642\u0637 \u0627\u0632 \u062d\u0627\u0644\u062a \u0646\u0648\u0634\u062a\u0646 \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 (\u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0647 \u0645\u0627 \u0646\u062e\u0648\u0631\u062f).<\/p>\n<p>\u062a\u0646\u0647\u0627 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0628\u0647 \u0622\u0646 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f\u06cc\u0645\u060c \u067e\u0627\u0633\u062e \u0628\u0647 \u062a\u0645\u0627\u0633 \u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u0627\u0633\u062a.<\/p>\n<p>request.onsuccess = (event) =&gt; {<br \/>\n    const db = (event.target as IDBOpenDBRequest).result;<br \/>\n    db.createObjectStore(&#8220;documents&#8221;, { keyPath: &#8220;id&#8221;, autoIncrement: true });<\/p>\n<p>    const transaction = db.transaction(&#8220;documents&#8221;, &#8220;readwrite&#8221;);<br \/>\n    const store = transaction.objectStore(&#8220;documents&#8221;);<br \/>\n    store.add(source);<\/p>\n<p>    console.log(&#8220;Added item to store&#8221;);<\/p>\n<p>    const getRequest = store.get(1);<br \/>\n    getRequest.onsuccess = (event) =&gt; {<br \/>\n        const result = (event.target as IDBRequest).result;<br \/>\n        console.log(&#8220;Got item from store&#8221;, result);<br \/>\n    };<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0628\u06cc\u200c\u0633\u0627\u0628\u0642\u0647\u200c\u062a\u0631\u06cc\u0646 \u06a9\u062f \u06a9\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0641\u06a9\u0631 \u06a9\u0631\u062f\u0645 \u0628\u0627\u06cc\u062f \u0633\u0646\u062f\u06cc \u0631\u0627 \u0628\u0647 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u0645. \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f\u060c \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u0633\u0646\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u06cc\u06a9 \u0634\u06cc \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f. \u0645\u0646 \u0645\u062f\u062a \u0632\u06cc\u0627\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u0645\u060c \u0631\u0648\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u0647\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0647\u200c\u0627\u0645 \u0648 \u0641\u06a9\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0645 \u06cc\u06a9 \u062f\u0633\u062a\u0647 \u0631\u0648\u06cc \u0622\u0646 \u062f\u0627\u0631\u0645. \u0641\u06a9\u0631 \u0645\u06cc \u06a9\u0631\u062f\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0646\u0647 \u0645\u0646 \u0647\u0645\u0648\u0646 \u0645\u0648\u0642\u0639 \u06af\u0627\u0632 \u06af\u0631\u0641\u062a\u0645 \u062e\u0637\u0627:<\/p>\n<p>Uncaught DOMException: Failed to execute &#8216;createObjectStore&#8217; on &#8216;IDBDatabase&#8217;: The database is not running a version change transaction.<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0686\u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u0645 \u062c\u062f\u0648\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0645\u061f \u0645\u0646 \u0628\u0647 \u0633\u062e\u062a\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0631\u062f\u0647 \u0627\u0645 \u0648 \u0627\u0632 \u0642\u0628\u0644 \u0627\u06cc\u0646 \u0627\u062d\u0633\u0627\u0633 \u0631\u0627 \u062f\u0627\u0631\u0645 \u06a9\u0647 \u0646\u0648\u0634\u062a\u0646 SQL \u062e\u0627\u0645 \u0634\u0647\u0648\u062f\u06cc \u062a\u0631 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0633\u062a. \u062f\u0631 \u0622\u0646\u062c\u0627\u060c \u062d\u062f\u0627\u0642\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0633 \u0627\u0632 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u06a9\u0648\u0626\u0631\u06cc \u0647\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u0645\u06cc\u062f\u0648\u0627\u0631 \u0628\u0627\u0634\u06cc\u0645 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0628\u0639\u062f \u0628\u0647\u062a\u0631 \u0634\u0648\u062f! \u062d\u062f\u0627\u0642\u0644 \u062e\u0648\u062f \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0631\u0645\u0632\u0622\u0644\u0648\u062f \u0646\u06cc\u0633\u062a. \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0648\u0628\u0627\u0631\u0647 \u062a\u0644\u0627\u0634 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f onupgradeneeded (\u0641\u0631\u0627\u0645\u0648\u0634 \u0646\u06a9\u0646\u06cc\u062f \u0646\u0633\u062e\u0647 db \u062e\u0648\u062f \u0631\u0627 \u0627\u0631\u062a\u0642\u0627 \u062f\u0647\u06cc\u062f):<\/p>\n<p>request.onupgradeneeded = (event) =&gt; {<br \/>\n    const db = (event.target as IDBOpenDBRequest).result;<br \/>\n    db.createObjectStore(&#8220;documents&#8221;, { keyPath: &#8220;id&#8221;, autoIncrement: true });<br \/>\n    console.log(&#8220;IndexedDB upgraded&#8221;, event);<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0646\u06cc\u0632 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u0645 create \u0645\u0627 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u0645\u060c \u0627\u0648\u0644\u06cc\u0646 \u0645\u0648\u0631\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0622\u0646 \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n<p>request.onsuccess = (event) =&gt; {<br \/>\n    const db = (event.target as IDBOpenDBRequest).result;<br \/>\n    const transaction = db.transaction(&#8220;documents&#8221;, &#8220;readwrite&#8221;);<br \/>\n    const store = transaction.objectStore(&#8220;documents&#8221;);<br \/>\n    store.add(source);<br \/>\n    console.log(&#8220;Added item to store&#8221;);<\/p>\n<p>    const getRequest = store.get(1);<br \/>\n    getRequest.onsuccess = (event) =&gt; {<br \/>\n        const result = (event.target as IDBRequest).result;<br \/>\n        console.log(&#8220;Got item from store&#8221;, result);<br \/>\n    };<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0648 \u0634\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0634\u062f\u0647 \u0647\u0645\u0686\u0646\u0627\u0646 \u062d\u0627\u0648\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0645\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0627\u0633\u062a Uint8Array \u0642\u0627\u0644\u0628 \u0622\u0628\u062f\u0627\u0631!<\/p>\n<p>Got item from store {<br \/>\n    status: &#8216;OK&#8217;,<br \/>\n    detectionScores: {&#8230;},<br \/>\n    points: Array(4),<br \/>\n    horizontalLines: Array(5),<br \/>\n    verticalLines: Array(5), \u2026}<br \/>\n    aspectRatio: 0.698217078300424averageBrightness: 183<br \/>\n    croppedImage: {&#8230;, format: &#8216;BGR&#8217;, data: Uint8Array(1859760)<br \/>\n    &#8230;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0628\u0647\u0628\u0648\u062f\u0647\u0627\u06cc \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646<\/p>\n<p>\u0632\u0645\u0627\u0646 \u0622\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0644 \u0641\u0631\u0622\u06cc\u0646\u062f \u06a9\u0645\u06cc \u0631\u0627\u062d\u062a \u062a\u0631 \u0634\u0648\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627\u0632 \u0634\u062f\u0646 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u062f\u0631 \u0628\u0644\u0648\u06a9 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u062e\u0648\u062f\u0634 \u0628\u067e\u06cc\u0686\u0627\u0646\u06cc\u0645:<\/p>\n<p>private static openDB(): Promise&lt;IDBDatabase&gt; {<br \/>\n    return new Promise((resolve, reject) =&gt; {<\/p>\n<p>        const DB_NAME = &#8220;SBSDKBase&#8221;;<br \/>\n        const DB_VERSION = 4;<br \/>\n        const request = indexedDB.open(DB_NAME, DB_VERSION);<\/p>\n<p>        request.onsuccess = (event) =&gt; {<br \/>\n            resolve((event.target as IDBOpenDBRequest).result);<br \/>\n        };<\/p>\n<p>        request.onerror = (event) =&gt; { reject(event); };<br \/>\n        request.onupgradeneeded = (event) =&gt; {<br \/>\n            \/\/ Update object stores when necessary<br \/>\n        };<br \/>\n    });<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0648 \u06cc\u06a9 \u0628\u0644\u0648\u06a9 \u062f\u06cc\u06af\u0631 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0648\u062f \u0641\u0631\u0648\u0634\u06af\u0627\u0647\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u06cc\u06af\u0631 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0622\u0646 \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u0645:<\/p>\n<p>private static async getDocumentStore(): Promise&lt;IDBObjectStore&gt; {<br \/>\n    const db = await SBStorage.openDB();<br \/>\n    const transaction = db.transaction(&#8220;documents&#8221;, &#8220;readwrite&#8221;);<br \/>\n    return transaction.objectStore(&#8220;documents&#8221;);<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0648 \u0627\u06a9\u0646\u0648\u0646 \u0645\u0627 \u062f\u0648 \u0639\u0645\u0644\u06a9\u0631\u062f \u0639\u0645\u0648\u0645\u06cc \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0628\u0635\u0631\u06cc \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062e\u0648\u062f \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06cc\u06a9 \u0633\u0646\u062f \u0648 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0647\u0645\u0647 \u0622\u0646\u0647\u0627 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n<p>static async storeDocument(source: CroppedDetectionResult): Promise&lt;void&gt; {<br \/>\n    const store = await SBStorage.getDocumentStore();<br \/>\n    store.add(source);<br \/>\n}<\/p>\n<p>static async getDocuments(): Promise&lt;CroppedDetectionResult[]&gt; {<br \/>\n    const store = await SBStorage.getDocumentStore();<br \/>\n    return new Promise((resolve, reject) =&gt; {<br \/>\n        store.getAll().onsuccess = (event) =&gt; {<br \/>\n            const result = (event.target as IDBRequest).result;<br \/>\n            resolve(result);<br \/>\n        };<br \/>\n    });<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627\u06cc\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u062d\u06cc\u062d \u062e\u0637\u0627 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f\u060c \u0628\u0627 \u0686\u0646\u062f \u0639\u0645\u0644\u06a9\u0631\u062f wrapper\u060c \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc IndexedDB \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc\u060c \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b\u060c \u0646\u0633\u0628\u062a\u0627\u064b \u0622\u0633\u0627\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0628\u0627 Promise \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0627\u0632 \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u0628\u0631\u06af\u0634\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u0646\u0645\u06cc \u06a9\u0646\u062f. \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062e\u06cc\u0644\u06cc \u062e\u0648\u0628 \u0627\u0633\u062a. \u0645\u0627 \u0641\u0642\u0637 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0642\u0646\u062f\u0647\u0627\u06cc \u0646\u062d\u0648\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u06a9\u062f \u0632\u06cc\u0628\u0627\u062a\u0631 \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f\u060c \u0648 \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0647\u06cc\u0646\u0647 \u0628\u0648\u062f.<\/p>\n<p>  \u0632\u0645\u0627\u0646 \u0628\u0646\u062f\u06cc \u0645\u0639\u0627\u0645\u0644\u0627\u062a<\/p>\n<p>\u0627\u0645\u06a9\u0627\u0646 \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u062d\u062a\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u0648 \u0645\u0627 \u062f\u0631 \u0639\u0631\u0636 \u06cc\u06a9 \u062b\u0627\u0646\u06cc\u0647 \u0628\u0647 \u0622\u0646 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0631\u0633\u06cc\u062f. \u0627\u0645\u0627 \u0627\u0628\u062a\u062f\u0627\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062a\u0645\u0627\u0645 \u0627\u06cc\u0646 \u062a\u0631\u0627\u06a9\u0646\u0634 \u0647\u0627 \u0686\u0642\u062f\u0631 \u0632\u0645\u0627\u0646 \u0645\u06cc \u0628\u0631\u062f. \u0634\u0645\u0627 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0627\u06cc\u062f \u062f\u0642\u06cc\u0642\u0627 \u0628\u062f\u0627\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0627 \u0628\u0647\u06cc\u0646\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0686\u0631\u0627. \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u06a9\u0644\u06cc\u062f\u06cc \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0642\u0648\u06cc \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0641\u0642\u0637 \u0628\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u062e\u0648\u062f \u0628\u0631\u06af\u0631\u062f\u06cc\u0645 \u0648 \u0627\u0646\u062f\u0627\u0632\u0647 \u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u0646\u062f \u0645\u06cc\u0644\u06cc \u062b\u0627\u0646\u06cc\u0647 \u067e\u0633 \u0627\u0632 \u0647\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0639\u0646\u06cc \u062f\u0627\u0631 \u06af\u0630\u0634\u062a\u0647 \u0627\u0633\u062a. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644:<\/p>\n<p>const currentMS = new Date().getTime();<br \/>\nconst request = indexedDB.open(&#8220;SBSDKBase&#8221;, 4);<br \/>\nconsole.log(&#8220;Opening indexedDB&#8221;, new Date().getTime() &#8211; currentMS);<\/p>\n<p>request.onsuccess = (event) =&gt; {<br \/>\n    const db = (event.target as IDBOpenDBRequest).result;<br \/>\n    const transaction = db.transaction(&#8220;documents&#8221;, &#8220;readwrite&#8221;);<br \/>\n    const store = transaction.objectStore(&#8220;documents&#8221;);<br \/>\n    store.add(source);<br \/>\n    console.log(&#8220;Added item to store&#8221;, new Date().getTime() &#8211; currentMS);<\/p>\n<p>    const getRequest = store.get(1);<br \/>\n    getRequest.onsuccess = (event) =&gt; {<br \/>\n        const result = (event.target as IDBRequest).result;<br \/>\n        console.log(&#8220;Got item from store&#8221;, new Date().getTime() &#8211; currentMS);<br \/>\n    };<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>Opening indexedDB 0<br \/>\nAdded item to store 17<br \/>\nGot item from store 30<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u062e\u06cc\u0644\u06cc \u0628\u062f \u0646\u06cc\u0633\u062a\u060c \u0627\u0645\u0627 \u0647\u06cc\u0686 \u0686\u06cc\u0632 \u0647\u0645 \u0646\u06cc\u0633\u062a. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0646 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0631\u0648\u06cc \u06cc\u06a9 \u0645\u06a9 \u0628\u0648\u06a9 \u067e\u0631\u0648 \u0631\u062f\u0647 \u0628\u0627\u0644\u0627\u062a\u0631 \u0628\u0627 \u062a\u0631\u0627\u0634\u0647 M2 \u0648 SSD \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0645\u060c \u0627\u06cc\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f 20 \u062a\u0627 50 \u0628\u0631\u0627\u0628\u0631 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u06cc\u06a9 \u062f\u0633\u062a\u06af\u0627\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u06cc\u0627 iOS \u0631\u062f\u0647 \u067e\u0627\u06cc\u06cc\u0646 \u062a\u0631 \u0637\u0648\u0644 \u0628\u06a9\u0634\u062f.<\/p>\n<p>\u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0648\u0644\u06cc\u0647 IndexedDB \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0631\u0627 \u0628\u0627 Promises \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u0648 \u062f\u0631 \u0628\u0631\u062e\u06cc \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u062e\u0648\u0628 \u0627\u0633\u062a. \u0627\u0645\u0627 \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u0628\u0627 \u062a\u06a9\u0647 \u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u062f\u0627\u062f\u0647 \u0633\u0631 \u0648 \u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645\u060c \u0627\u0631\u0632\u0634 \u0622\u0646 \u0631\u0627 \u062f\u0627\u0631\u062f \u06a9\u0647 \u0631\u0648\u06cc \u0645\u0648\u0627\u0632\u06cc \u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u06cc \u0633\u0631\u0645\u0627\u06cc\u0647 \u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u0627\u0632 \u0645\u0648\u0636\u0648\u0639 \u0627\u0635\u0644\u06cc \u062e\u0627\u0631\u062c \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0648 \u0627\u06cc\u0646 \u0645\u0627 \u0631\u0627 \u0628\u0647 \u2026<\/p>\n<p>  \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0648\u0628<\/p>\n<p>\u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0648\u0628 \u0627\u0628\u0632\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u062a\u0648\u0627\u06cc \u0648\u0628 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0647\u0627 \u062f\u0631 \u0631\u0634\u062a\u0647 \u0647\u0627\u06cc \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0647\u0633\u062a\u0646\u062f. Worker Thread \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0648\u0638\u0627\u06cc\u0641 \u0631\u0627 \u0628\u062f\u0648\u0646 \u062a\u062f\u0627\u062e\u0644 \u0628\u0627 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f. (MDN)<\/p>\n<p>\u0627\u06cc\u0646\u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0648\u0628 \u0628\u0627 \u0648\u0639\u062f\u0647\u200c\u0647\u0627\/\u062a\u0642\u0627\u0636\u0627\u0647\u0627 \u0645\u062a\u0641\u0627\u0648\u062a \u0647\u0633\u062a\u0646\u062f \u0628\u0633\u06cc\u0627\u0631 \u0627\u0633\u0627\u0633\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0645\u0646 \u062e\u06cc\u0644\u06cc \u0639\u0645\u06cc\u0642 \u062f\u0631 threading \u063a\u0648\u0637\u0647 \u0648\u0631 \u0646\u0645\u06cc \u0634\u0648\u0645\u060c \u0627\u0645\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647\u060c \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0633\u0627\u0633\u0627\u064b \u062a\u06a9 \u0631\u0634\u062a\u0647 \u0627\u06cc \u0627\u0633\u062a. \u062f\u0631 \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0634\u06a9\u0644\u060c \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0641\u0642\u0637 \u0642\u0646\u062f \u0646\u062d\u0648\u06cc \u0628\u0631\u0627\u06cc \u0632\u0646\u062c\u06cc\u0631\u0647\u200c\u0647\u0627\u06cc \u0648\u0639\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0642\u0628\u0644 \u0627\u0632 \u0633\u0627\u06cc\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0637\u0648\u0644\u0627\u0646\u06cc\u200c\u0645\u062f\u062a \u0627\u0631\u0627\u0626\u0647 \u0634\u0648\u062f.<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u0647\u0645 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u062f\u0648 \u0634\u063a\u0644 \u0647\u0631\u06af\u0632 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0648\u0627\u0632\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062d\u06cc\u0637 \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f. \u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a \u0646\u0627\u0647\u0645\u06af\u0627\u0645 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u06cc\u0646 \u062f\u0648 \u06a9\u0627\u0631 \u0627\u0632 \u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0638\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u00ab\u0647\u0645\u0632\u0645\u0627\u0646\u00bb \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f. \u0628\u0631\u0627\u06cc \u0645\u0648\u0627\u0632\u06cc \u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u06cc\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0631\u0646\u062f\u0631 \u0647\u0645\u0632\u0645\u0627\u0646 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u060c \u0645\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0647\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<p>\u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647\u060c \u0647\u0645\u0647 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0628\u0647 \u0645\u0627 \u0631\u0634\u062a\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u06af\u0631\u06cc \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u0627\u0633\u06cc \u0648 \u0645\u0634\u06a9\u0644\u0627\u062a<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u06a9\u0627\u0631\u06af\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0648\u0631\u062f \u062e\u0627\u0635 \u062e\u0648\u062f\u060c \u0628\u0627 \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0647\u0645\u0627\u0646 \u06a9\u062f \u0645\u062b\u0627\u0644\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f\u060c \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062a\u062e\u0645 \u0631\u06cc\u0632\u06cc \u06cc\u06a9 \u06a9\u0627\u0631\u06af\u0631 \u06cc\u06a9 \u06a9\u0627\u0631 \u0646\u0633\u0628\u062a\u0627\u064b \u067e\u06cc\u0634 \u067e\u0627 \u0627\u0641\u062a\u0627\u062f\u0647 \u0627\u0633\u062a. \u0627\u0632 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc MDN\u060c \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06a9\u0627\u0631\u06af\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<p>onmessage = function(e) {<br \/>\n  console.log(&#8216;Worker: Message received from main script&#8217;);<br \/>\n  const result = e.data[0] * e.data[1];<br \/>\n  if (isNaN(result)) {<br \/>\n    postMessage(&#8216;Please write two numbers&#8217;);<br \/>\n  } else {<br \/>\n    const workerResult = &#8216;Result: &#8216; + result;<br \/>\n    console.log(&#8216;Worker: Posting message back to main script&#8217;);<br \/>\n    postMessage(workerResult);<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0648 \u0633\u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062e\u0648\u062f \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0628\u0647 \u0622\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>if (window.Worker) {<br \/>\n  const myWorker = new Worker(&#8220;worker.js&#8221;);<\/p>\n<p>  [first, second].forEach(input =&gt; {<br \/>\n    input.onchange = function() {<br \/>\n      myWorker.postMessage([first.value, second.value]);<br \/>\n      &#8230;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f\u060c \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u06a9\u062f \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631 \u0631\u0648\u06cc \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u0627\u062c\u0631\u0627\u06cc \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0622\u0646 \u0628\u06cc \u0627\u0647\u0645\u06cc\u062a \u0646\u06cc\u0633\u062a. \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u06af\u0631 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u0647\u06cc\u062f. \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0646\u0633\u0628\u062a\u0627\u064b \u0633\u0627\u062f\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f\u060c \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0646\u06cc\u0632 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0641\u0627\u06cc\u0644 Worker \u062e\u0648\u062f \u0631\u0627 \u06a9\u062c\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637 Vite \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u06cc\u062f\u061f \u0648\u0642\u062a\u06cc \u0627\u0632 Webpack \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u062c\u0627 \u0645\u06cc \u0631\u0648\u062f\u061f \u0622\u06cc\u0627 \u0645\u062d\u06cc\u0637 \u0634\u0645\u0627 \u0627\u0632 Webpack \u0628\u062f\u0648\u0646 \u0627\u0633\u062a\u062e\u0648\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0627\u0633\u062a \u06cc\u0627 \u067e\u0634\u062a \u0633\u06cc\u0633\u062a\u0645 \u0633\u0627\u062e\u062a \u062f\u06cc\u06af\u0631\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u061f \u0627\u06af\u0631 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u06cc \u0647\u0645 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0686\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f &#8211; \u0622\u06cc\u0627 \u0622\u0646\u0647\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u06af\u0631 \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u0646\u062f\u061f<\/p>\n<p>\u06cc\u0627\u060c \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u062b\u0627\u0644\u06cc \u062f\u0642\u06cc\u0642 \u062a\u0631: \u0645\u0627 \u0627\u0632 Webpack \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 SDK \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0648 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0627\u0641\u0632\u0648\u0646\u0647 worker-loader \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u062f\u0631 \u0645\u062d\u0635\u0648\u0644 \u0646\u0647\u0627\u06cc\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f. \u0627\u06cc\u0646 \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0645\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 \u06a9\u062f \u0645\u0646\u0628\u0639 SDK \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u06af\u0632\u06cc\u0646\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u06af\u0631 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062f\u0631 \u0622\u0646 \u0645\u062d\u06cc\u0637 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.<\/p>\n<p>  \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0627\u062f\u0647<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0631\u0627\u0647\u200c\u062d\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u062f\u0631 \u06a9\u062f \u0645\u0646\u0628\u0639 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0633\u067e\u0633 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u0632 \u062e\u0648\u062f \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631\u0627\u06cc \u0628\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0622\u0646 \u062f\u0631 \u06cc\u06a9 \u062d\u0628\u0627\u0628 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0633\u067e\u0633 \u0622\u0646 \u0644\u06a9\u0647 \u062f\u0631 worker \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062e\u0627\u0631\u062c\u06cc (\u0648 \u0627\u0632 Martins Olumide \u062f\u0631 dev.to \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u062a\u0634\u06a9\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645).<\/p>\n<p>\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f\u060c \u0627\u0645\u0627 \u0631\u0627\u0647 \u062d\u0644\u06cc \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u062d\u06a9\u0645 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0627\u0633\u062a. \u0634\u0631\u0637 \u0645\u06cc \u0628\u0646\u062f\u0645 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u062e\u0648\u0628 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644\u060c \u0645\u0627 \u0642\u0637\u0639\u0627\u064b \u0628\u0647 \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u0636\u0627\u0641\u06cc \u0645\u06cc \u067e\u0631\u062f\u0627\u0632\u06cc\u0645 \u062a\u0627 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0622\u06cc\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Webpack \u0628\u0631\u0627\u06cc \u067e\u06cc\u0634 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0622\u0646 \u062f\u0631 \u0628\u0633\u062a\u0647 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0641\u0627\u06cc\u0644 worker \u067e\u0627\u06cc\u0647 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<p>const workerFunction = function () {<br \/>\n   \/\/ Perform every operation we want in this function<br \/>\n   self.onmessage = (event: MessageEvent) =&gt; {<br \/>\n      postMessage(&#8216;Message received!&#8217;);<br \/>\n   };<br \/>\n};<\/p>\n<p>\/\/ This stringifies the whole function<br \/>\nlet codeToString = workerFunction.toString();<br \/>\n\/\/ This brings out the code in the bracket in string<br \/>\nlet mainCode = codeToString.substring(codeToString.indexOf(&#8216;{&#8216;) + 1, codeToString.LastIndexOf(&#8216;}&#8217;));<br \/>\n\/\/ Convert the code into a raw data<br \/>\nlet blob = new Blob([mainCode], { type: &#8216;application\/javascript&#8217; });<br \/>\n\/\/ A url is made out of the blob object and we&#8217;re good to go<br \/>\nlet worker_script = URL.createObjectURL(blob);<\/p>\n<p>export default worker_script;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0646\u0638\u0631\u0627\u062a \u062f\u0631 \u0628\u0644\u0648\u06a9 \u0628\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u06a9\u0627\u0645\u0644\u0627\u064b \u0648\u0627\u0636\u062d \u0628\u0627\u0634\u062f \u06a9\u0647 \u0645\u0627 \u0642\u0635\u062f \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645: \u0645\u0627 \u0627\u0633\u0627\u0633\u0627\u064b \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 worker \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0631\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0627 stringify \u06a9\u0631\u062f\u0646 \u06a9\u0644 worker \u0648 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u0622\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062d\u0628\u0627\u0628 \u0645\u0633\u062e\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p>  \u0647\u0645\u0647 \u0631\u0627 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u06af\u0630\u0627\u0634\u062a\u0646<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u0645\u0627 \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u06a9\u062f \u0642\u0628\u0644\u06cc \u062e\u0648\u062f \u0631\u0627 \u06a9\u0645\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u0645 \u062a\u0627 \u0628\u0627 \u0622\u0646 \u062a\u0627\u0628\u0639 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0648 \u06a9\u0627\u0631\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u062a\u0648\u0627\u0628\u0639 wrapper \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0642\u0628\u0644\u06cc \u0631\u0627 \u0628\u0647 \u062f\u0627\u062e\u0644 \u0622\u0646 \u062a\u0627\u0628\u0639 \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 (\u0686\u0648\u0646\u060c \u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647\u060c \u062f\u0631 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0648\u0627\u0628\u0639 \u062f\u0627\u062e\u0644\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0628\u0647 \u0647\u0645 \u0645\u06cc \u062e\u0648\u0631\u062f) \u0648 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u06a9\u0627\u0631\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0642\u0628\u0644\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0627\u062f\u06cc\u0645\u060c \u0641\u0642\u0637 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0627\u06cc\u062f \u0628\u0647 \u062c\u0627\u06cc \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u067e\u06cc\u0627\u0645\u060c \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645. \u062f\u0627\u062f\u0647 \u0647\u0627:<\/p>\n<p>const workerFunction = function () {<\/p>\n<p>    function openDB(): Promise&lt;IDBDatabase&gt; {<br \/>\n        &#8230;<br \/>\n    }<\/p>\n<p>    async function getDocumentStore(): Promise&lt;IDBObjectStore&gt; {<br \/>\n        &#8230;<br \/>\n    }<\/p>\n<p>    self.onmessage = (event: MessageEvent) =&gt; {<br \/>\n        console.log(&#8220;Received in worker thread:&#8221;, event.data);<br \/>\n        if (event.data.type === &#8216;storeDocument&#8217;) {<br \/>\n            console.log(&#8220;Storing document in worker thread&#8221;);<br \/>\n            getDocumentStore().then((store) =&gt; {<br \/>\n                store.add(event.data.data);<br \/>\n                self.postMessage(true);<br \/>\n            });<br \/>\n        } else if (event.data.type === &#8216;getDocuments&#8217;) {<br \/>\n            console.log(&#8220;Getting documents in worker thread&#8221;);<br \/>\n            getDocumentStore().then((store) =&gt; {<br \/>\n                const request = store.getAll();<br \/>\n                request.onsuccess = (event) =&gt; {<br \/>\n                    self.postMessage((event.target as IDBRequest).result);<br \/>\n                };<br \/>\n            });<br \/>\n        }<br \/>\n    };<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0647\u0645\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc IndexedDB API \u0631\u0627 \u0628\u0647 worker \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u0641\u0627\u06cc\u0644 \u0633\u0631\u0648\u06cc\u0633 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0635\u0644\u06cc \u0645\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u062e\u0627\u0644\u06cc \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f:<\/p>\n<p>import { CroppedDetectionResult } from &#8220;..\/..\/core\/worker\/ScanbotSDK.Core&#8221;;<br \/>\nimport worker_script from &#8216;.\/worker\/sb-storage.worker&#8217;;<\/p>\n<p>export default class SBStorage {<\/p>\n<p>    private static readonly worker: Worker = new Worker(worker_script);<\/p>\n<p>    static async storeDocument(source: CroppedDetectionResult): Promise&lt;boolean&gt; {<br \/>\n        this.worker.postMessage({ type: &#8216;storeDocument&#8217;, data: source });<\/p>\n<p>        return new Promise&lt;boolean&gt;((resolve, reject) =&gt; {<br \/>\n            this.worker.onmessage = (event) =&gt; {<br \/>\n                resolve(true);<br \/>\n            }<br \/>\n        });<br \/>\n    }<\/p>\n<p>    static async getDocuments(): Promise&lt;CroppedDetectionResult[]&gt; {<br \/>\n        this.worker.postMessage({ type: &#8216;getDocuments&#8217; });<br \/>\n        return new Promise&lt;CroppedDetectionResult[]&gt;((resolve, reject) =&gt; {<br \/>\n            this.worker.onmessage = (event) =&gt; {<br \/>\n                resolve(event.data);<br \/>\n            }<br \/>\n        });<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062a\u0646\u0647\u0627 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0627\u0646\u062f\u060c \u06a9\u062f\u06cc \u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 blob\u060c \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u062e\u0648\u062f \u06a9\u0627\u0631\u06af\u0631\u060c \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0628\u0647 worker \u0648 \u062d\u0644 \u0642\u0648\u0644 \u067e\u0633 \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u06cc\u0627\u0645.<\/p>\n<p>\u0648 \u0628\u0633! \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0628\u0627\u06cc\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0634\u0648\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u0634\u063a\u0644\u0647 \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0631\u062f. \u0646\u06a9\u062a\u0647 \u0627\u0648\u0644\u06cc\u0647: \u062a\u0646\u0647\u0627 \u062f\u0631 \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647\u060c \u0645\u0627 \u062e\u0648\u062f\u0645\u0627\u0646 \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0628\u0647\u06cc\u0646\u0647 \u0628\u0631\u0627\u06cc \u0627\u0634\u06cc\u0627\u0621 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 &#8211; \u0641\u0642\u0637 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 IndexedDB \u0648 \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0648\u0628\u060c \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b.<\/p>\n<div data-article-id=\"2010913\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D9%BE%DB%8C%D8%B4_%D8%AF%D8%B1%D8%A2%D9%85%D8%AF\" >\u067e\u06cc\u0634 \u062f\u0631\u0622\u0645\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%85%D8%AD%D9%84%DB%8C\" >\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D9%85%D8%AD%D8%AF%D9%88%D8%AF%DB%8C%D8%AA_%D9%87%D8%A7\" >\u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#Base64\" >Base64<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7%DB%8C_%D8%A8%D8%A7%DB%8C%D9%86%D8%B1%DB%8C\" >\u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D9%87%D9%85%D9%87_%DA%86%DB%8C%D8%B2_%DB%8C%DA%A9_%D8%B4%DB%8C_%D8%A7%D8%B3%D8%AA_%D8%AA%D9%82%D8%B1%DB%8C%D8%A8%D8%A7\" >\u0647\u0645\u0647 \u0686\u06cc\u0632 \u06cc\u06a9 \u0634\u06cc \u0627\u0633\u062a (\u062a\u0642\u0631\u06cc\u0628\u0627)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D8%B3%D8%B1%DB%8C%D8%A7%D9%84_%D8%B3%D8%A7%D8%B2%DB%8C\" >\u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#IndexedDB\" >IndexedDB<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#API_%D9%88_%D8%B1%D8%A7%D9%87_%D8%AD%D9%84_%D9%87%D8%A7%DB%8C_%D8%A2%D8%B4%D9%81%D8%AA%D9%87\" >API \u0648 \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0622\u0634\u0641\u062a\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D8%B1%D9%88%DB%8C%DA%A9%D8%B1%D8%AF_%D8%A7%D8%B3%D9%BE%D8%A7%D8%B1%D8%AA%DB%8C\" >\u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u0633\u067e\u0627\u0631\u062a\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D8%A8%D9%87%D8%A8%D9%88%D8%AF%D9%87%D8%A7%DB%8C_%D9%86%D8%A7%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86\" >\u0628\u0647\u0628\u0648\u062f\u0647\u0627\u06cc \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D8%B2%D9%85%D8%A7%D9%86_%D8%A8%D9%86%D8%AF%DB%8C_%D9%85%D8%B9%D8%A7%D9%85%D9%84%D8%A7%D8%AA\" >\u0632\u0645\u0627\u0646 \u0628\u0646\u062f\u06cc \u0645\u0639\u0627\u0645\u0644\u0627\u062a<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%DA%A9%D8%A7%D8%B1%DA%AF%D8%B1%D8%A7%D9%86_%D9%88%D8%A8\" >\u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0648\u0628<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%A7%D8%B3%D8%A7%D8%B3%DB%8C_%D9%88_%D9%85%D8%B4%DA%A9%D9%84%D8%A7%D8%AA\" >\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u0627\u0633\u06cc \u0648 \u0645\u0634\u06a9\u0644\u0627\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D8%A8%D8%A7%D8%B1%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C_%DB%8C%DA%A9_%D9%81%D8%A7%DB%8C%D9%84_%D8%A8%D9%87_%D8%B9%D9%86%D9%88%D8%A7%D9%86_%D8%AF%D8%A7%D8%AF%D9%87\" >\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0627\u062f\u0647<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/storage-wars-web-edition-or-how-we-learned-to-store-binary-data-effectively-1f7c\/#%D9%87%D9%85%D9%87_%D8%B1%D8%A7_%DA%A9%D9%86%D8%A7%D8%B1_%D9%87%D9%85_%DA%AF%D8%B0%D8%A7%D8%B4%D8%AA%D9%86\" >\u0647\u0645\u0647 \u0631\u0627 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u06af\u0630\u0627\u0634\u062a\u0646<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%B4_%D8%AF%D8%B1%D8%A2%D9%85%D8%AF\"><\/span>\n<p>  \u067e\u06cc\u0634 \u062f\u0631\u0622\u0645\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0645\u0647 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0631\u0627\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f. \u0627\u06af\u0631 \u0622\u0646\u0647\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0646\u0645\u06cc \u06a9\u0631\u062f\u0646\u062f\u060c \u062f\u0646\u06cc\u0627\u06cc \u0645\u0627 \u0646\u0633\u0628\u062a\u0627\u064b \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u06cc\u062f. \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0634\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628 \u0647\u0633\u062a\u06cc\u062f\u060c \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u0645 \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u062f\u0627\u0631\u06cc\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0628\u0647 \u0633\u0631\u0639\u062a \u0628\u0647 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645.<\/p>\n<p>\u0645\u0646 \u0627\u06cc\u0646 \u0631\u0627 \u062f\u0631 Google Docs \u0645\u06cc \u0646\u0648\u06cc\u0633\u0645. \u0641\u06a9\u0631 \u0645\u06cc \u06a9\u0646\u0645 \u0642\u0628\u0644 \u0627\u0632 \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u0628\u0627 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc Google\u060c \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0686\u06cc\u0632 \u062e\u0648\u0628\u06cc \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0647\u0631 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u06a9\u0647 \u0645\u0646 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0645 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 Docs \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0628\u0647 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0628\u0648\u062f\u0646 \u0633\u0631\u0648\u0631 \u062e\u0627\u0631\u062c\u06cc \u0648\u0627\u0628\u0633\u062a\u0647 \u0646\u06cc\u0633\u062a.<\/p>\n<p>\u06a9\u0648\u06a9\u06cc\u200c\u0647\u0627 \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0647\u0633\u062a\u0646\u062f \u2013 \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0622\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0633\u0648\u0621 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062a\u0648\u0633\u0637 \u0627\u0634\u062e\u0627\u0635 \u062b\u0627\u0644\u062b \u0622\u0645\u0627\u062f\u0647 \u0647\u0633\u062a\u0646\u062f. \u0622\u0646\u0647\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0633\u0631\u0648\u0631\u0647\u0627 \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0622\u0646\u0647\u0627 \u06cc\u06a9 \u062f\u0627\u0633\u062a\u0627\u0646 \u0628\u0631\u0627\u06cc \u0632\u0645\u0627\u0646 \u062f\u06cc\u06af\u0631\u06cc \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0633\u067e\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062c\u0644\u0633\u0647 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u0645\u0646\u0627\u0633\u0628 \u062f\u0627\u0631\u06cc\u0645. \u0622\u0646\u0647\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u06cc\u06a9\u0633\u0627\u0646 \u0647\u0633\u062a\u0646\u062f\u060c \u0628\u0647 \u062c\u0632 \u062f\u0627\u0645\u0646\u0647 \u0648 \u0637\u0648\u0644 \u0639\u0645\u0631\u0634\u0627\u0646.<\/p>\n<p><strong>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc<\/strong> \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0647\u0631 \u0645\u0628\u062f\u0623 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0647\u0631 \u0632\u0645\u0627\u0646 \u0648 \u0627\u0632 \u0647\u0631 \u0628\u0631\u06af\u0647 \u0627\u06cc \u06a9\u0647 \u0627\u0632 \u0647\u0645\u0627\u0646 URL \u0628\u0627\u0632\u062f\u06cc\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0647\u0645\u0627\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p><strong>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062c\u0644\u0633\u0647<\/strong>\u0627\u0632 \u0633\u0648\u06cc \u062f\u06cc\u06af\u0631\u060c \u062f\u0631 \u0647\u0631 \u0646\u0645\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0686\u0631\u062e\u0647 \u0639\u0645\u0631 \u0622\u0646 \u0628\u0647 \u06cc\u06a9 \u0628\u0631\u06af\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0627\u06cc \u0627\u0632 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u062f \u062a\u0627 \u062f\u0631 \u0648\u06cc\u0646\u062f\u0648\u0632\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u062f\u0648\u0646 \u062a\u062f\u0627\u062e\u0644 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f\u060c \u06a9\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0628 \u0627\u0633\u062a. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0645\u0627 \u0646\u06cc\u0633\u062a.<\/p>\n<p>\u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u062f\u0627\u0645 \u0627\u0644\u0632\u0627\u0645\u0627\u062a\u061f \u062f\u0642\u06cc\u0642\u0627 \u062f\u0646\u0628\u0627\u0644 \u0686\u06cc \u0647\u0633\u062a\u06cc\u0645\u061f<\/p>\n<p>\u0645\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0647\u0633\u062a\u06cc\u0645 \u062a\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc Scanbot Web SDK \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0627\u06cc\u0646 SDK \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 API \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627 \u0627\u0646\u0648\u0627\u0639 \u0645\u062e\u062a\u0644\u0641 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0633\u0631\u0648\u06a9\u0627\u0631 \u062f\u0627\u0631\u062f. \u0648\u0642\u062a\u06cc \u06cc\u06a9 \u0633\u0646\u062f \u0631\u0627 \u0628\u0627 \u0622\u0646 \u0627\u0633\u06a9\u0646 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0641\u0642\u0637 \u06cc\u06a9 \u062f\u0633\u062a\u0647 \u0631\u0634\u062a\u0647 \u0648 \u0627\u0639\u062f\u0627\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u0645\u06cc \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u06cc\u06a9\u060c \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u062a\u06cc\u062c\u0647 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0634\u0627\u0645\u0644 \u06cc\u06a9 \u0622\u0631\u0627\u06cc\u0647 \u0628\u0627 \u0645\u062e\u062a\u0635\u0627\u062a \u0645\u06a9\u0627\u0646 \u0633\u0646\u062f \u0631\u0648\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0627\u0633\u06a9\u0646 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc\u060c \u0634\u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062e\u0648\u062f \u062a\u0635\u0648\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0627\u062f\u0647 \u0628\u0627\u06cc\u0646\u0631\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u062f (\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0628\u06cc\u0634\u062a\u0631 \u062a\u0648\u0636\u06cc\u062d \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f). \u0647\u0645\u0647 \u0627\u06cc\u0646\u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0634\u0648\u0646\u062f \u0648 \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u0648\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u0645\u0648\u0646\u0647\u200c\u0627\u06cc \u0627\u0632 \u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645 (\u0645\u0646 \u0628\u0647\u200c\u062e\u0627\u0637\u0631 \u0627\u062e\u062a\u0635\u0627\u0631\u060c \u062d\u0627\u0634\u06cc\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc\u200c\u0647\u0627 \u0648 \u0627\u0646\u0648\u0627\u0639 \u0646\u0627\u0645\u0631\u0628\u0648\u0637 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0631\u062f\u0647\u200c\u0627\u0645):<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">class<\/span> <span class=\"nc\">CroppedDetectionResult<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nl\">croppedImage<\/span><span class=\"p\">:<\/span> <span class=\"nx\">RawImage<\/span> <span class=\"o\">|<\/span> <span class=\"kc\">null<\/span><span class=\"p\">;<\/span>\n    <span class=\"nl\">originalImage<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Image<\/span><span class=\"p\">;<\/span>\n    <span class=\"nl\">status<\/span><span class=\"p\">:<\/span> <span class=\"nx\">DetectionStatus<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">NOT_ACQUIRED<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n    <span class=\"nl\">detectionScores<\/span><span class=\"p\">:<\/span> <span class=\"nx\">DetectionScores<\/span><span class=\"p\">;<\/span>\n    <span class=\"nl\">points<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Point<\/span><span class=\"p\">[];<\/span>\n    <span class=\"nl\">horizontalLines<\/span><span class=\"p\">:<\/span> <span class=\"nx\">LineSegment<\/span><span class=\"p\">[];<\/span>\n    <span class=\"nl\">verticalLines<\/span><span class=\"p\">:<\/span> <span class=\"nx\">LineSegment<\/span><span class=\"p\">[];<\/span>\n    <span class=\"nl\">aspectRatio<\/span><span class=\"p\">:<\/span> <span class=\"nx\">number<\/span><span class=\"p\">;<\/span>\n    <span class=\"nl\">averageBrightness<\/span><span class=\"p\">:<\/span> <span class=\"nx\">number<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f\u060c \u062e\u06cc\u0644\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0646\u06cc\u0633\u062a. \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u0639\u062f\u0627\u062f \u0648 \u0631\u0634\u062a\u0647 \u0647\u0627\u060c \u0628\u0631\u062e\u06cc \u0627\u0632 \u06a9\u0644\u0627\u0633 \u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0646\u0648\u0627\u0639.<\/p>\n<p>\u062a\u0646\u0647\u0627 \u062f\u0648 \u0628\u062e\u0634 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0645\u0634\u06a9\u0644 \u0633\u0627\u0632 \u0647\u0633\u062a\u0646\u062f: <code>RawImage<\/code>\u060c \u06a9\u0647 \u062d\u0627\u0648\u06cc <code>Uint8Array<\/code> \u062f\u0627\u062f\u0647 \u0647\u0627\u060c \u0648 <code>Image<\/code>\u060c \u06a9\u0647 \u0646\u0648\u0639\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0647\u0627 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u062f <code>ImageData<\/code>\u060c <code>ArrayBuffer<\/code>\u060c <code>Uint8Array<\/code> \u0648 <code>RawImage<\/code> \u062e\u0648\u062f<\/p>\n<p>\u067e\u0633 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0645\u0647 \u0627\u06cc\u0646\u0647\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645\u061f<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%85%D8%AD%D9%84%DB%8C\"><\/span>\n<p>  \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647\u060c OG \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645: <code>localStorage<\/code>. \u0627\u0632 \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u0645 \u062e\u0648\u062f\u0645 \u0631\u0627 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0628\u0646\u0627\u0645\u0645\u060c \u0627\u0632 \u0633\u0627\u0644 2009 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0628\u0648\u062f\u0647 \u0627\u0633\u062a. \u0622\u0647\u060c \u0632\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u0633\u0627\u062f\u0647\u200c\u062a\u0631. <code>localStorage<\/code> \u0647\u0646\u0648\u0632 \u062f\u0631 \u0627\u0646\u0648\u0627\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 API \u062f\u0631 \u0637\u0648\u0644 \u0627\u0639\u0635\u0627\u0631 \u0646\u0633\u0628\u062a\u0627\u064b \u067e\u0627\u06cc\u062f\u0627\u0631 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0648\u0627\u0631\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u0634\u0648\u0645.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0634\u06cc \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645. \u0641\u0642\u0637 \u0627\u0633\u062a\u062e\u0648\u0627\u0646 \u0647\u0627\u06cc \u062e\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06cc\u06a9 \u0645\u0648\u0631\u062f \u0648 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0622\u0646 \u0628\u062f\u0648\u0646 \u0646\u06af\u0631\u0627\u0646\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u06cc\u0627 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc.<\/p>\n<p>\u062a\u062c\u0632\u06cc\u0647 JSON \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 <code>localStorage<\/code> \u0641\u0642\u0637 \u0631\u0634\u062a\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\u060c \u06a9\u0647 \u0646\u0634\u0627\u0646\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0628\u0632\u0631\u06af\u200c\u062a\u0631 \u0646\u06cc\u0633\u062a. \u0648 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">SBStorage<\/span> <span class=\"p\">{<\/span>\n\n    <span class=\"kd\">static<\/span> <span class=\"nf\">storeDocument<\/span><span class=\"p\">(<\/span><span class=\"nx\">source<\/span><span class=\"p\">:<\/span> <span class=\"nx\">CroppedDetectionResult<\/span><span class=\"p\">):<\/span> <span class=\"k\">void<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">localStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">setItem<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">document<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">source<\/span><span class=\"p\">));<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"kd\">static<\/span> <span class=\"nf\">getDocument<\/span><span class=\"p\">():<\/span> <span class=\"nx\">CroppedDetectionResult<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">item<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">localStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">getItem<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">document<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nx\">item<\/span> <span class=\"p\">?<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">parse<\/span><span class=\"p\">(<\/span><span class=\"nx\">item<\/span><span class=\"p\">)<\/span> <span class=\"p\">:<\/span> <span class=\"kc\">null<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AD%D8%AF%D9%88%D8%AF%DB%8C%D8%AA_%D9%87%D8%A7\"><\/span>\n<p>  \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0645\u0646 \u0641\u0642\u0637 \u0645\u06cc\u200c\u062e\u0648\u0627\u0633\u062a\u0645 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u0645 \u06a9\u0647 \u06cc\u06a9 \u0633\u0646\u062f \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0634\u062f\u0647 \u0686\u06af\u0648\u0646\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f\u060c \u0627\u0645\u0627 \u067e\u0631\u0648\u0698\u0647 \u0634\u0631\u0648\u0639 React \u0645\u0646 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">sb<\/span><span class=\"o\">-<\/span><span class=\"nx\">storage<\/span><span class=\"p\">.<\/span><span class=\"nx\">ts<\/span><span class=\"p\">:<\/span><span class=\"mi\">7<\/span> <span class=\"nc\">Uncaught <\/span><span class=\"p\">(<\/span><span class=\"k\">in<\/span> <span class=\"nx\">promise<\/span><span class=\"p\">)<\/span> <span class=\"nx\">DOMException<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Failed<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">execute<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">setItem<\/span><span class=\"dl\">'<\/span> <span class=\"nx\">on<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Storage<\/span><span class=\"dl\">'<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Setting<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">value<\/span> <span class=\"k\">of<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">document<\/span><span class=\"dl\">'<\/span> <span class=\"nx\">exceeded<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">quota<\/span><span class=\"p\">.<\/span>\n    <span class=\"nx\">at<\/span> <span class=\"nx\">SBStorage<\/span><span class=\"p\">.<\/span><span class=\"nx\">storeDocument<\/span> <span class=\"p\">(<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0622\u0646\u0644\u0627\u06cc\u0646 \u0632\u06cc\u0628\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0686\u0646\u062f \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0622\u0646 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a <code>localStorage<\/code>: https:\/\/arty.name\/localstorage.html. \u0627\u0632 \u0632\u0645\u0627\u0646 \u0646\u0648\u0634\u062a\u0646 \u0627\u06cc\u0646\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0645\u0646 5\u060c200\u060c000 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u0639\u062f\u062f \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0631\u0648\u0631\u06af\u0631 \u0648 \u0646\u0633\u062e\u0647 \u0627\u06cc \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u0645\u062a\u0641\u0627\u0648\u062a \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p>\u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0633\u0627\u06cc\u062a \u062d\u062a\u06cc \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<blockquote>\n<p>Chrome 6.0.472.36 \u0628\u062a\u0627 \u0628\u0647 \u0645\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f 2600-2700 \u0647\u0632\u0627\u0631 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0645\u060c \u0641\u0627\u06cc\u0631\u0641\u0627\u06a9\u0633 3.6.8 \u2013 5200-5300k\u060c Explorer 8 \u2013 4900-5000k\u060c \u0648 Opera 10.70 build 9013 \u06cc\u06a9 \u062f\u06cc\u0627\u0644\u0648\u06af \u0638\u0627\u0647\u0631 \u0634\u062f \u06a9\u0647 \u0628\u0647 \u0645\u0646 \u0627\u062c\u0627\u0632\u0647 \u062f\u0627\u062f \u062a\u0627 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0646\u0627\u0645\u062d\u062f\u0648\u062f \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0645. Spec \u062e\u0648\u062f\u0633\u0631\u0627\u0646\u0647 5 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u0686\u06cc\u0632\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0646\u0645\u06cc \u06af\u0648\u06cc\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 UTF-16 \u0634\u0645\u0627 \u062f\u0648 \u0628\u0631\u0627\u0628\u0631 \u06a9\u0645\u062a\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u0647 \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0627\u0632 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645. \u06cc\u06a9 \u062a\u063a\u06cc\u06cc\u0631 \u0633\u0631\u06cc\u0639 \u062f\u0631 \u0642\u0637\u0639\u0647 \u0645\u0648\u062c\u0648\u062f\u2026<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">value<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">source<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Characters:<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">localStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">setItem<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">document<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">value<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>&#8230; \u0648 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc \u06a9\u0647 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">Characters<\/span><span class=\"p\">:<\/span> <span class=\"mi\">68046772<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0639\u0644\u0648\u0645 \u0627\u0633\u062a\u060c <code>localStorage<\/code> \u062d\u062a\u06cc \u0646\u0645\u06cc \u062a\u0648\u0627\u0646 \u06cc\u06a9 \u062f\u0647\u0645 \u0622\u0646 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f.<\/p>\n<p>\u0627\u06af\u0631\u0686\u0647 \u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u062b\u0627\u0628\u062a \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0645\u0646\u0627\u0633\u0628\u06cc \u0646\u06cc\u0633\u062a\u060c \u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u0628\u0647 \u0627\u06cc\u0646 \u0648\u0627\u0642\u0639\u06cc\u062a \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u0645 \u06a9\u0647 <code>localStorage<\/code> \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0628\u0648\u062f \u06a9\u0647 \u0645\u0646 \u062f\u0631 \u0648\u0647\u0644\u0647 \u0627\u0648\u0644 \u0642\u0631\u0627\u0631 \u0628\u0648\u062f \u0628\u0647 \u0622\u0646 \u0628\u0631\u0633\u0645\u060c \u0627\u0645\u0627 \u062f\u0631 \u0639\u0648\u0636 \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0628\u0627 \u0645\u0648\u0636\u0648\u0639 \u0633\u0647\u0645\u06cc\u0647 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u06cc\u0645.<\/p>\n<p>\u0645\u0646 \u0641\u0642\u0637 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u0628\u0647 \u0633\u0631\u0639\u062a \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u0645 \u06a9\u0647 \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc \u0628\u0627 \u0641\u0631\u0645\u062a \u062f\u0627\u062f\u0647 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0686\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639\u060c \u0642\u0627\u0644\u0628 \u0645\u0627 <code>croppedImage<\/code> \u062f\u0627\u062f\u0647 \u06cc\u06a9 \u0627\u0633\u062a <code>Uint8Array<\/code>. \u06a9\u0645 \u0648 \u0628\u06cc\u0634 \u0634\u0628\u06cc\u0647 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0634\u0645\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f (\u0627\u06cc\u0646 \u0622\u0631\u0627\u06cc\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 1,504,272 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0637\u0648\u0644 \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u0634\u0631\u0648\u0639 \u0622\u0646 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a):<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"p\">[<\/span><span class=\"mi\">169<\/span><span class=\"p\">,<\/span> <span class=\"mi\">195<\/span><span class=\"p\">,<\/span> <span class=\"mi\">195<\/span><span class=\"p\">,<\/span> <span class=\"mi\">169<\/span><span class=\"p\">,<\/span> <span class=\"mi\">195<\/span><span class=\"p\">,<\/span> <span class=\"mi\">195<\/span><span class=\"p\">,<\/span> <span class=\"mi\">168<\/span><span class=\"p\">,<\/span> <span class=\"mi\">194<\/span><span class=\"p\">,<\/span> <span class=\"mi\">194<\/span><span class=\"p\">,<\/span> <span class=\"mi\">168<\/span><span class=\"p\">,<\/span> <span class=\"p\">...<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>Enter fullscreen mode<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>Exit fullscreen mode<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>After serialization, the same array looks like the following:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"p\">{<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">0<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">169<\/span><span class=\"p\">,<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">1<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">195<\/span><span class=\"p\">,<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">2<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">195<\/span><span class=\"p\">,<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">3<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">169<\/span><span class=\"p\">,<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">4<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">195<\/span><span class=\"p\">,<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">5<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">195<\/span><span class=\"p\">,<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">6<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">168<\/span><span class=\"p\">,<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">7<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">194<\/span><span class=\"p\">,<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">8<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">194<\/span><span class=\"p\">,<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">9<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">168<\/span><span class=\"p\">,<\/span> <span class=\"p\">...<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>Enter fullscreen mode<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>Exit fullscreen mode<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>We\u2019ll get into why this is in a later section, but what we need to know right now is that <code>localStorage<\/code> only accepts strings and therefore doesn\u2019t support binary formats out of the box.<\/p>\n<p>There are ways to get around this \u2013 you can probably already imagine an algorithm to turn this map of keys and values back into an array of integers. It\u2019s always going to be a hack, though. You just shouldn\u2019t have to manipulate binary data manually.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Base64\"><\/span>\n<p>  Base64<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The correct way to do this would be to convert the image data to a Base64 image first, which we can then store properly.<\/p>\n<p><strong>Base64<\/strong> is a family of binary-to-text encoding schemes that represent binary data in an ASCII string format by transforming it into a radix-64 representation.<\/p>\n<p>That may sound complicated, but it\u2019s really a straightforward process. You simply create a reader object, pass your array as a blob, and read it in as a data URL using the native JavaScript function. If necessary, also remove the descriptor part of the string. Here\u2019s the convenience function we use:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kr\">public<\/span> <span class=\"kd\">static<\/span> <span class=\"k\">async<\/span> <span class=\"nf\">toBase64<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Uint8Array<\/span><span class=\"p\">):<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">string<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ See https:\/\/stackoverflow.com\/a\/39452119<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">base64url<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"k\">new<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">string<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"nx\">resolve<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">reader<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">FileReader<\/span><span class=\"p\">()<\/span>\n        <span class=\"nx\">reader<\/span><span class=\"p\">.<\/span><span class=\"nx\">onload<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">resolve<\/span><span class=\"p\">(<\/span><span class=\"nx\">reader<\/span><span class=\"p\">.<\/span><span class=\"nx\">result<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">string<\/span><span class=\"p\">)<\/span>\n        <span class=\"nx\">reader<\/span><span class=\"p\">.<\/span><span class=\"nf\">readAsDataURL<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"nc\">Blob<\/span><span class=\"p\">([<\/span><span class=\"nx\">data<\/span><span class=\"p\">]))<\/span>\n    <span class=\"p\">})\u061b<\/span>\n    <span class=\"c1\">\/\/ \u0642\u0633\u0645\u062a &#39;data:...;base64&#39; \u0631\u0627 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f<\/span>\n    <span class=\"k\">\u0628\u0627\u0632\u06af\u0634\u062a<\/span> <span class=\"nx\">base64url<\/span><span class=\"p\">.<\/span><span class=\"nf\">\u0628\u0631\u0634<\/span><span class=\"p\">(<\/span><span class=\"nx\">base64url<\/span><span class=\"p\">.<\/span><span class=\"nf\">indexOf<\/span><span class=\"p\">(<\/span><span class=\"dl\">&#39;<\/span><span class=\"s1\">\u060c<\/span><span class=\"dl\">&#39;<\/span><span class=\"p\">)<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0633\u067e\u0633 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631\u060c \u0627\u06af\u0631 \u062e\u06cc\u0644\u06cc \u0637\u0648\u0644\u0627\u0646\u06cc \u0646\u0628\u0627\u0634\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u062b\u0631 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0645\u062d\u0644\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0634\u0648\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">base64<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">ImageUtils<\/span><span class=\"p\">.<\/span><span class=\"nf\">toBase64<\/span><span class=\"p\">(<\/span><span class=\"nx\">source<\/span><span class=\"p\">.<\/span><span class=\"nx\">croppedImage<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">);<\/span>\n<span class=\"c1\">\/\/ Base64: wsLQw8LQw8LQw8TRxMXSxMXTxcfUxcjVxMjVxcnXx8vaztHh1dbm19np2dvr2Nv...<\/span>\n<span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Base64: <\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">base64<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0647\u0631 \u0646\u0648\u0639 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0628\u0627 \u0627\u06cc\u0646 \u0628\u0632\u0631\u06af\u06cc \u0627\u0632 \u0646\u0638\u0631 \u0645\u062d\u0627\u0633\u0628\u0627\u062a\u06cc \u0633\u0646\u06af\u06cc\u0646 \u0627\u0633\u062a\u060c \u0686\u0647 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0646\u0642\u0634\u0647 \u06a9\u0644\u06cc\u062f-\u0645\u0642\u062f\u0627\u0631 \u06cc\u0627 \u0646\u0633\u062e\u0647 Base64\u060c \u0648 \u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0633\u0639\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0628\u0647\u06cc\u0646\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0647\u0645\u0647 \u0627\u06cc\u0646\u0647\u0627 \u0622\u0646 \u0631\u0627 \u0642\u0637\u0639 \u0646\u0645\u06cc \u06a9\u0646\u062f. \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0648 \u0627\u06cc\u0646 \u0645\u0627 \u0631\u0627 \u0628\u0647 \u2026<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7%DB%8C_%D8%A8%D8%A7%DB%8C%D9%86%D8%B1%DB%8C\"><\/span>\n<p>  \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0648\u0628\u060c \u0645\u0627 \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u06a9\u0627\u0631 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0647\u0627 (\u0627\u06cc\u062c\u0627\u062f\u060c \u0622\u067e\u0644\u0648\u062f\u060c \u062f\u0627\u0646\u0644\u0648\u062f) \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc \u0634\u0648\u06cc\u0645. \u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0639\u0645\u0648\u0644\u060c \u067e\u0631\u062f\u0627\u0632\u0634 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0633\u062a &#8211; \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645.<\/p>\n<p>\u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u062f\u0631 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0645\u0627\u0646\u0646\u062f <code>ArrayBuffer<\/code>\u060c <code>Uint8Array<\/code>\u060c <code>DataView<\/code>\u060c <code>Blob<\/code> \u0648 <code>File<\/code>\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u0647\u0627\u06cc \u0638\u0631\u06cc\u0641 \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0628\u0647 \u0647\u0631 \u062d\u0627\u0644\u060c \u0647\u062f\u0641 \u0627\u0635\u0644\u06cc \u0627\u0633\u062a <code>ArrayBuffer<\/code> &#8211; \u0631\u06cc\u0634\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632\u060c \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u062e\u0627\u0645. \u0648 \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0628\u0627 \u0622\u0646 \u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f. \u0627\u0632 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc wrapper \u0641\u0648\u0642\u200c\u0627\u0644\u0630\u06a9\u0631 \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u062f\u0627\u0631\u0627\u06cc \u062a\u0646\u0648\u0639\u06cc \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u062a <code>ArrayBuffer<\/code>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%87%D9%85%D9%87_%DA%86%DB%8C%D8%B2_%DB%8C%DA%A9_%D8%B4%DB%8C_%D8%A7%D8%B3%D8%AA_%D8%AA%D9%82%D8%B1%DB%8C%D8%A8%D8%A7\"><\/span>\n<p>  \u0647\u0645\u0647 \u0686\u06cc\u0632 \u06cc\u06a9 \u0634\u06cc \u0627\u0633\u062a (\u062a\u0642\u0631\u06cc\u0628\u0627)<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631\u060c \u062a\u0648\u0636\u06cc\u062d \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0644\u06cc\u0644 \u0631\u0634\u062a\u0647 <code>ArrayBuffer<\/code> \u06cc\u0627 <code>Uint8Array<\/code> \u062a\u0628\u062f\u06cc\u0644 \u0622\u0646 \u0628\u0647 \u06a9\u0645\u06cc \u06a9\u0627\u0628\u0648\u0633 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0633\u06cc\u0627\u0631 \u062c\u0627\u0644\u0628 \u0627\u0633\u062a. \u0628\u0628\u06cc\u0646\u06cc\u062f\u060c \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062f\u0631 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062f\u0631 \u0648\u0627\u0642\u0639 \u06cc\u06a9 \u0634\u06cc \u0627\u0633\u062a\u060c \u0628\u0647 \u062c\u0632 \u0631\u0634\u062a\u0647 \u0647\u0627. \u0631\u0634\u062a\u0647 \u0647\u0627 \u0647\u0646\u0648\u0632 \u0647\u0645 \u0631\u0634\u062a\u0647 \u0647\u0633\u062a\u0646\u062f. \u0627\u0645\u0627 \u0628\u0627 \u0622\u0631\u0627\u06cc\u0647 \u0647\u0627\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u0627\u0631\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">a<\/span>  <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"mi\">3<\/span><span class=\"p\">];<\/span> <span class=\"nx\">a<\/span><span class=\"p\">.<\/span><span class=\"nx\">foo<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">bar<\/span><span class=\"dl\">\"<\/span><span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">a<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ [ 1, 2, 3, foo: 'bar']<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0644\u06cc\u0644\u0634 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0628\u0648\u0645\u06cc\u060c \u06cc\u06a9 \u0622\u0631\u0627\u06cc\u0647 \u0647\u0646\u0648\u0632 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0634\u06cc \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062f\u0631 \u0622\u0646 \u0631\u0634\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f <em>\u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0646<\/em> \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0622\u0631\u0627\u06cc\u0647 \u0633\u0627\u062f\u0647 \u0641\u0642\u0637 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 <code>toString()<\/code> \u062a\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc \u0631\u0627\u062d\u062a\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0632\u06cc\u0631\u0627 \u0627\u063a\u0644\u0628 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a.<\/p>\n<p>\u0648 \u062f\u0642\u06cc\u0642\u0627\u064b \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0628\u0646\u062f \u0646\u0627\u0641 <code>Uint8Array<\/code> \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0634\u06cc \u0627\u0632 \u062c\u0641\u062a \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f-\u0645\u0642\u062f\u0627\u0631 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f <code>{\"0\":169,\"1\":195,\"2\":195,\"3\":169 \u2026}<\/code> \u0645\u062b\u0627\u0644 \u0642\u0628\u0644\u06cc) \u0648 \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0631\u0627 \u0645\u0627 \u0628\u0647 \u0645\u0631\u0627\u062d\u0644 \u0627\u0636\u0627\u0641\u06cc \u0628\u0631\u0627\u06cc \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc \u0635\u062d\u06cc\u062d \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B3%D8%B1%DB%8C%D8%A7%D9%84_%D8%B3%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0631\u0632\u0634 \u0622\u0646 \u0631\u0627 \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u06a9\u062a\u0647 \u0627\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0647 \u0622\u0646 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f\u0645 \u062a\u0648\u0636\u06cc\u062d \u062f\u0647\u06cc\u0645: \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0642\u0627\u0628\u0644 \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f. \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0647\u0646\u0648\u0632 \u0627\u0633\u0627\u0633\u0627\u064b \u062f\u0631\u0633\u062a \u0627\u0633\u062a\u060c \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u06cc\u0646 \u0631\u0648\u0632\u0647\u0627 \u0627\u0632 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0628\u0648\u0645\u06cc \u0628\u0631\u0627\u06cc \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc \u0628\u0631\u062e\u0648\u0631\u062f\u0627\u0631 \u0627\u0633\u062a\u060c \u0628\u0627 \u0622\u062e\u0631\u06cc\u0646 \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 <code>TextDecoder<\/code>. \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">buffer<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">TextEncoder<\/span><span class=\"p\">().<\/span><span class=\"nf\">encode<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">banana<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">testObj<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">encodedText<\/span><span class=\"p\">:<\/span> <span class=\"nx\">buffer<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span> <span class=\"p\">};<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">serializedTestObj<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">testObj<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">serializedTestObj<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ {\"encodedText\":\"98,97,110,97,110,97\"}<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">deserializedTestObj<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">parse<\/span><span class=\"p\">(<\/span><span class=\"nx\">serializedTestObj<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">deserializedBuffer<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">deserializedTestObj<\/span><span class=\"p\">.<\/span><span class=\"nx\">encodedText<\/span><span class=\"p\">.<\/span><span class=\"nf\">split<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">,<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">newBuffer<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Uint8Array<\/span><span class=\"p\">.<\/span><span class=\"k\">from<\/span><span class=\"p\">(<\/span><span class=\"nx\">deserializedBuffer<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">str<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">TextDecoder<\/span><span class=\"p\">().<\/span><span class=\"nf\">decode<\/span><span class=\"p\">(<\/span><span class=\"nx\">newBuffer<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">str<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ banana<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0627\u0632 \u0648\u06cc\u0644 \u0645\u0627\u0646\u0633\u0644\u0648 \u0627\u0632 dev.to \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0642\u0637\u0639\u0647!<\/p>\n<p>\u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0647\u0633\u062a <em>\u0646\u0633\u0628\u062a\u0627<\/em> \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc\u060c \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0645\u062a\u0648\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0628\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f:<\/p>\n<ul>\n<li>    \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0631\u0634\u062a\u0647\u200c\u0627\u06cc \u0628\u0627\u0634\u0646\u062f \u06a9\u0647 \u0628\u0627 \u06a9\u0644\u0627\u0633 \u06a9\u062f\u06af\u0630\u0627\u0631 \u0633\u0631\u06cc\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u06a9\u0647 \u06cc\u06a9 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0633\u0628\u062a\u0627\u064b \u063a\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644 \u0627\u0633\u062a (\u062f\u0631 \u0628\u06cc\u0634\u062a\u0631 \u0645\u0648\u0627\u0631\u062f \u0634\u0645\u0627 \u0628\u0627 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f).<\/li>\n<li>    \u0634\u06a9\u0627\u0641\u062a\u0646 \u0631\u0634\u062a\u0647\u060c \u06a9\u0647 \u06cc\u06a9 \u0639\u0645\u0644 \u06af\u0631\u0627\u0646 \u0642\u06cc\u0645\u062a \u0627\u0633\u062a.<\/li>\n<li>    \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646\u060c \u0647\u0645 \u0633\u0631\u06cc\u0627\u0644\u200c\u0632\u062f\u0627\u06cc\u06cc \u0628\u0627\u0641\u0631 \u0648 \u0647\u0645 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0645\u062a\u0646 \u062f\u0648\u0628\u0627\u0631\u0647.<\/li>\n<\/ul>\n<p>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0631\u0648\u0634 \u0628\u0639\u062f\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0648\u0628 \u0628\u0631\u0648\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"IndexedDB\"><\/span>\n<p>  IndexedDB<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c IndexedDB \u0686\u06cc\u0633\u062a\u061f \u0645\u0646 \u0628\u0627 \u06a9\u0645\u0627\u0644 \u0645\u06cc\u0644 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0633\u062a\u0645 \u0646\u0645\u0627\u06cc \u06a9\u0648\u062a\u0627\u0647\u06cc \u0627\u0632 \u0645\u0641\u0647\u0648\u0645 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0645\u060c \u0627\u0645\u0627 MDN \u0628\u0647 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0648\u062c\u0647 \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f:<\/p>\n<blockquote>\n<p>IndexedDB \u06cc\u06a9 API \u0633\u0637\u062d \u067e\u0627\u06cc\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 \u0633\u0645\u062a \u0645\u0634\u062a\u0631\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0633\u0627\u062e\u062a\u0627\u0631\u06cc\u0627\u0641\u062a\u0647\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627\/\u062d\u0628\u0627\u0628 \u0647\u0627 \u0627\u0633\u062a. \u0627\u06cc\u0646 API \u0627\u0632 \u0634\u0627\u062e\u0635 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u062c\u0633\u062a\u062c\u0648\u0647\u0627\u06cc \u0628\u0627 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0628\u0627\u0644\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/blockquote>\n<p>\u0622\u0646\u0686\u0647 \u06a9\u0647 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0645\u0639\u0646\u06cc \u062f\u0627\u0631\u062f\u060c \u06cc\u06a9 \u0631\u0627\u0647 \u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0641\u0648\u0642 \u0627\u0644\u0630\u06a9\u0631 \u0627\u0633\u062a <code>ArrayBuffer<\/code> \u0642\u0627\u0644\u0628 \u0628\u0644\u0647\u060c \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0646\u0637\u0642 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u0648 \u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647\u060c \u0645\u0632\u062e\u0631\u0641 \u0648 \u062a\u0634\u0646\u0647 \u0645\u0646\u0627\u0628\u0639 \u062e\u0628\u0631\u06cc \u0646\u06cc\u0633\u062a!<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631 \u0633\u0631\u06cc\u0639\u060c \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u0635\u0644\u06cc \u0628\u0627 <code>localStorage<\/code> \u0639\u0628\u0627\u0631\u062a\u0646\u062f \u0627\u0632:<\/p>\n<ul>\n<li>    \u0641\u0642\u0637 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0631\u0634\u062a\u0647 \u0647\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u062f.<\/li>\n<li>    \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u062f\u0631\u067e\u0648\u0634 \u062f\u0627\u062f\u0647 \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0648\u0686\u06a9 \u0648 \u0646\u0627\u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<p>IndexedDB \u0647\u0631 \u062f\u0648\u06cc \u0627\u06cc\u0646 \u0645\u0633\u0627\u0626\u0644 \u0631\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u062d\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0622\u0646\u060c \u0645\u0632\u0627\u06cc\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0646\u06cc\u0632 \u062f\u0627\u0631\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0622\u0646 \u062f\u0631 \u0648\u0628\u200c\u06a9\u0627\u0631\u06af\u0631\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f (\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0628\u06cc\u0634\u062a\u0631 \u062a\u0648\u0636\u06cc\u062d \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f). \u0647\u0645\u0686\u0646\u06cc\u0646 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0633\u062a\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0686\u0631\u062e\u0647 \u0631\u0646\u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0630\u062e\u06cc\u0631\u0647\/\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u0633\u062f\u0648\u062f \u0646\u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u062a\u0646\u0647\u0627 \u0686\u06cc\u0632 <code>localStorage<\/code> \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0633\u0627\u062f\u06af\u06cc API \u0622\u0646 \u0627\u0633\u062a. \u0641\u0642\u0637 \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a <code>localStorage.setItem<\/code> \u0648 <code>localStorage.getItem<\/code>. \u0686\u0646\u062f \u06a9\u0627\u0631\u06a9\u0631\u062f \u0631\u0627\u062d\u062a\u06cc \u0627\u0636\u0627\u0641\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a. \u0627\u0646\u062c\u0627\u0645 \u0634\u062f!<\/p>\n<h3><span class=\"ez-toc-section\" id=\"API_%D9%88_%D8%B1%D8%A7%D9%87_%D8%AD%D9%84_%D9%87%D8%A7%DB%8C_%D8%A2%D8%B4%D9%81%D8%AA%D9%87\"><\/span>\n<p>  API \u0648 \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0622\u0634\u0641\u062a\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>IndexedDB \u0646\u06cc\u0632 \u06a9\u0627\u0645\u0644 \u0646\u06cc\u0633\u062a: API \u0645\u0639\u0631\u0648\u0641 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0622\u0634\u0641\u062a\u06af\u06cc \u0634\u06af\u0641\u062a \u0627\u0646\u06af\u06cc\u0632 \u0627\u0633\u062a. \u062f\u0631 \u0648\u0627\u0642\u0639\u060c \u0627\u06cc\u0646 \u0686\u0646\u06cc\u0646 \u0622\u0634\u0641\u062a\u06af\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u06a9\u0627\u0645\u0644 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u062f\u0631 \u0627\u0637\u0631\u0627\u0641 \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a \u062a\u0627 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0645\u0639\u0645\u0648\u0644\u06cc \u0634\u0645\u0627 \u0645\u062c\u0628\u0648\u0631 \u0646\u0628\u0627\u0634\u062f \u0628\u0627 \u0645\u0632\u062e\u0631\u0641\u0627\u062a \u0622\u0646 \u062f\u0633\u062a \u0648 \u067e\u0646\u062c\u0647 \u0646\u0631\u0645 \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u062e\u0648\u062f \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0622\u0646\u0686\u0647 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 \u062a\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f.<\/p>\n<p>use-indexeddb \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0642\u0648\u0644 \u0645\u06cc\u200c\u062f\u0647\u062f \u0633\u0628\u06a9\u200c\u062a\u0631\u06cc\u0646 \u0645\u0648\u0631\u062f \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0641\u0642\u0637 \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u062f\u0631 \u0628\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0686\u0646\u062f\u0627\u0646 \u0631\u0627\u062d\u062a \u0646\u06cc\u0633\u062a\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0627\u0631\u0627\u06cc \u0628\u0631\u062e\u06cc \u06af\u0632\u0627\u0631\u0634\u200c\u0647\u0627\u06cc \u0646\u0641\u0648\u0630\u06cc \u0627\u0633\u062a \u06a9\u0647 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<p>\u0628\u0639\u062f\u06cc Dexie \u0627\u0633\u062a\u060c \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644 \u062a\u0631 \u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06a9\u0646\u0646\u062f\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f. API \u0622\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647\u060c \u0646\u0648\u0634\u062a\u0646 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0648 \u0627\u0641\u0632\u0648\u062f\u0646 \u0645\u062f\u062e\u0644 \u0647\u0627 \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0628\u0635\u0631\u06cc \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">db<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Dexie<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">MyDatabase<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n\n<span class=\"c1\">\/\/ Declare tables, IDs and indexes<\/span>\n<span class=\"nx\">db<\/span><span class=\"p\">.<\/span><span class=\"nf\">version<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">).<\/span><span class=\"nf\">stores<\/span><span class=\"p\">({<\/span> <span class=\"na\">friends<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">++id, name, age<\/span><span class=\"dl\">'<\/span> <span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ Find some old friends<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">oldFriends<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">db<\/span><span class=\"p\">.<\/span><span class=\"nx\">friends<\/span><span class=\"p\">.<\/span><span class=\"nf\">where<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">age<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nf\">above<\/span><span class=\"p\">(<\/span><span class=\"mi\">75<\/span><span class=\"p\">).<\/span><span class=\"nf\">toArray<\/span><span class=\"p\">();<\/span>\n\n<span class=\"c1\">\/\/ or make a new one<\/span>\n<span class=\"k\">await<\/span> <span class=\"nx\">db<\/span><span class=\"p\">.<\/span><span class=\"nx\">friends<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">({<\/span>\n    <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Camilla<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">age<\/span><span class=\"p\">:<\/span> <span class=\"mi\">25<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">street<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">East 13:th Street<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">picture<\/span><span class=\"p\">:<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">getBlob<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">camilla.png<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0646\u06af\u0627\u0647 \u0627\u0648\u0644\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u06a9\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a LINQ C# \u0627\u0644\u0647\u0627\u0645 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627\u06cc \u0632\u0646\u062f\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0645\u062b\u0644\u0627\u064b Redux \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0648\u0644\u062a \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u0646 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u062e\u0648\u0628 \u0627\u0633\u062a\u060c Dexie \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0631\u0627\u06cc \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0627 \u06a9\u0645\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 idb \u0627\u0633\u062a \u06a9\u0647 \u0627\u062f\u0639\u0627 \u0645\u06cc \u06a9\u0646\u062f \u0628\u06cc\u0634\u062a\u0631 API IndexedDB \u0631\u0627 \u0645\u0646\u0639\u06a9\u0633 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u0628\u0627 \u0628\u0631\u062e\u06cc \u0628\u0647\u0628\u0648\u062f\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647 \u0627\u0633\u062a. \u0627\u0645\u0627 \u062f\u0631 \u0648\u0627\u0642\u0639\u060c \u0628\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f \u06a9\u0647 API \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0645\u06cc\u200c\u067e\u06cc\u0686\u062f <code>Promise<\/code> \u06a9\u0644\u0627\u0633 \u0648 \u0646\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631. \u0642\u0637\u0639\u0627\u064b \u0628\u0631\u0627\u06cc \u0686\u0646\u06cc\u0646 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062c\u0632\u0626\u06cc \u062f\u0631 \u0631\u0627\u062d\u062a\u06cc\u060c \u0627\u0631\u0632\u0634 \u0627\u0641\u0632\u0648\u062f\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0631\u0627 \u0646\u062f\u0627\u0631\u062f.<\/p>\n<p>\u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0645\u062d\u0628\u0648\u0628 \u0646\u0647\u0627\u06cc\u06cc JsStore \u0646\u0627\u0645 \u062f\u0627\u0631\u062f \u06a9\u0647 IndexedDB API \u0631\u0627 \u062f\u0631 \u06cc\u06a9 API \u0634\u0628\u06cc\u0647 \u0628\u0647 SQL \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">var<\/span> <span class=\"nx\">insertCount<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">connection<\/span><span class=\"p\">.<\/span><span class=\"nf\">insert<\/span><span class=\"p\">({<\/span> <span class=\"na\">into<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Product<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">values<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"nx\">value<\/span><span class=\"p\">]<\/span> <span class=\"p\">});<\/span>\n\n<span class=\"kd\">var<\/span> <span class=\"nx\">results<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">connection<\/span><span class=\"p\">.<\/span><span class=\"nf\">select<\/span><span class=\"p\">({<\/span> <span class=\"na\">from<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Product<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">where<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span> <span class=\"na\">id<\/span><span class=\"p\">:<\/span> <span class=\"mi\">5<\/span> <span class=\"p\">}<\/span> <span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06a9\u0647 \u0628\u0647 \u0646\u0638\u0631 \u062d\u0642\u06cc\u0631 \u0645\u0646 \u067e\u06cc\u0634\u0631\u0641\u062a \u0686\u0646\u062f\u0627\u0646\u06cc \u0646\u062f\u0627\u0631\u062f. SQL \u0647\u0646\u0648\u0632 \u0628\u0633\u06cc\u0627\u0631 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0633\u062a \u0648 \u0627\u06cc\u062c\u0627\u062f \u062a\u0631\u0627\u06a9\u0646\u0634 \u0647\u0627\u06cc \u06a9\u0645\u062a\u0631 \u0627\u0632 \u062d\u062f \u0628\u0647\u06cc\u0646\u0647 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a. \u0627\u06cc\u0646 SQL \u062e\u0627\u0645 \u0646\u06cc\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0634\u0627\u06cc\u062f \u062e\u06cc\u0644\u06cc \u0628\u062f \u0646\u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0645\u0646 \u0628\u0627\u0631\u0647\u0627 \u062a\u0648\u0633\u0637 SQL \u0633\u0648\u0632\u0627\u0646\u062f\u0647 \u0634\u062f\u0647\u200c\u0627\u0645 \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0645 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0647 \u0686\u0646\u06cc\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u0646\u0645.<\/p>\n<p>\u0628\u0647 \u0639\u0644\u0627\u0648\u0647\u060c \u0645\u0627\u0646\u0646\u062f Dexie\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f JsStore \u0628\u0631\u0627\u06cc \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0627 \u0646\u06cc\u0632 \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0627\u0633\u062a.<\/p>\n<p>\u0635\u0627\u062f\u0642\u0627\u0646\u0647 \u0628\u06af\u0648\u06cc\u0645\u060c \u0627\u0632 \u0642\u0628\u0644 \u0645\u06cc \u062f\u0627\u0646\u0633\u062a\u0645 \u06a9\u0647 \u062a\u062d\u062a \u062a\u0623\u062b\u06cc\u0631 \u0647\u06cc\u0686 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u0642\u0631\u0627\u0631 \u0646\u062e\u0648\u0627\u0647\u0645 \u06af\u0631\u0641\u062a. \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u062f\u0633\u062a\u0645\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0634 \u0627\u0633\u067e\u0627\u0631\u062a\u06cc \u06a9\u062b\u06cc\u0641 \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u06cc\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0647\u06cc\u0686 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0646\u062f \u0646\u062f\u0647\u06cc\u0645. \u0645\u0646 \u0641\u0642\u0637 \u0645\u06cc \u062e\u0648\u0627\u0633\u062a\u0645 \u06cc\u06a9 \u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0645. \u0627\u06af\u0631 \u0631\u0627\u0647 \u062d\u0644 \u0645\u0627 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u0628\u0648\u062f\u060c \u0645\u0646 \u0628\u0627 \u062f\u06a9\u0633\u06cc \u0647\u0645\u0631\u0627\u0647 \u0645\u06cc \u0634\u062f\u0645.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D9%88%DB%8C%DA%A9%D8%B1%D8%AF_%D8%A7%D8%B3%D9%BE%D8%A7%D8%B1%D8%AA%DB%8C\"><\/span>\n<p>  \u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u0633\u067e\u0627\u0631\u062a\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0633\u0627\u062e\u062a \u06cc\u06a9 SDK \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u0647\u0633\u062a\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0647 \u0647\u06cc\u0686 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u062e\u0627\u0631\u062c\u06cc \u062a\u06a9\u06cc\u0647 \u06a9\u0646\u06cc\u0645. \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a\u060c \u0648 \u0645\u0627 \u0627\u0632 \u0622\u0646\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0632\u06cc\u0631\u0627:<\/p>\n<ul>\n<li>    \u0622\u0646\u0647\u0627 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0627 \u0645\u062c\u0648\u0632 \u0645\u06cc \u0622\u06cc\u0646\u062f \u06a9\u0647 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0622\u0646 \u067e\u0627\u06cc\u0628\u0646\u062f \u0628\u0627\u0634\u06cc\u0645 \u0648 \u0627\u0641\u0634\u0627 \u06a9\u0646\u06cc\u0645.<\/li>\n<li>    \u0622\u0646\u0647\u0627 \u0633\u0631\u0628\u0627\u0631 \u0631\u0627 \u0628\u0647 \u062a\u0648\u0633\u0639\u0647 \u0648 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a \u0622\u062a\u06cc \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f (\u0645\u0637\u0645\u0626\u0646\u0645 \u06a9\u0647 \u062f\u0631\u062f \u0627\u0631\u062a\u0642\u0627\u0621 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0631\u0627 \u0628\u0647 \u062e\u0648\u0628\u06cc \u0645\u06cc \u062f\u0627\u0646\u06cc\u062f).<\/li>\n<li>    \u0622\u0646\u0647\u0627 \u0646\u0642\u0627\u0637 \u0634\u06a9\u0633\u062a \u0627\u0636\u0627\u0641\u06cc \u0631\u0627 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 \u0645\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/li>\n<\/ul>\n<p>\u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0645\u06a9\u0627\u0646 \u0648 \u062f\u0631 \u062d\u062f \u0645\u0639\u0642\u0648\u0644\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0631 \u0622\u0646\u0686\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 SDK \u0645\u0627 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u062f\u060c \u06a9\u0646\u062a\u0631\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0631\u0627\u06cc \u0645\u0646\u0637\u0642 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u0627\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u062e\u0648\u062f\u0645\u0627\u0646 \u0631\u0627 \u0631\u0648\u0644 \u06a9\u0646\u06cc\u0645!<\/p>\n<p>\u0627\u0632 \u0646\u0638\u0631 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u060c \u0645\u0648\u0631\u062f \u0645\u0627 \u0646\u0633\u0628\u062a\u0627\u064b \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0628\u0647 \u062e\u0648\u062f\u06cc \u062e\u0648\u062f \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062a\u0631\u0627\u06a9\u0646\u0634 \u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u06cc\u0646\u0637\u0648\u0631 \u0646\u06cc\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0631\u062f\u0633\u0631 \u0632\u06cc\u0627\u062f\u06cc \u0631\u0627 \u0646\u062f\u0627\u0634\u062a\u0645. \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0633\u0627\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">request<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">indexedDB<\/span><span class=\"p\">.<\/span><span class=\"nf\">open<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">SBSDKBase<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0646\u0627\u0645\u06cc \u0628\u0631\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645 \u0648 \u0634\u0645\u0627\u0631\u0647 \u0646\u0633\u062e\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u062a\u0639\u06cc\u06cc\u0646 \u0641\u0648\u0631\u06cc \u0634\u0645\u0627\u0631\u0647 \u0646\u0633\u062e\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f\u060c \u0627\u0645\u0627 \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u062f\u0644\u06cc\u0644 \u0622\u0646 \u0631\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0631\u0648\u0634\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f: \u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0645\u06cc\u0634\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0648 \u062f\u0627\u0634\u062a\u0646 \u06cc\u06a9 \u06af\u0632\u06cc\u0646\u0647 \u0622\u0633\u0627\u0646 \u0628\u0631\u0627\u06cc \u067e\u06cc\u06af\u06cc\u0631\u06cc \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0646\u0633\u062e\u0647 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0628\u0635\u0631\u06cc \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f.<\/p>\n<p>\u0634\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0627\u0631\u0627\u06cc \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a: <code>onerror<\/code>\u060c <code>onupgradeneeded<\/code>\u060c \u0648 <code>onsuccess<\/code>. \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u062e\u0637\u0627\u0647\u0627 \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0628\u06af\u06cc\u0631\u06cc\u0645\u060c \u0632\u06cc\u0631\u0627 \u0641\u0642\u0637 \u0633\u0639\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u0633\u0646\u0627\u062f \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u0645. \u0647\u06cc\u0686 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u062f\u0631 \u0645\u062f\u0644 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0647\u06cc\u0686 \u0646\u0645\u0627\u06cc\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0645\u0627 \u0641\u0642\u0637 \u0627\u0632 \u062d\u0627\u0644\u062a \u0646\u0648\u0634\u062a\u0646 \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 (\u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0647 \u0645\u0627 \u0646\u062e\u0648\u0631\u062f).<\/p>\n<p>\u062a\u0646\u0647\u0627 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0628\u0647 \u0622\u0646 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f\u06cc\u0645\u060c \u067e\u0627\u0633\u062e \u0628\u0647 \u062a\u0645\u0627\u0633 \u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">request<\/span><span class=\"p\">.<\/span><span class=\"nx\">onsuccess<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">db<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">IDBOpenDBRequest<\/span><span class=\"p\">).<\/span><span class=\"nx\">result<\/span><span class=\"p\">;<\/span>\n    <span class=\"nx\">db<\/span><span class=\"p\">.<\/span><span class=\"nf\">createObjectStore<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">documents<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"na\">keyPath<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">id<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"na\">autoIncrement<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span> <span class=\"p\">});<\/span>\n\n    <span class=\"kd\">const<\/span> <span class=\"nx\">transaction<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">db<\/span><span class=\"p\">.<\/span><span class=\"nf\">transaction<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">documents<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">readwrite<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">store<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">transaction<\/span><span class=\"p\">.<\/span><span class=\"nf\">objectStore<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">documents<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">store<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">source<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Added item to store<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"kd\">const<\/span> <span class=\"nx\">getRequest<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">store<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">getRequest<\/span><span class=\"p\">.<\/span><span class=\"nx\">onsuccess<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">result<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">IDBRequest<\/span><span class=\"p\">).<\/span><span class=\"nx\">result<\/span><span class=\"p\">;<\/span>\n        <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Got item from store<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">result<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">};<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0628\u06cc\u200c\u0633\u0627\u0628\u0642\u0647\u200c\u062a\u0631\u06cc\u0646 \u06a9\u062f \u06a9\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0641\u06a9\u0631 \u06a9\u0631\u062f\u0645 \u0628\u0627\u06cc\u062f \u0633\u0646\u062f\u06cc \u0631\u0627 \u0628\u0647 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u0645. \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f\u060c \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u0633\u0646\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u06cc\u06a9 \u0634\u06cc \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f. \u0645\u0646 \u0645\u062f\u062a \u0632\u06cc\u0627\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u0645\u060c \u0631\u0648\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u0647\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0647\u200c\u0627\u0645 \u0648 \u0641\u06a9\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0645 \u06cc\u06a9 \u062f\u0633\u062a\u0647 \u0631\u0648\u06cc \u0622\u0646 \u062f\u0627\u0631\u0645. \u0641\u06a9\u0631 \u0645\u06cc \u06a9\u0631\u062f\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0646\u0647 \u0645\u0646 \u0647\u0645\u0648\u0646 \u0645\u0648\u0642\u0639 \u06af\u0627\u0632 \u06af\u0631\u0641\u062a\u0645 \u062e\u0637\u0627:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">Uncaught<\/span> <span class=\"nx\">DOMException<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Failed<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">execute<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">createObjectStore<\/span><span class=\"dl\">'<\/span> <span class=\"nx\">on<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">IDBDatabase<\/span><span class=\"dl\">'<\/span><span class=\"p\">:<\/span> <span class=\"nx\">The<\/span> <span class=\"nx\">database<\/span> <span class=\"nx\">is<\/span> <span class=\"nx\">not<\/span> <span class=\"nx\">running<\/span> <span class=\"nx\">a<\/span> <span class=\"nx\">version<\/span> <span class=\"nx\">change<\/span> <span class=\"nx\">transaction<\/span><span class=\"p\">.<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0686\u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u0645 \u062c\u062f\u0648\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0645\u061f \u0645\u0646 \u0628\u0647 \u0633\u062e\u062a\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0631\u062f\u0647 \u0627\u0645 \u0648 \u0627\u0632 \u0642\u0628\u0644 \u0627\u06cc\u0646 \u0627\u062d\u0633\u0627\u0633 \u0631\u0627 \u062f\u0627\u0631\u0645 \u06a9\u0647 \u0646\u0648\u0634\u062a\u0646 SQL \u062e\u0627\u0645 \u0634\u0647\u0648\u062f\u06cc \u062a\u0631 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0633\u062a. \u062f\u0631 \u0622\u0646\u062c\u0627\u060c \u062d\u062f\u0627\u0642\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0633 \u0627\u0632 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u06a9\u0648\u0626\u0631\u06cc \u0647\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u0645\u06cc\u062f\u0648\u0627\u0631 \u0628\u0627\u0634\u06cc\u0645 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0628\u0639\u062f \u0628\u0647\u062a\u0631 \u0634\u0648\u062f! \u062d\u062f\u0627\u0642\u0644 \u062e\u0648\u062f \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0631\u0645\u0632\u0622\u0644\u0648\u062f \u0646\u06cc\u0633\u062a. \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0648\u0628\u0627\u0631\u0647 \u062a\u0644\u0627\u0634 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>onupgradeneeded<\/code> (\u0641\u0631\u0627\u0645\u0648\u0634 \u0646\u06a9\u0646\u06cc\u062f \u0646\u0633\u062e\u0647 db \u062e\u0648\u062f \u0631\u0627 \u0627\u0631\u062a\u0642\u0627 \u062f\u0647\u06cc\u062f):<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">request<\/span><span class=\"p\">.<\/span><span class=\"nx\">onupgradeneeded<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">db<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">IDBOpenDBRequest<\/span><span class=\"p\">).<\/span><span class=\"nx\">result<\/span><span class=\"p\">;<\/span>\n    <span class=\"nx\">db<\/span><span class=\"p\">.<\/span><span class=\"nf\">createObjectStore<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">documents<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"na\">keyPath<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">id<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"na\">autoIncrement<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span> <span class=\"p\">});<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">IndexedDB upgraded<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">event<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0646\u06cc\u0632 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u0645 <code>create<\/code> \u0645\u0627 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u0645\u060c \u0627\u0648\u0644\u06cc\u0646 \u0645\u0648\u0631\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0622\u0646 \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0631\u062f\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">request<\/span><span class=\"p\">.<\/span><span class=\"nx\">onsuccess<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">db<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">IDBOpenDBRequest<\/span><span class=\"p\">).<\/span><span class=\"nx\">result<\/span><span class=\"p\">;<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">transaction<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">db<\/span><span class=\"p\">.<\/span><span class=\"nf\">transaction<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">documents<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">readwrite<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">store<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">transaction<\/span><span class=\"p\">.<\/span><span class=\"nf\">objectStore<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">documents<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">store<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">source<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Added item to store<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"kd\">const<\/span> <span class=\"nx\">getRequest<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">store<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">getRequest<\/span><span class=\"p\">.<\/span><span class=\"nx\">onsuccess<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">result<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">IDBRequest<\/span><span class=\"p\">).<\/span><span class=\"nx\">result<\/span><span class=\"p\">;<\/span>\n        <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Got item from store<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">result<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">};<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0634\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0634\u062f\u0647 \u0647\u0645\u0686\u0646\u0627\u0646 \u062d\u0627\u0648\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0645\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0627\u0633\u062a <code>Uint8Array<\/code> \u0642\u0627\u0644\u0628 \u0622\u0628\u062f\u0627\u0631!<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">Got<\/span> <span class=\"nx\">item<\/span> <span class=\"k\">from<\/span> <span class=\"nx\">store<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nl\">status<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">OK<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> \n    <span class=\"nx\">detectionScores<\/span><span class=\"p\">:<\/span> <span class=\"p\">{...},<\/span> \n    <span class=\"nx\">points<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Array<\/span><span class=\"p\">(<\/span><span class=\"mi\">4<\/span><span class=\"p\">),<\/span> \n    <span class=\"nx\">horizontalLines<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Array<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">),<\/span> \n    <span class=\"nx\">verticalLines<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Array<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">),<\/span> <span class=\"err\">\u2026<\/span><span class=\"p\">}<\/span>\n    <span class=\"nl\">aspectRatio<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.698217078300424<\/span><span class=\"nx\">averageBrightness<\/span><span class=\"p\">:<\/span> <span class=\"mi\">183<\/span>\n    <span class=\"nx\">croppedImage<\/span><span class=\"p\">:<\/span> <span class=\"p\">{...,<\/span> <span class=\"nx\">format<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">BGR<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">data<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Uint8Array<\/span><span class=\"p\">(<\/span><span class=\"mi\">1859760<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">...<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D9%87%D8%A8%D9%88%D8%AF%D9%87%D8%A7%DB%8C_%D9%86%D8%A7%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86\"><\/span>\n<p>  \u0628\u0647\u0628\u0648\u062f\u0647\u0627\u06cc \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0632\u0645\u0627\u0646 \u0622\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0644 \u0641\u0631\u0622\u06cc\u0646\u062f \u06a9\u0645\u06cc \u0631\u0627\u062d\u062a \u062a\u0631 \u0634\u0648\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627\u0632 \u0634\u062f\u0646 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u062f\u0631 \u0628\u0644\u0648\u06a9 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u062e\u0648\u062f\u0634 \u0628\u067e\u06cc\u0686\u0627\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kr\">private<\/span> <span class=\"kd\">static<\/span> <span class=\"nf\">openDB<\/span><span class=\"p\">():<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">IDBDatabase<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Promise<\/span><span class=\"p\">((<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">,<\/span> <span class=\"nx\">reject<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n\n        <span class=\"kd\">const<\/span> <span class=\"nx\">DB_NAME<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">SBSDKBase<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">DB_VERSION<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">4<\/span><span class=\"p\">;<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">request<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">indexedDB<\/span><span class=\"p\">.<\/span><span class=\"nf\">open<\/span><span class=\"p\">(<\/span><span class=\"nx\">DB_NAME<\/span><span class=\"p\">,<\/span> <span class=\"nx\">DB_VERSION<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"nx\">request<\/span><span class=\"p\">.<\/span><span class=\"nx\">onsuccess<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nf\">resolve<\/span><span class=\"p\">((<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">IDBOpenDBRequest<\/span><span class=\"p\">).<\/span><span class=\"nx\">result<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">};<\/span>\n\n        <span class=\"nx\">request<\/span><span class=\"p\">.<\/span><span class=\"nx\">onerror<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span> <span class=\"nf\">reject<\/span><span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">);<\/span> <span class=\"p\">};<\/span>\n        <span class=\"nx\">request<\/span><span class=\"p\">.<\/span><span class=\"nx\">onupgradeneeded<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n            <span class=\"c1\">\/\/ Update object stores when necessary<\/span>\n        <span class=\"p\">};<\/span>\n    <span class=\"p\">});<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u06cc\u06a9 \u0628\u0644\u0648\u06a9 \u062f\u06cc\u06af\u0631 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0648\u062f \u0641\u0631\u0648\u0634\u06af\u0627\u0647\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u06cc\u06af\u0631 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0622\u0646 \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kr\">private<\/span> <span class=\"kd\">static<\/span> <span class=\"k\">async<\/span> <span class=\"nf\">getDocumentStore<\/span><span class=\"p\">():<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">IDBObjectStore<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">db<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">SBStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">openDB<\/span><span class=\"p\">();<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">transaction<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">db<\/span><span class=\"p\">.<\/span><span class=\"nf\">transaction<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">documents<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">readwrite<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nx\">transaction<\/span><span class=\"p\">.<\/span><span class=\"nf\">objectStore<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">documents<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0627\u06a9\u0646\u0648\u0646 \u0645\u0627 \u062f\u0648 \u0639\u0645\u0644\u06a9\u0631\u062f \u0639\u0645\u0648\u0645\u06cc \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0628\u0635\u0631\u06cc \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062e\u0648\u062f \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06cc\u06a9 \u0633\u0646\u062f \u0648 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0647\u0645\u0647 \u0622\u0646\u0647\u0627 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">static<\/span> <span class=\"k\">async<\/span> <span class=\"nf\">storeDocument<\/span><span class=\"p\">(<\/span><span class=\"nx\">source<\/span><span class=\"p\">:<\/span> <span class=\"nx\">CroppedDetectionResult<\/span><span class=\"p\">):<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"k\">void<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">store<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">SBStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">getDocumentStore<\/span><span class=\"p\">();<\/span>\n    <span class=\"nx\">store<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">source<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">static<\/span> <span class=\"k\">async<\/span> <span class=\"nf\">getDocuments<\/span><span class=\"p\">():<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">CroppedDetectionResult<\/span><span class=\"p\">[]<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">store<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">SBStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">getDocumentStore<\/span><span class=\"p\">();<\/span>\n    <span class=\"k\">return<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Promise<\/span><span class=\"p\">((<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">,<\/span> <span class=\"nx\">reject<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">store<\/span><span class=\"p\">.<\/span><span class=\"nf\">getAll<\/span><span class=\"p\">().<\/span><span class=\"nx\">onsuccess<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n            <span class=\"kd\">const<\/span> <span class=\"nx\">result<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">IDBRequest<\/span><span class=\"p\">).<\/span><span class=\"nx\">result<\/span><span class=\"p\">;<\/span>\n            <span class=\"nf\">resolve<\/span><span class=\"p\">(<\/span><span class=\"nx\">result<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">};<\/span>\n    <span class=\"p\">});<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627\u06cc\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u062d\u06cc\u062d \u062e\u0637\u0627 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f\u060c \u0628\u0627 \u0686\u0646\u062f \u0639\u0645\u0644\u06a9\u0631\u062f wrapper\u060c \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc IndexedDB \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc\u060c \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b\u060c \u0646\u0633\u0628\u062a\u0627\u064b \u0622\u0633\u0627\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0628\u0627 <code>Promise<\/code> \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0627\u0632 \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u0628\u0631\u06af\u0634\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u0631\u0627 \u0645\u0633\u062f\u0648\u062f \u0646\u0645\u06cc \u06a9\u0646\u062f. \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062e\u06cc\u0644\u06cc \u062e\u0648\u0628 \u0627\u0633\u062a. \u0645\u0627 \u0641\u0642\u0637 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0642\u0646\u062f\u0647\u0627\u06cc \u0646\u062d\u0648\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u06a9\u062f \u0632\u06cc\u0628\u0627\u062a\u0631 \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f\u060c \u0648 \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0647\u06cc\u0646\u0647 \u0628\u0648\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B2%D9%85%D8%A7%D9%86_%D8%A8%D9%86%D8%AF%DB%8C_%D9%85%D8%B9%D8%A7%D9%85%D9%84%D8%A7%D8%AA\"><\/span>\n<p>  \u0632\u0645\u0627\u0646 \u0628\u0646\u062f\u06cc \u0645\u0639\u0627\u0645\u0644\u0627\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0645\u06a9\u0627\u0646 \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u062d\u062a\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u0648 \u0645\u0627 \u062f\u0631 \u0639\u0631\u0636 \u06cc\u06a9 \u062b\u0627\u0646\u06cc\u0647 \u0628\u0647 \u0622\u0646 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0631\u0633\u06cc\u062f. \u0627\u0645\u0627 \u0627\u0628\u062a\u062f\u0627\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062a\u0645\u0627\u0645 \u0627\u06cc\u0646 \u062a\u0631\u0627\u06a9\u0646\u0634 \u0647\u0627 \u0686\u0642\u062f\u0631 \u0632\u0645\u0627\u0646 \u0645\u06cc \u0628\u0631\u062f. \u0634\u0645\u0627 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0627\u06cc\u062f \u062f\u0642\u06cc\u0642\u0627 \u0628\u062f\u0627\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0627 \u0628\u0647\u06cc\u0646\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0686\u0631\u0627. \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u06a9\u0644\u06cc\u062f\u06cc \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0642\u0648\u06cc \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0641\u0642\u0637 \u0628\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u062e\u0648\u062f \u0628\u0631\u06af\u0631\u062f\u06cc\u0645 \u0648 \u0627\u0646\u062f\u0627\u0632\u0647 \u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u0646\u062f \u0645\u06cc\u0644\u06cc \u062b\u0627\u0646\u06cc\u0647 \u067e\u0633 \u0627\u0632 \u0647\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0639\u0646\u06cc \u062f\u0627\u0631 \u06af\u0630\u0634\u062a\u0647 \u0627\u0633\u062a. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">currentMS<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Date<\/span><span class=\"p\">().<\/span><span class=\"nf\">getTime<\/span><span class=\"p\">();<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">request<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">indexedDB<\/span><span class=\"p\">.<\/span><span class=\"nf\">open<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">SBSDKBase<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"mi\">4<\/span><span class=\"p\">);<\/span>\n<span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Opening indexedDB<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Date<\/span><span class=\"p\">().<\/span><span class=\"nf\">getTime<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">currentMS<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nx\">request<\/span><span class=\"p\">.<\/span><span class=\"nx\">onsuccess<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">db<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">IDBOpenDBRequest<\/span><span class=\"p\">).<\/span><span class=\"nx\">result<\/span><span class=\"p\">;<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">transaction<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">db<\/span><span class=\"p\">.<\/span><span class=\"nf\">transaction<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">documents<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">readwrite<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">store<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">transaction<\/span><span class=\"p\">.<\/span><span class=\"nf\">objectStore<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">documents<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">store<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">source<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Added item to store<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Date<\/span><span class=\"p\">().<\/span><span class=\"nf\">getTime<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">currentMS<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"kd\">const<\/span> <span class=\"nx\">getRequest<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">store<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">getRequest<\/span><span class=\"p\">.<\/span><span class=\"nx\">onsuccess<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">const<\/span> <span class=\"nx\">result<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">IDBRequest<\/span><span class=\"p\">).<\/span><span class=\"nx\">result<\/span><span class=\"p\">;<\/span>\n        <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Got item from store<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Date<\/span><span class=\"p\">().<\/span><span class=\"nf\">getTime<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">currentMS<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">};<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">Opening<\/span> <span class=\"nx\">indexedDB<\/span> <span class=\"mi\">0<\/span>\n<span class=\"nx\">Added<\/span> <span class=\"nx\">item<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">store<\/span> <span class=\"mi\">17<\/span>\n<span class=\"nx\">Got<\/span> <span class=\"nx\">item<\/span> <span class=\"k\">from<\/span> <span class=\"nx\">store<\/span> <span class=\"mi\">30<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u062e\u06cc\u0644\u06cc \u0628\u062f \u0646\u06cc\u0633\u062a\u060c \u0627\u0645\u0627 \u0647\u06cc\u0686 \u0686\u06cc\u0632 \u0647\u0645 \u0646\u06cc\u0633\u062a. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0646 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0631\u0648\u06cc \u06cc\u06a9 \u0645\u06a9 \u0628\u0648\u06a9 \u067e\u0631\u0648 \u0631\u062f\u0647 \u0628\u0627\u0644\u0627\u062a\u0631 \u0628\u0627 \u062a\u0631\u0627\u0634\u0647 M2 \u0648 SSD \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0645\u060c \u0627\u06cc\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f 20 \u062a\u0627 50 \u0628\u0631\u0627\u0628\u0631 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u06cc\u06a9 \u062f\u0633\u062a\u06af\u0627\u0647 \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u06cc\u0627 iOS \u0631\u062f\u0647 \u067e\u0627\u06cc\u06cc\u0646 \u062a\u0631 \u0637\u0648\u0644 \u0628\u06a9\u0634\u062f.<\/p>\n<p>\u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0648\u0644\u06cc\u0647 IndexedDB \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0631\u0627 \u0628\u0627 Promises \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u0648 \u062f\u0631 \u0628\u0631\u062e\u06cc \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u062e\u0648\u0628 \u0627\u0633\u062a. \u0627\u0645\u0627 \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u0628\u0627 \u062a\u06a9\u0647 \u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u062f\u0627\u062f\u0647 \u0633\u0631 \u0648 \u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645\u060c \u0627\u0631\u0632\u0634 \u0622\u0646 \u0631\u0627 \u062f\u0627\u0631\u062f \u06a9\u0647 \u0631\u0648\u06cc \u0645\u0648\u0627\u0632\u06cc \u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u06cc \u0633\u0631\u0645\u0627\u06cc\u0647 \u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u0627\u0632 \u0645\u0648\u0636\u0648\u0639 \u0627\u0635\u0644\u06cc \u062e\u0627\u0631\u062c \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0648 \u0627\u06cc\u0646 \u0645\u0627 \u0631\u0627 \u0628\u0647 \u2026<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DA%A9%D8%A7%D8%B1%DA%AF%D8%B1%D8%A7%D9%86_%D9%88%D8%A8\"><\/span>\n<p>  \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0648\u0628<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<blockquote>\n<p>\u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0648\u0628 \u0627\u0628\u0632\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u062a\u0648\u0627\u06cc \u0648\u0628 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0647\u0627 \u062f\u0631 \u0631\u0634\u062a\u0647 \u0647\u0627\u06cc \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0647\u0633\u062a\u0646\u062f. Worker Thread \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0648\u0638\u0627\u06cc\u0641 \u0631\u0627 \u0628\u062f\u0648\u0646 \u062a\u062f\u0627\u062e\u0644 \u0628\u0627 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f. (MDN)<\/p>\n<\/blockquote>\n<p>\u0627\u06cc\u0646\u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0648\u0628 \u0628\u0627 \u0648\u0639\u062f\u0647\u200c\u0647\u0627\/\u062a\u0642\u0627\u0636\u0627\u0647\u0627 \u0645\u062a\u0641\u0627\u0648\u062a \u0647\u0633\u062a\u0646\u062f \u0628\u0633\u06cc\u0627\u0631 \u0627\u0633\u0627\u0633\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0645\u0646 \u062e\u06cc\u0644\u06cc \u0639\u0645\u06cc\u0642 \u062f\u0631 threading \u063a\u0648\u0637\u0647 \u0648\u0631 \u0646\u0645\u06cc \u0634\u0648\u0645\u060c \u0627\u0645\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647\u060c \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0633\u0627\u0633\u0627\u064b \u062a\u06a9 \u0631\u0634\u062a\u0647 \u0627\u06cc \u0627\u0633\u062a. \u062f\u0631 \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0634\u06a9\u0644\u060c \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0641\u0642\u0637 \u0642\u0646\u062f \u0646\u062d\u0648\u06cc \u0628\u0631\u0627\u06cc \u0632\u0646\u062c\u06cc\u0631\u0647\u200c\u0647\u0627\u06cc \u0648\u0639\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0642\u0628\u0644 \u0627\u0632 \u0633\u0627\u06cc\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0637\u0648\u0644\u0627\u0646\u06cc\u200c\u0645\u062f\u062a \u0627\u0631\u0627\u0626\u0647 \u0634\u0648\u062f.<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u0647\u0645 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u062f\u0648 \u0634\u063a\u0644 \u0647\u0631\u06af\u0632 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0648\u0627\u0632\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062d\u06cc\u0637 \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f. \u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a \u0646\u0627\u0647\u0645\u06af\u0627\u0645 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u06cc\u0646 \u062f\u0648 \u06a9\u0627\u0631 \u0627\u0632 \u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0638\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u00ab\u0647\u0645\u0632\u0645\u0627\u0646\u00bb \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f. \u0628\u0631\u0627\u06cc \u0645\u0648\u0627\u0632\u06cc \u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u06cc\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0631\u0646\u062f\u0631 \u0647\u0645\u0632\u0645\u0627\u0646 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u060c \u0645\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0647\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<p>\u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647\u060c \u0647\u0645\u0647 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0628\u0647 \u0645\u0627 \u0631\u0634\u062a\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u06af\u0631\u06cc \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%A7%D8%B3%D8%A7%D8%B3%DB%8C_%D9%88_%D9%85%D8%B4%DA%A9%D9%84%D8%A7%D8%AA\"><\/span>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u0627\u0633\u06cc \u0648 \u0645\u0634\u06a9\u0644\u0627\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u06a9\u0627\u0631\u06af\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0648\u0631\u062f \u062e\u0627\u0635 \u062e\u0648\u062f\u060c \u0628\u0627 \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0647\u0645\u0627\u0646 \u06a9\u062f \u0645\u062b\u0627\u0644\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0648\u062f\u060c \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062a\u062e\u0645 \u0631\u06cc\u0632\u06cc \u06cc\u06a9 \u06a9\u0627\u0631\u06af\u0631 \u06cc\u06a9 \u06a9\u0627\u0631 \u0646\u0633\u0628\u062a\u0627\u064b \u067e\u06cc\u0634 \u067e\u0627 \u0627\u0641\u062a\u0627\u062f\u0647 \u0627\u0633\u062a. \u0627\u0632 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc MDN\u060c \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u06a9\u0627\u0631\u06af\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">onmessage<\/span> <span class=\"o\">=<\/span> <span class=\"kd\">function<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Worker: Message received from main script<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">result<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">];<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nf\">isNaN<\/span><span class=\"p\">(<\/span><span class=\"nx\">result<\/span><span class=\"p\">))<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">postMessage<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Please write two numbers<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">workerResult<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Result: <\/span><span class=\"dl\">'<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">result<\/span><span class=\"p\">;<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Worker: Posting message back to main script<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"nf\">postMessage<\/span><span class=\"p\">(<\/span><span class=\"nx\">workerResult<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0633\u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062e\u0648\u062f \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0628\u0647 \u0622\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">Worker<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">myWorker<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Worker<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">worker.js<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"p\">[<\/span><span class=\"nx\">first<\/span><span class=\"p\">,<\/span> <span class=\"nx\">second<\/span><span class=\"p\">].<\/span><span class=\"nf\">forEach<\/span><span class=\"p\">(<\/span><span class=\"nx\">input<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">input<\/span><span class=\"p\">.<\/span><span class=\"nx\">onchange<\/span> <span class=\"o\">=<\/span> <span class=\"kd\">function<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">myWorker<\/span><span class=\"p\">.<\/span><span class=\"nf\">postMessage<\/span><span class=\"p\">([<\/span><span class=\"nx\">first<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">,<\/span> <span class=\"nx\">second<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">]);<\/span>\n      <span class=\"p\">...<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f\u060c \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u06a9\u062f \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631 \u0631\u0648\u06cc \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u0627\u062c\u0631\u0627\u06cc \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0622\u0646 \u0628\u06cc \u0627\u0647\u0645\u06cc\u062a \u0646\u06cc\u0633\u062a. \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u06af\u0631 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u0647\u06cc\u062f. \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0646\u0633\u0628\u062a\u0627\u064b \u0633\u0627\u062f\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f\u060c \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0646\u06cc\u0632 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0641\u0627\u06cc\u0644 Worker \u062e\u0648\u062f \u0631\u0627 \u06a9\u062c\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637 Vite \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u06cc\u062f\u061f \u0648\u0642\u062a\u06cc \u0627\u0632 Webpack \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u062c\u0627 \u0645\u06cc \u0631\u0648\u062f\u061f \u0622\u06cc\u0627 \u0645\u062d\u06cc\u0637 \u0634\u0645\u0627 \u0627\u0632 Webpack \u0628\u062f\u0648\u0646 \u0627\u0633\u062a\u062e\u0648\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0627\u0633\u062a \u06cc\u0627 \u067e\u0634\u062a \u0633\u06cc\u0633\u062a\u0645 \u0633\u0627\u062e\u062a \u062f\u06cc\u06af\u0631\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u061f \u0627\u06af\u0631 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u06cc \u0647\u0645 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0686\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f &#8211; \u0622\u06cc\u0627 \u0622\u0646\u0647\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u06af\u0631 \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u0646\u062f\u061f<\/p>\n<p>\u06cc\u0627\u060c \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u062b\u0627\u0644\u06cc \u062f\u0642\u06cc\u0642 \u062a\u0631: \u0645\u0627 \u0627\u0632 Webpack \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 SDK \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0648 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0627\u0641\u0632\u0648\u0646\u0647 worker-loader \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0628\u0633\u062a\u0647 \u0634\u062f\u0646 \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u062f\u0631 \u0645\u062d\u0635\u0648\u0644 \u0646\u0647\u0627\u06cc\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f. \u0627\u06cc\u0646 \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0645\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 \u06a9\u062f \u0645\u0646\u0628\u0639 SDK \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u06af\u0632\u06cc\u0646\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u06af\u0631 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062f\u0631 \u0622\u0646 \u0645\u062d\u06cc\u0637 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7%D8%B1%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C_%DB%8C%DA%A9_%D9%81%D8%A7%DB%8C%D9%84_%D8%A8%D9%87_%D8%B9%D9%86%D9%88%D8%A7%D9%86_%D8%AF%D8%A7%D8%AF%D9%87\"><\/span>\n<p>  \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0627\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0631\u0627\u0647\u200c\u062d\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u062f\u0631 \u06a9\u062f \u0645\u0646\u0628\u0639 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0633\u067e\u0633 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u0632 \u062e\u0648\u062f \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631\u0627\u06cc \u0628\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0622\u0646 \u062f\u0631 \u06cc\u06a9 \u062d\u0628\u0627\u0628 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0633\u067e\u0633 \u0622\u0646 \u0644\u06a9\u0647 \u062f\u0631 worker \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062e\u0627\u0631\u062c\u06cc (\u0648 \u0627\u0632 Martins Olumide \u062f\u0631 dev.to \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u062a\u0634\u06a9\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645).<\/p>\n<p>\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f\u060c \u0627\u0645\u0627 \u0631\u0627\u0647 \u062d\u0644\u06cc \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u062d\u06a9\u0645 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0627\u0633\u062a. \u0634\u0631\u0637 \u0645\u06cc \u0628\u0646\u062f\u0645 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u062e\u0648\u0628 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644\u060c \u0645\u0627 \u0642\u0637\u0639\u0627\u064b \u0628\u0647 \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u0636\u0627\u0641\u06cc \u0645\u06cc \u067e\u0631\u062f\u0627\u0632\u06cc\u0645 \u062a\u0627 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0622\u06cc\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Webpack \u0628\u0631\u0627\u06cc \u067e\u06cc\u0634 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0622\u0646 \u062f\u0631 \u0628\u0633\u062a\u0647 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0641\u0627\u06cc\u0644 worker \u067e\u0627\u06cc\u0647 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">workerFunction<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">function <\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n   <span class=\"c1\">\/\/ Perform every operation we want in this function<\/span>\n   <span class=\"nb\">self<\/span><span class=\"p\">.<\/span><span class=\"nx\">onmessage<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">:<\/span> <span class=\"nx\">MessageEvent<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nf\">postMessage<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Message received!<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n   <span class=\"p\">};<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"c1\">\/\/ This stringifies the whole function<\/span>\n<span class=\"kd\">let<\/span> <span class=\"nx\">codeToString<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">workerFunction<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">();<\/span>\n<span class=\"c1\">\/\/ This brings out the code in the bracket in string<\/span>\n<span class=\"kd\">let<\/span> <span class=\"nx\">mainCode<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">codeToString<\/span><span class=\"p\">.<\/span><span class=\"nf\">substring<\/span><span class=\"p\">(<\/span><span class=\"nx\">codeToString<\/span><span class=\"p\">.<\/span><span class=\"nf\">indexOf<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">{<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"nx\">codeToString<\/span><span class=\"p\">.<\/span><span class=\"nc\">LastIndexOf<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">}<\/span><span class=\"dl\">'<\/span><span class=\"p\">));<\/span>\n<span class=\"c1\">\/\/ Convert the code into a raw data<\/span>\n<span class=\"kd\">let<\/span> <span class=\"nx\">blob<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Blob<\/span><span class=\"p\">([<\/span><span class=\"nx\">mainCode<\/span><span class=\"p\">],<\/span> <span class=\"p\">{<\/span> <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">application\/javascript<\/span><span class=\"dl\">'<\/span> <span class=\"p\">});<\/span>\n<span class=\"c1\">\/\/ A url is made out of the blob object and we're good to go<\/span>\n<span class=\"kd\">let<\/span> <span class=\"nx\">worker_script<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">URL<\/span><span class=\"p\">.<\/span><span class=\"nf\">createObjectURL<\/span><span class=\"p\">(<\/span><span class=\"nx\">blob<\/span><span class=\"p\">);<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">worker_script<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u0638\u0631\u0627\u062a \u062f\u0631 \u0628\u0644\u0648\u06a9 \u0628\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u06a9\u0627\u0645\u0644\u0627\u064b \u0648\u0627\u0636\u062d \u0628\u0627\u0634\u062f \u06a9\u0647 \u0645\u0627 \u0642\u0635\u062f \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645: \u0645\u0627 \u0627\u0633\u0627\u0633\u0627\u064b \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 worker \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0631\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0627 stringify \u06a9\u0631\u062f\u0646 \u06a9\u0644 worker \u0648 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u0622\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062d\u0628\u0627\u0628 \u0645\u0633\u062e\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%87%D9%85%D9%87_%D8%B1%D8%A7_%DA%A9%D9%86%D8%A7%D8%B1_%D9%87%D9%85_%DA%AF%D8%B0%D8%A7%D8%B4%D8%AA%D9%86\"><\/span>\n<p>  \u0647\u0645\u0647 \u0631\u0627 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u06af\u0630\u0627\u0634\u062a\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u0645\u0627 \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u06a9\u062f \u0642\u0628\u0644\u06cc \u062e\u0648\u062f \u0631\u0627 \u06a9\u0645\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u0645 \u062a\u0627 \u0628\u0627 \u0622\u0646 \u062a\u0627\u0628\u0639 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0648 \u06a9\u0627\u0631\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u062a\u0648\u0627\u0628\u0639 wrapper \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0642\u0628\u0644\u06cc \u0631\u0627 \u0628\u0647 \u062f\u0627\u062e\u0644 \u0622\u0646 \u062a\u0627\u0628\u0639 \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 (\u0686\u0648\u0646\u060c \u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647\u060c \u062f\u0631 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0648\u0627\u0628\u0639 \u062f\u0627\u062e\u0644\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0628\u0647 \u0647\u0645 \u0645\u06cc \u062e\u0648\u0631\u062f) \u0648 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u06a9\u0627\u0631\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0642\u0628\u0644\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0627\u062f\u06cc\u0645\u060c \u0641\u0642\u0637 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0627\u06cc\u062f \u0628\u0647 \u062c\u0627\u06cc \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u067e\u06cc\u0627\u0645\u060c \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645. \u062f\u0627\u062f\u0647 \u0647\u0627:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">workerFunction<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">function <\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n\n    <span class=\"kd\">function<\/span> <span class=\"nf\">openDB<\/span><span class=\"p\">():<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">IDBDatabase<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"p\">...<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">getDocumentStore<\/span><span class=\"p\">():<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">IDBObjectStore<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"p\">...<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nb\">self<\/span><span class=\"p\">.<\/span><span class=\"nx\">onmessage<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">:<\/span> <span class=\"nx\">MessageEvent<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Received in worker thread:<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">);<\/span>\n        <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">type<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">storeDocument<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Storing document in worker thread<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n            <span class=\"nf\">getDocumentStore<\/span><span class=\"p\">().<\/span><span class=\"nf\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">store<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nx\">store<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">);<\/span>\n                <span class=\"nb\">self<\/span><span class=\"p\">.<\/span><span class=\"nf\">postMessage<\/span><span class=\"p\">(<\/span><span class=\"kc\">true<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">});<\/span>\n        <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">type<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">getDocuments<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Getting documents in worker thread<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n            <span class=\"nf\">getDocumentStore<\/span><span class=\"p\">().<\/span><span class=\"nf\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">store<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">request<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">store<\/span><span class=\"p\">.<\/span><span class=\"nf\">getAll<\/span><span class=\"p\">();<\/span>\n                <span class=\"nx\">request<\/span><span class=\"p\">.<\/span><span class=\"nx\">onsuccess<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"nb\">self<\/span><span class=\"p\">.<\/span><span class=\"nf\">postMessage<\/span><span class=\"p\">((<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">IDBRequest<\/span><span class=\"p\">).<\/span><span class=\"nx\">result<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">};<\/span>\n            <span class=\"p\">});<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">};<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0647\u0645\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc IndexedDB API \u0631\u0627 \u0628\u0647 worker \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u0641\u0627\u06cc\u0644 \u0633\u0631\u0648\u06cc\u0633 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0635\u0644\u06cc \u0645\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u062e\u0627\u0644\u06cc \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">CroppedDetectionResult<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">..\/..\/core\/worker\/ScanbotSDK.Core<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">worker_script<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/worker\/sb-storage.worker<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">SBStorage<\/span> <span class=\"p\">{<\/span>\n\n    <span class=\"kr\">private<\/span> <span class=\"kd\">static<\/span> <span class=\"nx\">readonly<\/span> <span class=\"nx\">worker<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Worker<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Worker<\/span><span class=\"p\">(<\/span><span class=\"nx\">worker_script<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"kd\">static<\/span> <span class=\"k\">async<\/span> <span class=\"nf\">storeDocument<\/span><span class=\"p\">(<\/span><span class=\"nx\">source<\/span><span class=\"p\">:<\/span> <span class=\"nx\">CroppedDetectionResult<\/span><span class=\"p\">):<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">boolean<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">worker<\/span><span class=\"p\">.<\/span><span class=\"nf\">postMessage<\/span><span class=\"p\">({<\/span> <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">storeDocument<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">data<\/span><span class=\"p\">:<\/span> <span class=\"nx\">source<\/span> <span class=\"p\">});<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"k\">new<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">boolean<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">((<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">,<\/span> <span class=\"nx\">reject<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">worker<\/span><span class=\"p\">.<\/span><span class=\"nx\">onmessage<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nf\">resolve<\/span><span class=\"p\">(<\/span><span class=\"kc\">true<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"kd\">static<\/span> <span class=\"k\">async<\/span> <span class=\"nf\">getDocuments<\/span><span class=\"p\">():<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">CroppedDetectionResult<\/span><span class=\"p\">[]<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">worker<\/span><span class=\"p\">.<\/span><span class=\"nf\">postMessage<\/span><span class=\"p\">({<\/span> <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">getDocuments<\/span><span class=\"dl\">'<\/span> <span class=\"p\">});<\/span>\n        <span class=\"k\">return<\/span> <span class=\"k\">new<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">CroppedDetectionResult<\/span><span class=\"p\">[]<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">((<\/span><span class=\"nx\">resolve<\/span><span class=\"p\">,<\/span> <span class=\"nx\">reject<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">worker<\/span><span class=\"p\">.<\/span><span class=\"nx\">onmessage<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nf\">resolve<\/span><span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062a\u0646\u0647\u0627 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0627\u0646\u062f\u060c \u06a9\u062f\u06cc \u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 blob\u060c \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u062e\u0648\u062f \u06a9\u0627\u0631\u06af\u0631\u060c \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0628\u0647 worker \u0648 \u062d\u0644 \u0642\u0648\u0644 \u067e\u0633 \u0627\u0632 \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u06cc\u0627\u0645.<\/p>\n<p>\u0648 \u0628\u0633! \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0628\u0627\u06cc\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0634\u0648\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u0634\u063a\u0644\u0647 \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0631\u062f. \u0646\u06a9\u062a\u0647 \u0627\u0648\u0644\u06cc\u0647: \u062a\u0646\u0647\u0627 \u062f\u0631 \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647\u060c \u0645\u0627 \u062e\u0648\u062f\u0645\u0627\u0646 \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0628\u0647\u06cc\u0646\u0647 \u0628\u0631\u0627\u06cc \u0627\u0634\u06cc\u0627\u0621 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 &#8211; \u0641\u0642\u0637 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 IndexedDB \u0648 \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0648\u0628\u060c \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u067e\u06cc\u0634 \u062f\u0631\u0622\u0645\u062f \u0647\u0645\u0647 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0631\u0627\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f. \u0627\u06af\u0631 \u0622\u0646\u0647\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0646\u0645\u06cc \u06a9\u0631\u062f\u0646\u062f\u060c \u062f\u0646\u06cc\u0627\u06cc \u0645\u0627 \u0646\u0633\u0628\u062a\u0627\u064b \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u06cc\u062f. \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0634\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628 \u0647\u0633\u062a\u06cc\u062f\u060c \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u0645 \u06a9\u0647 \u0627\u0632 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":77757,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-77756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/77756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=77756"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/77756\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/77757"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=77756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=77756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=77756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}