mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-04-30 11:49:30 +08:00
Compare commits
4 commits
bd40930dd1
...
75c75e6eb0
Author | SHA1 | Date | |
---|---|---|---|
|
75c75e6eb0 | ||
|
c625f93890 | ||
|
9246a9e62a | ||
|
caa4ee96ee |
4 changed files with 1001 additions and 266 deletions
|
@ -56,7 +56,7 @@
|
||||||
"github-slugger": "^2.0.0",
|
"github-slugger": "^2.0.0",
|
||||||
"mdast-util-to-string": "^3.2.0",
|
"mdast-util-to-string": "^3.2.0",
|
||||||
"mdsvex": "^0.10.6",
|
"mdsvex": "^0.10.6",
|
||||||
"netlify-cli": "^16.0.2",
|
"netlify-cli": "^16.3.1",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss": "^8.4.23",
|
"postcss": "^8.4.23",
|
||||||
"postcss-lightningcss": "^0.7.0",
|
"postcss-lightningcss": "^0.7.0",
|
||||||
|
|
659
pnpm-lock.yaml
659
pnpm-lock.yaml
|
@ -99,8 +99,8 @@ devDependencies:
|
||||||
specifier: ^0.10.6
|
specifier: ^0.10.6
|
||||||
version: 0.10.6(svelte@3.59.1)
|
version: 0.10.6(svelte@3.59.1)
|
||||||
netlify-cli:
|
netlify-cli:
|
||||||
specifier: ^16.0.2
|
specifier: ^16.3.1
|
||||||
version: 16.0.2(@types/node@20.2.5)
|
version: 16.3.1(@types/node@20.2.5)
|
||||||
npm-run-all:
|
npm-run-all:
|
||||||
specifier: ^4.1.5
|
specifier: ^4.1.5
|
||||||
version: 4.1.5
|
version: 4.1.5
|
||||||
|
@ -1526,6 +1526,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/android-arm64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [android]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/android-arm@0.17.19:
|
/@esbuild/android-arm@0.17.19:
|
||||||
resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==}
|
resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1535,6 +1544,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/android-arm@0.19.2:
|
||||||
|
resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [android]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/android-x64@0.17.19:
|
/@esbuild/android-x64@0.17.19:
|
||||||
resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==}
|
resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1544,6 +1562,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/android-x64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [android]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/darwin-arm64@0.17.19:
|
/@esbuild/darwin-arm64@0.17.19:
|
||||||
resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==}
|
resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1553,6 +1580,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/darwin-arm64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [darwin]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/darwin-x64@0.17.19:
|
/@esbuild/darwin-x64@0.17.19:
|
||||||
resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==}
|
resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1562,6 +1598,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/darwin-x64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [darwin]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/freebsd-arm64@0.17.19:
|
/@esbuild/freebsd-arm64@0.17.19:
|
||||||
resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==}
|
resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1571,6 +1616,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/freebsd-arm64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [freebsd]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/freebsd-x64@0.17.19:
|
/@esbuild/freebsd-x64@0.17.19:
|
||||||
resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==}
|
resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1580,6 +1634,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/freebsd-x64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [freebsd]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-arm64@0.17.19:
|
/@esbuild/linux-arm64@0.17.19:
|
||||||
resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==}
|
resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1589,6 +1652,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/linux-arm64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-arm@0.17.19:
|
/@esbuild/linux-arm@0.17.19:
|
||||||
resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==}
|
resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1598,6 +1670,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/linux-arm@0.19.2:
|
||||||
|
resolution: {integrity: sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-ia32@0.17.19:
|
/@esbuild/linux-ia32@0.17.19:
|
||||||
resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==}
|
resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1607,6 +1688,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/linux-ia32@0.19.2:
|
||||||
|
resolution: {integrity: sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [ia32]
|
||||||
|
os: [linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-loong64@0.17.19:
|
/@esbuild/linux-loong64@0.17.19:
|
||||||
resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==}
|
resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1616,6 +1706,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/linux-loong64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [loong64]
|
||||||
|
os: [linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-mips64el@0.17.19:
|
/@esbuild/linux-mips64el@0.17.19:
|
||||||
resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==}
|
resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1625,6 +1724,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/linux-mips64el@0.19.2:
|
||||||
|
resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [mips64el]
|
||||||
|
os: [linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-ppc64@0.17.19:
|
/@esbuild/linux-ppc64@0.17.19:
|
||||||
resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==}
|
resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1634,6 +1742,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/linux-ppc64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [ppc64]
|
||||||
|
os: [linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-riscv64@0.17.19:
|
/@esbuild/linux-riscv64@0.17.19:
|
||||||
resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==}
|
resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1643,6 +1760,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/linux-riscv64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [riscv64]
|
||||||
|
os: [linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-s390x@0.17.19:
|
/@esbuild/linux-s390x@0.17.19:
|
||||||
resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==}
|
resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1652,6 +1778,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/linux-s390x@0.19.2:
|
||||||
|
resolution: {integrity: sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [s390x]
|
||||||
|
os: [linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/linux-x64@0.17.19:
|
/@esbuild/linux-x64@0.17.19:
|
||||||
resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==}
|
resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1661,6 +1796,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/linux-x64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/netbsd-x64@0.17.19:
|
/@esbuild/netbsd-x64@0.17.19:
|
||||||
resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==}
|
resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1670,6 +1814,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/netbsd-x64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [netbsd]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/openbsd-x64@0.17.19:
|
/@esbuild/openbsd-x64@0.17.19:
|
||||||
resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==}
|
resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1679,6 +1832,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/openbsd-x64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [openbsd]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/sunos-x64@0.17.19:
|
/@esbuild/sunos-x64@0.17.19:
|
||||||
resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
|
resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1688,6 +1850,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/sunos-x64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [sunos]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/win32-arm64@0.17.19:
|
/@esbuild/win32-arm64@0.17.19:
|
||||||
resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==}
|
resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1697,6 +1868,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/win32-arm64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [win32]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/win32-ia32@0.17.19:
|
/@esbuild/win32-ia32@0.17.19:
|
||||||
resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==}
|
resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1706,6 +1886,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/win32-ia32@0.19.2:
|
||||||
|
resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [ia32]
|
||||||
|
os: [win32]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@esbuild/win32-x64@0.17.19:
|
/@esbuild/win32-x64@0.17.19:
|
||||||
resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==}
|
resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1715,6 +1904,15 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/@esbuild/win32-x64@0.19.2:
|
||||||
|
resolution: {integrity: sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [win32]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/@eslint-community/eslint-utils@4.4.0(eslint@8.41.0):
|
/@eslint-community/eslint-utils@4.4.0(eslint@8.41.0):
|
||||||
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
|
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
|
@ -2030,8 +2228,8 @@ packages:
|
||||||
resolution: {integrity: sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==}
|
resolution: {integrity: sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@netlify/build-info@7.7.3:
|
/@netlify/build-info@7.8.0:
|
||||||
resolution: {integrity: sha512-/X07WiTl8RMA148QkEqVOvWyntiew0dCGeMZLmciUkgsL7r3oncPcuzKbwt+XIEktsf2gJlcOhtuNsrd/tTc4Q==}
|
resolution: {integrity: sha512-4UnAaQUXoxMfs6KAMKPx8Pa5WwdGDcgIliyQpKhc4Xq3A2dgH+Uam9kS4aq5+4ZeHS9/eT1BKLKZPUOOF5ZQZg==}
|
||||||
engines: {node: ^14.16.0 || >=16.0.0}
|
engines: {node: ^14.16.0 || >=16.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -2046,22 +2244,22 @@ packages:
|
||||||
yargs: 17.7.2
|
yargs: 17.7.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@netlify/build@29.20.2(@types/node@20.2.5)(debug@4.3.4):
|
/@netlify/build@29.20.13(@types/node@20.2.5)(debug@4.3.4):
|
||||||
resolution: {integrity: sha512-ivkeheWbTtyloHS7IQQk0UsyH4Ozp6zUg6v6NcLobAmuT6hwgpXzBnwaAMq1GaJSTpUBbNyTx2Oga6wuuu/Nig==}
|
resolution: {integrity: sha512-FcRPb56MWG+H3eI0kcb0H8vlz2N89sl22OmVW5kZifzXalc76kSDMmqOzwHBSe2ChBUZApmYwqY3QVB/h5sL1g==}
|
||||||
engines: {node: ^14.16.0 || >=16.0.0}
|
engines: {node: ^14.16.0 || >=16.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@bugsnag/js': 7.20.2
|
'@bugsnag/js': 7.20.2
|
||||||
'@honeycombio/opentelemetry-node': 0.4.0(debug@4.3.4)(supports-color@9.3.1)
|
'@honeycombio/opentelemetry-node': 0.4.0(debug@4.3.4)(supports-color@9.3.1)
|
||||||
'@netlify/cache-utils': 5.1.5
|
'@netlify/cache-utils': 5.1.5
|
||||||
'@netlify/config': 20.8.0
|
'@netlify/config': 20.8.1
|
||||||
'@netlify/edge-bundler': 8.17.1
|
'@netlify/edge-bundler': 8.19.0
|
||||||
'@netlify/framework-info': 9.8.10
|
'@netlify/framework-info': 9.8.10
|
||||||
'@netlify/functions-utils': 5.2.22(supports-color@9.3.1)
|
'@netlify/functions-utils': 5.2.28(supports-color@9.3.1)
|
||||||
'@netlify/git-utils': 5.1.1
|
'@netlify/git-utils': 5.1.1
|
||||||
'@netlify/plugins-list': 6.71.0
|
'@netlify/plugins-list': 6.71.0
|
||||||
'@netlify/run-utils': 5.1.1
|
'@netlify/run-utils': 5.1.1
|
||||||
'@netlify/zip-it-and-ship-it': 9.15.1(supports-color@9.3.1)
|
'@netlify/zip-it-and-ship-it': 9.17.3(supports-color@9.3.1)
|
||||||
'@opentelemetry/api': 1.4.1
|
'@opentelemetry/api': 1.4.1
|
||||||
'@sindresorhus/slugify': 2.2.1
|
'@sindresorhus/slugify': 2.2.1
|
||||||
ansi-escapes: 6.2.0
|
ansi-escapes: 6.2.0
|
||||||
|
@ -2129,8 +2327,8 @@ packages:
|
||||||
readdirp: 3.6.0
|
readdirp: 3.6.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@netlify/config@20.8.0:
|
/@netlify/config@20.8.1:
|
||||||
resolution: {integrity: sha512-jzklg2Kj9D/2h+QO2MNbbc7oz9Wo56Zp1ob/kaG9P7DJLZSgc0h6G2GQSybqKqvApLju+8iqPB2rMAp02QSjpA==}
|
resolution: {integrity: sha512-GpkR8Z8UHCftATIILGoCXPW1nPzrSK85O85d29pQXqv5KO2sAx5glgZQtEgKJnE7JWzMy+h6qjRD9hi0Mvw3Nw==}
|
||||||
engines: {node: ^14.16.0 || >=16.0.0}
|
engines: {node: ^14.16.0 || >=16.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -2160,8 +2358,8 @@ packages:
|
||||||
yargs: 17.7.2
|
yargs: 17.7.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@netlify/edge-bundler@8.17.1:
|
/@netlify/edge-bundler@8.19.0:
|
||||||
resolution: {integrity: sha512-46FvSx/Bguy12IGj2g2W9J/1P7btfSOp/+mpde3VBCLX/sOmd5nYC2i0v3UTbz0yH02qpxTZaEdepPnDLIueCw==}
|
resolution: {integrity: sha512-blIZHLXlEXcjpAhd2TJ+Rw7H+WhNXSBfmFfRHn2pyzNiAbQa71eU0eNUE2+Nw58DGfvUC0unerbTlN2gd3iVdA==}
|
||||||
engines: {node: ^14.16.0 || >=16.0.0}
|
engines: {node: ^14.16.0 || >=16.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@import-maps/resolve': 1.0.1
|
'@import-maps/resolve': 1.0.1
|
||||||
|
@ -2173,7 +2371,6 @@ packages:
|
||||||
execa: 6.1.0
|
execa: 6.1.0
|
||||||
find-up: 6.3.0
|
find-up: 6.3.0
|
||||||
get-port: 6.1.2
|
get-port: 6.1.2
|
||||||
glob-to-regexp: 0.4.1
|
|
||||||
is-path-inside: 4.0.0
|
is-path-inside: 4.0.0
|
||||||
jsonc-parser: 3.2.0
|
jsonc-parser: 3.2.0
|
||||||
node-fetch: 3.3.1
|
node-fetch: 3.3.1
|
||||||
|
@ -2188,212 +2385,31 @@ packages:
|
||||||
uuid: 9.0.0
|
uuid: 9.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@netlify/esbuild-android-64@0.14.39-1:
|
/@netlify/edge-bundler@8.19.1:
|
||||||
resolution: {integrity: sha512-/rZn0xVfTLVjx0SLvToydTTpvNwrlFqxW++Lqen7CXubTJNFnZQH0hP/qMCILac41zvSipxyU5/Di9mWHoLv9Q==}
|
resolution: {integrity: sha512-Erj0+dfRFMQjV3R+FX9NtCV35t6qU91rWKtsuawLzS6tAHLvrR8sOmyFxt5Neg4VPjAstYg1ik16lDak2LhQww==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: ^14.16.0 || >=16.0.0}
|
||||||
cpu: [x64]
|
dependencies:
|
||||||
os: [android]
|
'@import-maps/resolve': 1.0.1
|
||||||
requiresBuild: true
|
ajv: 8.12.0
|
||||||
dev: true
|
ajv-errors: 3.0.0(ajv@8.12.0)
|
||||||
optional: true
|
better-ajv-errors: 1.2.0(ajv@8.12.0)
|
||||||
|
common-path-prefix: 3.0.0
|
||||||
/@netlify/esbuild-android-arm64@0.14.39-1:
|
env-paths: 3.0.0
|
||||||
resolution: {integrity: sha512-Wnjsv5djKQ2NwKaDj2P5DpvNAFhQIQBer2IqVCQ8u0ykdyr+y+u5CmM1ZnrzBnDUULk5TYwPlUNt3p2NctSnLQ==}
|
execa: 6.1.0
|
||||||
engines: {node: '>=12'}
|
find-up: 6.3.0
|
||||||
cpu: [arm64]
|
get-port: 6.1.2
|
||||||
os: [android]
|
is-path-inside: 4.0.0
|
||||||
requiresBuild: true
|
jsonc-parser: 3.2.0
|
||||||
dev: true
|
node-fetch: 3.3.1
|
||||||
optional: true
|
node-stream-zip: 1.15.0
|
||||||
|
p-retry: 5.1.2
|
||||||
/@netlify/esbuild-darwin-64@0.14.39-1:
|
p-wait-for: 4.1.0
|
||||||
resolution: {integrity: sha512-rHQmZcS+1qC9bL1EwFQ8SGqiKrIUQLam9ty2bcsEH78525NoAW8f/ENollQlso1K8lSkcn+KzX7i09FdRL0TLQ==}
|
path-key: 4.0.0
|
||||||
engines: {node: '>=12'}
|
regexp-tree: 0.1.27
|
||||||
cpu: [x64]
|
semver: 7.5.4
|
||||||
os: [darwin]
|
tmp-promise: 3.0.3
|
||||||
requiresBuild: true
|
urlpattern-polyfill: 8.0.2
|
||||||
dev: true
|
uuid: 9.0.0
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-darwin-arm64@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-Ytz9SY7BjtBnrZL4qCsKJ/xyjJyH2LFLV3kv3DhY5X+eUUBsjdCAq2VVY9zLnvkNf5Sef/U35Jie2O0sl+3E1g==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [darwin]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-freebsd-64@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-TsOZCldbxEOB4Rv5tudYCkPkfHklmOWQgRPoz3wsmJDUpLwljOQFru4J0uCRqKKGLALo1qBBQvzofQi+5dvTzQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [freebsd]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-freebsd-arm64@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-wJbKm1eijTiots/RgDOZjbqcZaCVElPjegRit0LkbAQnqfBc2B8F6j7CkUgbWg1hU2+YJFiMGhaRMljN9jpCVQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [freebsd]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-linux-32@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-rSCpXot5p3zUpwnC9ttKtP+vWf3gT1CkzJwEBHqqIr0GmgTLoADMaZ1AZqq125DyCvPf2s9f98XtSWaHmIqN8w==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [ia32]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-linux-64@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-lx+tQR7OW9Sq8WrP+zJ20lpJFHe4jvO56czUjJe7iSYtu0mpbApnJc2p4KqakU4xdjMdlqsUDG6L7GqE4+dNxQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-linux-arm64@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-e1gEB3+1WWsvBNDrPIq43hkUmWx9CkN5DVfcHa9Ar55DY8G9DRl5MyCFVpYVPctoWLRMlt1VRwPuc5YfSTXZbw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-linux-arm@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-O2w4oRYNoavKyednlkCnxr7VnfizpWurCxKraRyKQ4XIQbv3bqtgK/VSt1cJMwm+7+BdGNsqux4wAKmwsdW+Zw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-linux-mips64le@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-SKDBxNiJmTD1HYlmq6GWbz7dBtz1lYg28Y8RLo2Yj/jZtkVzZbMS0sVhB05FAzQhGT+m1bFLSrbLJkfmbzoQXg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [mips64el]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-linux-ppc64le@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-cKIoVrHn6qJf1cTKCaOQvXKpcpSwCShzNkEQNtWCEFvlHJ817lsVaWqQm01qDQ9pGrDbhZRsUAIOkwsjLrKDmA==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [ppc64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-linux-riscv64@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-W6gQyJc52lFoPj0w6AoQCfa8/fmwsC6CrT80JKe+fF4mYwBUnySbRVldMDb/cb6qCqHt5m3X+w7HFS5soPGT5Q==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [riscv64]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-linux-s390x@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-IN4agxUutc0BbcAMDDVuz60bDKFEGlq+vZlPzeLnketkVs/5BZj1vfoS8hJJelvR/mB99G9YjyOm08EthqoyHw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [s390x]
|
|
||||||
os: [linux]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-netbsd-64@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-cnvcQ6u7QtjnxFcMYtEUqOYg8wTfLOSoc6nFPhjIE4074Tw/H48LFqFq0v2Gtgvc5neUZtxBF2+6QMX4Q91vwQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [netbsd]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-openbsd-64@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-14fDX08hM0rWzUO7uf7Wxg9uL5SK5AqSDe+vXviIL+gWGN2vHoakRbzZoLVHFwoTLT5/1oIUYDJfcmcrFm1rjw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [openbsd]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-sunos-64@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-TDUJGI077mAM3qotUfN/DcKaBq3nLeAdNwjsWulKgdC3UwC/iqyrYrnmZipEbiHO2jt4+wRFUz/s/x+HeDiblg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [sunos]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-windows-32@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-Jyf5OUm+Guo7+SoIURTfmzqri10xj18qdgxwy3NNsQG/Eg1XLETDORWH0cKy6YTiRDuqeCsZeXDoAQABOs30gQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [ia32]
|
|
||||||
os: [win32]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-windows-64@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-D41xhwJN90qeLebZrb853zhGJahIlCf+HPKwxVZx+Nk8BNV09jQyJ2GYqmmwRxNOrbzqD80+pgvoYkq4a4OV0g==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [x64]
|
|
||||||
os: [win32]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild-windows-arm64@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-EGzYwc+MoKhWnz+6iUbXQKcQKV8FbPovDJkmY9YWGkgSwZALPo4DpjSaMLW6hv42YRyoBRM1NP/v/qmVtgeJjQ==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
cpu: [arm64]
|
|
||||||
os: [win32]
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
/@netlify/esbuild@0.14.39-1:
|
|
||||||
resolution: {integrity: sha512-FkS9R3aeD1JvPhEZh9r4GfXGLHoqzAsS3haqIeFfQ907irkGzCg1w5r5OWuSqPtLNyaGklVWz/HU0IsM8thyZw==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
hasBin: true
|
|
||||||
requiresBuild: true
|
|
||||||
optionalDependencies:
|
|
||||||
'@netlify/esbuild-android-64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-android-arm64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-darwin-64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-darwin-arm64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-freebsd-64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-freebsd-arm64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-linux-32': 0.14.39-1
|
|
||||||
'@netlify/esbuild-linux-64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-linux-arm': 0.14.39-1
|
|
||||||
'@netlify/esbuild-linux-arm64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-linux-mips64le': 0.14.39-1
|
|
||||||
'@netlify/esbuild-linux-ppc64le': 0.14.39-1
|
|
||||||
'@netlify/esbuild-linux-riscv64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-linux-s390x': 0.14.39-1
|
|
||||||
'@netlify/esbuild-netbsd-64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-openbsd-64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-sunos-64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-windows-32': 0.14.39-1
|
|
||||||
'@netlify/esbuild-windows-64': 0.14.39-1
|
|
||||||
'@netlify/esbuild-windows-arm64': 0.14.39-1
|
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@netlify/framework-info@9.8.10:
|
/@netlify/framework-info@9.8.10:
|
||||||
|
@ -2412,11 +2428,11 @@ packages:
|
||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@netlify/functions-utils@5.2.22(supports-color@9.3.1):
|
/@netlify/functions-utils@5.2.28(supports-color@9.3.1):
|
||||||
resolution: {integrity: sha512-XflsfLLTqPILpurLuQ7vXPoB2OYOZP14kn9fpUZLcLfsOMa85+dPpLX3ADAspnHVCCrnNfvbvW0z0nXod+aO/g==}
|
resolution: {integrity: sha512-1WDgXo71kNNxRTbCaZWo5aqNy0lnZWi9FGXr44539IG9nDuxQy7bOIksSHDryWqFVXIqBjJG18+VR4dTPuN7KA==}
|
||||||
engines: {node: ^14.16.0 || >=16.0.0}
|
engines: {node: ^14.16.0 || >=16.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@netlify/zip-it-and-ship-it': 9.15.1(supports-color@9.3.1)
|
'@netlify/zip-it-and-ship-it': 9.18.0(supports-color@9.3.1)
|
||||||
cpy: 9.0.1
|
cpy: 9.0.1
|
||||||
path-exists: 5.0.0
|
path-exists: 5.0.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
@ -2560,6 +2576,11 @@ packages:
|
||||||
'@netlify/local-functions-proxy-win32-x64': 1.1.1
|
'@netlify/local-functions-proxy-win32-x64': 1.1.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@netlify/node-cookies@0.1.0:
|
||||||
|
resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==}
|
||||||
|
engines: {node: ^14.16.0 || >=16.0.0}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@netlify/open-api@2.19.1:
|
/@netlify/open-api@2.19.1:
|
||||||
resolution: {integrity: sha512-RkucRf8o0vYhCDXCRHWU/EdhkVE3JhkqKmZFvMW6qCPD206GV2Cfo9JGSKb0NdN+nmHSNaYmd+9dvT6I9MP4pw==}
|
resolution: {integrity: sha512-RkucRf8o0vYhCDXCRHWU/EdhkVE3JhkqKmZFvMW6qCPD206GV2Cfo9JGSKb0NdN+nmHSNaYmd+9dvT6I9MP4pw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -2576,30 +2597,28 @@ packages:
|
||||||
execa: 6.1.0
|
execa: 6.1.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@netlify/serverless-functions-api@1.5.2:
|
/@netlify/serverless-functions-api@1.7.3:
|
||||||
resolution: {integrity: sha512-E9ZqnuWwGftXgO0JhGOl6h05bpnrH5EswQOuHIdTXBmhi4LedXjTNZ6xoSMgnhsE+x13WWq2P0yhaAl8Ly9lKw==}
|
resolution: {integrity: sha512-n6/7cJlSWvvbBlUOEAbkGyEld80S6KbG/ldQI9OhLfe1lTatgKmrTNIgqVNpaWpUdTgP2OHWFjmFBzkxxBWs5w==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
|
dependencies:
|
||||||
|
'@netlify/node-cookies': 0.1.0
|
||||||
|
urlpattern-polyfill: 8.0.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@netlify/serverless-functions-api@1.6.0:
|
/@netlify/zip-it-and-ship-it@9.17.3(supports-color@9.3.1):
|
||||||
resolution: {integrity: sha512-Lr5mxLAvSZyJhigSc0zhvAuusNR6VdJNvOmsDkxIN6f9xzmRpWyAEecCGtBc+hoSZlIeLzI7oFcKhaTzXcO2JA==}
|
resolution: {integrity: sha512-QjWygS6dR5WKLFoo+k9YeX9CbkBNHfjHyt3u86wB+n0pvzpSudMbH6SLCXsoSmBIFpdAIWZ5aWZ3S0Fvy8bEvg==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@netlify/zip-it-and-ship-it@9.15.1(supports-color@9.3.1):
|
|
||||||
resolution: {integrity: sha512-gYEZ8Rrl9dtME3syR3Uj+JabEWvEiFUKO0/84joriVIfWGrYPzu9WKBqOjy+huWIAYEWPbEJRmxFEJrYOmhDgw==}
|
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/parser': 7.22.10
|
'@babel/parser': 7.22.10
|
||||||
'@netlify/binary-info': 1.0.0
|
'@netlify/binary-info': 1.0.0
|
||||||
'@netlify/esbuild': 0.14.39-1
|
'@netlify/serverless-functions-api': 1.7.3
|
||||||
'@netlify/serverless-functions-api': 1.6.0
|
|
||||||
'@vercel/nft': 0.23.1(supports-color@9.3.1)
|
'@vercel/nft': 0.23.1(supports-color@9.3.1)
|
||||||
archiver: 5.3.1
|
archiver: 5.3.1
|
||||||
common-path-prefix: 3.0.0
|
common-path-prefix: 3.0.0
|
||||||
cp-file: 10.0.0
|
cp-file: 10.0.0
|
||||||
es-module-lexer: 1.2.1
|
es-module-lexer: 1.2.1
|
||||||
|
esbuild: 0.19.2
|
||||||
execa: 6.1.0
|
execa: 6.1.0
|
||||||
filter-obj: 5.1.0
|
filter-obj: 5.1.0
|
||||||
find-up: 6.3.0
|
find-up: 6.3.0
|
||||||
|
@ -2621,6 +2640,49 @@ packages:
|
||||||
tmp-promise: 3.0.3
|
tmp-promise: 3.0.3
|
||||||
toml: 3.0.0
|
toml: 3.0.0
|
||||||
unixify: 1.0.0
|
unixify: 1.0.0
|
||||||
|
urlpattern-polyfill: 8.0.2
|
||||||
|
yargs: 17.7.2
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- encoding
|
||||||
|
- supports-color
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@netlify/zip-it-and-ship-it@9.18.0(supports-color@9.3.1):
|
||||||
|
resolution: {integrity: sha512-HzQSyeVanytksO9n84uimm9D7nJa0PMuX0O9S7bI3VX16JxqwMiCx6yW9EDrIuDD5Invs07+irq54nzYDCwgeg==}
|
||||||
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
'@babel/parser': 7.22.10
|
||||||
|
'@netlify/binary-info': 1.0.0
|
||||||
|
'@netlify/serverless-functions-api': 1.7.3
|
||||||
|
'@vercel/nft': 0.23.1(supports-color@9.3.1)
|
||||||
|
archiver: 6.0.1
|
||||||
|
common-path-prefix: 3.0.0
|
||||||
|
cp-file: 10.0.0
|
||||||
|
es-module-lexer: 1.2.1
|
||||||
|
esbuild: 0.19.2
|
||||||
|
execa: 6.1.0
|
||||||
|
filter-obj: 5.1.0
|
||||||
|
find-up: 6.3.0
|
||||||
|
get-tsconfig: 4.7.0
|
||||||
|
glob: 8.1.0
|
||||||
|
is-builtin-module: 3.2.1
|
||||||
|
is-path-inside: 4.0.0
|
||||||
|
junk: 4.0.1
|
||||||
|
locate-path: 7.2.0
|
||||||
|
merge-options: 3.0.4
|
||||||
|
minimatch: 9.0.1
|
||||||
|
normalize-path: 3.0.0
|
||||||
|
p-map: 5.5.0
|
||||||
|
path-exists: 5.0.0
|
||||||
|
precinct: 11.0.5(supports-color@9.3.1)
|
||||||
|
require-package-name: 2.0.1
|
||||||
|
resolve: 2.0.0-next.4
|
||||||
|
semver: 7.5.4
|
||||||
|
tmp-promise: 3.0.3
|
||||||
|
toml: 3.0.0
|
||||||
|
unixify: 1.0.0
|
||||||
|
urlpattern-polyfill: 8.0.2
|
||||||
yargs: 17.7.2
|
yargs: 17.7.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
|
@ -4315,6 +4377,18 @@ packages:
|
||||||
readable-stream: 2.3.8
|
readable-stream: 2.3.8
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/archiver-utils@4.0.1:
|
||||||
|
resolution: {integrity: sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==}
|
||||||
|
engines: {node: '>= 12.0.0'}
|
||||||
|
dependencies:
|
||||||
|
glob: 8.1.0
|
||||||
|
graceful-fs: 4.2.11
|
||||||
|
lazystream: 1.0.1
|
||||||
|
lodash: 4.17.21
|
||||||
|
normalize-path: 3.0.0
|
||||||
|
readable-stream: 3.6.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/archiver@5.3.1:
|
/archiver@5.3.1:
|
||||||
resolution: {integrity: sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==}
|
resolution: {integrity: sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
|
@ -4328,6 +4402,19 @@ packages:
|
||||||
zip-stream: 4.1.0
|
zip-stream: 4.1.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/archiver@6.0.1:
|
||||||
|
resolution: {integrity: sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==}
|
||||||
|
engines: {node: '>= 12.0.0'}
|
||||||
|
dependencies:
|
||||||
|
archiver-utils: 4.0.1
|
||||||
|
async: 3.2.4
|
||||||
|
buffer-crc32: 0.2.13
|
||||||
|
readable-stream: 3.6.2
|
||||||
|
readdir-glob: 1.1.3
|
||||||
|
tar-stream: 3.1.6
|
||||||
|
zip-stream: 5.0.1
|
||||||
|
dev: true
|
||||||
|
|
||||||
/archy@1.0.0:
|
/archy@1.0.0:
|
||||||
resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==}
|
resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -5145,6 +5232,16 @@ packages:
|
||||||
readable-stream: 3.6.2
|
readable-stream: 3.6.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/compress-commons@5.0.1:
|
||||||
|
resolution: {integrity: sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==}
|
||||||
|
engines: {node: '>= 12.0.0'}
|
||||||
|
dependencies:
|
||||||
|
crc-32: 1.2.2
|
||||||
|
crc32-stream: 5.0.0
|
||||||
|
normalize-path: 3.0.0
|
||||||
|
readable-stream: 3.6.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/concat-map@0.0.1:
|
/concat-map@0.0.1:
|
||||||
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -5292,6 +5389,14 @@ packages:
|
||||||
readable-stream: 3.6.2
|
readable-stream: 3.6.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/crc32-stream@5.0.0:
|
||||||
|
resolution: {integrity: sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==}
|
||||||
|
engines: {node: '>= 12.0.0'}
|
||||||
|
dependencies:
|
||||||
|
crc-32: 1.2.2
|
||||||
|
readable-stream: 3.6.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/create-require@1.1.1:
|
/create-require@1.1.1:
|
||||||
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
|
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -5885,6 +5990,36 @@ packages:
|
||||||
'@esbuild/win32-x64': 0.17.19
|
'@esbuild/win32-x64': 0.17.19
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/esbuild@0.19.2:
|
||||||
|
resolution: {integrity: sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
hasBin: true
|
||||||
|
requiresBuild: true
|
||||||
|
optionalDependencies:
|
||||||
|
'@esbuild/android-arm': 0.19.2
|
||||||
|
'@esbuild/android-arm64': 0.19.2
|
||||||
|
'@esbuild/android-x64': 0.19.2
|
||||||
|
'@esbuild/darwin-arm64': 0.19.2
|
||||||
|
'@esbuild/darwin-x64': 0.19.2
|
||||||
|
'@esbuild/freebsd-arm64': 0.19.2
|
||||||
|
'@esbuild/freebsd-x64': 0.19.2
|
||||||
|
'@esbuild/linux-arm': 0.19.2
|
||||||
|
'@esbuild/linux-arm64': 0.19.2
|
||||||
|
'@esbuild/linux-ia32': 0.19.2
|
||||||
|
'@esbuild/linux-loong64': 0.19.2
|
||||||
|
'@esbuild/linux-mips64el': 0.19.2
|
||||||
|
'@esbuild/linux-ppc64': 0.19.2
|
||||||
|
'@esbuild/linux-riscv64': 0.19.2
|
||||||
|
'@esbuild/linux-s390x': 0.19.2
|
||||||
|
'@esbuild/linux-x64': 0.19.2
|
||||||
|
'@esbuild/netbsd-x64': 0.19.2
|
||||||
|
'@esbuild/openbsd-x64': 0.19.2
|
||||||
|
'@esbuild/sunos-x64': 0.19.2
|
||||||
|
'@esbuild/win32-arm64': 0.19.2
|
||||||
|
'@esbuild/win32-ia32': 0.19.2
|
||||||
|
'@esbuild/win32-x64': 0.19.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/escalade@3.1.1:
|
/escalade@3.1.1:
|
||||||
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
|
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
@ -6862,10 +6997,6 @@ packages:
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/glob-to-regexp@0.4.1:
|
|
||||||
resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/glob@7.1.6:
|
/glob@7.1.6:
|
||||||
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
|
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -8027,9 +8158,9 @@ packages:
|
||||||
resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==}
|
resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/lambda-local@2.1.1:
|
/lambda-local@2.1.2:
|
||||||
resolution: {integrity: sha512-/bjvifTDx8mOfKwe3pHrmfHyy695Gj2Z++WFL+Sk7/nXjUcDWP/26vIV8Q0LVpyfaGCC47oCK6Y6d/8PNUSNJw==}
|
resolution: {integrity: sha512-nGTJn2JxZWcLGpNwXFmXC7UEXL7QCLieQWDiXs46vIv9y/gSPm/uHygEMCaym+HIziniAw0XIm+1VTrXCvG1Zw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=8'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
commander: 10.0.1
|
commander: 10.0.1
|
||||||
|
@ -9058,21 +9189,21 @@ packages:
|
||||||
resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==}
|
resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/netlify-cli@16.0.2(@types/node@20.2.5):
|
/netlify-cli@16.3.1(@types/node@20.2.5):
|
||||||
resolution: {integrity: sha512-CA4upymzq315K//pkrjqvppaazB24zgt/TL9TAq/Et3oqRSnYA9dE2vNr1T/Lys/uyuZZaABdWEzR/+NZVXpFw==}
|
resolution: {integrity: sha512-CdnmOavZ2G5Z7blko/cdtdZQCQ8Swqz6YucqzztVi9sV9j6bGMneJ2sv83FiSBbdDnHReLm7A3Drns6zc9o2/w==}
|
||||||
engines: {node: '>=16.16.0'}
|
engines: {node: '>=16.16.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@bugsnag/js': 7.20.2
|
'@bugsnag/js': 7.20.2
|
||||||
'@fastify/static': 6.10.2
|
'@fastify/static': 6.10.2
|
||||||
'@netlify/build': 29.20.2(@types/node@20.2.5)(debug@4.3.4)
|
'@netlify/build': 29.20.13(@types/node@20.2.5)(debug@4.3.4)
|
||||||
'@netlify/build-info': 7.7.3
|
'@netlify/build-info': 7.8.0
|
||||||
'@netlify/config': 20.8.0
|
'@netlify/config': 20.8.1
|
||||||
'@netlify/edge-bundler': 8.17.1
|
'@netlify/edge-bundler': 8.19.1
|
||||||
'@netlify/local-functions-proxy': 1.1.1
|
'@netlify/local-functions-proxy': 1.1.1
|
||||||
'@netlify/serverless-functions-api': 1.5.2
|
'@netlify/serverless-functions-api': 1.7.3
|
||||||
'@netlify/zip-it-and-ship-it': 9.15.1(supports-color@9.3.1)
|
'@netlify/zip-it-and-ship-it': 9.17.3(supports-color@9.3.1)
|
||||||
'@octokit/rest': 19.0.13
|
'@octokit/rest': 19.0.13
|
||||||
ansi-escapes: 6.2.0
|
ansi-escapes: 6.2.0
|
||||||
ansi-styles: 6.2.1
|
ansi-styles: 6.2.1
|
||||||
|
@ -9128,7 +9259,7 @@ packages:
|
||||||
isexe: 2.0.0
|
isexe: 2.0.0
|
||||||
jsonwebtoken: 9.0.1
|
jsonwebtoken: 9.0.1
|
||||||
jwt-decode: 3.1.2
|
jwt-decode: 3.1.2
|
||||||
lambda-local: 2.1.1
|
lambda-local: 2.1.2
|
||||||
listr: 0.14.3
|
listr: 0.14.3
|
||||||
locate-path: 7.2.0
|
locate-path: 7.2.0
|
||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
|
@ -9138,7 +9269,7 @@ packages:
|
||||||
multiparty: 4.2.3
|
multiparty: 4.2.3
|
||||||
netlify: 13.1.10
|
netlify: 13.1.10
|
||||||
netlify-headers-parser: 7.1.2
|
netlify-headers-parser: 7.1.2
|
||||||
netlify-redirect-parser: 14.1.3
|
netlify-redirect-parser: 14.2.0
|
||||||
netlify-redirector: 0.4.0
|
netlify-redirector: 0.4.0
|
||||||
node-fetch: 2.6.12
|
node-fetch: 2.6.12
|
||||||
node-version-alias: 3.4.1
|
node-version-alias: 3.4.1
|
||||||
|
@ -9195,17 +9326,6 @@ packages:
|
||||||
toml: 3.0.0
|
toml: 3.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/netlify-redirect-parser@14.1.3:
|
|
||||||
resolution: {integrity: sha512-23svKHdO2QUEJHo3knQV1EpAh8UX/+8zQmwxVMSby4/NRj5vPS+u/yKesY/uHAgcw/28HwvEUGQdbXsPPe7J/Q==}
|
|
||||||
engines: {node: ^14.16.0 || >=16.0.0}
|
|
||||||
dependencies:
|
|
||||||
fast-safe-stringify: 2.1.1
|
|
||||||
filter-obj: 5.1.0
|
|
||||||
is-plain-obj: 4.1.0
|
|
||||||
path-exists: 5.0.0
|
|
||||||
toml: 3.0.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/netlify-redirect-parser@14.2.0:
|
/netlify-redirect-parser@14.2.0:
|
||||||
resolution: {integrity: sha512-3Mi7sMH7XXZhjvXx/5RtJ/rU/E6zKkE4etcYQbEu8B3r872D0opoYyGdPW/MvaYQyVdfg23XEFaEI4zzQTupaw==}
|
resolution: {integrity: sha512-3Mi7sMH7XXZhjvXx/5RtJ/rU/E6zKkE4etcYQbEu8B3r872D0opoYyGdPW/MvaYQyVdfg23XEFaEI4zzQTupaw==}
|
||||||
engines: {node: ^14.16.0 || >=16.0.0}
|
engines: {node: ^14.16.0 || >=16.0.0}
|
||||||
|
@ -9242,7 +9362,7 @@ packages:
|
||||||
resolution: {integrity: sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==}
|
resolution: {integrity: sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dependencies:
|
dependencies:
|
||||||
semver: 7.5.1
|
semver: 7.5.4
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/node-addon-api@5.1.0:
|
/node-addon-api@5.1.0:
|
||||||
|
@ -10943,7 +11063,7 @@ packages:
|
||||||
detect-libc: 2.0.1
|
detect-libc: 2.0.1
|
||||||
node-addon-api: 5.1.0
|
node-addon-api: 5.1.0
|
||||||
prebuild-install: 7.1.1
|
prebuild-install: 7.1.1
|
||||||
semver: 7.5.1
|
semver: 7.5.4
|
||||||
simple-get: 4.0.1
|
simple-get: 4.0.1
|
||||||
tar-fs: 2.1.1
|
tar-fs: 2.1.1
|
||||||
tunnel-agent: 0.6.0
|
tunnel-agent: 0.6.0
|
||||||
|
@ -12972,6 +13092,15 @@ packages:
|
||||||
readable-stream: 3.6.2
|
readable-stream: 3.6.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/zip-stream@5.0.1:
|
||||||
|
resolution: {integrity: sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==}
|
||||||
|
engines: {node: '>= 12.0.0'}
|
||||||
|
dependencies:
|
||||||
|
archiver-utils: 4.0.1
|
||||||
|
compress-commons: 5.0.1
|
||||||
|
readable-stream: 3.6.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/zwitch@2.0.4:
|
/zwitch@2.0.4:
|
||||||
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
|
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
321
urara/2023-09-04-python/+page.md
Normal file
321
urara/2023-09-04-python/+page.md
Normal file
|
@ -0,0 +1,321 @@
|
||||||
|
---
|
||||||
|
title: Python 初学笔记
|
||||||
|
created: 2023-09-04
|
||||||
|
summary: Note of 《Python As Fast as Possible - Learn Python in ~75 Minutes》
|
||||||
|
tags:
|
||||||
|
- 笔记
|
||||||
|
- Python
|
||||||
|
---
|
||||||
|
教程:[Python As Fast as Possible - Learn Python in ~75 Minutes](https://www.youtube.com/watch?v=VchuKL44s6E)
|
||||||
|
|
||||||
|
- [GitHub - kyclark/tiny\_python\_projects: Code for Tiny Python Projects (Manning, 2020, ISBN 1617297518). Learning Python through test-driven development of games and puzzles.](https://github.com/kyclark/tiny_python_projects)
|
||||||
|
|
||||||
|
## 交互式
|
||||||
|
输入
|
||||||
|
```bash
|
||||||
|
python3
|
||||||
|
```
|
||||||
|
看到prompt提示符`>>>` 就进入交互模式了
|
||||||
|
|
||||||
|
- `<Control>`-`P `(previous)
|
||||||
|
- `<Control>`-`N` (next).
|
||||||
|
- `<Control>`-`D` exits a session
|
||||||
|
|
||||||
|
- 工具:
|
||||||
|
- [Project Jupyter | Home](https://jupyter.org)
|
||||||
|
- 教程:
|
||||||
|
- [practical python](https://dabeaz-course.github.io/practical-python/)
|
||||||
|
- [PEP 20 – The Zen of Python | peps.python.org](https://peps.python.org/pep-0020/)
|
||||||
|
- 书籍
|
||||||
|
- [[流畅的Python]]
|
||||||
|
|
||||||
|
## 数据类型
|
||||||
|
- Int
|
||||||
|
- Float
|
||||||
|
- String
|
||||||
|
- Bool
|
||||||
|
|
||||||
|
## Arithmetic Operator
|
||||||
|
- will always reture a float number
|
||||||
|
- `int(x/y)` => int
|
||||||
|
- 幂运算: `x ** y` => `2**3 = 8`
|
||||||
|
- 开跟号:`x //y` => `10 // 3 ` => 3 因为返回的是int,会自动取整
|
||||||
|
- 求余 `x % y`
|
||||||
|
|
||||||
|
## String Method
|
||||||
|
- `.upper()`
|
||||||
|
- `.lower()`
|
||||||
|
- `.capitalize()`
|
||||||
|
- 首字大写
|
||||||
|
- `.count()`
|
||||||
|
- `'Hello'.count('ll) = 2`
|
||||||
|
- mutiply strings
|
||||||
|
- `'hello' * 3 = 'hellohellohello`
|
||||||
|
- `'hello' + 'yes' = 'helloyes`
|
||||||
|
- `.replace()`
|
||||||
|
- `.split()` 分割
|
||||||
|
- 和JS中[[split]]的区别:
|
||||||
|
- 当split里面没有任何参数的时候,JS中会将字符串切割成单个字符
|
||||||
|
- 而Python会按照空格分割(By default any whitespace is a separator[^1])
|
||||||
|
## Conditional Operators
|
||||||
|
return -> `True` / `False`
|
||||||
|
- ==
|
||||||
|
- !=
|
||||||
|
- `>=`
|
||||||
|
- `<=`
|
||||||
|
- `>`
|
||||||
|
- `<`
|
||||||
|
|
||||||
|
- 可以比较字符串,通过比较ASCI码
|
||||||
|
- `.orc('a')` 求得某个字符串的ASCI值
|
||||||
|
- 如果有几个字符串的话,逐一比较
|
||||||
|
|
||||||
|
## Chained Conditionals
|
||||||
|
- and
|
||||||
|
- or
|
||||||
|
- not
|
||||||
|
- order
|
||||||
|
1. nor
|
||||||
|
2. and
|
||||||
|
3. or
|
||||||
|
|
||||||
|
## If/Else/Elif
|
||||||
|
```py
|
||||||
|
if x == 'Tim':
|
||||||
|
print('You are great')
|
||||||
|
elif x == 'joe':
|
||||||
|
print('Bye joe!')
|
||||||
|
else:
|
||||||
|
print('No')
|
||||||
|
```
|
||||||
|
|
||||||
|
js
|
||||||
|
```js
|
||||||
|
if(x === 'tim') {
|
||||||
|
console.log('You are great')
|
||||||
|
} else if (x === 'joe') {
|
||||||
|
console.log('Bye joe!')
|
||||||
|
} else {
|
||||||
|
console.log('No')
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## List/Tuples
|
||||||
|
- List
|
||||||
|
- 类似JS中的 [[数组|array]]
|
||||||
|
- `.list()`
|
||||||
|
- `x = [4, True, 'hi']`
|
||||||
|
- `x[index]`
|
||||||
|
- `.len()`
|
||||||
|
- 返回长度
|
||||||
|
- string also works
|
||||||
|
- `.append()`
|
||||||
|
- 在末尾加值
|
||||||
|
- `.extend([])`
|
||||||
|
- 扩展数组,在末尾加值
|
||||||
|
- `.pop(index)`
|
||||||
|
- remove the last element and return it
|
||||||
|
- list is mutable
|
||||||
|
- deepcopy
|
||||||
|
- `y = x[:]
|
||||||
|
- tuples
|
||||||
|
- TS中的 tuple
|
||||||
|
- immutable
|
||||||
|
- `y = (1,2,3,5)`
|
||||||
|
- nesting
|
||||||
|
- `x=[[],(),[]]`
|
||||||
|
|
||||||
|
## for loops
|
||||||
|
```py
|
||||||
|
for i in range(10)
|
||||||
|
print(i)
|
||||||
|
|
||||||
|
x = [1,2,3,5,67]
|
||||||
|
for i in range(len(x))
|
||||||
|
print(x[i])
|
||||||
|
|
||||||
|
for i,element in enumerate(x):
|
||||||
|
print(i,element)
|
||||||
|
// 0 1
|
||||||
|
// 1 2
|
||||||
|
// 2 3
|
||||||
|
// 3 5
|
||||||
|
// 4 67
|
||||||
|
```
|
||||||
|
|
||||||
|
- `.range()`
|
||||||
|
- arguments:
|
||||||
|
- stop
|
||||||
|
- start, stop
|
||||||
|
- start, stop, end
|
||||||
|
- not includes start and stop
|
||||||
|
- `enumerate`
|
||||||
|
- enumerate()是Python中的一个内置函数,用于将一个可迭代对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中
|
||||||
|
|
||||||
|
## While
|
||||||
|
```bash
|
||||||
|
while True:
|
||||||
|
print('run')
|
||||||
|
i += 1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Slice
|
||||||
|
切割数组
|
||||||
|
```py
|
||||||
|
x = [0,1,2,3,4,5,6,7,8]
|
||||||
|
slice = x[0,4,2]
|
||||||
|
// slice = [0,2]
|
||||||
|
```
|
||||||
|
- `slice = x[start:stop:step]`
|
||||||
|
- `x[:stop]`
|
||||||
|
- `x[start:]`
|
||||||
|
- `x[start:stop]`
|
||||||
|
- step默认为1
|
||||||
|
- reverse a list: `x[::-1]`
|
||||||
|
|
||||||
|
## Sets
|
||||||
|
unorder unique list
|
||||||
|
```py
|
||||||
|
x = set()
|
||||||
|
s = { 2,3,4,5 } //set
|
||||||
|
s2 = { 6 }
|
||||||
|
s = { } // dict
|
||||||
|
print( 4 in s) => boolean
|
||||||
|
print(s.union(s2)) // => {2,3,4,5,6}
|
||||||
|
```
|
||||||
|
- `.add()`
|
||||||
|
- `.remove()`
|
||||||
|
- `.union`:合并set
|
||||||
|
- `.difference`:比较差异
|
||||||
|
- `.intersection`: 交集
|
||||||
|
|
||||||
|
## Dicts
|
||||||
|
```py
|
||||||
|
x = {'key': 4}
|
||||||
|
x['key2'] = 5
|
||||||
|
print( 'key' in x) // => True
|
||||||
|
|
||||||
|
//删除
|
||||||
|
del x['key']
|
||||||
|
```
|
||||||
|
- `.value()`
|
||||||
|
- 获取所有values
|
||||||
|
- `.update()`[^2]
|
||||||
|
- update() 方法用于将一个字典的键值对更新到另一个字典中。
|
||||||
|
- Update the dictionary with the key/value pairs from other, overwriting existing keys. Return None.
|
||||||
|
- update() accepts either another dictionary object or an iterable of key/value pairs (as tuples or other iterables of length two). If keyword arguments are specified, the dictionary is then updated with those key/value pairs: d.update(red=1, blue=2).
|
||||||
|
|
||||||
|
## Comprehensions
|
||||||
|
```py
|
||||||
|
x = [ x for x in range(5)]
|
||||||
|
x =[[0 for x in range(100)] for x in range(5)]
|
||||||
|
x = { i for i in range(100) if i % 5 == 0 }
|
||||||
|
```
|
||||||
|
|
||||||
|
## Function
|
||||||
|
|
||||||
|
```py
|
||||||
|
def func(x,y,z=None):
|
||||||
|
print('Run',x,y,z)
|
||||||
|
return x * y , x /y
|
||||||
|
r1, r2 = func(10,5)
|
||||||
|
func()
|
||||||
|
```
|
||||||
|
|
||||||
|
## Unpack Operator /* Args and ** Kwargs
|
||||||
|
- `*x`
|
||||||
|
- 类似于JS中的`...`
|
||||||
|
- 用于list
|
||||||
|
```py
|
||||||
|
def fun(x,y):
|
||||||
|
print(x,y)
|
||||||
|
|
||||||
|
pairs = [(1,2),(3,4)]
|
||||||
|
for pair in pairs
|
||||||
|
fun(*pair)
|
||||||
|
```
|
||||||
|
|
||||||
|
- `**x`
|
||||||
|
- key word argumens
|
||||||
|
- 用于dict
|
||||||
|
```py
|
||||||
|
def fun(x,y):
|
||||||
|
print(x,y)
|
||||||
|
|
||||||
|
for(**{'x':2, 'y': 5})
|
||||||
|
// 顺序不一也可以
|
||||||
|
```
|
||||||
|
|
||||||
|
## Scope & Globals
|
||||||
|
- 函数内有局部作用域
|
||||||
|
- 用`globel` 可以将局部变量变成全局变量
|
||||||
|
```py
|
||||||
|
def func():
|
||||||
|
global x
|
||||||
|
return x
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Exceptions
|
||||||
|
- 意外事件,相当于JS中的`throw new Error('')`
|
||||||
|
- 会打断程序的正常执行流程
|
||||||
|
```py
|
||||||
|
raise Exception('Bad')
|
||||||
|
raise FileExistsError('')
|
||||||
|
```
|
||||||
|
常见的异常类型有:
|
||||||
|
- StopIteration - 迭代器没有更多的值
|
||||||
|
- ImportError - 导入模块失败
|
||||||
|
- IndexError - 序列中找不到给定的索引
|
||||||
|
- KeyError - 映射中找不到给定的键
|
||||||
|
- ValueError - 传入无效的参数
|
||||||
|
- TypeError - 对类型无效的操作
|
||||||
|
- FileNotFoundError - 未找到文件
|
||||||
|
- KeyboardInterrupt - 用户中断执行
|
||||||
|
## Handling Exceptions
|
||||||
|
|
||||||
|
```py
|
||||||
|
try:
|
||||||
|
x = 7 /0
|
||||||
|
expect Exception as e
|
||||||
|
print(e)
|
||||||
|
finally:
|
||||||
|
print('finally')
|
||||||
|
```
|
||||||
|
|
||||||
|
## Lambda
|
||||||
|
lambda是Python中的匿名函数。它可以有多个参数,但只能有一个表达式。
|
||||||
|
```py
|
||||||
|
x = lambda x: x + 5
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Map and Filter
|
||||||
|
- Map: 跟JS的[[map()]] 差不多
|
||||||
|
- 返回map object
|
||||||
|
```py
|
||||||
|
x = [0,1,2,3,4,5,6,7,8]
|
||||||
|
|
||||||
|
mp = map(lambda i : i +2 , x)
|
||||||
|
// js : const mp = x.map((i)=> i+1)
|
||||||
|
print(list(mp))
|
||||||
|
|
||||||
|
mpf = filter(lambda i : i === 2 , x)
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## F Strings
|
||||||
|
- 类似于JS中的 [[template literal]]
|
||||||
|
```py
|
||||||
|
tim = 89
|
||||||
|
x = f'hello {6+8}'
|
||||||
|
// js
|
||||||
|
// x = `hello ${6+8}`
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Buildin Functions
|
||||||
|
- [[vars()]]
|
||||||
|
|
||||||
|
[^1]: [Python String split() Method](https://www.w3schools.com/python/ref_string_split.asp)
|
||||||
|
[^2]: [Built-in Types — Python 3.11.4 documentation](https://docs.python.org/3/library/stdtypes.html?highlight=update#dict.update)
|
285
urara/2023-09-10-akkoma-media/+page.md
Normal file
285
urara/2023-09-10-akkoma-media/+page.md
Normal file
|
@ -0,0 +1,285 @@
|
||||||
|
---
|
||||||
|
title: Akkoma / Pleroma 的媒体相关配置
|
||||||
|
created: 2023-09-10
|
||||||
|
summary: 配置 Cloudflare R2、Media Proxy、Varnish Cache、Media Cache 的简明流程
|
||||||
|
---
|
||||||
|
|
||||||
|
## 前言
|
||||||
|
|
||||||
|
刚开始装的时候,我试过用 Contabo Object Storage,但是当时没有配置成功,后面发现 Cloudflare R2 还蛮适合的,而且**免费套餐对小型站点已经完全够用了**,所以将本地的文件上传到了 Cloudflare R2 中并且后续文件都迁移到了这边。
|
||||||
|
|
||||||
|
下面我先讲一下这么配置,再说怎么迁移,再说 Media Proxy 的配置 和 Varnish 的配置,可以根据个人需要选用配置。因为时间过去太久了了,可能会有一些多余了我也不知道的配置,也可能会有 Bug,可以对照官方文档仔细检查一下。
|
||||||
|
|
||||||
|
下文比较长,我写得比较详细,但是配置起来并不是特别难,需要一点点耐心。
|
||||||
|
|
||||||
|
相关信息:
|
||||||
|
|
||||||
|
- [Pricing · Cloudflare R2 docs](https://developers.cloudflare.com/r2/pricing/)
|
||||||
|
- [Configuration Cheat Sheet - Akkoma Documentation](https://docs.akkoma.dev/stable/configuration/cheatsheet/#pleromauploaderss3)
|
||||||
|
- [Public buckets · Cloudflare R2 docs](https://developers.cloudflare.com/r2/buckets/public-buckets/#managed-public-buckets-through-r2dev)
|
||||||
|
|
||||||
|
## Part1:配置上传文件到 Cloudflare R2
|
||||||
|
|
||||||
|
### 0. 准备工作
|
||||||
|
|
||||||
|
- Cloudflare 账号或者其他 S3 API 的对象存储服务的账号
|
||||||
|
- 一个用来放媒体文件的域名,这个域名必须和所使用的 Cloudflare 账号绑定并且通过 Cloudflare 来做 DNS,但如果没有这样的域名也可以,但是会被限速并且一些 Cloudflare 的功能特点会无法使用,比如没有缓存功能,详情参考:[Public buckets · Cloudflare R2 docs](https://developers.cloudflare.com/r2/buckets/public-buckets/#managed-public-buckets-through-r2dev)
|
||||||
|
|
||||||
|
### 1. 创建 Bucket
|
||||||
|
|
||||||
|
进入到 Cloudflare 后台 R2 的部分,点击 `Create bucket` 创建新的 Bucket(存储桶)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
然后选择位置,我这里选择的是 Automatic,也可以根据自己的需要修改位置,确认好位置后,点击右下角的 `Create Bucket` 创建 Bucket:
|
||||||
|

|
||||||
|
|
||||||
|
创建好之后就可以在 **Overview** 那边就可以看到创建好的 Bucket 了,点击 Bucket 名进入详情页。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 2. 开启 Public Access
|
||||||
|
|
||||||
|
进入到详情页之后点击 **Settings** 标签页
|
||||||
|

|
||||||
|
|
||||||
|
下拉到 **Public access** 一栏绑定域名,先输入域名,然后点击`Continue` ,然后点击`Connect domain`,接着 Cloudflare 会自动处理 DNS 的事情。
|
||||||
|

|
||||||
|

|
||||||
|
这样就是绑定好了:
|
||||||
|

|
||||||
|
|
||||||
|
如果域名不满足条件就会报错:
|
||||||
|

|
||||||
|
但这种情况也可以通过使用 **R2.dev subdomain** 来开启 Public Access,点击右边的`Allow Access`就可以开启了:
|
||||||
|

|
||||||
|
|
||||||
|
### 3. 设置 CORS
|
||||||
|
|
||||||
|
为什么需要设置 CORS:
|
||||||
|
> Cross-origin resource sharing (CORS) is a mechanism that allows restricted resources (e.g. fonts) on a web page to be requested from another domain outside the domain from which the first resource was served. A web page may freely embed cross-origin images, stylesheets, scripts, iframes, and videos. Certain "cross-domain" requests, notably Ajax requests, are forbidden by default by the
|
||||||
|
>
|
||||||
|
> 跨源资源共享 (CORS) 是一种机制,允许从提供第一个资源的域之外的另一个域请求网页上的受限资源(例如字体)。网页可以自由嵌入跨源图像、样式表、脚本、iframe 和视频。某些“跨域”请求,特别是 Ajax 请求,默认情况下被同源安全策略禁止。[^1]
|
||||||
|
|
||||||
|
当我们使用主域名(比如`seviche.cc`来访问子域名`m.seviche.cc` 上面的内容时,就会产生跨域问题,可以通过 CORS 来解决这个问题,在这里可以很方便地设置,滑动到下方 **CORS Policy** 的部分,点击右边按钮 `Add CROS policy` 添加:
|
||||||
|

|
||||||
|
设置里默认添加了一个`http://localhost:3000`的 URL,可以删掉,然后在`AllowedOrigins` 下面添加 Akkoma 的链接,比如`https://example.com`,以及在`AllowedMethods` 里加上 `POST`、`PUT`、`DELETE`, 如果下方没有任何报错就可以点右下角的 `Save` 保存,这部分就配置好了,但先不要关闭 Cloudflare 的页面。
|
||||||
|

|
||||||
|
|
||||||
|
### 4. 修改 Admin-Fe 中的设置
|
||||||
|
|
||||||
|
打开 Admin-Fe,打开很下面的 **Upload** 标签页,然后修改 Uploader 为 S3,Filter 选择可以参考文档中的 Cheat Sheet:[Configuration Cheat Sheet - Akkoma Documentation](https://docs.akkoma.dev/stable/configuration/cheatsheet/#upload-filters)
|
||||||
|
|
||||||
|
我的设置:
|
||||||
|

|
||||||
|
|
||||||
|
在 **Base URL** 的部分,如果刚才没有绑定自定义域名,那么这里可以使用 **Public R2.dev Bucket URL**,可以在 Bucket -> Setting -> R2.dev subdomain 部分找到。
|
||||||
|
|
||||||
|
### 5. 配置 S3 Keys
|
||||||
|
|
||||||
|
我们先回到 Cloudflare 创建 API Token,进入 **R2 Overview 页**面,点击右边的 `Manage R2 API Tokens`:
|
||||||
|

|
||||||
|
|
||||||
|
然后点击`Create API Token` :
|
||||||
|

|
||||||
|
|
||||||
|
权限选择第三个 **Object Read & Write**,并在 **Specify bucket(s)** 里选择对应的 Bucket:
|
||||||
|

|
||||||
|
|
||||||
|
下面的 TTL 设置可以随你喜欢。
|
||||||
|
|
||||||
|
在最下方的 **Client IP Address Filtering** 中 还可以设置阻止或者允许某些 IP,我在 Include 里添加了 Akkoma 实例所在服务器的 IP:
|
||||||
|

|
||||||
|
确认好各项配置后,点击右下角的 `Create API Token`,接着滚动到 Token 结果页面,复制下方的 Access Key ID 和 Secret Access Key,粘贴到刚才打开的 Admin-Fe 的相应位置:
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Host 部分可以在 Bucket 内的 Setting -> Bucket Detail 中找到,后面的 `/pleroma` 和前面的`https://` 都不需要:
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Region 写 auto,如果之前创建 Region 的时候有设置特殊 Region 的话这里是不能指明的,参考文档:[S3 API compatibility · Cloudflare R2 docs](https://developers.cloudflare.com/r2/api/s3/api/#bucket-region)
|
||||||
|

|
||||||
|
|
||||||
|
### 6. 设置目标 Bucket
|
||||||
|
|
||||||
|
在 **Pleroma.Uploaders.S3** 部分填入 Cloudflare R2 的 Bucket 名字,比如我们之前设置的是 Pleroma:
|
||||||
|

|
||||||
|
|
||||||
|
我的其他设置(什么也没设置):
|
||||||
|

|
||||||
|
|
||||||
|
最后保存设置,重启 Pleroma。
|
||||||
|
|
||||||
|
### 7. 迁移本地 uploads 文件夹到 Bucket 中
|
||||||
|
|
||||||
|
我当时是使用 rclone 来复制迁移的。经过网友 Diara 的提醒,才发现有一个内置的 CLI 命令,可以很方便的迁移:[Managing uploads - Akkoma Documentation](https://docs.akkoma.dev/stable/administration/CLI_tasks/uploads/),但是我没试过,具体命令:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
su akkoma -s $SHELL -lc "./bin/pleroma_ctl uploads migrate_local S3"
|
||||||
|
```
|
||||||
|
|
||||||
|
也可以迁移后删除本地文件:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
su akkoma -s $SHELL -lc "./bin/pleroma_ctl uploads migrate_local S3 --delete"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Part2. 配置 Media Proxy
|
||||||
|
|
||||||
|
这一部分和前面的部分可以说是完全不相干,这部分我是复制网友面条的设置,原帖文已经找不到了(Sorry
|
||||||
|
|
||||||
|
Media Proxy 的功能是给外站的媒体文件通过 Cloudflare 代理中转一下,这样访问一些外站媒体会更流畅一点。
|
||||||
|
|
||||||
|
### 1. 创建 Worker
|
||||||
|
|
||||||
|
首先在 Cloudflare 里的 **Worker & Pages** 部分点击 `Create Application` 创建 Worker:
|
||||||
|

|
||||||
|
|
||||||
|
再点`Create Worker`:
|
||||||
|

|
||||||
|
|
||||||
|
填入喜欢的名字,然后点击右下角 `Deploy`:
|
||||||
|

|
||||||
|
|
||||||
|
### 2. 修改 Worker 配置
|
||||||
|
|
||||||
|
点击 `Configure Worker` 配置 Worker:
|
||||||
|

|
||||||
|
接着点击右边`Quick Edit` 进入编辑页面:
|
||||||
|

|
||||||
|
|
||||||
|
删掉默认代码,填入下面的代码(由网友面条提供):
|
||||||
|
|
||||||
|
```js
|
||||||
|
function decodeBase64 (str) {
|
||||||
|
try {
|
||||||
|
return atob(str)
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e)
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
async fetch(request, env) {
|
||||||
|
const url = new URL(request.url)
|
||||||
|
const pathList = url.pathname.split('/') || []
|
||||||
|
const mediaUrl = decodeBase64(pathList[3] || '')
|
||||||
|
if (!mediaUrl) {
|
||||||
|
return new Response('')
|
||||||
|
}
|
||||||
|
console.log(mediaUrl)
|
||||||
|
return fetch(mediaUrl, {
|
||||||
|
headers: request.headers
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
点击右上角 `Save and Deploy` 保存:
|
||||||
|

|
||||||
|
|
||||||
|
### 3. 使用自定义域名
|
||||||
|
|
||||||
|
当然不使用也可以,不使用自定义域名的话可以直接使用 Worker's hostname,也就是这个部分:
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
在 worker 页面,打开 **Triggers** 标签页,然后点下面的 `Add Custom Domain` :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
然后填入自定义域名,比如:
|
||||||
|

|
||||||
|
点击`Add Custom Domain` 就加好了
|
||||||
|
|
||||||
|
### 4. 配置 Admin-Fe
|
||||||
|
|
||||||
|
打开 Admin-Fe 的 **Media Proxy** 页面,修改 **Base URL** 为上一步中修改的 Custom Domain
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
如果没有设置 Custom Domain 的话可以用 Custom Domain 部分提供的`production.proxy.<ID>.workers.dev` URL:
|
||||||
|

|
||||||
|
然后就设置好了,下面的其他部分我没有特殊设置,这里就不讲了。但我没开 Media preview proxy,之前开了会看不到图片,可能需要再做一些特殊设置,但感觉也没什么开的必要?
|
||||||
|
|
||||||
|
## Part3. 配置 Varnish Cache
|
||||||
|
|
||||||
|
参考文档:[Using a Varnish Cache - Akkoma Documentation](https://docs.akkoma.dev/stable/configuration/optimisation/varnish_cache/)
|
||||||
|
|
||||||
|
### 1. 安装 Varish
|
||||||
|
|
||||||
|
参考:[Installing Varnish on Ubuntu - Varnish Developer Portal](https://www.varnish-software.com/developers/tutorials/installing-varnish-ubuntu/)
|
||||||
|
|
||||||
|
### 2. 配置 Varnish
|
||||||
|
|
||||||
|
进入 Akkoma 目录,比如在`/opt/akkoma` 下,复制 Akkoma 预置的 Varnish 配置文件到 Varnish 目录下:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp /opt/akkoma/installation/akkoma.vcl /etc/varnish/akkoma.vcl
|
||||||
|
```
|
||||||
|
|
||||||
|
进入 Varnish 配置目录中,删除已有的`default.vcl` 配置:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /etc/varnish
|
||||||
|
sudo rm -rf default.vcl
|
||||||
|
```
|
||||||
|
|
||||||
|
- 启动 Varnish:`sudo systemctl start varnish`
|
||||||
|
- 检查 Varnish 情况:`sudo systemctl status varnish`
|
||||||
|
- 停止 Varnish: `sudo systemctl stop varnish`
|
||||||
|
- 设置开机启动:`sudo systemctl enable varnish`
|
||||||
|
|
||||||
|
启动后可以通过`curl -D- localhost:6081` 检查运行情况,像这样就是正常运行了:
|
||||||
|

|
||||||
|
|
||||||
|
### 3. 修改 Nginx 配置,可以修改下面的 upstream 端口为 6081
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Part4. Storing Remote Media
|
||||||
|
|
||||||
|
建议参考文档:[Storing Remote Media - Akkoma Documentation](https://docs.akkoma.dev/stable/configuration/storing_remote_media/)
|
||||||
|
|
||||||
|
这部分我的配置不保证不产生任何副作用,因为我配置之后有些路由会 503,不确定是上面和这个环节那里出了错,下面我的配置仅供参考:
|
||||||
|
|
||||||
|
```conf
|
||||||
|
proxy_cache_path /tmp/akkoma-media-cache levels=1:2 keys_zone=pleroma_media_cache:10m max_size=10g
|
||||||
|
inactive=720m use_temp_path=off;
|
||||||
|
```
|
||||||
|
|
||||||
|
```conf
|
||||||
|
location /media {
|
||||||
|
proxy_cache akkoma_media_cache;
|
||||||
|
slice 1m;
|
||||||
|
proxy_cache_key $host$uri$is_args$args$slice_range;
|
||||||
|
proxy_set_header Range $slice_range;
|
||||||
|
proxy_cache_valid 200 206 301 304 1h;
|
||||||
|
proxy_cache_lock on;
|
||||||
|
proxy_ignore_client_abort on;
|
||||||
|
proxy_buffering on;
|
||||||
|
chunked_transfer_encoding on;
|
||||||
|
proxy_pass http://phoenix;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /proxy {
|
||||||
|
proxy_cache akkoma_media_cache;
|
||||||
|
proxy_cache_lock on;
|
||||||
|
proxy_pass http://phoenix;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
然后打开 Admin-Fe 中的 **MRF** 页面,在 Policies 的部分加上`MediaProxyWarmingPolicy`:
|
||||||
|

|
||||||
|
|
||||||
|
大功告成。
|
||||||
|
|
||||||
|
## 后言
|
||||||
|
|
||||||
|
朋友 loikein 说像这种可能会重复说的话就可以整理成博客了,我觉得它说得很对,我以后会多整理一下这些回答过很多朋友的内容,之后或许:我离不开 Obsidian 的几个理由,还有很多想写的,但先不吹牛了。
|
||||||
|
|
||||||
|
[^1]: [Cross-Origin Resource Sharing (CORS) - HTTP | MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)
|
Loading…
Reference in a new issue