@nuxt/scripts 1.0.0-rc.7 → 1.0.0-rc.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devtools-client/200.html +1 -1
- package/dist/devtools-client/404.html +1 -1
- package/dist/devtools-client/_nuxt/{BDlZgWHO.js → B4uHpJPz.js} +1 -1
- package/dist/devtools-client/_nuxt/{BntLcF3H.js → BBS9G2Kb.js} +1 -1
- package/dist/devtools-client/_nuxt/{CC9d18RE.js → CQR4zIAm.js} +1 -1
- package/dist/devtools-client/_nuxt/{DJ5bfe9v.js → Cxq4HLPL.js} +1 -1
- package/dist/devtools-client/_nuxt/{CaQ1scfO.js → DCBsJT4N.js} +1 -1
- package/dist/devtools-client/_nuxt/{5D-5agUu.js → DTxy5P8N.js} +18 -18
- package/dist/devtools-client/_nuxt/{YKhzFESo.js → DvZScWzI.js} +1 -1
- package/dist/devtools-client/_nuxt/builds/latest.json +1 -1
- package/dist/devtools-client/_nuxt/builds/meta/484f72b9-a019-4127-8ab9-c10e92624094.json +1 -0
- package/dist/devtools-client/_nuxt/error-404.d44aGwWI.css +1 -0
- package/dist/devtools-client/_nuxt/error-500.NthMfIEt.css +1 -0
- package/dist/devtools-client/docs/index.html +1 -1
- package/dist/devtools-client/first-party/index.html +1 -1
- package/dist/devtools-client/index.html +1 -1
- package/dist/devtools-client/registry/index.html +1 -1
- package/dist/module.json +1 -1
- package/dist/runtime/server/google-maps-geocode-proxy.js +1 -1
- package/dist/runtime/server/google-static-maps-proxy.js +1 -1
- package/dist/runtime/server/gravatar-proxy.js +1 -1
- package/dist/runtime/server/instagram-embed.d.ts +1 -16
- package/dist/runtime/server/instagram-embed.js +2 -114
- package/dist/runtime/server/proxy-handler.js +1 -2
- package/dist/runtime/server/utils/instagram-embed.d.ts +16 -0
- package/dist/runtime/server/utils/instagram-embed.js +152 -0
- package/dist/runtime/server/utils/withSigning.js +1 -1
- package/package.json +2 -2
- package/dist/devtools-client/_nuxt/builds/meta/7a96fd5e-d239-4ba5-816b-05034a861ba0.json +0 -1
- package/dist/devtools-client/_nuxt/error-404.Dwj0Wlzm.css +0 -1
- package/dist/devtools-client/_nuxt/error-500.B4wHUYBa.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as s,o,c as n,a as l,_ as r,g as a}from"./
|
|
1
|
+
import{f as s,o,c as n,a as l,_ as r,g as a}from"./DTxy5P8N.js";const _={class:"h-full max-h-full overflow-hidden"},u=["src","title"],i=s({__name:"DevtoolsDocs",props:{url:{}},setup(e){return(c,t)=>(o(),n("div",_,[l("iframe",{src:e.url,title:`Documentation - ${e.url}`,class:"w-full h-full border-none",style:{"min-height":"calc(100vh - 100px)"}},null,8,u)]))}}),f=Object.assign(i,{__name:"DevtoolsDocs"}),m={};function d(e,c){const t=f;return o(),a(t,{url:"https://scripts.nuxt.com"})}const p=r(m,[["render",d]]);export{p as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"484f72b9-a019-4127-8ab9-c10e92624094","timestamp":1776136489632}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"484f72b9-a019-4127-8ab9-c10e92624094","timestamp":1776136489632,"prerendered":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.grid[data-v-3ecdecd2]{display:grid}.mb-2[data-v-3ecdecd2]{margin-bottom:.5rem}.mb-4[data-v-3ecdecd2]{margin-bottom:1rem}.max-w-520px[data-v-3ecdecd2]{max-width:520px}.min-h-screen[data-v-3ecdecd2]{min-height:100vh}.w-full[data-v-3ecdecd2]{width:100%}.flex[data-v-3ecdecd2]{display:flex}.place-content-center[data-v-3ecdecd2]{place-content:center}.items-center[data-v-3ecdecd2]{align-items:center}.justify-center[data-v-3ecdecd2]{justify-content:center}.overflow-hidden[data-v-3ecdecd2]{overflow:hidden}.bg-white[data-v-3ecdecd2]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-3ecdecd2]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-3ecdecd2]{text-align:center}.text-\[80px\][data-v-3ecdecd2]{font-size:80px}.text-2xl[data-v-3ecdecd2]{font-size:1.5rem;line-height:2rem}.text-sm[data-v-3ecdecd2]{font-size:.875rem;line-height:1.25rem}.text-\[\#020420\][data-v-3ecdecd2]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\[\#64748B\][data-v-3ecdecd2]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.hover\:text-\[\#00DC82\][data-v-3ecdecd2]:hover{--un-text-opacity:1;color:rgb(0 220 130/var(--un-text-opacity))}.font-medium[data-v-3ecdecd2]{font-weight:500}.font-semibold[data-v-3ecdecd2]{font-weight:600}.leading-none[data-v-3ecdecd2]{line-height:1}.tracking-wide[data-v-3ecdecd2]{letter-spacing:.025em}.font-sans[data-v-3ecdecd2]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-3ecdecd2]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.underline[data-v-3ecdecd2]{text-decoration-line:underline}.underline-offset-3[data-v-3ecdecd2]{text-underline-offset:3px}.antialiased[data-v-3ecdecd2]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-\[\#020420\][data-v-3ecdecd2]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\:text-white[data-v-3ecdecd2]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:text-\[110px\][data-v-3ecdecd2]{font-size:110px}.sm\:text-3xl[data-v-3ecdecd2]{font-size:1.875rem;line-height:2.25rem}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.grid[data-v-10ed44ef]{display:grid}.mb-2[data-v-10ed44ef]{margin-bottom:.5rem}.mb-4[data-v-10ed44ef]{margin-bottom:1rem}.max-w-520px[data-v-10ed44ef]{max-width:520px}.min-h-screen[data-v-10ed44ef]{min-height:100vh}.place-content-center[data-v-10ed44ef]{place-content:center}.overflow-hidden[data-v-10ed44ef]{overflow:hidden}.bg-white[data-v-10ed44ef]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-10ed44ef]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-10ed44ef]{text-align:center}.text-\[80px\][data-v-10ed44ef]{font-size:80px}.text-2xl[data-v-10ed44ef]{font-size:1.5rem;line-height:2rem}.text-\[\#020420\][data-v-10ed44ef]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\[\#64748B\][data-v-10ed44ef]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.font-semibold[data-v-10ed44ef]{font-weight:600}.leading-none[data-v-10ed44ef]{line-height:1}.tracking-wide[data-v-10ed44ef]{letter-spacing:.025em}.font-sans[data-v-10ed44ef]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-10ed44ef]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.antialiased[data-v-10ed44ef]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-\[\#020420\][data-v-10ed44ef]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\:text-white[data-v-10ed44ef]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:text-\[110px\][data-v-10ed44ef]{font-size:110px}.sm\:text-3xl[data-v-10ed44ef]{font-size:1.875rem;line-height:2.25rem}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.BwpOBArY.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.BwpOBArY.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTxy5P8N.js"><script type="module" src="/__nuxt-scripts/_nuxt/DTxy5P8N.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",buildId:"484f72b9-a019-4127-8ab9-c10e92624094",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1776136498552,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.BwpOBArY.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.BwpOBArY.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTxy5P8N.js"><script type="module" src="/__nuxt-scripts/_nuxt/DTxy5P8N.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",buildId:"484f72b9-a019-4127-8ab9-c10e92624094",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1776136498553,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.BwpOBArY.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.BwpOBArY.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTxy5P8N.js"><script type="module" src="/__nuxt-scripts/_nuxt/DTxy5P8N.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",buildId:"484f72b9-a019-4127-8ab9-c10e92624094",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1776136498554,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.BwpOBArY.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-scripts/_nuxt/entry.BwpOBArY.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-scripts/_nuxt/DTxy5P8N.js"><script type="module" src="/__nuxt-scripts/_nuxt/DTxy5P8N.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-scripts",buildId:"484f72b9-a019-4127-8ab9-c10e92624094",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1776136498554,false]</script></body></html>
|
package/dist/module.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useRuntimeConfig } from "#imports";
|
|
2
1
|
import { createError, defineEventHandler, getQuery, setHeader } from "h3";
|
|
2
|
+
import { useRuntimeConfig } from "nitropack/runtime";
|
|
3
3
|
import { $fetch } from "ofetch";
|
|
4
4
|
import { withQuery } from "ufo";
|
|
5
5
|
import { withSigning } from "./utils/withSigning.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useRuntimeConfig } from "#imports";
|
|
2
1
|
import { createError, defineEventHandler, getQuery, setHeader } from "h3";
|
|
2
|
+
import { useRuntimeConfig } from "nitropack/runtime";
|
|
3
3
|
import { $fetch } from "ofetch";
|
|
4
4
|
import { withQuery } from "ufo";
|
|
5
5
|
import { withSigning } from "./utils/withSigning.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useRuntimeConfig } from "#imports";
|
|
2
1
|
import { createError, defineEventHandler, getQuery, setHeader } from "h3";
|
|
2
|
+
import { useRuntimeConfig } from "nitropack/runtime";
|
|
3
3
|
import { $fetch } from "ofetch";
|
|
4
4
|
import { withQuery } from "ufo";
|
|
5
5
|
import { withSigning } from "./utils/withSigning.js";
|
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export declare const AMP_RE: RegExp;
|
|
3
|
-
export declare const SCONTENT_RE: RegExp;
|
|
4
|
-
export declare const STATIC_CDN_RE: RegExp;
|
|
5
|
-
export declare const LOOKASIDE_RE: RegExp;
|
|
6
|
-
export declare const INSTAGRAM_IMAGE_HOSTS: string[];
|
|
7
|
-
export declare const INSTAGRAM_ASSET_HOST = "static.cdninstagram.com";
|
|
8
|
-
export declare function proxyImageUrl(url: string, prefix?: string): string;
|
|
9
|
-
export declare function proxyAssetUrl(url: string, prefix?: string): string;
|
|
10
|
-
export declare function rewriteUrl(url: string, prefix?: string): string;
|
|
11
|
-
export declare function rewriteUrlsInText(text: string, prefix?: string): string;
|
|
12
|
-
/**
|
|
13
|
-
* Scope CSS rules under a parent selector and strip global/page-level rules.
|
|
14
|
-
* Removes :root, html, body selectors and @charset/@import at-rules.
|
|
15
|
-
*/
|
|
16
|
-
export declare function scopeCss(css: string, scopeSelector: string): string;
|
|
1
|
+
export { proxyAssetUrl, proxyImageUrl, rewriteUrl, rewriteUrlsInText, scopeCss } from './utils/instagram-embed.js';
|
|
17
2
|
declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<string>>;
|
|
18
3
|
export default _default;
|
|
@@ -1,41 +1,11 @@
|
|
|
1
1
|
import { createError, defineEventHandler, getQuery, setHeader } from "h3";
|
|
2
2
|
import { $fetch } from "ofetch";
|
|
3
3
|
import { ELEMENT_NODE, parse, renderSync, TEXT_NODE, walkSync } from "ultrahtml";
|
|
4
|
+
import { rewriteUrl, rewriteUrlsInText, RSRC_RE, scopeCss } from "./utils/instagram-embed.js";
|
|
4
5
|
import { withSigning } from "./utils/withSigning.js";
|
|
5
|
-
export
|
|
6
|
-
export const AMP_RE = /&/g;
|
|
7
|
-
export const SCONTENT_RE = /https:\/\/scontent[^"'\s),]+\.cdninstagram\.com[^"'\s),]+/g;
|
|
8
|
-
export const STATIC_CDN_RE = /https:\/\/static\.cdninstagram\.com[^"'\s),]+/g;
|
|
9
|
-
export const LOOKASIDE_RE = /https:\/\/lookaside\.instagram\.com[^"'\s),]+/g;
|
|
10
|
-
export const INSTAGRAM_IMAGE_HOSTS = ["scontent.cdninstagram.com", "lookaside.instagram.com"];
|
|
11
|
-
export const INSTAGRAM_ASSET_HOST = "static.cdninstagram.com";
|
|
12
|
-
const CHARSET_RE = /@charset\s[^;]+;/gi;
|
|
13
|
-
const IMPORT_RE = /@import\s[^;]+;/gi;
|
|
14
|
-
const WHITESPACE_RE = /\s/;
|
|
6
|
+
export { proxyAssetUrl, proxyImageUrl, rewriteUrl, rewriteUrlsInText, scopeCss } from "./utils/instagram-embed.js";
|
|
15
7
|
const EMBED_INSTAGRAM_SUFFIX_RE = /\/embed\/instagram$/;
|
|
16
|
-
const AT_RULE_NAME_RE = /@([\w-]+)/;
|
|
17
|
-
const MULTI_SPACE_RE = /\s+/g;
|
|
18
8
|
const SRCSET_SPLIT_RE = /\s+/;
|
|
19
|
-
export function proxyImageUrl(url, prefix = "/_scripts") {
|
|
20
|
-
return `${prefix}/embed/instagram-image?url=${encodeURIComponent(url.replace(AMP_RE, "&"))}`;
|
|
21
|
-
}
|
|
22
|
-
export function proxyAssetUrl(url, prefix = "/_scripts") {
|
|
23
|
-
return `${prefix}/embed/instagram-asset?url=${encodeURIComponent(url.replace(AMP_RE, "&"))}`;
|
|
24
|
-
}
|
|
25
|
-
export function rewriteUrl(url, prefix = "/_scripts") {
|
|
26
|
-
try {
|
|
27
|
-
const parsed = new URL(url);
|
|
28
|
-
if (parsed.hostname === INSTAGRAM_ASSET_HOST)
|
|
29
|
-
return proxyAssetUrl(url, prefix);
|
|
30
|
-
if (INSTAGRAM_IMAGE_HOSTS.some((h) => parsed.hostname === h || parsed.hostname.endsWith(`.cdninstagram.com`)))
|
|
31
|
-
return proxyImageUrl(url, prefix);
|
|
32
|
-
} catch {
|
|
33
|
-
}
|
|
34
|
-
return url;
|
|
35
|
-
}
|
|
36
|
-
export function rewriteUrlsInText(text, prefix = "/_scripts") {
|
|
37
|
-
return text.replace(SCONTENT_RE, (m) => proxyImageUrl(m, prefix)).replace(STATIC_CDN_RE, (m) => proxyAssetUrl(m, prefix)).replace(LOOKASIDE_RE, (m) => proxyImageUrl(m, prefix));
|
|
38
|
-
}
|
|
39
9
|
function removeNode(node) {
|
|
40
10
|
node.type = TEXT_NODE;
|
|
41
11
|
node.value = "";
|
|
@@ -43,88 +13,6 @@ function removeNode(node) {
|
|
|
43
13
|
node.attributes = {};
|
|
44
14
|
node.children = [];
|
|
45
15
|
}
|
|
46
|
-
export function scopeCss(css, scopeSelector) {
|
|
47
|
-
let result = css.replace(CHARSET_RE, "");
|
|
48
|
-
result = result.replace(IMPORT_RE, "");
|
|
49
|
-
return processRules(result, scopeSelector);
|
|
50
|
-
}
|
|
51
|
-
function processRules(css, scopeSelector) {
|
|
52
|
-
const output = [];
|
|
53
|
-
let i = 0;
|
|
54
|
-
while (i < css.length) {
|
|
55
|
-
while (i < css.length && WHITESPACE_RE.test(css[i])) i++;
|
|
56
|
-
if (i >= css.length)
|
|
57
|
-
break;
|
|
58
|
-
if (css[i] === "@") {
|
|
59
|
-
const atRule = extractAtRule(css, i);
|
|
60
|
-
if (atRule) {
|
|
61
|
-
const atName = atRule.content.match(AT_RULE_NAME_RE)?.[1]?.toLowerCase();
|
|
62
|
-
if (atName === "media" || atName === "supports" || atName === "layer") {
|
|
63
|
-
const braceStart = atRule.content.indexOf("{");
|
|
64
|
-
const innerCss = atRule.content.slice(braceStart + 1, -1);
|
|
65
|
-
const scopedInner = processRules(innerCss, scopeSelector);
|
|
66
|
-
output.push(`${atRule.content.slice(0, braceStart + 1) + scopedInner}}`);
|
|
67
|
-
} else if (atName === "keyframes" || atName === "-webkit-keyframes" || atName === "font-face") {
|
|
68
|
-
output.push(atRule.content);
|
|
69
|
-
}
|
|
70
|
-
i = atRule.end;
|
|
71
|
-
continue;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
const bracePos = css.indexOf("{", i);
|
|
75
|
-
if (bracePos === -1)
|
|
76
|
-
break;
|
|
77
|
-
const selector = css.slice(i, bracePos).trim();
|
|
78
|
-
const block = extractBlock(css, bracePos);
|
|
79
|
-
if (!block)
|
|
80
|
-
break;
|
|
81
|
-
i = block.end;
|
|
82
|
-
if (!selector)
|
|
83
|
-
continue;
|
|
84
|
-
const selectors = selector.split(",").map((s) => s.trim());
|
|
85
|
-
const filteredSelectors = selectors.filter((s) => {
|
|
86
|
-
const normalized = s.replace(MULTI_SPACE_RE, " ").trim().toLowerCase();
|
|
87
|
-
return normalized !== ":root" && normalized !== "html" && normalized !== "body" && !normalized.startsWith(":root ") && !normalized.startsWith("html ") && !normalized.startsWith("body ") && normalized !== "html, body";
|
|
88
|
-
});
|
|
89
|
-
if (filteredSelectors.length === 0)
|
|
90
|
-
continue;
|
|
91
|
-
const scopedSelectors = filteredSelectors.map((s) => {
|
|
92
|
-
return `${scopeSelector} ${s}`;
|
|
93
|
-
});
|
|
94
|
-
output.push(`${scopedSelectors.join(", ")} ${block.content}`);
|
|
95
|
-
}
|
|
96
|
-
return output.join("\n");
|
|
97
|
-
}
|
|
98
|
-
function extractAtRule(css, start) {
|
|
99
|
-
const bracePos = css.indexOf("{", start);
|
|
100
|
-
const semiPos = css.indexOf(";", start);
|
|
101
|
-
if (semiPos !== -1 && (bracePos === -1 || semiPos < bracePos)) {
|
|
102
|
-
return { content: css.slice(start, semiPos + 1), end: semiPos + 1 };
|
|
103
|
-
}
|
|
104
|
-
if (bracePos === -1)
|
|
105
|
-
return null;
|
|
106
|
-
const block = extractBlock(css, bracePos);
|
|
107
|
-
if (!block)
|
|
108
|
-
return null;
|
|
109
|
-
return {
|
|
110
|
-
content: css.slice(start, bracePos) + block.content,
|
|
111
|
-
end: block.end
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
function extractBlock(css, openBrace) {
|
|
115
|
-
let depth = 0;
|
|
116
|
-
for (let j = openBrace; j < css.length; j++) {
|
|
117
|
-
if (css[j] === "{") {
|
|
118
|
-
depth++;
|
|
119
|
-
} else if (css[j] === "}") {
|
|
120
|
-
depth--;
|
|
121
|
-
if (depth === 0) {
|
|
122
|
-
return { content: css.slice(openBrace, j + 1), end: j + 1 };
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return null;
|
|
127
|
-
}
|
|
128
16
|
export default withSigning(defineEventHandler(async (event) => {
|
|
129
17
|
const handlerPath = event.path?.split("?")[0] || "";
|
|
130
18
|
const prefix = handlerPath.replace(EMBED_INSTAGRAM_SUFFIX_RE, "") || "/_scripts";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { useRuntimeConfig } from "#imports";
|
|
2
1
|
import { createError, defineEventHandler, getHeaders, getQuery, getRequestIP, getRequestWebStream, readBody, setResponseHeader } from "h3";
|
|
3
|
-
import { useNitroApp } from "nitropack/runtime";
|
|
2
|
+
import { useNitroApp, useRuntimeConfig } from "nitropack/runtime";
|
|
4
3
|
import {
|
|
5
4
|
anonymizeIP,
|
|
6
5
|
mergePrivacy,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const RSRC_RE: RegExp;
|
|
2
|
+
export declare const AMP_RE: RegExp;
|
|
3
|
+
export declare const SCONTENT_RE: RegExp;
|
|
4
|
+
export declare const STATIC_CDN_RE: RegExp;
|
|
5
|
+
export declare const LOOKASIDE_RE: RegExp;
|
|
6
|
+
export declare const INSTAGRAM_IMAGE_HOSTS: string[];
|
|
7
|
+
export declare const INSTAGRAM_ASSET_HOST = "static.cdninstagram.com";
|
|
8
|
+
export declare function proxyImageUrl(url: string, prefix?: string): string;
|
|
9
|
+
export declare function proxyAssetUrl(url: string, prefix?: string): string;
|
|
10
|
+
export declare function rewriteUrl(url: string, prefix?: string): string;
|
|
11
|
+
export declare function rewriteUrlsInText(text: string, prefix?: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Scope CSS rules under a parent selector and strip global/page-level rules.
|
|
14
|
+
* Removes :root, html, body selectors and @charset/@import at-rules.
|
|
15
|
+
*/
|
|
16
|
+
export declare function scopeCss(css: string, scopeSelector: string): string;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
export const RSRC_RE = /url\(\/rsrc\.php([^)]+)\)/g;
|
|
2
|
+
export const AMP_RE = /&/g;
|
|
3
|
+
export const SCONTENT_RE = /https:\/\/scontent[^"'\s),]+\.cdninstagram\.com[^"'\s),]+/g;
|
|
4
|
+
export const STATIC_CDN_RE = /https:\/\/static\.cdninstagram\.com[^"'\s),]+/g;
|
|
5
|
+
export const LOOKASIDE_RE = /https:\/\/lookaside\.instagram\.com[^"'\s),]+/g;
|
|
6
|
+
export const INSTAGRAM_IMAGE_HOSTS = ["scontent.cdninstagram.com", "lookaside.instagram.com"];
|
|
7
|
+
export const INSTAGRAM_ASSET_HOST = "static.cdninstagram.com";
|
|
8
|
+
const CHARSET_RE = /@charset\s[^;]+;/gi;
|
|
9
|
+
const IMPORT_RE = /@import\s[^;]+;/gi;
|
|
10
|
+
const WHITESPACE_RE = /\s/;
|
|
11
|
+
const AT_RULE_NAME_RE = /@([\w-]+)/;
|
|
12
|
+
const MULTI_SPACE_RE = /\s+/g;
|
|
13
|
+
export function proxyImageUrl(url, prefix = "/_scripts") {
|
|
14
|
+
return `${prefix}/embed/instagram-image?url=${encodeURIComponent(url.replace(AMP_RE, "&"))}`;
|
|
15
|
+
}
|
|
16
|
+
export function proxyAssetUrl(url, prefix = "/_scripts") {
|
|
17
|
+
return `${prefix}/embed/instagram-asset?url=${encodeURIComponent(url.replace(AMP_RE, "&"))}`;
|
|
18
|
+
}
|
|
19
|
+
export function rewriteUrl(url, prefix = "/_scripts") {
|
|
20
|
+
try {
|
|
21
|
+
const parsed = new URL(url);
|
|
22
|
+
if (parsed.hostname === INSTAGRAM_ASSET_HOST)
|
|
23
|
+
return proxyAssetUrl(url, prefix);
|
|
24
|
+
if (INSTAGRAM_IMAGE_HOSTS.some((h) => parsed.hostname === h || parsed.hostname.endsWith(`.cdninstagram.com`)))
|
|
25
|
+
return proxyImageUrl(url, prefix);
|
|
26
|
+
} catch {
|
|
27
|
+
}
|
|
28
|
+
return url;
|
|
29
|
+
}
|
|
30
|
+
export function rewriteUrlsInText(text, prefix = "/_scripts") {
|
|
31
|
+
return text.replace(SCONTENT_RE, (m) => proxyImageUrl(m, prefix)).replace(STATIC_CDN_RE, (m) => proxyAssetUrl(m, prefix)).replace(LOOKASIDE_RE, (m) => proxyImageUrl(m, prefix));
|
|
32
|
+
}
|
|
33
|
+
export function scopeCss(css, scopeSelector) {
|
|
34
|
+
let result = css.replace(CHARSET_RE, "");
|
|
35
|
+
result = result.replace(IMPORT_RE, "");
|
|
36
|
+
return processRules(result, scopeSelector);
|
|
37
|
+
}
|
|
38
|
+
function processRules(css, scopeSelector) {
|
|
39
|
+
const output = [];
|
|
40
|
+
let i = 0;
|
|
41
|
+
while (i < css.length) {
|
|
42
|
+
while (i < css.length && WHITESPACE_RE.test(css[i])) i++;
|
|
43
|
+
if (i >= css.length)
|
|
44
|
+
break;
|
|
45
|
+
if (css[i] === "@") {
|
|
46
|
+
const atRule = extractAtRule(css, i);
|
|
47
|
+
if (atRule) {
|
|
48
|
+
const atName = atRule.content.match(AT_RULE_NAME_RE)?.[1]?.toLowerCase();
|
|
49
|
+
if (atName === "media" || atName === "supports" || atName === "layer") {
|
|
50
|
+
const braceStart = atRule.content.indexOf("{");
|
|
51
|
+
if (braceStart === -1) {
|
|
52
|
+
output.push(atRule.content);
|
|
53
|
+
} else {
|
|
54
|
+
const innerCss = atRule.content.slice(braceStart + 1, -1);
|
|
55
|
+
const scopedInner = processRules(innerCss, scopeSelector);
|
|
56
|
+
output.push(`${atRule.content.slice(0, braceStart + 1)}${scopedInner}}`);
|
|
57
|
+
}
|
|
58
|
+
} else if (atName === "keyframes" || atName === "-webkit-keyframes" || atName === "font-face") {
|
|
59
|
+
output.push(atRule.content);
|
|
60
|
+
}
|
|
61
|
+
i = atRule.end;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const bracePos = css.indexOf("{", i);
|
|
66
|
+
if (bracePos === -1)
|
|
67
|
+
break;
|
|
68
|
+
const selector = css.slice(i, bracePos).trim();
|
|
69
|
+
const block = extractBlock(css, bracePos);
|
|
70
|
+
if (!block)
|
|
71
|
+
break;
|
|
72
|
+
i = block.end;
|
|
73
|
+
if (!selector)
|
|
74
|
+
continue;
|
|
75
|
+
const selectors = splitTopLevel(selector, ",").map((s) => s.trim());
|
|
76
|
+
const filteredSelectors = selectors.filter((s) => {
|
|
77
|
+
const normalized = s.replace(MULTI_SPACE_RE, " ").trim().toLowerCase();
|
|
78
|
+
return normalized !== ":root" && normalized !== "html" && normalized !== "body" && !normalized.startsWith(":root ") && !normalized.startsWith("html ") && !normalized.startsWith("body ") && normalized !== "html, body";
|
|
79
|
+
});
|
|
80
|
+
if (filteredSelectors.length === 0)
|
|
81
|
+
continue;
|
|
82
|
+
const scopedSelectors = filteredSelectors.map((s) => `${scopeSelector} ${s}`);
|
|
83
|
+
output.push(`${scopedSelectors.join(", ")} ${block.content}`);
|
|
84
|
+
}
|
|
85
|
+
return output.join("\n");
|
|
86
|
+
}
|
|
87
|
+
function extractAtRule(css, start) {
|
|
88
|
+
const bracePos = css.indexOf("{", start);
|
|
89
|
+
const semiPos = css.indexOf(";", start);
|
|
90
|
+
if (semiPos !== -1 && (bracePos === -1 || semiPos < bracePos)) {
|
|
91
|
+
return { content: css.slice(start, semiPos + 1), end: semiPos + 1 };
|
|
92
|
+
}
|
|
93
|
+
if (bracePos === -1)
|
|
94
|
+
return null;
|
|
95
|
+
const block = extractBlock(css, bracePos);
|
|
96
|
+
if (!block)
|
|
97
|
+
return null;
|
|
98
|
+
return {
|
|
99
|
+
content: css.slice(start, bracePos) + block.content,
|
|
100
|
+
end: block.end
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function splitTopLevel(input, separator) {
|
|
104
|
+
const parts = [];
|
|
105
|
+
let depth = 0;
|
|
106
|
+
let quote = null;
|
|
107
|
+
let start = 0;
|
|
108
|
+
for (let i = 0; i < input.length; i++) {
|
|
109
|
+
const ch = input[i];
|
|
110
|
+
if (quote) {
|
|
111
|
+
if (ch === "\\") {
|
|
112
|
+
i++;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (ch === quote)
|
|
116
|
+
quote = null;
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (ch === '"' || ch === "'") {
|
|
120
|
+
quote = ch;
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (ch === "(" || ch === "[") {
|
|
124
|
+
depth++;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (ch === ")" || ch === "]") {
|
|
128
|
+
depth--;
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (ch === separator && depth === 0) {
|
|
132
|
+
parts.push(input.slice(start, i));
|
|
133
|
+
start = i + 1;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
parts.push(input.slice(start));
|
|
137
|
+
return parts;
|
|
138
|
+
}
|
|
139
|
+
function extractBlock(css, openBrace) {
|
|
140
|
+
let depth = 0;
|
|
141
|
+
for (let j = openBrace; j < css.length; j++) {
|
|
142
|
+
if (css[j] === "{") {
|
|
143
|
+
depth++;
|
|
144
|
+
} else if (css[j] === "}") {
|
|
145
|
+
depth--;
|
|
146
|
+
if (depth === 0) {
|
|
147
|
+
return { content: css.slice(openBrace, j + 1), end: j + 1 };
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createError, defineEventHandler } from "h3";
|
|
2
|
+
import { useRuntimeConfig } from "nitropack/runtime";
|
|
2
3
|
import { verifyProxyRequest } from "./sign.js";
|
|
3
4
|
export function withSigning(handler) {
|
|
4
5
|
return defineEventHandler(async (event) => {
|
|
5
|
-
const { useRuntimeConfig } = await import("#imports");
|
|
6
6
|
const runtimeConfig = useRuntimeConfig(event);
|
|
7
7
|
const secret = runtimeConfig["nuxt-scripts"]?.proxySecret;
|
|
8
8
|
if (!secret)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuxt/scripts",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.0-rc.
|
|
4
|
+
"version": "1.0.0-rc.8",
|
|
5
5
|
"description": "Load third-party scripts with better performance, privacy and DX in Nuxt Apps.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Harlan Wilton",
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"magic-string": "^0.30.21",
|
|
113
113
|
"ofetch": "^1.5.1",
|
|
114
114
|
"ohash": "^2.0.11",
|
|
115
|
-
"oxc-parser": "^0.
|
|
115
|
+
"oxc-parser": "^0.125.0",
|
|
116
116
|
"oxc-walker": "^0.7.0",
|
|
117
117
|
"pathe": "^2.0.3",
|
|
118
118
|
"pkg-types": "^2.3.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"7a96fd5e-d239-4ba5-816b-05034a861ba0","timestamp":1775877331028,"prerendered":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.grid[data-v-4b6f334a]{display:grid}.mb-2[data-v-4b6f334a]{margin-bottom:.5rem}.mb-4[data-v-4b6f334a]{margin-bottom:1rem}.max-w-520px[data-v-4b6f334a]{max-width:520px}.min-h-screen[data-v-4b6f334a]{min-height:100vh}.w-full[data-v-4b6f334a]{width:100%}.flex[data-v-4b6f334a]{display:flex}.place-content-center[data-v-4b6f334a]{place-content:center}.items-center[data-v-4b6f334a]{align-items:center}.justify-center[data-v-4b6f334a]{justify-content:center}.overflow-hidden[data-v-4b6f334a]{overflow:hidden}.bg-white[data-v-4b6f334a]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-4b6f334a]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-4b6f334a]{text-align:center}.text-\[80px\][data-v-4b6f334a]{font-size:80px}.text-2xl[data-v-4b6f334a]{font-size:1.5rem;line-height:2rem}.text-sm[data-v-4b6f334a]{font-size:.875rem;line-height:1.25rem}.text-\[\#020420\][data-v-4b6f334a]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\[\#64748B\][data-v-4b6f334a]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.hover\:text-\[\#00DC82\][data-v-4b6f334a]:hover{--un-text-opacity:1;color:rgb(0 220 130/var(--un-text-opacity))}.font-medium[data-v-4b6f334a]{font-weight:500}.font-semibold[data-v-4b6f334a]{font-weight:600}.leading-none[data-v-4b6f334a]{line-height:1}.tracking-wide[data-v-4b6f334a]{letter-spacing:.025em}.font-sans[data-v-4b6f334a]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-4b6f334a]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.underline[data-v-4b6f334a]{text-decoration-line:underline}.underline-offset-3[data-v-4b6f334a]{text-underline-offset:3px}.antialiased[data-v-4b6f334a]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-\[\#020420\][data-v-4b6f334a]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\:text-white[data-v-4b6f334a]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:text-\[110px\][data-v-4b6f334a]{font-size:110px}.sm\:text-3xl[data-v-4b6f334a]{font-size:1.875rem;line-height:2.25rem}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.grid[data-v-3c69d55a]{display:grid}.mb-2[data-v-3c69d55a]{margin-bottom:.5rem}.mb-4[data-v-3c69d55a]{margin-bottom:1rem}.max-w-520px[data-v-3c69d55a]{max-width:520px}.min-h-screen[data-v-3c69d55a]{min-height:100vh}.place-content-center[data-v-3c69d55a]{place-content:center}.overflow-hidden[data-v-3c69d55a]{overflow:hidden}.bg-white[data-v-3c69d55a]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-3c69d55a]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-3c69d55a]{text-align:center}.text-\[80px\][data-v-3c69d55a]{font-size:80px}.text-2xl[data-v-3c69d55a]{font-size:1.5rem;line-height:2rem}.text-\[\#020420\][data-v-3c69d55a]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\[\#64748B\][data-v-3c69d55a]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.font-semibold[data-v-3c69d55a]{font-weight:600}.leading-none[data-v-3c69d55a]{line-height:1}.tracking-wide[data-v-3c69d55a]{letter-spacing:.025em}.font-sans[data-v-3c69d55a]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-3c69d55a]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.antialiased[data-v-3c69d55a]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-\[\#020420\][data-v-3c69d55a]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\:text-white[data-v-3c69d55a]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:text-\[110px\][data-v-3c69d55a]{font-size:110px}.sm\:text-3xl[data-v-3c69d55a]{font-size:1.875rem;line-height:2.25rem}}
|