summaryrefslogtreecommitdiff
path: root/packages/integrations/prefetch/src/index.ts
diff options
context:
space:
mode:
authorGravatar Tony Sullivan <tony.f.sullivan@outlook.com> 2022-06-27 18:26:21 +0000
committerGravatar GitHub <noreply@github.com> 2022-06-27 18:26:21 +0000
commit79fe09fa3093eb8ac2871c1894b9cddf557aecba (patch)
tree46a426e4adc3fc53bd8ba039cf277be5c8607f9e /packages/integrations/prefetch/src/index.ts
parent9d78162fd9cab9eb2a64f58ca5703ba5d658828f (diff)
downloadastro-79fe09fa3093eb8ac2871c1894b9cddf557aecba.tar.gz
astro-79fe09fa3093eb8ac2871c1894b9cddf557aecba.tar.zst
astro-79fe09fa3093eb8ac2871c1894b9cddf557aecba.zip
Adds a prefetch integration for near-instant page navigations (#3725)
* Adds a basic @astrojs/prefetch integration * adding tests for custom selectors * missed in last commit * Adding a few docs, removing the option for `selectors` to be an element array * adding an option for the concurrency limit * fixing test for updated integration options * Update packages/labs/prefetch/src/client.ts Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> * nit: removing the NodeJS.Timer type to allow typescript to infer the return * updating docs for default selector with ~= * Skip prefetching on 2G connections, or when data saver is enabled * refactor: moving to packages/integrations, Astro Labs TBD down the road * README typo fix Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
Diffstat (limited to 'packages/integrations/prefetch/src/index.ts')
-rw-r--r--packages/integrations/prefetch/src/index.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/packages/integrations/prefetch/src/index.ts b/packages/integrations/prefetch/src/index.ts
new file mode 100644
index 000000000..15f52272c
--- /dev/null
+++ b/packages/integrations/prefetch/src/index.ts
@@ -0,0 +1,17 @@
+import type { AstroIntegration } from 'astro';
+import type { PrefetchOptions } from './client.js';
+
+export default function (options: PrefetchOptions = {}): AstroIntegration {
+ return {
+ name: '@astrojs/lit',
+ hooks: {
+ 'astro:config:setup': ({ updateConfig, addRenderer, injectScript }) => {
+ // Inject the necessary polyfills on every page (inlined for speed).
+ injectScript(
+ 'page',
+ `import prefetch from "@astrojs/prefetch/client.js"; prefetch(${JSON.stringify(options)});`
+ );
+ }
+ }
+ };
+}