Commit graph

257 commits

Author SHA1 Message Date
Drew Powers
54c291efa0
Handle script module resolution (#438)
Fixes #104
2021-06-15 15:06:29 -06:00
Drew Powers
272769d723
Improve asset resolution in Astro (#437)
* Improve asset resolution in Astro

Fixes #96

* Add docs, changeset

* Fix collection resolution
2021-06-15 14:53:16 -06:00
natemoo-re
266e447e01 [ci] yarn format 2021-06-15 16:34:46 +00:00
Nate Moore
490f2bebbc
Add <> fragment support for expressions (#433)
* feat: add support for `<>` and `</>` Fragments

* docs: explain Fragments

* test: add fragment test
2021-06-15 11:33:27 -05:00
matthewp
ddd86f8ab2 [ci] yarn format 2021-06-14 20:11:42 +00:00
Matthew Phillips
016833a3bc
Honor user's hmr settings (#436)
* Honor user's hmr settings

This contains 2 fixes:

* If the user sets the hmrPort in their own snowpack config we use that port.
* If the user sets `window.HMR_WEBSOCKET_URL` we defer to that

* Adds the changeset
2021-06-14 16:10:29 -04:00
Matthew Phillips
73a43d9301
Prevent postcss from crashing when scoping class without a body (#430)
* Prevent postcss from crashing when scoping class without a body

For some reason postcss will keep running the plugin over and over on a class without a body if we modify the `selector` (this triggers it as being "dirty"). It doesn't do this for selectors with a body. But the fix was easy enough, only scope a rule once.

Closes #340

* Add a changeset
2021-06-14 14:17:56 -04:00
Matthew Phillips
af03c90c2b
Fix usage of arrow functions as components (#426)
* Fix usage of arrow functions as components

This fixes the React and Preact component as arrow function use-case by checking for the prototype property (arrow functions don't)

* Check the prototype
2021-06-14 13:24:37 -04:00
Brad Cornes
e0989c696a
Fix scoped CSS selector when class contains a colon (#383)
* fix scoped selector when using escaped colon

* update scoped styles test

* add changeset

* update `scopeRule` test

* update `scopeRule` test

* update css minifier to account for windows-style line breaks
2021-06-14 10:36:33 -06:00
Matthew Phillips
2d854092a4
Serialize boolean attributes without a value (#422)
* Serialize boolean attributes without a value

Fixes #307

* Update the attrs test

* Adds a changeset

* Adds test that components receive booleans
2021-06-14 12:29:34 -04:00
Matthew Phillips
0b16b2ddd0
Make doctype be case insensitive (#419)
* Make doctype be case insensitive

Fixes #413

* Make doctype completely case insensitive

* Make check for style scoping doctype override be case insensitive

* Check for doctype in the right place
2021-06-14 12:00:51 -04:00
matthewp
a5d6e434ab [ci] yarn format 2021-06-14 12:36:32 +00:00
Matthew Phillips
271cfe6ce3
Improved JSX framework detection (#382)
* Improved JSX framework detection

This improves the JSX detection and adds a bunch of test. The following is improved:

* If an error throws because of a coding mistake, those errors will be reported.
* We properly detect class components for both Preact and React. We don't have to "try to render" these.

It's still possible that error messages might be obscured in this scenario:

A Preact function component that uses hooks (or another preact specific feature) that has a coding mistake. The React renderer might throw when it uses the Preact hook. That error will be reported rather than the real coding mistake.

This is because we can't distinguish between errors that are due to the wrong framework and errors that the user caused.

I might reach out to the Preact community and see if they can think of a better solution to this problem. This will come up when other JSX based frameworks have renderers. I still think that having multiple frameworks in the same project is a feature worth trying to preserve.

* Move try/catch into the __astro_component
2021-06-14 08:35:25 -04:00
Drew Powers
c374a549b5
Allow createCollection() to fetch remote data (#400)
* Allow createCollection() to fetch remote data

Fixes #378

* Update docs

* revert isomorphic-fetch, see if ci passes

Co-authored-by: Fred K. Schott <fkschott@gmail.com>
2021-06-11 18:31:36 -07:00
Matthew Phillips
1bab906539
Remove second snowpack instance (#368)
* Remove second snowpack instance

* Document import.meta.env.SSR

* Remove unnecessary Promise.all
2021-06-11 09:03:22 -04:00
matthewp
cc5d000fdc [ci] yarn format 2021-06-10 18:11:17 +00:00
Matthew Phillips
afa09ee9dc
Add HMR port script when needed (#375)
* Always add HMR port script when HMR is enabled

* Add it only if there are client side components

* Fix the test

* Add a test where HMR port not set

* Upgrade snowpack version

* Fix snowpack semver
2021-06-10 14:10:15 -04:00
Fred K. Schott
f4a747fb1f
snowpack.dev build output cleanup (#324)
* cleanup grabbag

* add changeset

* Skip the flakey logging test

Co-authored-by: Matthew Phillips <matthew@skypack.dev>
2021-06-08 08:33:15 -04:00
matthewp
20c4efe5a2 [ci] yarn format 2021-06-08 12:22:58 +00:00
Nate Moore
f6ef53b7fa
Fix recursive markdown (#315)
* wip: fix recursive markdown

* fix: recursive markdown issue

* chore: add changeset
2021-06-08 08:21:37 -04:00
matthewp
cb3ff36105 [ci] yarn format 2021-06-07 18:26:17 +00:00
Matthew Phillips
b1364afbae
Prevent duplicate snowpack logs (#316)
* Prevent duplicate snowpack logs

* Fix test to wait on expected messages

* Update the snowpack/plugin-vue

* Add changeset

* Debugging

* Skip the logging test on windows :(

* arg
2021-06-07 14:24:55 -04:00
Nate Moore
0d6afaee9e
fix: Markdown usage when deeply nested on a page (#303)
* fix: Markdown component deeply nested on a page

* chore: add changeset
2021-06-05 10:18:26 -05:00
Matthew Phillips
50e6f491ad
Use npm package names to load internal deps (#294)
* Use npm package names to load internal deps

This is necessary so that published Astro components work. These components will be built by esinstall and therefore they cannot rely on `_astro_internal`. The fix is to use npm specifiers everywhere.

* Move most of frontend to internal

* Mark astro/internal/markdown.js as external

* Move markdown stuff to its own package

This moves the markdown stuff to its own package so that we can externalize it in the markdown component.

* Add the changeset
2021-06-04 14:19:01 -04:00
Nate Moore
94eac19888
Pre-release refactors (#289)
* refactor: expose `astro/components` as component entrypoint

* refactor: remove `extensions` from all configs

* test: fix snowpack tests

* docs: update config doc
2021-06-02 11:35:28 -05:00
Nate Moore
ffb6380c3f
Dynamic Markdown content (#273)
* wip: serverside render dynamic Markdown content

* docs: update Markdown.astro comments

* Use existing markdown infrastructure to render external MD

* Update Markdown docs

* Add a changeset

Co-authored-by: Matthew Phillips <matthew@skypack.dev>
2021-06-02 11:53:33 -04:00
Matthew Phillips
46871d2d4a
Don't append a class attribute to the doctype (#284)
* Don't append a class attribute to the doctype

Fixes #282

* Add changeset
2021-06-01 20:03:38 -05:00
Nate Moore
c9d833ee0b
Fix prerelease bugs, reenable @astrojs/renderer-vue (#286)
* fix: add packages to external

* fix: improve renderer error message

* fix: reenable vue renderer

* chore: remove `extensions` from templates

* fix: reenable @astrojs/renderer-vue

* refactor: add types to snowpack plugin

* fix: update snowpack

* fix: use manual SSR wrapper for Svelte

* chore: add changesets

* chore: bump snowpack

* test: fix failing test

* chore: remove redundant entries
2021-06-01 18:41:08 -05:00
Drew Powers
addd67d244
Change astroRoot to pages (#277)
#271
2021-06-01 09:57:12 -06:00
natemoo-re
8d7abd0ede [ci] yarn format 2021-05-28 22:52:52 +00:00
Matthew Phillips
f49944c0e7
Improve dev perf by not esinstalling Node deps (#253)
* Improve dev startup by making most dependencies externals

This moves most dependencies to be an `external` for Snowpack, preventing backend deps from going through esinstall.

* Update benchmark times

* chore: add benchmark script for convenience

* fix: update externals to allow renderers

* chore: update benchmark times

Co-authored-by: Nate Moore <nate@skypack.dev>
2021-05-28 17:51:50 -05:00
Nate Moore
3df41d2308
Bugbash! (#263)
* fix(vscode): Markdown frontmatter should use TSX, not YAML

* test: add test for #153

* chore: bump deps

* chore: update to use @astrojs scope

* fix: Markdown parse error when only child is `{expression}`

* fix: update renderer edge cases

* fix: failing test

* fix: update renderer
2021-05-28 17:19:40 -05:00
natemoo-re
630c36f351 [ci] yarn format 2021-05-28 22:03:05 +00:00
Nate Moore
3d20623c32
Fix falsy values (#275)
* fix(#274): improve attribute handling

* chore: add test for JSX expressions

* fix: falsy expressions should not render

* chore: add changeset

* test: update expression tests

* fix: render 0 if value is {0}
2021-05-28 17:02:04 -05:00
Nate Moore
e08abacfee
fix: failing test? (#276) 2021-05-28 16:54:39 -05:00
Drew Powers
5292b08028
Make UVU tests time out (#265) 2021-05-27 14:06:54 -06:00
Matthew Phillips
dd7cc798e0
Fix codeblocks in markdown components (#264)
* Fix codeblocks in markdown components

* Debugging

* More debugging

* remove extra debugging stuff
2021-05-27 13:54:38 -04:00
Nate Moore
be804499b0
Remove remote urls from import scanner (#256)
* fix: remove remote urls from import scanner

* debug test
2021-05-26 14:56:34 -05:00
Nate Moore
643c880f28
Renderer plugins (#231)
* refactor: pluggable renderers

* refactor: cache renderer per component

* docs: update comments on snowpack plugin `transform` method

* docs: add comments to renderer plugins

* refactor: convert components to Map

* fix: pass children through to astro __render

* refactor: move Components/ComponentInfo to shared types

* refactor: remove `gatherRuntimes` step, just scan output for imports

* refactor: update isComponentTag logic

* chore: move dependencies to renderers

* fix: cross-platform transform injection

* feat: defer renderer to react, fallback to preact

* fix: use double quotes in generated script

* test: fix failing children tests

* test: add workspaceRoot to all tests

* fix: pass props to renderer check

* chore: add test:core script back for convenience

* chore: remove unused external

* chore: rename renderers

* chore: add astring, estree-util-value-to-estree

* chore: render-component => __astro_component

* refactor: split hydrate logic to own file

* refactor: use `astro-fragment` rather than `div`

* chore: remove unused hooks

* chore: delete unused file

* chore: add changesets

* fix: Astro renderer should be async

* fix: remove <astro-fragment> for static content

* test: fix failing test

* chore: normalize config interface

* feat: allow renderers to inject a snowpackPlugin

* fix: resolve import URL before using dynamic import

* refactor: update renderers to use separate /server entrypoint

* refactor: update server renderer interface

* fix: get renderers working again

* test: debug failing test

* test: better debug

* test: better debug

* test: remove debug

* fix: support esm and cjs packages via "resolve"

* refactor: split hydrate functions into individual files

* fix: dependency resolution relative to projectRoot

* fix: @snowpack/plugin-postcss needs to be hoisted

* fix: do not test prettier-plugin-astro as it's not ready for primetime
2021-05-26 13:30:22 -05:00
matthewp
36fc51c124 [ci] yarn format 2021-05-26 15:33:35 +00:00
Matthew Phillips
da47225efe
Add benchmarking for dev and build (#240)
* Add benchmarking for the dev server

This adds benchmarking for the dev server.

* Use fs.rm instead

* Only rimraf if the folder exists

* Make uncached match CI

* Change the cached time too

* Don't run benchmark in CI

* Switch back test command

* Make tests be within 10 percent

* Use yarn to run multiple things

* Turn benchmark into uvu tests

* Debugging benchmark

* Print chunk for testing

* Ignore benchmark folder in uvu

* Add build benchmarking

* Update benchmark numbers
2021-05-26 11:31:53 -04:00
Matthew Phillips
2ff2533c9e
Fix markdown syntax issues (#234)
This fixes #233 among other things
2021-05-24 16:00:34 -04:00
Drew Powers
c43ee95850
Bugfix: random CSS ordering (#232)
* Bugfix: random CSS ordering

Fixes #230

* Update docs
2021-05-24 10:57:35 -06:00
Drew Powers
69d693b77c
Add scoped styles test (#223) 2021-05-21 12:45:49 -06:00
natemoo-re
a2ae7018ca [ci] yarn format 2021-05-17 14:30:21 +00:00
Nate Moore
b3886c206f
Fix markdown issues (#208)
* Init fix/markdown

* Astro Markdown (#207)

* Add Astro Markdown to VSCode Extension

* Add Astro Markdown to Astro

* refactor: update astro-markdown example

* feat: remove embedded components from `.md` files

* fix: resolve `.md.astro` files at runtime

* chore: update markdown tests

* feat: add <Markdown> component

* chore: bump examples

* chore: update example

* fix: improve Markdown child handling

* feat: harden markdown support, add code fence support, add automatic dedenting

* chore: add weird markdown edge cases

* chore: update remote-markdown examples

* chore: add comment to Markdown.astro

* feat: improve markdown support (codefences, nested inside HTML)

* refactor: extract import specifier types to set

* refactor: conditionally import markdown renderer

* refactor: revert special-cased "astro/components"

* refactor: revert special-cased "astro/components"

* refactor: use astro/components/Markdown.astro

* refactor: remove `.md.astro` support in favor of Markdown component

* refactor: use regular .astro files

* refactor: remove unused code

* refactor: move Markdown inside Layout

* wip: markdown scoped styles

* feat: improve scoped styles in Markdown

* feat: micromark => remark ecosystem

* fix: markdown build

* fix: markdown build

* chore: add todo

* fix: collect headers text

* docs: add Markdown doc

* chore: add changeset

* docs: improve Markdown highlighting

* refactor: prefer Set

* refactor: exclude large unified deps

* docs: update markdown docs

Co-authored-by: Jonathan Neal <jonathantneal@hotmail.com>

* chore: remove extra markdown deps

* perf: optimize markdown

* fix: unified/rehype deps

* temp: fix markdown test

* test: add TODO comment

* fix: do not namespace frontmatter, just astro metadata

* test: fix astro-markdown test

* test: add realworld markdown example

* fix: prism language bug

* docs: update markdown docs

* chore: bump dependencies

* fix: escape codespan

* fix: unterminated string literal

* fix(vscode): inline dependencies

* fix(vscode): dependencies

* feat(vscode): embedded markdown

* feat: add Markdown syntax highlighting

* chore: improve markdown example

* fix: markdown example

* feat: highlighting improvements

* chore: add changeset

* fix: CodeBlock => CodeSpan

* chore: get astro-markdown example running

Co-authored-by: Jonathan Neal <jonathantneal@hotmail.com>
2021-05-17 09:29:16 -05:00
Drew Powers
9d092b56c7
Fix Windows tests (#212)
* Fix Windows fetchContent()

* Fix Windows bundling & config loading

* Fix astro-prettier formatting for Windows
2021-05-14 12:03:41 -04:00
Drew Powers
3ef1b01e14
[wip] Fix CI (#202)
* Yarn format

* Fix changeset --since

* Fix Windows tests
2021-05-12 12:06:16 -06:00
Drew Powers
7184149514
Add Astro.request.canonicalURL and Astro.site to global (#199) 2021-05-11 17:31:52 -06:00
Kevin (Kun) "Kassimo" Qian
e0a4f5fbc0
Allow default import component to be renamed based on import statement default specifier (#193)
* Allow renaming for default import components

* Changeset
2021-05-10 11:00:05 -05:00
Drew Powers
87ab4c6927
Bugfix: scoped styles (#178) 2021-05-06 15:39:34 -06:00
Drew Powers
7b55d3d43e
Chore: fix lint rules, add more error handling for unexpected cases (#177) 2021-05-06 14:57:14 -04:00
Drew Powers
b81abd5b2c
Add CSS bundling (#172)
* Add CSS bundling

* Add Changeset

* Update build script

* Count better

* Fix stats

* Cleanup

* Add test

* Show profile ms under 750ms
2021-05-06 10:38:53 -06:00
Nate Moore
3ad0aac8cf
Fix fetchContent for nested files (#171)
* fix: fetchContent within nested folders

* feat: add `sourceId` to fetchContent

* test: update collection tests

* fix: windows compat for importPath

* chore: add changeset

* fix: astroRoot => projectRoot

* feat: add `slash` package

* chore: remove sourceId prop

* chore: update changeset

* format
2021-05-04 17:11:05 -05:00
Drew Powers
94038d3297
Format (#167) 2021-05-03 12:26:10 -06:00
Nate Moore
c93201a909
Refactor astro export map, add source-map-support (#161)
* fix: add svelte plugin for esbuild, remove precompiled svelte components

* refactor: public export map, public types

* feat: add source-map-support to common code paths

* chore: move new "exports" to "imports" map, add internal types

* Include outPath in error logging for bad load status, and drop error stack (#163)

* Include outPath in the error logging for bad load status

* Discard error stack since it seems not useful

* feat: improve build error logging

* refactor: use object param for writeResult

Co-authored-by: Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com>
2021-05-03 13:18:08 -05:00
Nate Moore
4df1347156
Migrate to yarn monorepo (#157)
* chore: use monorepo

* chore: scaffold astro-scripts

* chore: move tests inside packages/astro

* chore: refactor tests, add scripts

* chore: move parser to own module

* chore: move runtime to packages/astro

* fix: move parser to own package

* test: fix prettier-plugin-astro tests

* fix: tests

* chore: update package-lock

* chore: add changesets

* fix: cleanup examples

* fix: starter example

* chore: update changeset config

* chore: update changeset config

* chore: setup changeset release workflow

* chore: bump lockfiles

* chore: prism => astro-prism

* fix: tsc --emitDeclarationOnly

* chore: final cleanup, switch to yarn

* chore: add lerna

* chore: update workflows to yarn

* chore: update workflows

* chore: remove lint workflow

* chore: add astro-dev script

* chore: add symlinked README
2021-04-30 16:33:35 -05:00