From 5df37cc2f3499b15c7caad4a05ee977309024eef Mon Sep 17 00:00:00 2001 From: Mathieu Schimmerling Date: Mon, 18 Apr 2022 16:17:57 +0200 Subject: [PATCH] improve filecode performance --- n.js | 0 package.json | 2 +- pnpm-lock.yaml | 90 +++++++------- public/framework/angular.svg | 2 +- public/framework/react.svg | 2 +- src/components/CodeHighlight/fileCodeCache.js | 3 - src/components/FileCode.astro | 22 ++-- src/components/createCache.js | 2 +- src/layouts/BaseLayout.astro | 9 ++ src/layouts/BaseLayout.svelte | 2 +- src/pages/index.astro | 2 +- src/tree.js | 110 ------------------ src/utils/createFileMapCache.js | 55 +++++++++ src/utils/createFsCache.js | 64 ++++++++++ src/utils/generateContentTree.js | 41 +++++++ 15 files changed, 238 insertions(+), 168 deletions(-) create mode 100644 n.js delete mode 100644 src/components/CodeHighlight/fileCodeCache.js create mode 100644 src/layouts/BaseLayout.astro delete mode 100644 src/tree.js create mode 100644 src/utils/createFileMapCache.js create mode 100644 src/utils/createFsCache.js create mode 100644 src/utils/generateContentTree.js diff --git a/n.js b/n.js new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json index b5dd1f5..e85c996 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "eslint-plugin-svelte3": "^3.4.1", "eslint-plugin-vue": "^8.6.0", "husky": "^7.0.4", - "lint-staged": "^12.3.7", + "lint-staged": "^12.3.8", "lodash.kebabcase": "^4.1.1", "pkg-dir": "^6.0.1", "postcss": "^8.4.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1100a62..ae17fb6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ specifiers: eslint-plugin-svelte3: ^3.4.1 eslint-plugin-vue: ^8.6.0 husky: ^7.0.4 - lint-staged: ^12.3.7 + lint-staged: ^12.3.8 lodash.kebabcase: ^4.1.1 pkg-dir: ^6.0.1 postcss: ^8.4.12 @@ -51,7 +51,7 @@ devDependencies: eslint-plugin-svelte3: 3.4.1_eslint@8.13.0+svelte@3.47.0 eslint-plugin-vue: 8.6.0_eslint@8.13.0 husky: 7.0.4 - lint-staged: 12.3.7 + lint-staged: 12.3.8 lodash.kebabcase: 4.1.1 pkg-dir: 6.0.1 postcss: 8.4.12 @@ -179,7 +179,7 @@ packages: mdast-util-to-string: 3.1.0 micromark-extension-mdx-expression: 1.0.3 micromark-extension-mdx-jsx: 1.0.3 - prismjs: 1.27.0 + prismjs: 1.28.0 rehype-raw: 6.1.1 rehype-slug: 5.0.1 rehype-stringify: 9.0.3 @@ -407,7 +407,7 @@ packages: resolution: {integrity: sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==} engines: {node: '>=6.9.0'} dependencies: - core-js-pure: 3.21.1 + core-js-pure: 3.22.0 regenerator-runtime: 0.13.9 dev: true @@ -1034,7 +1034,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 es-abstract: 1.19.5 get-intrinsic: 1.1.1 is-string: 1.0.7 @@ -1054,7 +1054,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 es-abstract: 1.19.5 es-shim-unscopables: 1.0.0 dev: true @@ -1125,12 +1125,12 @@ packages: postcss: 8.4.12 postcss-load-config: 3.1.4_postcss@8.4.12 preferred-pm: 3.0.3 - prismjs: 1.27.0 + prismjs: 1.28.0 prompts: 2.4.2 recast: 0.20.5 rehype-slug: 5.0.1 resolve: 1.22.0 - rollup: 2.70.1 + rollup: 2.70.2 semver: 7.3.7 serialize-javascript: 6.0.0 shiki: 0.10.1 @@ -1238,7 +1238,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001332 - electron-to-chromium: 1.4.107 + electron-to-chromium: 1.4.111 escalade: 3.1.1 node-releases: 2.0.3 picocolors: 1.0.0 @@ -1440,8 +1440,8 @@ packages: safe-buffer: 5.1.2 dev: true - /core-js-pure/3.21.1: - resolution: {integrity: sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==} + /core-js-pure/3.22.0: + resolution: {integrity: sha512-ylOC9nVy0ak1N+fPIZj00umoZHgUVqmucklP5RT5N+vJof38klKn8Ze6KGyvchdClvEBr6LcQqJpI216LUMqYA==} requiresBuild: true dev: true @@ -1510,10 +1510,11 @@ packages: clone: 1.0.4 dev: true - /define-properties/1.1.3: - resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} dependencies: + has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: true @@ -1606,8 +1607,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium/1.4.107: - resolution: {integrity: sha512-Huen6taaVrUrSy8o7mGStByba8PfOWWluHNxSHGBrCgEdFVLtvdQDBr9LBCF9Uci8SYxh28QNNMO0oC17wbGAg==} + /electron-to-chromium/1.4.111: + resolution: {integrity: sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw==} dev: true /emmet/2.3.6: @@ -2303,6 +2304,10 @@ packages: resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} dev: true + /functions-have-names/1.2.2: + resolution: {integrity: sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA==} + dev: true + /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2416,6 +2421,12 @@ packages: '@ljharb/has-package-exports-patterns': 0.0.2 dev: true + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.1 + dev: true + /has-symbols/1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} @@ -2748,7 +2759,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 dev: true /is-negative-zero/2.0.2: @@ -2925,8 +2936,8 @@ packages: engines: {node: '>=10'} dev: true - /lint-staged/12.3.7: - resolution: {integrity: sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ==} + /lint-staged/12.3.8: + resolution: {integrity: sha512-0+UpNaqIwKRSGAFOCcpuYNIv/j5QGVC+xUVvmSdxHO+IfIGoHbFLo3XcPmV/LLnsVj5EAncNHVtlITSoY5qWGQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true dependencies: @@ -3599,8 +3610,8 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /nanoid/3.3.2: - resolution: {integrity: sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==} + /nanoid/3.3.3: + resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true @@ -3673,7 +3684,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 dev: true /object-keys/1.1.1: @@ -3686,7 +3697,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true @@ -3696,7 +3707,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 es-abstract: 1.19.5 dev: true @@ -3705,14 +3716,14 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 es-abstract: 1.19.5 dev: true /object.hasown/1.1.0: resolution: {integrity: sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==} dependencies: - define-properties: 1.1.3 + define-properties: 1.1.4 es-abstract: 1.19.5 dev: true @@ -3721,7 +3732,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 es-abstract: 1.19.5 dev: true @@ -3994,7 +4005,7 @@ packages: resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.2 + nanoid: 3.3.3 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true @@ -4037,8 +4048,8 @@ packages: hasBin: true dev: true - /prismjs/1.27.0: - resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} + /prismjs/1.28.0: + resolution: {integrity: sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==} engines: {node: '>=6'} dev: true @@ -4124,12 +4135,13 @@ packages: resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} dev: true - /regexp.prototype.flags/1.4.2: - resolution: {integrity: sha512-Ynz8fTQW5/1elh+jWU2EDDzeoNbD0OQ0R+D1VJU5ATOkUaro4A9YEkdN2ODQl/8UQFPPpZNw91fOcLFamM7Pww==} + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 + functions-have-names: 1.2.2 dev: true /regexpp/3.2.0: @@ -4299,8 +4311,8 @@ packages: glob: 7.2.0 dev: true - /rollup/2.70.1: - resolution: {integrity: sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==} + /rollup/2.70.2: + resolution: {integrity: sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: @@ -4528,12 +4540,12 @@ packages: resolution: {integrity: sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 es-abstract: 1.19.5 get-intrinsic: 1.1.1 has-symbols: 1.0.3 internal-slot: 1.0.3 - regexp.prototype.flags: 1.4.2 + regexp.prototype.flags: 1.4.3 side-channel: 1.0.4 dev: true @@ -4541,14 +4553,14 @@ packages: resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 dev: true /string.prototype.trimstart/1.0.4: resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 dev: true /string_decoder/1.3.0: @@ -5051,7 +5063,7 @@ packages: esbuild: 0.14.36 postcss: 8.4.12 resolve: 1.22.0 - rollup: 2.70.1 + rollup: 2.70.2 optionalDependencies: fsevents: 2.3.2 dev: true diff --git a/public/framework/angular.svg b/public/framework/angular.svg index bf081ac..606d900 100644 --- a/public/framework/angular.svg +++ b/public/framework/angular.svg @@ -1,6 +1,6 @@ -