diff --git a/.changeset/neat-camels-raise.md b/.changeset/neat-camels-raise.md new file mode 100644 index 000000000..982b775a0 --- /dev/null +++ b/.changeset/neat-camels-raise.md @@ -0,0 +1,5 @@ +--- +"@astrojs/compiler": major +--- + +Removes `renderScript` from `TransformOptions`. It is now the default and only behavior diff --git a/cmd/astro-wasm/astro-wasm.go b/cmd/astro-wasm/astro-wasm.go index 494f10738..77ff82555 100644 --- a/cmd/astro-wasm/astro-wasm.go +++ b/cmd/astro-wasm/astro-wasm.go @@ -135,11 +135,6 @@ func makeTransformOptions(options js.Value) transform.TransformOptions { scopedStyleStrategy = "where" } - renderScript := false - if jsBool(options.Get("renderScript")) { - renderScript = true - } - return transform.TransformOptions{ Filename: filename, NormalizedFilename: normalizedFilename, @@ -153,7 +148,6 @@ func makeTransformOptions(options js.Value) transform.TransformOptions { ScopedStyleStrategy: scopedStyleStrategy, TransitionsAnimationURL: transitionsAnimationURL, AnnotateSourceFile: annotateSourceFile, - RenderScript: renderScript, } } diff --git a/internal/printer/__printer_js__/Empty_script.snap b/internal/printer/__printer_js__/Empty_script.snap index 14e2b9d99..3a191abb8 100755 --- a/internal/printer/__printer_js__/Empty_script.snap +++ b/internal/printer/__printer_js__/Empty_script.snap @@ -34,7 +34,7 @@ export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydra const $$Component = $$createComponent(($$result, $$props, $$slots) => { -return $$render``; +return $$render`${$$renderScript($$result,"?astro&type=script&index=0&lang.ts")}`; }, undefined, undefined); export default $$Component; ``` diff --git a/internal/printer/__printer_js__/component_with_only_a_script.snap b/internal/printer/__printer_js__/component_with_only_a_script.snap index 9209c351e..6f3e8c3e2 100755 --- a/internal/printer/__printer_js__/component_with_only_a_script.snap +++ b/internal/printer/__printer_js__/component_with_only_a_script.snap @@ -34,7 +34,7 @@ export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydra const $$Component = $$createComponent(($$result, $$props, $$slots) => { -return $$render``; +return $$render`${$$renderScript($$result,"?astro&type=script&index=0&lang.ts")}`; }, undefined, undefined); export default $$Component; ``` diff --git a/internal/printer/__printer_js__/define_vars_on_script_with_StaticExpression_turned_on.snap b/internal/printer/__printer_js__/define_vars_on_script_with_StaticExpression_turned_on.snap index 88fc47e28..a5889f920 100755 --- a/internal/printer/__printer_js__/define_vars_on_script_with_StaticExpression_turned_on.snap +++ b/internal/printer/__printer_js__/define_vars_on_script_with_StaticExpression_turned_on.snap @@ -34,7 +34,7 @@ export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydra const $$Component = $$createComponent(($$result, $$props, $$slots) => { -return $$render``; +return $$render`${$$renderScript($$result,"?astro&type=script&index=0&lang.ts")}`; }, undefined, undefined); export default $$Component; ``` diff --git a/internal/printer/__printer_js__/maybeRenderHead_not_printed_for_hoisted_scripts.snap b/internal/printer/__printer_js__/maybeRenderHead_not_printed_for_hoisted_scripts.snap index a640a1749..96dc905f3 100755 --- a/internal/printer/__printer_js__/maybeRenderHead_not_printed_for_hoisted_scripts.snap +++ b/internal/printer/__printer_js__/maybeRenderHead_not_printed_for_hoisted_scripts.snap @@ -34,7 +34,7 @@ export const $$metadata = $$createMetadata("/projects/app/src/pages/page.astro", const $$Page = $$createComponent(($$result, $$props, $$slots) => { -return $$render`${$$renderComponent($$result,'Layout',Layout,{})}`; +return $$render`${$$renderScript($$result,"/projects/app/src/pages/page.astro?astro&type=script&index=0&lang.ts")}${$$renderComponent($$result,'Layout',Layout,{})}`; }, '/projects/app/src/pages/page.astro', undefined); export default $$Page; ``` diff --git a/internal/printer/__printer_js__/multibyte_character___script.snap b/internal/printer/__printer_js__/multibyte_character___script.snap index a74ff64f2..1e7dc2561 100755 --- a/internal/printer/__printer_js__/multibyte_character___script.snap +++ b/internal/printer/__printer_js__/multibyte_character___script.snap @@ -34,7 +34,7 @@ export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydra const $$Component = $$createComponent(($$result, $$props, $$slots) => { -return $$render`${$$maybeRenderHead($$result)}`; +return $$render`${$$renderScript($$result,"?astro&type=script&index=0&lang.ts")}${$$maybeRenderHead($$result)}`; }, undefined, undefined); export default $$Component; ``` diff --git a/internal/printer/__printer_js__/script__renderScript__true_.snap b/internal/printer/__printer_js__/script.snap similarity index 96% rename from internal/printer/__printer_js__/script__renderScript__true_.snap rename to internal/printer/__printer_js__/script.snap index e9fee4c87..d8c5ae58b 100755 --- a/internal/printer/__printer_js__/script__renderScript__true_.snap +++ b/internal/printer/__printer_js__/script.snap @@ -1,5 +1,5 @@ -[TestPrinter/script_(renderScript:_true) - 1] +[TestPrinter/script - 1] ## Input ``` diff --git a/internal/printer/__printer_js__/script_before_elements.snap b/internal/printer/__printer_js__/script_before_elements.snap index f1fbc30a3..8c6251b64 100755 --- a/internal/printer/__printer_js__/script_before_elements.snap +++ b/internal/printer/__printer_js__/script_before_elements.snap @@ -34,7 +34,7 @@ export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydra const $$Component = $$createComponent(($$result, $$props, $$slots) => { -return $$render`${$$maybeRenderHead($$result)}
`; +return $$render`${$$renderScript($$result,"?astro&type=script&index=0&lang.ts")}${$$maybeRenderHead($$result)}
`; }, undefined, undefined); export default $$Component; ``` diff --git a/internal/printer/__printer_js__/script_external__renderScript__true_.snap b/internal/printer/__printer_js__/script_external.snap similarity index 95% rename from internal/printer/__printer_js__/script_external__renderScript__true_.snap rename to internal/printer/__printer_js__/script_external.snap index 88be65653..f91ad29c6 100755 --- a/internal/printer/__printer_js__/script_external__renderScript__true_.snap +++ b/internal/printer/__printer_js__/script_external.snap @@ -1,5 +1,5 @@ -[TestPrinter/script_external_(renderScript:_true) - 1] +[TestPrinter/script_external - 1] ## Input ``` diff --git a/internal/printer/__printer_js__/script_external_in_expression__renderScript__true_.snap b/internal/printer/__printer_js__/script_external_in_expression.snap similarity index 94% rename from internal/printer/__printer_js__/script_external_in_expression__renderScript__true_.snap rename to internal/printer/__printer_js__/script_external_in_expression.snap index 179e57092..dbae81039 100755 --- a/internal/printer/__printer_js__/script_external_in_expression__renderScript__true_.snap +++ b/internal/printer/__printer_js__/script_external_in_expression.snap @@ -1,5 +1,5 @@ -[TestPrinter/script_external_in_expression_(renderScript:_true) - 1] +[TestPrinter/script_external_in_expression - 1] ## Input ``` diff --git a/internal/printer/__printer_js__/script_external_in_expression__renderScript__false_.snap b/internal/printer/__printer_js__/script_external_in_expression__renderScript__false_.snap deleted file mode 100755 index 685add517..000000000 --- a/internal/printer/__printer_js__/script_external_in_expression__renderScript__false_.snap +++ /dev/null @@ -1,41 +0,0 @@ - -[TestPrinter/script_external_in_expression_(renderScript:_false) - 1] -## Input - -``` -
{} -``` - -## Output - -```js -import { - Fragment, - render as $$render, - createAstro as $$createAstro, - createComponent as $$createComponent, - renderComponent as $$renderComponent, - renderHead as $$renderHead, - maybeRenderHead as $$maybeRenderHead, - unescapeHTML as $$unescapeHTML, - renderSlot as $$renderSlot, - mergeSlots as $$mergeSlots, - addAttribute as $$addAttribute, - spreadAttributes as $$spreadAttributes, - defineStyleVars as $$defineStyleVars, - defineScriptVars as $$defineScriptVars, - renderTransition as $$renderTransition, - createTransitionScope as $$createTransitionScope, - renderScript as $$renderScript, - createMetadata as $$createMetadata -} from "http://localhost:3000/"; - -export const $$metadata = $$createMetadata("/src/pages/index.astro", { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] }); - -const $$Index = $$createComponent(($$result, $$props, $$slots) => { - -return $$render`${$$maybeRenderHead($$result)}
${$$render``}
`; -}, '/src/pages/index.astro', undefined); -export default $$Index; -``` ---- diff --git a/internal/printer/__printer_js__/script_hoist_with_frontmatter.snap b/internal/printer/__printer_js__/script_hoist_with_frontmatter.snap index 6cbde7c78..0866b5be9 100755 --- a/internal/printer/__printer_js__/script_hoist_with_frontmatter.snap +++ b/internal/printer/__printer_js__/script_hoist_with_frontmatter.snap @@ -36,7 +36,7 @@ export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydra const $$Component = $$createComponent(($$result, $$props, $$slots) => { -return $$render``; +return $$render`${$$renderScript($$result,"?astro&type=script&index=0&lang.ts")}`; }, undefined, undefined); export default $$Component; ``` diff --git a/internal/printer/__printer_js__/script_hoist_without_frontmatter.snap b/internal/printer/__printer_js__/script_hoist_without_frontmatter.snap index 7abf3adc4..4e25fa4eb 100755 --- a/internal/printer/__printer_js__/script_hoist_without_frontmatter.snap +++ b/internal/printer/__printer_js__/script_hoist_without_frontmatter.snap @@ -36,7 +36,7 @@ export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydra const $$Component = $$createComponent(($$result, $$props, $$slots) => { return $$render`${$$maybeRenderHead($$result)}
- + ${$$renderScript($$result,"?astro&type=script&index=0&lang.ts")}
`; }, undefined, undefined); export default $$Component; diff --git a/internal/printer/__printer_js__/script_in_expression__renderScript__true_.snap b/internal/printer/__printer_js__/script_in_expression.snap similarity index 95% rename from internal/printer/__printer_js__/script_in_expression__renderScript__true_.snap rename to internal/printer/__printer_js__/script_in_expression.snap index 6a96b9642..2483db758 100755 --- a/internal/printer/__printer_js__/script_in_expression__renderScript__true_.snap +++ b/internal/printer/__printer_js__/script_in_expression.snap @@ -1,5 +1,5 @@ -[TestPrinter/script_in_expression_(renderScript:_true) - 1] +[TestPrinter/script_in_expression - 1] ## Input ``` diff --git a/internal/printer/__printer_js__/script_in_expression__renderScript__false_.snap b/internal/printer/__printer_js__/script_in_expression__renderScript__false_.snap deleted file mode 100755 index 79ac613b5..000000000 --- a/internal/printer/__printer_js__/script_in_expression__renderScript__false_.snap +++ /dev/null @@ -1,41 +0,0 @@ - -[TestPrinter/script_in_expression_(renderScript:_false) - 1] -## Input - -``` -
{false && } -``` - -## Output - -```js -import { - Fragment, - render as $$render, - createAstro as $$createAstro, - createComponent as $$createComponent, - renderComponent as $$renderComponent, - renderHead as $$renderHead, - maybeRenderHead as $$maybeRenderHead, - unescapeHTML as $$unescapeHTML, - renderSlot as $$renderSlot, - mergeSlots as $$mergeSlots, - addAttribute as $$addAttribute, - spreadAttributes as $$spreadAttributes, - defineStyleVars as $$defineStyleVars, - defineScriptVars as $$defineScriptVars, - renderTransition as $$renderTransition, - createTransitionScope as $$createTransitionScope, - renderScript as $$renderScript, - createMetadata as $$createMetadata -} from "http://localhost:3000/"; - -export const $$metadata = $$createMetadata("/src/pages/index.astro", { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] }); - -const $$Index = $$createComponent(($$result, $$props, $$slots) => { - -return $$render`${$$maybeRenderHead($$result)}
${false && $$render``}
`; -}, '/src/pages/index.astro', undefined); -export default $$Index; -``` ---- diff --git a/internal/printer/__printer_js__/script_inline__renderScript__true_.snap b/internal/printer/__printer_js__/script_inline__renderScript__true_.snap deleted file mode 100755 index b32089fc8..000000000 --- a/internal/printer/__printer_js__/script_inline__renderScript__true_.snap +++ /dev/null @@ -1,41 +0,0 @@ - -[TestPrinter/script_inline_(renderScript:_true) - 1] -## Input - -``` -
-``` - -## Output - -```js -import { - Fragment, - render as $$render, - createAstro as $$createAstro, - createComponent as $$createComponent, - renderComponent as $$renderComponent, - renderHead as $$renderHead, - maybeRenderHead as $$maybeRenderHead, - unescapeHTML as $$unescapeHTML, - renderSlot as $$renderSlot, - mergeSlots as $$mergeSlots, - addAttribute as $$addAttribute, - spreadAttributes as $$spreadAttributes, - defineStyleVars as $$defineStyleVars, - defineScriptVars as $$defineScriptVars, - renderTransition as $$renderTransition, - createTransitionScope as $$createTransitionScope, - renderScript as $$renderScript, - createMetadata as $$createMetadata -} from "http://localhost:3000/"; - -export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] }); - -const $$Component = $$createComponent(($$result, $$props, $$slots) => { - -return $$render`${$$maybeRenderHead($$result)}
`; -}, undefined, undefined); -export default $$Component; -``` ---- diff --git a/internal/printer/__printer_js__/script_mixed_handled_and_inline__renderScript__true_.snap b/internal/printer/__printer_js__/script_mixed_handled_and_inline.snap similarity index 95% rename from internal/printer/__printer_js__/script_mixed_handled_and_inline__renderScript__true_.snap rename to internal/printer/__printer_js__/script_mixed_handled_and_inline.snap index 87d237a04..3bd54dd61 100755 --- a/internal/printer/__printer_js__/script_mixed_handled_and_inline__renderScript__true_.snap +++ b/internal/printer/__printer_js__/script_mixed_handled_and_inline.snap @@ -1,5 +1,5 @@ -[TestPrinter/script_mixed_handled_and_inline_(renderScript:_true) - 1] +[TestPrinter/script_mixed_handled_and_inline - 1] ## Input ``` diff --git a/internal/printer/__printer_js__/script_multiple__renderScript__true_.snap b/internal/printer/__printer_js__/script_multiple.snap similarity index 96% rename from internal/printer/__printer_js__/script_multiple__renderScript__true_.snap rename to internal/printer/__printer_js__/script_multiple.snap index 8526ea485..223ab7d29 100755 --- a/internal/printer/__printer_js__/script_multiple__renderScript__true_.snap +++ b/internal/printer/__printer_js__/script_multiple.snap @@ -1,5 +1,5 @@ -[TestPrinter/script_multiple_(renderScript:_true) - 1] +[TestPrinter/script_multiple - 1] ## Input ``` diff --git a/internal/printer/__printer_js__/selectedcontent_element_in_customizable_select.snap b/internal/printer/__printer_js__/selectedcontent_element_in_customizable_select.snap index cf64eb0ed..9890275f3 100755 --- a/internal/printer/__printer_js__/selectedcontent_element_in_customizable_select.snap +++ b/internal/printer/__printer_js__/selectedcontent_element_in_customizable_select.snap @@ -1,3 +1,4 @@ + [TestPrinter/selectedcontent_element_in_customizable_select - 1] ## Input diff --git a/internal/printer/__printer_js__/selectedcontent_self-closing_element.snap b/internal/printer/__printer_js__/selectedcontent_self-closing_element.snap index 767835155..23deb4fe3 100755 --- a/internal/printer/__printer_js__/selectedcontent_self-closing_element.snap +++ b/internal/printer/__printer_js__/selectedcontent_self-closing_element.snap @@ -1,3 +1,4 @@ + [TestPrinter/selectedcontent_self-closing_element - 1] ## Input diff --git a/internal/printer/printer_test.go b/internal/printer/printer_test.go index 8beb19e7c..63ed50d63 100644 --- a/internal/printer/printer_test.go +++ b/internal/printer/printer_test.go @@ -51,7 +51,6 @@ type testcase struct { source string only bool transitions bool - transformOptions transform.TransformOptions filename string } @@ -845,70 +844,37 @@ import Widget2 from '../components/Widget2.astro'; source: `
`, }, { - name: "script (renderScript: true)", + name: "script", source: `
`, - transformOptions: transform.TransformOptions{ - RenderScript: true, - }, filename: "/src/pages/index.astro", }, { - name: "script multiple (renderScript: true)", + name: "script multiple", source: `
`, - transformOptions: transform.TransformOptions{ - RenderScript: true, - }, filename: "/src/pages/index.astro", }, { - name: "script external (renderScript: true)", + name: "script external", source: `
`, - transformOptions: transform.TransformOptions{ - RenderScript: true, - }, filename: "/src/pages/index.astro", }, { - name: "script external in expression (renderScript: true)", + name: "script external in expression", source: `
{}`, - transformOptions: transform.TransformOptions{ - RenderScript: true, - }, filename: "/src/pages/index.astro", }, { - // maintain the original behavior, though it may be - // unneeded as renderScript is now on by default - name: "script external in expression (renderScript: false)", - source: `
{}`, - filename: "/src/pages/index.astro", - }, - { - name: "script in expression (renderScript: true)", + name: "script in expression", source: `
{true && }`, - transformOptions: transform.TransformOptions{ - RenderScript: true, - }, - filename: "/src/pages/index.astro", - }, - { - name: "script in expression (renderScript: false)", - source: `
{false && }`, filename: "/src/pages/index.astro", }, { - name: "script inline (renderScript: true)", + name: "script inline", source: `
`, - transformOptions: transform.TransformOptions{ - RenderScript: true, - }, }, { - name: "script mixed handled and inline (renderScript: true)", + name: "script mixed handled and inline", source: `
`, - transformOptions: transform.TransformOptions{ - RenderScript: true, - }, filename: "/src/pages/index.astro", }, { @@ -2105,10 +2071,8 @@ import Analytics from '../components/Analytics.astro'; } hash := astro.HashString(code) - // combine from tt.transformOptions transformOptions := transform.TransformOptions{ Scope: hash, - RenderScript: tt.transformOptions.RenderScript, } transform.ExtractStyles(doc, &transformOptions) transform.Transform(doc, transformOptions, h) // note: we want to test Transform in context here, but more advanced cases could be tested separately diff --git a/internal/transform/transform.go b/internal/transform/transform.go index 02dfd48e1..6714ca0f6 100644 --- a/internal/transform/transform.go +++ b/internal/transform/transform.go @@ -34,7 +34,6 @@ type TransformOptions struct { ResolvePath func(string) string PreprocessStyle interface{} AnnotateSourceFile bool - RenderScript bool } func Transform(doc *astro.Node, opts TransformOptions, h *handler.Handler) *astro.Node { @@ -87,13 +86,6 @@ func Transform(doc *astro.Node, opts TransformOptions, h *handler.Handler) *astr } NormalizeSetDirectives(doc, h) - // Important! Remove scripts from original location *after* walking the doc - if !opts.RenderScript { - for _, script := range doc.Scripts { - script.Parent.RemoveChild(script) - } - } - // If we've emptied out all the nodes, this was a Fragment that only contained hoisted elements // Add an empty FrontmatterNode to allow the empty component to be printed if doc.FirstChild == nil { @@ -404,8 +396,7 @@ func ExtractScript(doc *astro.Node, n *astro.Node, opts *TransformOptions, h *ha return } // Ignore scripts in svg/noscript/etc - // In expressions ignore scripts, unless `RenderScript` is true - if !IsHoistable(n, opts.RenderScript) { + if !IsHoistable(n, true) { return } diff --git a/internal/transform/transform_test.go b/internal/transform/transform_test.go index 1da0cbe2b..6de58be1d 100644 --- a/internal/transform/transform_test.go +++ b/internal/transform/transform_test.go @@ -390,8 +390,8 @@ func TestCompactTransform(t *testing.T) { }, { name: "remove whitespace only", - source: ` `, - want: ``, + source: ` `, + want: ``, }, { name: "collapse surrounding whitespace", diff --git a/internal/transform/utils.go b/internal/transform/utils.go index 1a6bbe5e4..dc42a498f 100644 --- a/internal/transform/utils.go +++ b/internal/transform/utils.go @@ -47,12 +47,12 @@ func GetAttr(n *astro.Node, key string) *astro.Attribute { return nil } -func IsHoistable(n *astro.Node, renderScriptEnabled bool) bool { +func IsHoistable(n *astro.Node, renderScript bool) bool { parent := n.Closest(func(p *astro.Node) bool { return p.DataAtom == atom.Svg || p.DataAtom == atom.Noscript || p.DataAtom == atom.Template }) - if renderScriptEnabled && parent != nil && parent.Expression { + if renderScript && parent != nil && parent.Expression { return true } diff --git a/packages/compiler/src/shared/types.ts b/packages/compiler/src/shared/types.ts index 8ac858027..4c96cc683 100644 --- a/packages/compiler/src/shared/types.ts +++ b/packages/compiler/src/shared/types.ts @@ -59,12 +59,6 @@ export interface TransformOptions { attrs: Record ) => null | Promise; annotateSourceFile?: boolean; - /** - * Render script tags to be processed (e.g. script tags that have no attributes or only a `src` attribute) - * using a `renderScript` function from `internalURL`, instead of stripping the script entirely. - * @experimental - */ - renderScript?: boolean; } export type ConvertToTSXOptions = Pick< diff --git a/packages/compiler/test/basic/trailing-spaces-ii.ts b/packages/compiler/test/basic/trailing-spaces-ii.ts index 77b5a4993..762a81cc1 100644 --- a/packages/compiler/test/basic/trailing-spaces-ii.ts +++ b/packages/compiler/test/basic/trailing-spaces-ii.ts @@ -28,7 +28,10 @@ test('trailing space', () => { result.code, ` \${$$renderSlot($$result,$$slots["default"])} -\`` + + + +\${$$renderScript($$result,"?astro&type=script&index=0&lang.ts")}\`` ); });