import type { LineRange, MappedPosition } from "source-map-js"; import { SourceMapConsumer } from "source-map-js"; export type LocationRequest = { line?: number; column?: number; url?: string; }; export type Location = { line: number; // 0-based column: number; // 0-based } & ( | { verified: true; } | { verified?: false; message?: string; } ); export interface SourceMap { generatedLocation(request: LocationRequest): Location; originalLocation(request: LocationRequest): Location; } class ActualSourceMap implements SourceMap { #sourceMap: SourceMapConsumer; #sources: string[]; constructor(sourceMap: SourceMapConsumer) { this.#sourceMap = sourceMap; this.#sources = (sourceMap as any)._absoluteSources; } #getSource(url?: string): string { const sources = this.#sources; if (!sources.length) { return ""; } if (sources.length === 1 || !url) { return sources[0]; } for (const source of sources) { if (url.endsWith(source)) { return source; } } return ""; } generatedLocation(request: LocationRequest): Location { const { line, column, url } = request; let lineRange: LineRange; try { const source = this.#getSource(url); lineRange = this.#sourceMap.generatedPositionFor({ line: lineTo1BasedLine(line), column: columnToColumn(column), source, }); } catch (error) { return { line: lineToLine(line), column: columnToColumn(column), verified: false, message: unknownToError(error), }; } if (!locationIsValid(lineRange)) { return { line: lineToLine(line), column: columnToColumn(column), verified: false, }; } const { line: gline, column: gcolumn } = lineRange; return { line: lineTo0BasedLine(gline), column: columnToColumn(gcolumn), verified: true, }; } originalLocation(request: LocationRequest): Location { const { line, column } = request; let mappedPosition: MappedPosition; try { mappedPosition = this.#sourceMap.originalPositionFor({ line: lineTo1BasedLine(line), column: columnToColumn(column), }); } catch (error) { return { line: lineToLine(line), column: columnToColumn(column), verified: false, message: unknownToError(error), }; } if (!locationIsValid(mappedPosition)) { return { line: lineToLine(line), column: columnToColumn(column), verified: false, }; } const { line: oline, column: ocolumn } = mappedPosition; return { line: lineTo0BasedLine(oline), column: columnToColumn(ocolumn), verified: true, }; } } class NoopSourceMap implements SourceMap { generatedLocation(request: LocationRequest): Location { const { line, column } = request; return { line: lineToLine(line), column: columnToColumn(column), verified: true, }; } originalLocation(request: LocationRequest): Location { const { line, column } = request; return { line: lineToLine(line), column: columnToColumn(column), verified: true, }; } } const defaultSourceMap = new NoopSourceMap(); export function SourceMap(url?: string): SourceMap { if (!url) { return defaultSourceMap; } if (!url.startsWith("data:")) { const match = url.match(/\/\/[#@]\s*sourceMappingURL=(.*)$/m); if (!match) { return defaultSourceMap; } const [_, sourceMapUrl] = match; url = sourceMapUrl; } try { const [_, base64] = url.split(",", 2); const decoded = Buffer.from(base64, "base64url").toString("utf8"); const schema = JSON.parse(decoded); const sourceMap = new SourceMapConsumer(schema); return new ActualSourceMap(sourceMap); } catch (error) { console.warn("Failed to parse source map URL", url); } return defaultSourceMap; } function lineTo1BasedLine(line?: number): number { return numberIsValid(line) ? line + 1 : 1; } function lineTo0BasedLine(line?: number): number { return numberIsValid(line) ? line - 1 : 0; } function lineToLine(line?: number): number { return numberIsValid(line) ? line : 0; } function columnToColumn(column?: number): number { return numberIsValid(column) ? column : 0; } function locationIsValid(location: Location): location is Location { const { line, column } = location; return numberIsValid(line) && numberIsValid(column); } function numberIsValid(number?: number): number is number { return typeof number === "number" && isFinite(number) && number >= 0; } function unknownToError(error: unknown): string { if (error instanceof Error) { const { message } = error; return message; } return String(error); } les/with-nanostores Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/packages/astro/test/fixtures/vue-component (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2022-05-12Serialize route generation (#3354)Gravatar Juan Martín Seery 5-59/+61
2022-05-12Corrected the default value of trailingSlash (#3353)Gravatar Rafid Muhymin Wafi 1-1/+1
2022-05-12[ci] formatGravatar matthewp 1-85/+78
2022-05-12Fixed search bar of the docs example not working (#3247)Gravatar Rafid Muhymin Wafi 1-76/+94
* fixed search bar not working * fixed search bar not working during build * fix search bar throwing error on production site
2022-05-12Add config option customPages (#3315)Gravatar Eloi-Perez 1-0/+14
* Add config option customPages Add config option customPages to be able to add custom URL pages to the sitemap.xml * add comment to document customPages option
2022-05-12fix: vite types (#3352)Gravatar Juan Martín Seery 4-5/+16
* Re-export vite types and added them to zod schema * Removed casted typed * Changeset
2022-05-12[ci] update lockfile (#3287)Gravatar Fred K. Schott 33-1038/+1096
* [ci] update lockfile * chore: fix lockfile * fix: pin turbo Co-authored-by: FredKSchott <FredKSchott@users.noreply.github.com> Co-authored-by: Nate Moore <nate@skypack.dev>
2022-05-12[ci] formatGravatar matthewp 2-2/+2
2022-05-12add error hints (#3350)Gravatar Fred K. Schott 3-0/+19
* add error hints * chore: add changeset Co-authored-by: Nate Moore <nate@skypack.dev>
2022-05-12[ci] formatGravatar matthewp 2-10/+6
2022-05-12Fix: React - Use "createRoot" instead of "hydrateRoot" for `client:only` (#3337)Gravatar Ben Holmes 4-22/+34
* feat: pass "client" directive to clientEntrypoints * refactor: remove hydration warning suppression react 17 * feat: remove hydration warning suppression react 18 * chore: changeset * fix: change metadata to options bag
2022-05-12[ci] formatGravatar matthewp 1-2/+8
2022-05-12Resolve components by module ID during compilation (#3300)Gravatar Tony Sullivan 22-41/+407
* WIP: adding test coverage * test fixes * moving the shared lib up a directory to reproduce the bug * fix: transform with the module ID instead of parsing the filepath * adding the shared lib to the workspaces list * fix: client-only assets now get the full URL from vite * why is this needed for windows? * WIP: using /@fs to handle windows filepaths * fix: remove /@fs from hoisted script imports * nit: removing unused imports * fix: strip off the path root when mapping client:only styles * had to reverse the `/@fs` handling to work on windows and unix * chore: adding comments to explain the fix * chore: adding changeset
2022-05-12[ci] collect statsGravatar FredKSchott 1-0/+1
2022-05-11Exclude `node-fetch` from vite.optimizeDeps (#3348)Gravatar Nate Moore 2-0/+6
* fix: exclude `node-fetch` from vite.optimizeDeps * chore: format
2022-05-11fix: updated blog template with existing address (#3312)Gravatar Gautier Ben Aïm 1-2/+2
2022-05-11refactor(vercel): Build Output API v3 (#3216)Gravatar Juan Martín Seery 42-231/+659
* Removed ignores * Migration to v3 * More changes * Remove legacy redirects * Fail when there is no ENABLE_VC_BUILD * Fix edge * Updated readme * Changeset * Added static mode * Updated documentation * Updated shim * Made edge work! * Updated changeset * Ensure empty dir * Fixed redirects for dynamic paths * Removed extra declaration * Splited imports * Updated readme * Fixed some urls * Deprecated shim! * [test]: Vercel NFT * Beautify * Edge bundle to node 14.19 Vercel runs 14.19.1 (I've checked it manually) * Re-added shim (#3304) * Added `node:` prefix * Use the same bundling as Deno for Edge * Remove esbuild * Fixed shim * Moved nft * Updated changeset * Added note about Edge * fix typo * Added support for Node 16 (vercel/vercel#7772)
2022-05-11Fix APIRoute type (#3344)Gravatar Matthew Phillips 3-11/+8
* Fix APIRoute type * Adds a changeset * Update usage of the two API route signatures
2022-05-11[create-astro] Finalize developer experience... with gradients 🚀 (#3313)Gravatar Ben Holmes 5-23/+123
* wip: port gradient helpers from sandbox ideas * feat: wire up rocket gradient 🚀 * feat: wire up rocket gradient on install step * refactor: update "next steps" wording * deps: add chalk (for rendering gradient) * chore: changeset * chore: clean up sstray template string