@astrojs/compiler 0.14.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # @astrojs/compiler
2
2
 
3
+ ## 0.15.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 702e848: Trailing space at the end of Astro files is now stripped from Component output.
8
+
9
+ ### Patch Changes
10
+
11
+ - 3a1a24b: Fix long-standing bug where a `class` attribute inside of a spread prop will cause duplicate `class` attributes
12
+ - 62faceb: Fixes an issue where curly braces in `<math>` elements would get parsed as expressions instead of raw text.
13
+
14
+ ## 0.14.3
15
+
16
+ ### Patch Changes
17
+
18
+ - 6177620: Fix edge case with expressions inside of tables
19
+ - 79b1ed6: Provides a better error message when we can't match client:only usage to an import statement
20
+ - a4e1957: Fix Astro scoping when `class:list` is used
21
+ - fda859a: Fix json escape
22
+
23
+ ## 0.14.2
24
+
25
+ ### Patch Changes
26
+
27
+ - 6f30e2e: Fix edge case with nested expression inside `<>`
28
+ - 15e3ff8: Fix panic when using a `<slot />` in `head`
29
+ - c048567: Fix edge case with `select` elements and expression children
30
+ - 13d2fc2: Fix #340, fixing behavior of content after an expression inside of `<select>`
31
+ - 9e37a72: Fix issue when multiple client-only components are used
32
+ - 67993d5: Add support for block comment only expressions, block comment only shorthand attributes and block comments in shorthand attributes
33
+ - 59fbea2: Fix #343, edge case with `<tr>` inside component
34
+ - 049dadf: Fix usage of expressions inside `caption` and `colgroup` elements
35
+
3
36
  ## 0.14.1
4
37
 
5
38
  ### Patch Changes
package/README.md CHANGED
@@ -19,6 +19,7 @@ _Note: Public APIs are likely to change before 1.0! Use at your own discretion._
19
19
  The Astro compiler can convert `.astro` syntax to a TypeScript Module whose default export generates HTML.
20
20
 
21
21
  **Some notes**...
22
+
22
23
  - TypeScript is valid `.astro` syntax! The output code may need an additional post-processing step to generate valid JavaScript.
23
24
  - `.astro` files rely on a server implementation exposed as `astro/internal` in the Node ecosystem. Other runtimes currently need to bring their own rendering implementation and reference it via `internalURL`. This is a pain point we're looking into fixing.
24
25
 
@@ -38,6 +39,7 @@ const result = await transform(source, {
38
39
  The Astro compiler can emit an AST using the `parse` method.
39
40
 
40
41
  **Some notes**...
42
+
41
43
  - Position data is currently incomplete and in some cases incorrect. We're working on it!
42
44
  - A `TextNode` can represent both HTML `text` and JavaScript/TypeScript source code.
43
45
  - The `@astrojs/compiler/utils` entrypoint exposes a `walk` function that can be used to traverse the AST. It also exposes the `is` helper which can be used as guards to derive the proper types for each `node`.
@@ -55,7 +57,7 @@ walk(result.ast, (node) => {
55
57
  if (is.tag(node)) {
56
58
  console.log(node.name);
57
59
  }
58
- })
60
+ });
59
61
  ```
60
62
 
61
63
  ## Contributing
package/astro.wasm CHANGED
Binary file
package/node/index.d.ts CHANGED
@@ -2,4 +2,5 @@ export type { PreprocessorResult, ParseOptions, TransformOptions, HoistedScript,
2
2
  import type * as types from '../shared/types';
3
3
  export declare const transform: typeof types.transform;
4
4
  export declare const parse: typeof types.parse;
5
+ export declare const convertToTSX: typeof types.convertToTSX;
5
6
  export declare const compile: (template: string) => Promise<string>;
package/node/index.js CHANGED
@@ -7,6 +7,9 @@ export const transform = async (input, options) => {
7
7
  export const parse = async (input, options) => {
8
8
  return getService().then((service) => service.parse(input, options));
9
9
  };
10
+ export const convertToTSX = async (input, options) => {
11
+ return getService().then((service) => service.convertToTSX(input, options));
12
+ };
10
13
  export const compile = async (template) => {
11
14
  const { default: mod } = await import(`data:text/javascript;charset=utf-8;base64,${Buffer.from(template).toString('base64')}`);
12
15
  return mod;
@@ -38,7 +41,17 @@ const startRunningService = async () => {
38
41
  go.run(wasm.instance);
39
42
  const _service = globalThis['@astrojs/compiler'];
40
43
  return {
41
- transform: (input, options) => new Promise((resolve) => resolve(_service.transform(input, options || {}))),
44
+ transform: (input, options) => new Promise((resolve) => {
45
+ try {
46
+ resolve(_service.transform(input, options || {}));
47
+ }
48
+ catch (err) {
49
+ // Recreate the service next time on panic
50
+ longLivedService = void 0;
51
+ throw err;
52
+ }
53
+ }),
42
54
  parse: (input, options) => new Promise((resolve) => resolve(_service.parse(input, options || {}))).then((result) => ({ ...result, ast: JSON.parse(result.ast) })),
55
+ convertToTSX: (input, options) => new Promise((resolve) => resolve(_service.convertToTSX(input, options || {}))),
43
56
  };
44
57
  };
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "type": "module",
6
6
  "bugs": "https://github.com/withastro/compiler/issues",
7
7
  "homepage": "https://astro.build",
8
- "version": "0.14.1",
8
+ "version": "0.15.0",
9
9
  "scripts": {
10
10
  "build": "tsc -p ."
11
11
  },
package/shared/types.d.ts CHANGED
@@ -36,11 +36,18 @@ export interface TransformResult {
36
36
  code: string;
37
37
  map: string;
38
38
  }
39
+ export interface TSXResult {
40
+ code: string;
41
+ map: string;
42
+ }
39
43
  export interface ParseResult {
40
44
  ast: RootNode;
41
45
  }
42
46
  export declare function transform(input: string, options?: TransformOptions): Promise<TransformResult>;
43
47
  export declare function parse(input: string, options?: ParseOptions): Promise<ParseResult>;
48
+ export declare function convertToTSX(input: string, options?: {
49
+ sourcefile?: string;
50
+ }): Promise<TSXResult>;
44
51
  export declare function initialize(options: InitializeOptions): Promise<void>;
45
52
  export interface InitializeOptions {
46
53
  wasmURL?: string;
package/types.d.ts CHANGED
@@ -1 +1 @@
1
- export * from './shared/ast'
1
+ export * from './shared/ast';