Skip to content

Commit

Permalink
πŸš€ Astro Next (0.21.0) (withastro#1406)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
10 people authored Oct 29, 2021
1 parent 56aa88a commit 15e6c22
Show file tree
Hide file tree
Showing 337 changed files with 188,010 additions and 9,238 deletions.
3 changes: 2 additions & 1 deletion astro.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ const CI_INSTRUCTIONS = {
VERCEL: 'https://vercel.com/docs/runtimes#official-runtimes/node-js/node-js-version',
};

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

// Preflight check complete. Enjoy! ✨
if (supportsESM) {
return import('./dist/cli.js')
return import('./dist/cli/index.js')
.then(({ cli }) => cli(process.argv))
.catch((error) => {
console.error(error);
Expand Down
10 changes: 5 additions & 5 deletions components/Code.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import shiki from 'shiki';
export interface Props {
/** The code to highlight. Required. */
code: string;
/**
* The language of your code. Defaults to "plaintext".
* Supports all languages listed here: https://github.com/shikijs/shiki/blob/main/docs/themes.md
/**
* The language of your code. Defaults to "plaintext".
* Supports all languages listed here: https://github.com/shikijs/shiki/blob/main/docs/themes.md
*/
lang?: string;
/**
/**
* The styling theme. Defaults to "github-dark".
* Supports all themes listed here: https://github.com/shikijs/shiki/blob/main/docs/themes.md
* Supports all themes listed here: https://github.com/shikijs/shiki/blob/main/docs/themes.md
* Instructions for loading a custom theme: https://github.com/shikijs/shiki/blob/main/docs/themes.md#loading-theme
*/
theme?: string;
Expand Down
302 changes: 25 additions & 277 deletions components/Debug.astro
Original file line number Diff line number Diff line change
@@ -1,166 +1,39 @@
---
const key = Object.keys(Astro.props)[0];
const value = Astro.props[key];
const getType = (node: unknown) => {
if (Array.isArray(node)) return 'array';
if (node === null) return 'null';
if (typeof node === 'object') {
if ((node as any).then) return 'promise';
}
return typeof node;
};
const getSummary = (node: any, key: string, className: string) => {
const type = getType(node);
let value;
let open;
let close;
if (type === 'function') {
return <>
{(key || !key && key === 0) && <><span class={`${className} key`}>{key}</span><span class={`${className} sep`}>:</span></>}
<span class={`${className} value value-function`}>{node.name}<span class={`${className} punc`}>()</span></span>
</>
}
if (type === 'promise') {
return <>
{(key || !key && key === 0) && <><span class={`${className} key`}>{key}</span><span class={`${className} sep`}>:</span></>}
<span class={`${className} value value-promise`}>Promise</span>
</>
}
if (type === 'array') {
value = node.length;
open = <><span class={`${className} none`}>Array</span>{'['}</>;
close = ']';
} else if (type === 'object') {
const keys = Object.keys(node);
if (keys.length === 0) {
value = 'Empty';
} else if (keys.length > 3) {
value = '…';
} else {
value = keys.slice(0, 3).join(',');
}
open = '{';
close = '}';
};
return <>
{key && <><span class={`${className} key`}>{key}</span>: </>}
{open && <span class={`${className} punc`}>{open}</span>}
<span class={`${className} hide`}>
<span class={`${className} len`}>{value}</span>
{close && <span class={`${className} punc`}>{close}</span>}
</span>
</>;
};
const Details = ({ node, key, children, class: className }) => {
const type = getType(node);
const props = {};
if (type === 'array' || type === 'object') {
props['data-char'] = type === 'array' ? ']' : '}'
props.open = !key && type === 'object' ? '' : undefined;
}
return (
<details {...props} class={className}>
<Summary node={node} key={key} class={className} />
{children}
</details>
);
}
const Summary = ({ node, key, class: className }) => {
return (
<summary class={className}>{getSummary(node, key, className)}</summary>
);
}
const Empty = Symbol('Empty');
const KeyValue = ({ key, value, dim, class: className }) => {
let type = key === '__proto__' ? 'prototype' : getType(value);
if (type === 'null') {
value = 'null';
} else if (type === 'undefined') {
value = 'undefined';
} else if (value === Empty) {
type = 'empty';
value = 'Empty';
} else {
value = JSON.stringify(value);
}
return (
<div class={`${className} line`}>
{(key || !key && key === 0) && <><span class={`${className} key ${dim ? 'key-dim' : ''}`.trim()}>{key}</span><span class={`${className} sep`}>:</span></>}
<span class={`${className} value value-${type}`}>
{value}
</span>
</div>
)
}
const Node = ({ node, key, class: className, ...props }) => {
const type = getType(node);
className = className.replace(/debug-value/g, '');
if (type === 'array' || type === 'object') {
let children = [];
if (type === 'array' && node.length > 0 && Object.entries(node).length === 0) {
children = Array.from({ length: node.length }, (_, key) => <Node node={Empty} key={key} class={className} />);
} else {
children = Object.entries(node).map(([key, value]) => <Node node={value} key={key} class={className} />);
}
return (
<Details node={node} key={key} children={children} class={className} />
);
} else if (type === 'function') {
return (
<Details node={node} key={key} class={className} children={
<>
<KeyValue key="name" value={node.name} dim={true} class={className} />
<KeyValue key="__proto__" value="Function" dim={true} class={className} />
</>
}/>
);
} else if (type === 'promise') {
return (
<Details node={node} key={key} class={className} children={
<KeyValue key="__proto__" value="Promise" dim={true} />
} />
);
}
return <KeyValue key={key} value={node} class={className} />;
}
---

<div class="debug">
<div class="debug-header">
<h2 class="debug-title"><span class="debug-label">Debug</span> <span class="debug-name">"{key}"</span></h2>
</div>

<main>
<Node node={value} class="debug-value" />
</main>
<pre>{JSON.stringify(value, null, 2)}</pre>
</div>

<style lang="scss">
.debug-header {
background: #FF1639;
<style>
.debug {
font-size: 14px;
padding: 1rem 1.5rem;
background: white;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}

.debug-header, pre {
margin: -1rem -1.5rem 1rem;
padding: 0.25rem 0.75rem;
}

.debug-header {
background: #FF1639;
border-radius: 4px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}

.debug-title {
font-size: 1em;
color: #fff;
color: white;
margin: 0.5em 0;
}

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

.debug {
all: initial;
display: flex;
flex-direction: column;
padding: 1rem 1.5rem;
overflow-y: hidden;
overflow-x: auto;
border: 1px solid #FFCFD6;

background: #FFF;
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;
font-size: 0.8rem;
line-height: 1.44;
color: #6b7280;
white-space: pre;

}

details[open] > summary span.hide {
visibility: hidden;
}

details[open] > summary span.none {
display: none;
}

details > details {
padding-left: 1em;
}

.line {
padding-left: 1.125em;
}

details[open]::after {
content: attr(data-char);
}

.sep {
margin-right: 0.25em;
}


details > summary {
cursor: pointer;
}

details:hover > summary::before,
details:focus > summary::before {
transform: translate(0.25em, -0.25em);
}

details > summary::before {
content: '';
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");
background-size: 1em;

display: inline-flex;
font-size: 0.5em;
width: 1em;
height: 1em;
margin-right: 1.25em;
margin-left: -2em;
transform: translate(0, -0.25em);
line-height: 1em;
transition: transform 120ms ease-in;
}

details[open] > summary::before {
transform: translate(0.25em, -0.25em) rotate(90deg);
}

.debug :global(::marker) {
content: '';
width: 0;
visibility: hidden;
}

.key {
color: #882de7;
}

.key-dim {
color: #B881F1;
}

.len {
color: #B881F1;
}

details:hover > summary,
details:focus > summary,
details:hover > summary .punc,
details:focus > summary .punc,
details:hover[open]::after,
details:focus[open]::after {
color: #000012;
}

details:hover > summary .len,
details:focus > summary .len {
color: #882DE7;
}

.punc {
color: #6b7280;
}

.value-string {
color: #17c083;
}

.value-function::before {
content: 'Ζ’ ';
color: #3894ff;
}
.value-function {
color: #5076f9;
}

.value-number {
color: #ff5d01;
}

.value-null,
.value-undefined {
color: #9ca3af;
}

main > .line {
margin-left: -0.75em;
padding-left: 0;
pre {
border: 1px solid #eee;
padding: 1rem 0.75rem;
border-radius: 4px;
border-top-left-radius: 0;
border-top-right-radius: 0;
font-size: 14px;
}
</style>
Loading

0 comments on commit 15e6c22

Please sign in to comment.