Skip to content

Commit 15e6c22

Browse files
drwpowFredKSchottNate Moorenatemoo-reretronav
authored
πŸš€ Astro Next (0.21.0) (withastro#1406)
* make astro-root uids unique * Move Astro to Vite * Update tests * More test improvements * fred fixes * Update compiler, improve tests * Fix runtime, improve code frame * Add Markdown support * Tycho fixes * Fred fixes part 2 * Throw Error for WIP Features * Improve testing suite * Allow users to pass config to Vite * Fix npm install (withastro#1407) * Automate publish on merge (withastro#1408) * Add NPM_TOKEN to publish script (withastro#1409) * Create .npmrc * Clean up astro deps (withastro#1411) * Use new renderers (withastro#1412) * feat: update compiler (withastro#1421) * Try mocha/chai test runners (withastro#1418) * Try mocha/chai test runners * Disable failing smoke test for now Will revert when next can build docs * Enable mocha in parallel mode * Remove warning * Update docs * Fix Windows bug * Fix internal imports * Fix styles * Fix CI release on merge to next (withastro#1427) * Fix logger locale parsing (withastro#1439) * fix(logger): locale parsing * Fixed issue of compiler crash when "c" locale was encountered * Return default locale if parsed locale is less than 2 chars long * chore: add changeset * Apply changes from withastro#1387 * Add back in support for children (withastro#1486) * Add back in support for children * Be more careful * Enables most slot tests (withastro#1494) * Enables most slot tests * Use spreadAttributes * Add hydration to Solid renderer (withastro#1479) (withastro#1495) * feat: add hydration to Solid renderer * fix: intersection observer, move script to the end Co-authored-by: Ryan Carniato <ryansolid@gmail.com> * [next] support Astro.slots API (withastro#1516) * [next] Support for custom elements (withastro#1528) * [next] Support for custom elements * Fix eslint errors * eslint again * [next] Fix Astro.fetchContent (withastro#1480) * fix Astro.fetchContent * fix(fetchContent): cast type Co-authored-by: Nate Moore <nate@skypack.dev> * Move hydration to the compiler (withastro#1547) * Move hydration to the compiler * Move extracting url, export to util fn * Brings back astro-dynamic tests (withastro#1548) * Implements top-level Astro + Astro.resolve (withastro#1556) * Implements top-level Astro + Astro.resolve * Fix linting * [next] Update renderers (withastro#1509) * chore: update vite * fix(renderers): point renderers to resolved server/client entrypoints * Chore: Enable more tests with new compiler changes (withastro#1558) * [Next] `fetch` support (withastro#1563) * fix: polyfill fetch in every ssr scenario * test(fetch): update fetch tests * docs: update data fetching guide to remove caveats about `fetch` and isomorphic usage * refactor: update regex for clarity * Restructure (withastro#1569) * Upgrade to @astrojs/compiler 0.2.0 (withastro#1584) * Use Vite fork (withastro#1585) * Use Vite fork * Fix linting * Move Vite to vendor/ and add a license * Fix linting * Include the dist folder * Update files config * Markdown compilation (withastro#1593) * Markdown compilation * remove debugger * Gets lit hydration working (withastro#1595) * Gets Astro.fetchContent compilation to work (withastro#1596) * Gets Astro.fetchContent compilation to work This fixes Astro.fetchContent so that we handle esbuild transforming the name of the nested Astro call. * Remove debugging * Update the tests * Remove another debugger * Update Vite to latest (withastro#1597) * Add Prism syntax highlighting (withastro#1598) * Scoped styles with markdown (withastro#1599) * Bugfix: fix getStaticPaths() cache miss (withastro#1602) * Fix build order (withastro#1609) * Bugfix: restore build to get all paths earlier, when build. Same as main. * Also re-add timings * [next] blog example fully working (withastro#1610) * Add environment variables docs (Closes withastro#873) (withastro#1587) * Added environment variables docs (Closes withastro#873) * Fixed prefix * Remove numbered comments (withastro#1611) * Chore: remove numbered comments * Clean up block comments * comment style fixes (withastro#1614) * [next] Upgrade compiler (withastro#1619) * [next] Upgrade compiler * Upgrade to latest compiler * Fix the path to global css * Removed debugger * feat: add fragment support to vite-plugin-astro (withastro#1600) * [next] fix `.tsx` handling (withastro#1620) * fix: support tsx in JSX plugin * fix: preserve JSX via esbuild, only use Babel for JSX compilation * fix: handle upcoming Vite API for `ssr` flag * [next] Add CSS preprocessing (withastro#1589) * Add concept for style support in Astro * Update style preprocessor to use new compiler * fix: massage preprocessStyle type * fix: @astrojs/compiler types Co-authored-by: Nate Moore <nate@skypack.dev> * fix issues in blog-multiple-authors (withastro#1621) * Move Sass to deps (withastro#1622) * Update renderer API for Vite (withastro#1623) * Update renderer API for Vite * Fix lit-element tests * Clean up comments * Throw friendly error if renderer provides viteConfig in a bad format * Fix changesets (withastro#1628) * Remove cheerio scanning from build stats (withastro#1629) * Minor change to jsxTransformOptions, update Renderer API docs (withastro#1630) * [next] docs example fully working (withastro#1627) * [next] docs example fully working * Upgrade compiler to unlock docs * Add `class:list` directive (withastro#1612) * Add support for class:list directive The `class:list` directive serializes an expression of css class names. For React components, `className:list` is also supported. * Remove `className` support and React tests * Add tests for the absence of omitted classes * fix: `define:vars` scoping for styles (withastro#1632) * feat: fix Debug component (withastro#1633) * [next] Fix `<Markdown>` component (withastro#1631) * fix: cleanup issues with <Markdown> component * fix: fix `content` usage with Markdown * [next] Fix `<Code>` component (withastro#1635) * fix: enable Code component * test: update expect to chai format * Fixes solid (withastro#1634) * Fixes solid * Rename the test * Rebase with next * Skip solid test for now * Add support for markdown plugins (withastro#1650) * Fix broken next release (withastro#1652) * Prevent passing to Svelte components * Prevent passing class to Vue components * Add CSS injection, fix portfolio example (withastro#1648) * Fix portfolio example * Add .pcss extension * Update load ssr opts * Update packages/astro/src/runtime/server/index.ts Co-authored-by: Jonathan Neal <jonathantneal@hotmail.com> Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> Co-authored-by: Jonathan Neal <jonathantneal@hotmail.com> * Fixes external HMR (withastro#1654) * Upgrade compiler version (withastro#1655) Fixes docs and blog examples * Resolve renderers relative to the projectRoot (withastro#1659) * Template fixes (withastro#1656) * fix: dedupe hashes for identical islands (withastro#1660) * fix: scope `define:vars` to `:root` for `<style global>` (withastro#1663) * chore: update compiler to latest (withastro#1664) * [next] fix island hydration inside of `<Markdown>` (withastro#1665) * fix: create rehype plugin to smooth over island hydration bugs * refactor: remove debug code * chore: explain need for `rehypeIslands` * Bugfix: renderer-lit missing files on npm (withastro#1669) * Force Vite to rebuild dependencies (withastro#1670) * [next] Add `preact/compat` renderer (withastro#1668) * feat: add preact/compat entry for `@astrojs/renderer-preact` * Update index.js * Bugfix: plugin-astro-fetch tries to append node-fetch to node-fetch (withastro#1671) * Fix Vite race condition (withastro#1674) * Fix with-nanostore deps (withastro#1675) Adds missing Solid renderer * [next] Fix `resolveDependency` on Windows (withastro#1666) * fix: Windows issue with resolveDependency util * chore: add comment * Update CONTRIBUTING.md (withastro#1677) * Prevent scanning a user's deps (withastro#1678) * Prevent scanning a user's deps * Remove unused things * remove unused util * Adding a changeset for the remark plugin * Config changes needed for stater template (withastro#1680) This does 2 things: 1. Adds prismjs as a dep. 2. Adds shiki as an external. * Next bugs (withastro#1681) * fix(withastro#1679): hoisted <script> rendering * fix(withastro#1679): do not print global for styles, but do for scripts * fix: update ObjectSet implementation * fix: dedupe elements in sets * [next] update compiler (withastro#1683) * chore: update compiler * chore: update compiler (again) * Fix Astro HMR bottleneck (withastro#1684) * Bugfix: JSX renderers can be declared in any order (withastro#1686) * chore: update compiler (withastro#1690) * Exclude lit-server from being optimized (withastro#1691) This should get the lit example working from `npm`. * fix: exclude all renderer server entrypoints (withastro#1692) * chore: update compiler (withastro#1705) * fix: do not crash when Markdown has no content (withastro#1702) * feat: improve support for third-party React packages (withastro#1701) * Remove prism warning when no language is provided (withastro#1703) * Remove prism warning when no language is provided * Add the plaintext language instead * retry deploy * chore: enter prerelease mode under `next` (withastro#1707) * Updates to the changesets (withastro#1708) * Updates to the changesets * Adds a changeset for astro-prism Co-authored-by: Fred K. Schott <fkschott@gmail.com> Co-authored-by: Nate Moore <nate@skypack.dev> Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com> Co-authored-by: Pranav Karawale <52596591+obnoxiousnerd@users.noreply.github.com> Co-authored-by: Matthew Phillips <matthew@skypack.dev> Co-authored-by: Matthew Phillips <matthew@matthewphillips.info> Co-authored-by: Ryan Carniato <ryansolid@gmail.com> Co-authored-by: AsyncBanana <58297401+AsyncBanana@users.noreply.github.com> Co-authored-by: Jonathan Neal <jonathantneal@hotmail.com>
1 parent 56aa88a commit 15e6c22

File tree

337 files changed

+188010
-9238
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

337 files changed

+188010
-9238
lines changed

β€Žastro.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const CI_INSTRUCTIONS = {
1313
VERCEL: 'https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-version',
1414
};
1515

16+
/** `astro *` */
1617
async function main() {
1718
// Check for ESM support.
1819
// Load the "supports-esm" package in an way that works in both ESM & CJS.
@@ -29,7 +30,7 @@ async function main() {
2930

3031
// Preflight check complete. Enjoy! ✨
3132
if (supportsESM) {
32-
return import('./dist/cli.js')
33+
return import('./dist/cli/index.js')
3334
.then(({ cli }) => cli(process.argv))
3435
.catch((error) => {
3536
console.error(error);

β€Žcomponents/Code.astro

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import shiki from 'shiki';
44
export interface Props {
55
/** The code to highlight. Required. */
66
code: string;
7-
/**
8-
* The language of your code. Defaults to "plaintext".
9-
* Supports all languages listed here: https://github.com/shikijs/shiki/blob/main/docs/themes.md
7+
/**
8+
* The language of your code. Defaults to "plaintext".
9+
* Supports all languages listed here: https://github.com/shikijs/shiki/blob/main/docs/themes.md
1010
*/
1111
lang?: string;
12-
/**
12+
/**
1313
* The styling theme. Defaults to "github-dark".
14-
* Supports all themes listed here: https://github.com/shikijs/shiki/blob/main/docs/themes.md
14+
* Supports all themes listed here: https://github.com/shikijs/shiki/blob/main/docs/themes.md
1515
* Instructions for loading a custom theme: https://github.com/shikijs/shiki/blob/main/docs/themes.md#loading-theme
1616
*/
1717
theme?: string;

β€Žcomponents/Debug.astro

+25-277
Original file line numberDiff line numberDiff line change
@@ -1,166 +1,39 @@
11
---
22
const key = Object.keys(Astro.props)[0];
33
const value = Astro.props[key];
4-
5-
const getType = (node: unknown) => {
6-
if (Array.isArray(node)) return 'array';
7-
if (node === null) return 'null';
8-
if (typeof node === 'object') {
9-
if ((node as any).then) return 'promise';
10-
}
11-
return typeof node;
12-
};
13-
14-
const getSummary = (node: any, key: string, className: string) => {
15-
const type = getType(node);
16-
let value;
17-
let open;
18-
let close;
19-
20-
if (type === 'function') {
21-
return <>
22-
{(key || !key && key === 0) && <><span class={`${className} key`}>{key}</span><span class={`${className} sep`}>:</span></>}
23-
<span class={`${className} value value-function`}>{node.name}<span class={`${className} punc`}>()</span></span>
24-
</>
25-
}
26-
27-
if (type === 'promise') {
28-
return <>
29-
{(key || !key && key === 0) && <><span class={`${className} key`}>{key}</span><span class={`${className} sep`}>:</span></>}
30-
<span class={`${className} value value-promise`}>Promise</span>
31-
</>
32-
}
33-
34-
if (type === 'array') {
35-
value = node.length;
36-
open = <><span class={`${className} none`}>Array</span>{'['}</>;
37-
close = ']';
38-
} else if (type === 'object') {
39-
const keys = Object.keys(node);
40-
if (keys.length === 0) {
41-
value = 'Empty';
42-
} else if (keys.length > 3) {
43-
value = '…';
44-
} else {
45-
value = keys.slice(0, 3).join(',');
46-
}
47-
open = '{';
48-
close = '}';
49-
};
50-
51-
return <>
52-
{key && <><span class={`${className} key`}>{key}</span>: </>}
53-
{open && <span class={`${className} punc`}>{open}</span>}
54-
<span class={`${className} hide`}>
55-
<span class={`${className} len`}>{value}</span>
56-
{close && <span class={`${className} punc`}>{close}</span>}
57-
</span>
58-
</>;
59-
};
60-
61-
const Details = ({ node, key, children, class: className }) => {
62-
const type = getType(node);
63-
const props = {};
64-
65-
if (type === 'array' || type === 'object') {
66-
props['data-char'] = type === 'array' ? ']' : '}'
67-
props.open = !key && type === 'object' ? '' : undefined;
68-
}
69-
70-
return (
71-
<details {...props} class={className}>
72-
<Summary node={node} key={key} class={className} />
73-
{children}
74-
</details>
75-
);
76-
}
77-
78-
const Summary = ({ node, key, class: className }) => {
79-
return (
80-
<summary class={className}>{getSummary(node, key, className)}</summary>
81-
);
82-
}
83-
84-
const Empty = Symbol('Empty');
85-
86-
const KeyValue = ({ key, value, dim, class: className }) => {
87-
let type = key === '__proto__' ? 'prototype' : getType(value);
88-
if (type === 'null') {
89-
value = 'null';
90-
} else if (type === 'undefined') {
91-
value = 'undefined';
92-
} else if (value === Empty) {
93-
type = 'empty';
94-
value = 'Empty';
95-
} else {
96-
value = JSON.stringify(value);
97-
}
98-
99-
return (
100-
<div class={`${className} line`}>
101-
{(key || !key && key === 0) && <><span class={`${className} key ${dim ? 'key-dim' : ''}`.trim()}>{key}</span><span class={`${className} sep`}>:</span></>}
102-
<span class={`${className} value value-${type}`}>
103-
{value}
104-
</span>
105-
</div>
106-
)
107-
}
108-
109-
const Node = ({ node, key, class: className, ...props }) => {
110-
const type = getType(node);
111-
className = className.replace(/debug-value/g, '');
112-
113-
if (type === 'array' || type === 'object') {
114-
let children = [];
115-
if (type === 'array' && node.length > 0 && Object.entries(node).length === 0) {
116-
children = Array.from({ length: node.length }, (_, key) => <Node node={Empty} key={key} class={className} />);
117-
} else {
118-
children = Object.entries(node).map(([key, value]) => <Node node={value} key={key} class={className} />);
119-
}
120-
return (
121-
<Details node={node} key={key} children={children} class={className} />
122-
);
123-
} else if (type === 'function') {
124-
return (
125-
<Details node={node} key={key} class={className} children={
126-
<>
127-
<KeyValue key="name" value={node.name} dim={true} class={className} />
128-
<KeyValue key="__proto__" value="Function" dim={true} class={className} />
129-
</>
130-
}/>
131-
);
132-
} else if (type === 'promise') {
133-
return (
134-
<Details node={node} key={key} class={className} children={
135-
<KeyValue key="__proto__" value="Promise" dim={true} />
136-
} />
137-
);
138-
}
139-
140-
return <KeyValue key={key} value={node} class={className} />;
141-
}
1424
---
1435

1446
<div class="debug">
1457
<div class="debug-header">
1468
<h2 class="debug-title"><span class="debug-label">Debug</span> <span class="debug-name">"{key}"</span></h2>
1479
</div>
14810

149-
<main>
150-
<Node node={value} class="debug-value" />
151-
</main>
11+
<pre>{JSON.stringify(value, null, 2)}</pre>
15212
</div>
15313

154-
<style lang="scss">
155-
.debug-header {
156-
background: #FF1639;
14+
<style>
15+
.debug {
16+
font-size: 14px;
17+
padding: 1rem 1.5rem;
18+
background: white;
19+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
20+
}
21+
22+
.debug-header, pre {
15723
margin: -1rem -1.5rem 1rem;
15824
padding: 0.25rem 0.75rem;
15925
}
16026

27+
.debug-header {
28+
background: #FF1639;
29+
border-radius: 4px;
30+
border-bottom-left-radius: 0;
31+
border-bottom-right-radius: 0;
32+
}
33+
16134
.debug-title {
16235
font-size: 1em;
163-
color: #fff;
36+
color: white;
16437
margin: 0.5em 0;
16538
}
16639

@@ -170,137 +43,12 @@ const Node = ({ node, key, class: className, ...props }) => {
17043
margin-right: 0.75em;
17144
}
17245

173-
.debug {
174-
all: initial;
175-
display: flex;
176-
flex-direction: column;
177-
padding: 1rem 1.5rem;
178-
overflow-y: hidden;
179-
overflow-x: auto;
180-
border: 1px solid #FFCFD6;
181-
182-
background: #FFF;
183-
font-family: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace;
184-
font-size: 0.8rem;
185-
line-height: 1.44;
186-
color: #6b7280;
187-
white-space: pre;
188-
189-
}
190-
191-
details[open] > summary span.hide {
192-
visibility: hidden;
193-
}
194-
195-
details[open] > summary span.none {
196-
display: none;
197-
}
198-
199-
details > details {
200-
padding-left: 1em;
201-
}
202-
203-
.line {
204-
padding-left: 1.125em;
205-
}
206-
207-
details[open]::after {
208-
content: attr(data-char);
209-
}
210-
211-
.sep {
212-
margin-right: 0.25em;
213-
}
214-
215-
216-
details > summary {
217-
cursor: pointer;
218-
}
219-
220-
details:hover > summary::before,
221-
details:focus > summary::before {
222-
transform: translate(0.25em, -0.25em);
223-
}
224-
225-
details > summary::before {
226-
content: '';
227-
background-image: url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13 8L2.60769 14L2.6077 2L13 8Z' fill='%236B7280' /%3E%3C/svg%3E%0A");
228-
background-size: 1em;
229-
230-
display: inline-flex;
231-
font-size: 0.5em;
232-
width: 1em;
233-
height: 1em;
234-
margin-right: 1.25em;
235-
margin-left: -2em;
236-
transform: translate(0, -0.25em);
237-
line-height: 1em;
238-
transition: transform 120ms ease-in;
239-
}
240-
241-
details[open] > summary::before {
242-
transform: translate(0.25em, -0.25em) rotate(90deg);
243-
}
244-
245-
.debug :global(::marker) {
246-
content: '';
247-
width: 0;
248-
visibility: hidden;
249-
}
250-
251-
.key {
252-
color: #882de7;
253-
}
254-
255-
.key-dim {
256-
color: #B881F1;
257-
}
258-
259-
.len {
260-
color: #B881F1;
261-
}
262-
263-
details:hover > summary,
264-
details:focus > summary,
265-
details:hover > summary .punc,
266-
details:focus > summary .punc,
267-
details:hover[open]::after,
268-
details:focus[open]::after {
269-
color: #000012;
270-
}
271-
272-
details:hover > summary .len,
273-
details:focus > summary .len {
274-
color: #882DE7;
275-
}
276-
277-
.punc {
278-
color: #6b7280;
279-
}
280-
281-
.value-string {
282-
color: #17c083;
283-
}
284-
285-
.value-function::before {
286-
content: 'Ζ’ ';
287-
color: #3894ff;
288-
}
289-
.value-function {
290-
color: #5076f9;
291-
}
292-
293-
.value-number {
294-
color: #ff5d01;
295-
}
296-
297-
.value-null,
298-
.value-undefined {
299-
color: #9ca3af;
300-
}
301-
302-
main > .line {
303-
margin-left: -0.75em;
304-
padding-left: 0;
46+
pre {
47+
border: 1px solid #eee;
48+
padding: 1rem 0.75rem;
49+
border-radius: 4px;
50+
border-top-left-radius: 0;
51+
border-top-right-radius: 0;
52+
font-size: 14px;
30553
}
30654
</style>

0 commit comments

Comments
Β (0)