Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release/0.28.0 #1034

Merged
merged 32 commits into from
Apr 9, 2023
Merged

release/0.28.0 #1034

merged 32 commits into from
Apr 9, 2023

Conversation

thescientist13
Copy link
Member

@thescientist13 thescientist13 commented Dec 10, 2022

Related Issue

Summary of Changes

  1. Upgrade to Node v18 minimum version
  2. Add API routes
  3. Standardize on Web APIs
  4. Add <video> and <audio> static resources support
  5. Decouple user workspace from build output

Alpha Release Test Plan

I think to be safe given the level of refactoring, would like to at least make sure this get tested with a few key repos

The plan would be to test against the following projects / workflows as alpha releases are iterated upon:

  1. thegreenhouse.io - upgrade greenwood and GitHub Actions for node 18 thegreenhouseio/www.thegreenhouse.io#286
  2. contributary.community - upgrade greenwood and GitHub Actions for node 18 ContributaryCommunity/www.contributary.community#121
  3. analogstudios.net - upgrade greenwood v0.28.0 and GitHub Actions for node 18 AnalogStudiosRI/www.analogstudios.net#85
  4. tuesdaystunes.tv - upgrade greenwood and GitHub Actions for node 18 AnalogStudiosRI/www.tuesdaystunes.tv#110
  5. greenwood-getting-started - upgrade greenwood and GitHub Actions for node 18 greenwood-getting-started#70
  6. projectevergreen.github.io - upgrade greenwood and GitHub Actions for node 18 projectevergreen.github.io#97
  7. greenwood-template-blog - upgrade greenwood for node 18 greenwood-template-blog#7
  8. greenwood-starter-presentation - upgrade greenwood v0.28.0 and Node 18 thescientist13/greenwood-starter-presentation#64
  9. npx / init
  10. Stackblitz - Node 18 not supported yet - Support later versions of Node (or make version configurable) stackblitz/webcontainer-core#560

This PR should NOT be squashed merged when merging into master.

TODOs

  1. API Routes #1007
  2. Standardize on Web APIs (Request / Response / URL / etc) #948
  3. bundle and optimize server and API routes and serve from output directory (decouple serve task from source code) #946
  4. Layouts (Templates) and Pages #955 (deferred)
  5. eliminate SSR page instantiation during graph lifecycle #991 (deferred)
  6. Support web standard <audio> and <video> formats #1038
  7. Create a plugin for import JSX plugin (using WCC) #972
  8. GitHub Actions for some SSR specs are timing out (experimental runs are fine) #1070 (kinda)
  9. fix matching for bundling inline script tags #1089
  10. Server side routes should support dynamic route naming (with prerendering) #882 (nice to have)
  11. apply isomorphic standards to userland libraries and plugins (globalThis) #1005 (nice to have)
  12. Blog Post - v0.28.0 release blog post #1086
    • Node 18
    • Web APIs adoption (Request / Response / etc)
    • API Routes
    • JSX?

Questions / New Issues

N / A

@thescientist13 thescientist13 added documentation Greenwood specific docs breaking feature New feature or request v0.28.0 labels Dec 10, 2022
@thescientist13 thescientist13 added this to the 1.0 milestone Dec 10, 2022
@thescientist13 thescientist13 linked an issue Dec 10, 2022 that may be closed by this pull request
5 tasks
@thescientist13 thescientist13 added RFC Proposal and changes to workflows, architecture, APIs, etc Plugins Greenwood Plugins CLI labels Feb 18, 2023
@thescientist13 thescientist13 mentioned this pull request Apr 1, 2023
2 tasks
@thescientist13 thescientist13 marked this pull request as ready for review April 2, 2023 01:41
* upgrade node 18

* update node version documentation

* adopt native fetch

* upgrade Ubuntu version for Linux GitHub Actions
* API Routes

* rename ApiRoutes resource class

* add skeleton Request support to handler signature

* Response example from API route

* add local development cache busting for API routes

* refactor out dependency on path

* fix typo

* API Routes

* add local development cache busting for API routes

* refactor out dependency on path

* handle APIs for serve command

* add API development spec

* refactor API development spec to use fetch

* refactor specs

* API route serve specs

* TODOs tracking

* add API routes documentation

* restore API specs using request instead of native fetch

* remove demo code

* app exists check for API routes
* web standard APIs adoption

* update graph lifecyle to work with URLs

* web standards refactoring for Resource plugins resolve lifecycle

* refactoring develop command and serve resource lifecycle for standard plugins

* refactor standard plugin intercept lifecycle

* clean up

* restore app templating to standard HTML resource plugin

* WIP refactoring plugins for web standardization

* handle develop command middleware support for handling binary or text response types

* restore nested relative routes resolution and general standard plugin refactoring

* group greenwood plugins

* adapt intercept lifecycles for web standards signature

* adapt pre-render build lifecycle and refactor page serving and intercepting

* refactor build and optimize lifecycles

* refactor bundle and optimize lifecycles

* restore cleanupResources

* restore copy lifecyle and all of build command

* restore serve command and full website prerendering

* restore specs and fixing missed upgrades

* all CLI specs passing

* all core specs and plugins working

* getting package plugin specs passing

* getting package plugin specs passing

* getting package plugin specs passing

* getting package plugin specs passing

* all plugin specs passing

* update spec for content type

* exp CSS import specs passing

* exp JSON import specs passing

* clean up console logs

* resolve max listeners warning

* restore E-Tag middleware for development

* merged response bundling working

* restore optimized graphql behavior

* update docs

* fix specs

* clean up TODOs

* docs revisions

* windows compat with fs.promises and URL

* develop command working

* convert to fs.promises

* build and serve refactored to fs.promises and URL

* all specs passing except for APIs

* all specs passing yay

* temp disable linting

* commands and almost all specs passing, phew

* refactor fs.access and fix lint

* restore linting to github actions

* resource and utils refactoring

* TODOs cleanup and tracking
* properly name greenwood standard plugins

* fix class name for image resource plugin
…1065)

* restore SPA fallback handling for client side rendering

* add test cases to cover regressions
* better handle detecting and serving API routes and not confusing with /api requests

* add test case for API proxy and API routes overlap for serve command

* remove runner logging
* fix serving of prerendered SSR pages for serve command

* improve detection of hybrid router for serve command and add static export SSR serve command specs

* nest spec setup inside describe block
#1076)

* refactor copy lifecycle to use leverage fs.copyFile instead of streams

* refactor to use fs.copyFile
* add support for standard video formats

* fix content type in video response

* restore content length header for Safari support

* remove standard .ts video format support

* adding audio resource support and adding test cases

* misc refactor

* refactor audio and video files according to better understanding of container formats

* clean up TODO comment
* restore original rollup local workspace resolution

* ensure relative paths for ESM recommendations like custom graphql schemas
* initial implementation of JSX plugin with SSR prerender support

* add bundling spec for JSX import

* documentation and README.md

* clean up console logs

* fix up

* misc PR feedback
#1079)

* track APIs as part of compilation.manifest and leverage in API routes resource plugin

* API routes bundling

* pull API routes from manifest for serve command

* bundle SSR routes

* WCC bunding in API routes

* create copy plugin for manifest.json

* refactor SSR route bundling

* most templating functions working for SSR templating

* fill static and SSR templating working with optimizations

* fix SSR title rendering

* add support for getUserScripts in SSR

* hacky work around to get static router + SSR spec working

* enable spec

* decouple build command from serve command

* add build output as pre-requisite to runngin serve command

* document new greenwood serve behavior

* refactor SSR compilation context bundle output

* refactor plugin-standard-html to use template utils

* create custom json transformation transformer to handle escodegen

* create custom json transformation transformer to handle escodegen

* support context plugins in SSR templating

* TODO tracking and console log cleanup

* upgrade latest wcc with HTML wrapping tag disabled

* fix linting

* fix path references

* normalize SSR static router hack pathnames for windows

* normalize SSR static router hack pathnames for windows
* resource plugins refactoring for serve lifecyle and extensions

* refactor import lines to use URL in hybrid router
* disable SSR static export spec for windows

* disable SSR static export spec for windows

* exclude default SSR spec in windows

* exclude default SSR and export specs from base test scripts

* fix excludes

* ignore all export specs on windows

* exclude same specs on windows and not windows

* consolidate test scripts
* v0.28.0 release blog post

* PR feedback

* PR feedback

* grammar
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment